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
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
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
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();