From 2a8469433116f4fd38fc78d5e7cdaef81ac8b164 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Tue, 17 Jan 2017 00:10:32 +0100 Subject: [PATCH] Unbreak locale selection in admin interface http://php.net/manual/en/function.setlocale.php says "Different systems have different naming schemes for locales." This seems to be true for platforms (eg Win vs. Linux), but on Debian AFAIR locales were always at least two-part (de_DE), never just one (de). This seems to have been broken in 504651a3, likely by mistake. Also, switch locale immediately, even before writing to the database. BTW, what happens when system default locale is configured to e.g. fr_FR and the user selects "English" - does that work? --- dba/supported_locales.sql | 24 ++++++++++++------------ inc/ui/principal-edit.php | 3 +++ po/de.values | 2 +- po/et.values | 2 +- po/fi.values | 2 +- po/fr.values | 2 +- po/hu.values | 2 +- po/it.values | 2 +- po/ja.values | 2 +- po/nb_NO.values | 2 +- po/nl.values | 2 +- po/pl.values | 2 +- po/ru.values | 2 +- po/sv.values | 2 +- 14 files changed, 27 insertions(+), 24 deletions(-) diff --git a/dba/supported_locales.sql b/dba/supported_locales.sql index cea6cb50..9475d982 100644 --- a/dba/supported_locales.sql +++ b/dba/supported_locales.sql @@ -4,7 +4,7 @@ INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'ar', 'Arabic', 'العَرَبِية' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'de', 'German', 'Deutsch' ); + VALUES( 'de_DE', 'German', 'Deutsch' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'es_AR', 'Spanish (Argentina)', 'Español (Argentina)' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) @@ -14,32 +14,32 @@ INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'es_VE', 'Spanish (Venezuela)', 'Español (Venezuela)' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'et', 'Estonian', 'Eesti' ); + VALUES( 'et_EE', 'Estonian', 'Eesti' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'fi', 'Finnish', 'Suomi' ); + VALUES( 'fi_FI', 'Finnish', 'Suomi' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'fr', 'French', 'Français' ); + VALUES( 'fr_FR', 'French', 'Français' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'hu', 'Hungarian', 'Magyar' ); + VALUES( 'hu_HU', 'Hungarian', 'Magyar' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'it', 'Italian', 'Italiano' ); + VALUES( 'it_IT', 'Italian', 'Italiano' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'ja', 'Japanese', '日本語' ); + VALUES( 'ja_JP', 'Japanese', '日本語' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'ko_KR', 'Korean (Korea)', '한국어' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'nb', 'Norwegian', 'Bokmål' ); + VALUES( 'nb_NO', 'Norwegian', 'Bokmål' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'nl', 'Netherlands', 'Nederlands' ); + VALUES( 'nl_NL', 'Netherlands', 'Nederlands' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'pl', 'Polish', 'Polski' ); + VALUES( 'pl_PL', 'Polish', 'Polski' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'pt_BR', 'Brazilian Portuguese', 'Brazilian Portuguese' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'pt_PT', 'Portuguese', 'Portuguese' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'ru', 'Russian', 'Русский' ); + VALUES( 'ru_RU', 'Russian', 'Русский' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) VALUES( 'sk_SK', 'Slovak (Slovakia)', 'Slovenčina' ); INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale ) - VALUES( 'sv', 'Swedish', 'Svenska' ); + VALUES( 'sv_SE', 'Swedish', 'Svenska' ); diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 49553bf2..ebcb8234 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -220,6 +220,9 @@ function principal_editor() { if ( isset($_POST['fullname']) && !isset($_POST['displayname']) ) { $_POST['displayname'] = $_POST['fullname']; } + if ( isset($_POST['locale']) ) { + awl_set_locale($_POST['locale']); // activate immediately + } if ( isset($_POST['default_privileges']) ) { $privilege_bitpos = array_flip($privilege_names); $priv_names = array_keys($_POST['default_privileges']); diff --git a/po/de.values b/po/de.values index 17a2cd94..81f26390 100644 --- a/po/de.values +++ b/po/de.values @@ -1 +1 @@ - VALUES( 'de', 'German', 'Deutsch' ); + VALUES( 'de_DE', 'German', 'Deutsch' ); diff --git a/po/et.values b/po/et.values index 456a4272..052854b7 100644 --- a/po/et.values +++ b/po/et.values @@ -1 +1 @@ - VALUES( 'et', 'Estonian', 'Eesti' ); + VALUES( 'et_EE', 'Estonian', 'Eesti' ); diff --git a/po/fi.values b/po/fi.values index b758c982..acbfd6b9 100644 --- a/po/fi.values +++ b/po/fi.values @@ -1 +1 @@ - VALUES( 'fi', 'Finnish', 'Suomi' ); + VALUES( 'fi_FI', 'Finnish', 'Suomi' ); diff --git a/po/fr.values b/po/fr.values index c5d2004b..8bbbe6d0 100644 --- a/po/fr.values +++ b/po/fr.values @@ -1 +1 @@ - VALUES( 'fr', 'French', 'Français' ); + VALUES( 'fr_FR', 'French', 'Français' ); diff --git a/po/hu.values b/po/hu.values index 4953e7cb..22d3340b 100644 --- a/po/hu.values +++ b/po/hu.values @@ -1 +1 @@ - VALUES( 'hu', 'Hungarian', 'Magyar' ); + VALUES( 'hu_HU', 'Hungarian', 'Magyar' ); diff --git a/po/it.values b/po/it.values index ad773622..11f55842 100644 --- a/po/it.values +++ b/po/it.values @@ -1 +1 @@ - VALUES( 'it', 'Italian', 'Italiano' ); + VALUES( 'it_IT', 'Italian', 'Italiano' ); diff --git a/po/ja.values b/po/ja.values index 2ca22245..99da1e30 100644 --- a/po/ja.values +++ b/po/ja.values @@ -1 +1 @@ - VALUES( 'ja', 'Japanese', '日本語' ); + VALUES( 'ja_JP', 'Japanese', '日本語' ); diff --git a/po/nb_NO.values b/po/nb_NO.values index 8b8ef5c4..3c6e2e88 100644 --- a/po/nb_NO.values +++ b/po/nb_NO.values @@ -1 +1 @@ - VALUES( 'nb', 'Norwegian', 'Bokmål' ); + VALUES( 'nb_NO', 'Norwegian', 'Bokmål' ); diff --git a/po/nl.values b/po/nl.values index 90ce244a..14fc3af2 100644 --- a/po/nl.values +++ b/po/nl.values @@ -1 +1 @@ - VALUES( 'nl', 'Netherlands', 'Nederlands' ); + VALUES( 'nl_NL', 'Netherlands', 'Nederlands' ); diff --git a/po/pl.values b/po/pl.values index bb3bb9cc..1f84c971 100644 --- a/po/pl.values +++ b/po/pl.values @@ -1 +1 @@ - VALUES( 'pl', 'Polish', 'Polski' ); + VALUES( 'pl_PL', 'Polish', 'Polski' ); diff --git a/po/ru.values b/po/ru.values index 5c19231e..0aa5e4bc 100644 --- a/po/ru.values +++ b/po/ru.values @@ -1 +1 @@ - VALUES( 'ru', 'Russian', 'Русский' ); + VALUES( 'ru_RU', 'Russian', 'Русский' ); diff --git a/po/sv.values b/po/sv.values index a0db9195..bafbe718 100644 --- a/po/sv.values +++ b/po/sv.values @@ -1 +1 @@ - VALUES( 'sv', 'Swedish', 'Svenska' ); + VALUES( 'sv_SE', 'Swedish', 'Svenska' );