--- a/mozilla-language.patch Mon Nov 06 07:44:08 2017 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-# HG changeset patch
-# User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent 5a29924228527f8882c83cf62d470963ea1ce62e
-# Parent 242f2521ed48bb63b91582956b5e4af80bcb3378
-Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
-
-diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
---- a/intl/locale/nsLocaleService.cpp
-+++ b/intl/locale/nsLocaleService.cpp
-@@ -116,16 +116,17 @@ nsLocaleService::nsLocaleService(void)
- NS_ENSURE_SUCCESS_VOID(rv);
- #endif
- #if defined(XP_UNIX) && !defined(XP_MACOSX)
- RefPtr<nsLocale> resultLocale(new nsLocale());
- NS_ENSURE_TRUE_VOID(resultLocale);
-
- // Get system configuration
- const char* lang = getenv("LANG");
-+ const char* language = getenv("LANGUAGE");
-
- nsAutoString xpLocale, platformLocale;
- nsAutoString category, category_platform;
- int i;
-
- for( i = 0; i < LocaleListLength; i++ ) {
- nsresult result;
- // setlocale( , "") evaluates LC_* and LANG
-@@ -151,16 +152,37 @@ nsLocaleService::nsLocaleService(void)
- } else {
- CopyASCIItoUTF16(lang, platformLocale);
- result = nsPosixLocale::GetXPLocale(lang, xpLocale);
- }
- }
- if (NS_FAILED(result)) {
- return;
- }
-+ // LANGUAGE is overriding LC_MESSAGES
-+ // it can be a colon separated list of preferred languages
-+ // as we do not recognize here if a language is available
-+ // we actually only consider the first entry unless GetXPLocale
-+ // fails completely
-+ if (i == LC_MESSAGES && language && *language) {
-+#define LANGUAGE_SEP ":"
-+ nsAutoString xpLocale_temp;
-+ char* rawBuffer = (char*) language;
-+ char* token = nsCRT::strtok(rawBuffer, LANGUAGE_SEP, &rawBuffer);
-+ for (; token;
-+ token = nsCRT::strtok(rawBuffer, LANGUAGE_SEP, &rawBuffer)) {
-+ result = nsPosixLocale::GetXPLocale(token, xpLocale_temp);
-+ if (NS_SUCCEEDED(result)) {
-+ CopyASCIItoUTF16(token, platformLocale);
-+ xpLocale = xpLocale_temp;
-+ break;
-+ }
-+ }
-+ }
-+
- resultLocale->AddCategory(category, xpLocale);
- resultLocale->AddCategory(category_platform, platformLocale);
- }
- mSystemLocale = do_QueryInterface(resultLocale);
- mApplicationLocale = do_QueryInterface(resultLocale);
-
- #endif // XP_UNIX
-