--- a/mozilla-language.patch Sat Jul 23 15:16:24 2011 +0200
+++ b/mozilla-language.patch Sat Jul 23 15:31:44 2011 +0200
@@ -1,48 +1,48 @@
# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent db620d83124746201970dcf50c661957df979eca
+# Parent 0d6917b8f28f6e0398dbf329dda4932ba4f997c2
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleService.cpp
--- a/intl/locale/src/nsLocaleService.cpp
+++ b/intl/locale/src/nsLocaleService.cpp
-@@ -181,16 +181,17 @@ nsLocaleService::nsLocaleService(void)
- }
-
+@@ -160,16 +160,17 @@ nsLocaleService::nsLocaleService(void)
+ nsRefPtr<nsLocale> resultLocale(new nsLocale());
+ NS_ENSURE_TRUE(resultLocale, );
#ifdef MOZ_WIDGET_QT
- const char* lang = QLocale::system().name().toAscii();
+ const char* lang = QLocale::system().name().toAscii();
#else
- // Get system configuration
- const char* lang = getenv("LANG");
-+ const char* language = getenv("LANGUAGE");
+ // Get system configuration
+ const char* lang = getenv("LANG");
++ const char* language = getenv("LANGUAGE");
#endif
- for( i = 0; i < LocaleListLength; i++ ) {
- nsresult result;
- // setlocale( , "") evaluates LC_* and LANG
- char* lc_temp = setlocale(posix_locale_category[i], "");
- CopyASCIItoUTF16(LocaleList[i], category);
- category_platform = category;
-@@ -206,16 +207,21 @@ nsLocaleService::nsLocaleService(void)
- else {
- CopyASCIItoUTF16(lang, platformLocale);
- result = posixConverter->GetXPLocale(lang, xpLocale);
- }
+ nsAutoString xpLocale, platformLocale;
+ nsAutoString category, category_platform;
+ int i;
+
+ for( i = 0; i < LocaleListLength; i++ ) {
+ nsresult result;
+@@ -188,16 +189,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 = posixConverter->GetXPLocale(language, xpLocale);
-+ }
- resultLocale->AddCategory(category, xpLocale);
- resultLocale->AddCategory(category_platform, platformLocale);
+ }
+ if (NS_FAILED(result)) {
+ return;
}
- mSystemLocale = do_QueryInterface(resultLocale);
- mApplicationLocale = do_QueryInterface(resultLocale);
- } // if ( NS_SUCCEEDED )...
++ // 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
+ #ifdef XP_OS2