summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-05-05 17:30:42 -0700
committerBrion Vibber <brion@pobox.com>2010-05-05 17:30:42 -0700
commit3e8af172d636cc7ca3a9e2301b928f6ca79b9eb2 (patch)
treec1e651ef9523b85765de9a0328cdb803b6db6573
parent173778eab145cfd73f597cd75db195e4d47fe323 (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
-rw-r--r--lib/util.php35
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;
}
}