diff options
author | Andy Staudacher <andy.st@gmail.com> | 2009-09-04 11:06:20 -0700 |
---|---|---|
committer | Andy Staudacher <andy.st@gmail.com> | 2009-09-04 11:06:20 -0700 |
commit | 001623c755777846a468255d4396d30b253dcdfb (patch) | |
tree | 2bf78736cb8da45b3fe584ef0a67cb4898d47a3f /modules/user/helpers/user_event.php | |
parent | c453c0ef8239bc79e484dd3feb9e275e942e9d48 (diff) |
Add new locale preferences: Adding per session (cookie) locale preferences and check the browser's / OS' locale preferences.
Ticket 582.
Diffstat (limited to 'modules/user/helpers/user_event.php')
-rw-r--r-- | modules/user/helpers/user_event.php | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/modules/user/helpers/user_event.php b/modules/user/helpers/user_event.php index 4bde224b..ede4e515 100644 --- a/modules/user/helpers/user_event.php +++ b/modules/user/helpers/user_event.php @@ -23,12 +23,7 @@ class user_event_Core { */ static function gallery_ready() { user::load_user(); - - $locale = user::active()->locale; - if (!empty($locale)) { - // TODO(andy_st): Check session data as well. - I18n::instance()->locale($locale); - } + self::set_request_locale(); } static function admin_menu($menu, $theme) { @@ -38,4 +33,21 @@ class user_event_Core { ->label(t("Users/Groups")) ->url(url::site("admin/users"))); } + + static function set_request_locale() { + // 1. Check the session specific preference (cookie) + $locale = user::cookie_locale(); + // 2. Check the user's preference + if (!$locale) { + $locale = user::active()->locale; + } + // 3. Check the browser's / OS' preference + if (!$locale) { + $locale = locales::locale_from_http_request(); + } + // If we have any preference, override the site's default locale + if ($locale) { + I18n::instance()->locale($locale); + } + } } |