public static current_locale ( boolean $persist = true ) : string | ||
$persist | boolean | Attempt to persist any detected locale within session / cookies |
return | string | i18n locale code |
public static function current_locale($persist = true)
{
// Check overridden locale
if (self::$_override_locale) {
return self::$_override_locale;
}
// Check direct request
$locale = self::get_request_locale();
// Persistant variables
if (empty($locale)) {
$locale = self::get_persist_locale();
}
// Check browser headers
if (empty($locale)) {
$locale = self::detect_browser_locale();
}
// Fallback to default if empty or invalid (for this domain)
$caresAboutDomains = Fluent::is_frontend();
if (empty($locale) || !in_array($locale, self::locales($caresAboutDomains))) {
$locale = self::default_locale($caresAboutDomains);
}
// Persist locale if requested
if ($persist) {
self::set_persist_locale($locale);
}
return $locale;
}
public function fix_fluent_menu() { if (!class_exists('Fluent')) { return; } $conf = SiteConfig::current_site_config(); $localesNames = Fluent::locale_names(); if ($conf->hasExtension('ActiveLocalesExtension') && $conf->ActiveLocales) { $localesNames = $conf->ActiveLocalesNames(); } $locales = json_encode($localesNames); $locale = json_encode(Fluent::current_locale()); // If we have only one locale, set this one as default if (count($localesNames) === 1) { $locale = json_encode(key($localesNames)); } $param = json_encode(Fluent::config()->query_param); $buttonTitle = json_encode(_t('Fluent.ChangeLocale', 'Change Locale')); Requirements::block('FluentHeadScript'); Requirements::insertHeadTags(<<<EOT <script type="text/javascript"> //<![CDATA[ \tvar fluentLocales = {$locales}; \tvar fluentLocale = {$locale}; \tvar fluentParam = {$param}; \tvar fluentButtonTitle = {$buttonTitle}; //]]> </script> EOT , 'FluentHeadScriptSubsite'); }