Change the locale codeset representation

From the normalized one, to the one actually contained within glibc. Recent
versions of glibc also contain symlinks linking the normalized codeset to the
locales with the .UTF-8 ending, but older ones do not.

Maybe handling codeset normalisation for queries would be good, but the locale
values ending in .UTF-8 are more compatible and allow the code to be
simplified. For querying, maybe there should be a locales table which handles
different representations.
This commit is contained in:
Christopher Baines 2020-09-26 11:45:57 +01:00
parent af2e12a9ef
commit 53341c70fc
17 changed files with 98 additions and 82 deletions

View file

@ -93,7 +93,7 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id = lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY (lint_checker_description_sets.description_ids)
AND lint_checker_descriptions.locale = 'en_US.utf8'
AND lint_checker_descriptions.locale = 'en_US.UTF-8'
INNER JOIN (
SELECT lint_checker_id, COUNT(*)
FROM lint_warnings
@ -138,7 +138,7 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id = lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY (lint_checker_description_sets.description_ids)
AND lint_checker_descriptions.locale = 'en_US.utf8'
AND lint_checker_descriptions.locale = 'en_US.UTF-8'
WHERE lint_checkers.id IN (
SELECT lint_checker_id
FROM guix_revision_lint_checkers

View file

@ -90,7 +90,7 @@ INNER JOIN (
ORDER BY lint_checkers.id,
CASE
WHEN lint_checker_descriptions.locale = $2 THEN 2
WHEN lint_checker_descriptions.locale = 'en_US.utf8' THEN 1
WHEN lint_checker_descriptions.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_lint_checker_descriptions
@ -131,7 +131,7 @@ INNER JOIN lint_warning_messages
" ORDER BY lint_warnings.id,
CASE
WHEN lint_warning_messages.locale = $2 THEN 2
WHEN lint_warning_messages.locale = 'en_US.utf8' THEN 1
WHEN lint_warning_messages.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC"))
@ -174,7 +174,7 @@ INNER JOIN (
ORDER BY lint_checkers.id,
CASE
WHEN lint_checker_descriptions.locale = $4 THEN 2
WHEN lint_checker_descriptions.locale = 'en_US.utf8' THEN 1
WHEN lint_checker_descriptions.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_lint_checker_descriptions
@ -202,7 +202,7 @@ WHERE packages.id IN (
ORDER BY lint_warnings.id,
CASE
WHEN lint_warning_messages.locale = $4 THEN 2
WHEN lint_warning_messages.locale = 'en_US.utf8' THEN 1
WHEN lint_warning_messages.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
")

View file

@ -42,19 +42,19 @@
description-counts-by-locale))
(define locales
'("cs_CZ.utf8"
"da_DK.utf8"
"de_DE.utf8"
"eo_EO.utf8"
"es_ES.utf8"
"fr_FR.utf8"
"hu_HU.utf8"
"pl_PL.utf8"
"pt_BR.utf8"
;;"sr_SR.utf8"
"sv_SE.utf8"
"vi_VN.utf8"
"zh_CN.utf8"))
'("cs_CZ.UTF-8"
"da_DK.UTF-8"
"de_DE.UTF-8"
"eo_EO.UTF-8"
"es_ES.UTF-8"
"fr_FR.UTF-8"
"hu_HU.UTF-8"
"pl_PL.UTF-8"
"pt_BR.UTF-8"
;;"sr_SR.UTF-8"
"sv_SE.UTF-8"
"vi_VN.UTF-8"
"zh_CN.UTF-8"))
(define inferior-package-id
(@@ (guix inferior) inferior-package-id))
@ -144,7 +144,7 @@ INNER JOIN (
AND packages.version = $3
ORDER BY package_description_sets.id,
CASE WHEN package_descriptions.locale = $4 THEN 2
WHEN package_descriptions.locale = 'en_US.utf8' THEN 1
WHEN package_descriptions.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_package_descriptions
@ -163,7 +163,7 @@ INNER JOIN (
AND packages.version = $3
ORDER BY package_synopsis_sets.id,
CASE WHEN package_synopsis.locale = $4 THEN 2
WHEN package_synopsis.locale = 'en_US.utf8' THEN 1
WHEN package_synopsis.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_package_synopsis
@ -217,7 +217,7 @@ WHERE packages.id IN (
(define (translate inferior-package-id)
`(let* ((package (hashv-ref %package-table ,inferior-package-id))
(source-locale "en_US.utf8")
(source-locale "en_US.UTF-8")
(source-synopsis
(begin
(setlocale LC_MESSAGES source-locale)
@ -505,7 +505,7 @@ INSERT INTO package_metadata_tsvectors (package_metadata_id, locale,
synopsis_and_description, package_synopsis_id, package_description_id)
SELECT DISTINCT ON (package_metadata.id, locale)
package_metadata.id,
CASE WHEN translated_package_synopsis.locale != 'en_US.utf8'
CASE WHEN translated_package_synopsis.locale != 'en_US.UTF-8'
THEN translated_package_synopsis.locale
ELSE translated_package_descriptions.locale
END AS locale,
@ -524,7 +524,7 @@ INNER JOIN (
INNER JOIN package_descriptions
ON package_descriptions.id = ANY (package_description_sets.description_ids)
ORDER BY package_description_sets.id,
CASE WHEN package_descriptions.locale = 'en_US.utf8' THEN 1
CASE WHEN package_descriptions.locale = 'en_US.UTF-8' THEN 1
ELSE 2
END DESC
) AS translated_package_descriptions
@ -537,7 +537,7 @@ INNER JOIN (
INNER JOIN package_synopsis
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
ORDER BY package_synopsis_sets.id,
CASE WHEN package_synopsis.locale = 'en_US.utf8' THEN 1
CASE WHEN package_synopsis.locale = 'en_US.UTF-8' THEN 1
ELSE 2
END DESC
) AS translated_package_synopsis
@ -545,7 +545,7 @@ INNER JOIN (
translated_package_synopsis.package_synopsis_set_id
AND (translated_package_descriptions.locale =
translated_package_synopsis.locale
OR translated_package_descriptions.locale = 'en_US.utf8')
OR translated_package_descriptions.locale = 'en_US.UTF-8')
WHERE package_metadata.id IN ("
(string-join
(map number->string

View file

@ -86,7 +86,7 @@ WITH data AS (
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
ORDER BY package_synopsis_sets.id,
CASE WHEN package_synopsis.locale = $2 THEN 2
WHEN package_synopsis.locale = 'en_US.utf8' THEN 1
WHEN package_synopsis.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_package_synopsis
@ -99,7 +99,7 @@ WITH data AS (
ON package_descriptions.id = ANY (package_description_sets.description_ids)
ORDER BY package_description_sets.id,
CASE WHEN package_descriptions.locale = $2 THEN 2
WHEN package_descriptions.locale = 'en_US.utf8' THEN 1
WHEN package_descriptions.locale = 'en_US.UTF-8' THEN 1
ELSE 0
END DESC
) AS translated_package_descriptions
@ -184,7 +184,7 @@ WITH search_results AS (
)
AND package_metadata_tsvectors.synopsis_and_description @@ plainto_tsquery($2)
ORDER BY name,
CASE WHEN package_metadata_tsvectors.locale = 'en_US.utf8' THEN 2
CASE WHEN package_metadata_tsvectors.locale = 'en_US.UTF-8' THEN 2
WHEN package_metadata_tsvectors.locale = $3 THEN 1
ELSE 0
END DESC