author | Wolfgang Rosenauer <wr@rosenauer.org> |
Sun, 12 Feb 2017 08:57:22 +0100 | |
changeset 941 | ff9e20146e8b |
parent 939 | 3604ed712e16 |
child 994 | 9fc447b00040 |
permissions | -rw-r--r-- |
161
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
1 |
# HG changeset patch |
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
2 |
# User Wolfgang Rosenauer <wr@rosenauer.org> |
779 | 3 |
# Parent 5a29924228527f8882c83cf62d470963ea1ce62e |
939
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
4 |
# Parent 4f39ed617c2f151a3a15903c7ae4471b66774e9e |
161
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
5 |
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE |
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
6 |
|
779 | 7 |
diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp |
8 |
--- a/intl/locale/nsLocaleService.cpp |
|
9 |
+++ b/intl/locale/nsLocaleService.cpp |
|
932 | 10 |
@@ -114,16 +114,17 @@ nsLocaleService::nsLocaleService(void) |
11 |
NS_ENSURE_SUCCESS_VOID(rv); |
|
12 |
#endif |
|
13 |
#if defined(XP_UNIX) && !defined(XP_MACOSX) |
|
899 | 14 |
RefPtr<nsLocale> resultLocale(new nsLocale()); |
568
2c74c5927ea2
first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
294
diff
changeset
|
15 |
NS_ENSURE_TRUE_VOID(resultLocale); |
229
298263f797be
update to 2.0b12/4.0b12
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
185
diff
changeset
|
16 |
|
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
17 |
// Get system configuration |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
18 |
const char* lang = getenv("LANG"); |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
19 |
+ const char* language = getenv("LANGUAGE"); |
229
298263f797be
update to 2.0b12/4.0b12
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
185
diff
changeset
|
20 |
|
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
21 |
nsAutoString xpLocale, platformLocale; |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
22 |
nsAutoString category, category_platform; |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
23 |
int i; |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
24 |
|
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
25 |
for( i = 0; i < LocaleListLength; i++ ) { |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
26 |
nsresult result; |
932 | 27 |
// setlocale( , "") evaluates LC_* and LANG |
939
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
28 |
@@ -149,16 +150,36 @@ nsLocaleService::nsLocaleService(void) |
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
29 |
} else { |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
30 |
CopyASCIItoUTF16(lang, platformLocale); |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
31 |
result = nsPosixLocale::GetXPLocale(lang, xpLocale); |
161
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
32 |
} |
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
33 |
} |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
34 |
if (NS_FAILED(result)) { |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
35 |
return; |
161
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
36 |
} |
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
37 |
+ // LANGUAGE is overriding LC_MESSAGES |
939
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
38 |
+ // it can be a colon separated list of preferred languages |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
39 |
+ // as we do not recognize here if a language is available |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
40 |
+ // we actually only consider the first entry unless GetXPLocale |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
41 |
+ // fails completely |
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
42 |
+ if (i == LC_MESSAGES && language && *language) { |
939
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
43 |
+#define LANGUAGE_SEP ":" |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
44 |
+ nsAutoString xpLocale_temp; |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
45 |
+ char* rawBuffer = (char*) language; |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
46 |
+ char* token = nsCRT::strtok(rawBuffer, LANGUAGE_SEP, &rawBuffer); |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
47 |
+ for (; token; |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
48 |
+ token = nsCRT::strtok(rawBuffer, LANGUAGE_SEP, &rawBuffer)) { |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
49 |
+ result = nsPosixLocale::GetXPLocale(token, xpLocale_temp); |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
50 |
+ if (NS_SUCCEEDED(result)) { |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
51 |
+ CopyASCIItoUTF16(token, platformLocale); |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
52 |
+ xpLocale = xpLocale_temp; |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
53 |
+ break; |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
54 |
+ } |
3604ed712e16
51.0 as submitted to official openSUSE
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
932
diff
changeset
|
55 |
+ } |
294
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
56 |
+ } |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
57 |
resultLocale->AddCategory(category, xpLocale); |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
58 |
resultLocale->AddCategory(category_platform, platformLocale); |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
59 |
} |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
60 |
mSystemLocale = do_QueryInterface(resultLocale); |
5330447b83a3
update to aurora (6.99 / 20110721)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
251
diff
changeset
|
61 |
mApplicationLocale = do_QueryInterface(resultLocale); |
161
a6dc70babb5f
honour LANGUAGE environment variable (bmo#583793)
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
62 |
|
251
4c9ebbedd59c
adopt patches to new base
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
229
diff
changeset
|
63 |
#endif // XP_UNIX |
718 | 64 |