mozilla-language.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Mon, 28 Dec 2015 13:54:47 +0100
branchgtk3
changeset 893 86f72f1e98a4
parent 869 0dd25a92df97
child 899 44a28160de40
permissions -rw-r--r--
prepare Gtk3 based builds on a feature branch

# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent 5a29924228527f8882c83cf62d470963ea1ce62e
# Parent  228ea0669fa8cc78532b71d7bdc4bad5477f246e
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
@@ -122,16 +122,17 @@ nsLocaleService::nsLocaleService(void)
     nsRefPtr<nsLocale> resultLocale(new nsLocale());
     NS_ENSURE_TRUE_VOID(resultLocale);
 
 #ifdef MOZ_WIDGET_QT
     const char* lang = QLocale::system().name().toUtf8();
 #else
     // Get system configuration
     const char* lang = getenv("LANG");
+    const char* language = getenv("LANGUAGE");
 #endif
 
     nsAutoString xpLocale, platformLocale;
     nsAutoString category, category_platform;
     int i;
 
     for( i = 0; i < LocaleListLength; i++ ) {
         nsresult result;
@@ -158,16 +159,21 @@ nsLocaleService::nsLocaleService(void)
             } else {
                 CopyASCIItoUTF16(lang, platformLocale);
                 result = nsPosixLocale::GetXPLocale(lang, xpLocale);
             }
         }
         if (NS_FAILED(result)) {
             return;
         }
+        // LANGUAGE is overriding LC_MESSAGES
+        if (i == LC_MESSAGES && language && *language) {
+          CopyASCIItoUTF16(language, platformLocale);
+          result = nsPosixLocale::GetXPLocale(language, xpLocale);
+        }
         resultLocale->AddCategory(category, xpLocale);
         resultLocale->AddCategory(category_platform, platformLocale);
     }
     mSystemLocale = do_QueryInterface(resultLocale);
     mApplicationLocale = do_QueryInterface(resultLocale);
        
 #endif // XP_UNIX