summaryrefslogtreecommitdiff
path: root/modules/user/helpers/user_event.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/user/helpers/user_event.php')
-rw-r--r--modules/user/helpers/user_event.php24
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);
+ }
+ }
}