1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-18 05:01:01 +03:00

Try a few different locale name spellings in nls.sql.

While CI testing in advance of commit 8c498479d suggested that all
Unix-ish platforms would accept 'es_ES.UTF-8', the buildfarm has
a different opinion.  Let's dynamically select something that works,
if possible.

Discussion: https://postgr.es/m/E1vUpNU-000kcQ-1D@gemulon.postgresql.org
This commit is contained in:
Tom Lane
2025-12-14 12:54:57 -05:00
parent b853e644d7
commit 5b275a6e15
3 changed files with 51 additions and 12 deletions

View File

@@ -6,10 +6,23 @@ CREATE FUNCTION test_translation()
RETURNS void
AS :'regresslib'
LANGUAGE C;
-- Some BSDen are sticky about wanting a codeset name in lc_messages,
-- but it seems that at least on common platforms it doesn't have
-- to match the actual database encoding.
SET lc_messages = 'es_ES.UTF-8';
-- There's less standardization in locale name spellings than one could wish.
-- While some platforms insist on having a codeset name in lc_messages,
-- fortunately it seems that it need not match the actual database encoding.
do $$
declare locale text; ok bool;
begin
for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
loop
ok = true;
begin
execute format('set lc_messages = %L', locale);
exception when invalid_parameter_value then
ok = false;
end;
exit when ok;
end loop;
end $$;
SELECT test_translation();
NOTICE: traducido PRId64 = 424242424242
NOTICE: traducido PRId32 = -1234

View File

@@ -6,10 +6,23 @@ CREATE FUNCTION test_translation()
RETURNS void
AS :'regresslib'
LANGUAGE C;
-- Some BSDen are sticky about wanting a codeset name in lc_messages,
-- but it seems that at least on common platforms it doesn't have
-- to match the actual database encoding.
SET lc_messages = 'es_ES.UTF-8';
-- There's less standardization in locale name spellings than one could wish.
-- While some platforms insist on having a codeset name in lc_messages,
-- fortunately it seems that it need not match the actual database encoding.
do $$
declare locale text; ok bool;
begin
for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
loop
ok = true;
begin
execute format('set lc_messages = %L', locale);
exception when invalid_parameter_value then
ok = false;
end;
exit when ok;
end loop;
end $$;
SELECT test_translation();
NOTICE: NLS is not enabled
test_translation

View File

@@ -9,10 +9,23 @@ CREATE FUNCTION test_translation()
AS :'regresslib'
LANGUAGE C;
-- Some BSDen are sticky about wanting a codeset name in lc_messages,
-- but it seems that at least on common platforms it doesn't have
-- to match the actual database encoding.
SET lc_messages = 'es_ES.UTF-8';
-- There's less standardization in locale name spellings than one could wish.
-- While some platforms insist on having a codeset name in lc_messages,
-- fortunately it seems that it need not match the actual database encoding.
do $$
declare locale text; ok bool;
begin
for locale in values('es_ES'), ('es_ES.UTF-8'), ('es_ES.utf8')
loop
ok = true;
begin
execute format('set lc_messages = %L', locale);
exception when invalid_parameter_value then
ok = false;
end;
exit when ok;
end loop;
end $$;
SELECT test_translation();