summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2009-12-19 14:03:31 -0500
committerBrion Vibber <brion@pobox.com>2009-12-21 06:57:10 -0800
commitf987273f118a12d443b6789c2ab59d7a4b01f678 (patch)
tree3f9de89c3008d3e3607cfd84c80a3b2081119dd2
parent2fb76eec62fee8cabda69bb3df2b5a6c988f9e8a (diff)
Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box.
-rw-r--r--lib/util.php12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/util.php b/lib/util.php
index 99a0a1db3..5d20ed82d 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -91,8 +91,16 @@ function common_language()
if (_have_config() && common_logged_in()) {
$user = common_current_user();
$user_language = $user->language;
- if ($user_language)
- return $user_language;
+
+ if ($user->language) {
+ // Validate -- we don't want to end up with a bogus code
+ // left over from some old junk.
+ foreach (common_config('site', 'languages') as $code => $info) {
+ if ($info['lang'] == $user_language) {
+ return $user_language;
+ }
+ }
+ }
}
// Otherwise, find the best match for the languages requested by the