mozilla-locale.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 14 Sep 2011 09:11:27 +0200
branchmozilla-1.9.2
changeset 314 0103840bc431
parent 184 e398c79b1668
permissions -rw-r--r--
add dbus-1-glib-devel to BuildRequires
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
122
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# User Wolfgang Rosenauer <wr@rosenauer.org>
184
e398c79b1668 ignore empty LANGUAGE environment variable (bnc#648854)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 122
diff changeset
     3
# Parent e069ee20084757311e0826e68d5a1fbeb3dcc29f
122
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleService.cpp
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
--- a/intl/locale/src/nsLocaleService.cpp
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
+++ b/intl/locale/src/nsLocaleService.cpp
184
e398c79b1668 ignore empty LANGUAGE environment variable (bnc#648854)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 122
diff changeset
     9
@@ -169,39 +169,48 @@ nsLocaleService::nsLocaleService(void)
122
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
         nsAutoString category, category_platform;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
         nsLocale* resultLocale;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
         int i;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
 
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
         resultLocale = new nsLocale();
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
         if ( resultLocale == NULL ) { 
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
             return; 
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
         }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
+
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
+        // Get system configuration
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
+        char* language = getenv("LANGUAGE");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
+        char* lang = getenv("LANG");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
         for( i = 0; i < LocaleListLength; i++ ) {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
             nsresult result;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
+            // setlocale( , "") evaluates LC_* and LANG
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
             char* lc_temp = setlocale(posix_locale_category[i], "");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
             CopyASCIItoUTF16(LocaleList[i], category);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
-            category_platform = category; 
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
+            category_platform = category;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
             category_platform.AppendLiteral("##PLATFORM");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
             if (lc_temp != nsnull) {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
                 result = posixConverter->GetXPLocale(lc_temp, xpLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
                 CopyASCIItoUTF16(lc_temp, platformLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
             } else {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
-                char* lang = getenv("LANG");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
                 if ( lang == nsnull ) {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
                     platformLocale.AssignLiteral("en_US");
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
                     result = posixConverter->GetXPLocale("en-US", xpLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
                 }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
                 else {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
                     CopyASCIItoUTF16(lang, platformLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
-                    result = posixConverter->GetXPLocale(lang, xpLocale); 
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
+                    result = posixConverter->GetXPLocale(lang, xpLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
                 }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
             }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
             if (NS_FAILED(result)) {
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
                 return;
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
             }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
+            // LANGUAGE is overriding LC_MESSAGES
184
e398c79b1668 ignore empty LANGUAGE environment variable (bnc#648854)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 122
diff changeset
    49
+            if (i == LC_MESSAGES && language && *language) {
122
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
+                CopyASCIItoUTF16(language, platformLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
+                result = posixConverter->GetXPLocale(language, xpLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
+            }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
             resultLocale->AddCategory(category, xpLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
             resultLocale->AddCategory(category_platform, platformLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
         }
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
         mSystemLocale = do_QueryInterface(resultLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
         mApplicationLocale = do_QueryInterface(resultLocale);
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
     }  // if ( NS_SUCCEEDED )...
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
        
4270a8c31485 honor LANGUAGE environment variable for UI locale (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
 #endif // XP_UNIX || XP_BEOS