diff options
author | Brion Vibber <brion@pobox.com> | 2010-05-05 17:30:42 -0700 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-05-05 17:30:42 -0700 |
commit | 3e8af172d636cc7ca3a9e2301b928f6ca79b9eb2 (patch) | |
tree | c1e651ef9523b85765de9a0328cdb803b6db6573 /lib | |
parent | 173778eab145cfd73f597cd75db195e4d47fe323 (diff) |
Add ?uselang=xx language override option (only valid, locally-enabled languages supported, just as with headers and user settings).
Great aid for debugging & translation testing
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util.php | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/lib/util.php b/lib/util.php index e7ea9df61..e15c69f95 100644 --- a/lib/util.php +++ b/lib/util.php @@ -138,23 +138,38 @@ function common_timezone() return common_config('site', 'timezone'); } +function common_valid_language($lang) +{ + if ($lang) { + // 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'] == $lang) { + return true; + } + } + } + return false; +} + function common_language() { + // Allow ?uselang=xx override, very useful for debugging + // and helping translators check usage and context. + if (isset($_GET['uselang'])) { + $uselang = strval($_GET['uselang']); + if (common_valid_language($uselang)) { + return $uselang; + } + } // If there is a user logged in and they've set a language preference // then return that one... if (_have_config() && common_logged_in()) { $user = common_current_user(); - $user_language = $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; - } - } + + if (common_valid_language($user->language)) { + return $user->language; } } |