2012-11-30 00:21:03 +01:00
|
|
|
<?php
|
|
|
|
|
2017-03-23 23:01:20 +01:00
|
|
|
final class Application_Model_Locale
|
2012-11-30 00:21:03 +01:00
|
|
|
{
|
2014-11-05 16:15:16 +01:00
|
|
|
private static $domains = array(
|
2014-11-04 22:57:40 +01:00
|
|
|
'airtime',
|
|
|
|
'pro',
|
2014-11-05 16:15:16 +01:00
|
|
|
);
|
2014-11-04 22:57:40 +01:00
|
|
|
|
2014-08-26 19:32:35 +02:00
|
|
|
public static $locales = array(
|
|
|
|
"en_CA" => "English (Canada)",
|
|
|
|
"en_GB" => "English (Britain)",
|
|
|
|
"en_US" => "English (USA)",
|
|
|
|
"cs_CZ" => "Český",
|
|
|
|
"de_DE" => "Deutsch",
|
|
|
|
"de_AT" => "Deutsch (Österreich)",
|
|
|
|
"el_GR" => "Ελληνικά",
|
|
|
|
"es_ES" => "Español",
|
|
|
|
"fr_FR" => "Français",
|
|
|
|
"hr_HR" => "Hrvatski",
|
|
|
|
"hu_HU" => "Magyar",
|
|
|
|
"it_IT" => "Italiano",
|
2014-09-12 22:29:47 +02:00
|
|
|
"ja_JP" => "日本語",
|
2014-08-26 19:32:35 +02:00
|
|
|
"ko_KR" => "한국어",
|
|
|
|
"pl_PL" => "Polski",
|
|
|
|
"pt_BR" => "Português (Brasil)",
|
|
|
|
"ru_RU" => "Русский",
|
|
|
|
"sr_RS" => "Српски (Ћирилица)",
|
|
|
|
"sr_RS@latin" => "Srpski (Latinica)",
|
|
|
|
"zh_CN" => "简体中文"
|
|
|
|
);
|
|
|
|
|
2012-11-30 00:21:03 +01:00
|
|
|
public static function getLocales()
|
|
|
|
{
|
2014-08-26 19:32:35 +02:00
|
|
|
return self::$locales;
|
2012-11-30 00:21:03 +01:00
|
|
|
}
|
2013-01-10 00:03:23 +01:00
|
|
|
|
|
|
|
public static function configureLocalization($locale = null)
|
|
|
|
{
|
|
|
|
$codeset = 'UTF-8';
|
|
|
|
if (is_null($locale)) {
|
|
|
|
$lang = Application_Model_Preference::GetLocale().'.'.$codeset;
|
|
|
|
} else {
|
|
|
|
$lang = $locale.'.'.$codeset;
|
|
|
|
}
|
2014-07-28 17:35:19 +02:00
|
|
|
//putenv("LC_ALL=$lang");
|
|
|
|
//putenv("LANG=$lang");
|
|
|
|
//Setting the LANGUAGE env var supposedly lets gettext search inside our locale dir even if the system
|
|
|
|
//doesn't have the particular locale that we want installed. This doesn't actually seem to work though. -- Albert
|
|
|
|
putenv("LANGUAGE=$locale");
|
|
|
|
if (setlocale(LC_MESSAGES, $lang) === false)
|
|
|
|
{
|
|
|
|
Logging::warn("Your system does not have the " . $lang . " locale installed. Run: sudo locale-gen " . $lang);
|
|
|
|
}
|
|
|
|
|
2014-11-04 22:57:40 +01:00
|
|
|
// We need to run bindtextdomain and bind_textdomain_codeset for each domain we're using.
|
|
|
|
foreach (self::$domains as $domain) {
|
|
|
|
bindtextdomain($domain, '../locale');
|
|
|
|
bind_textdomain_codeset($domain, $codeset);
|
|
|
|
}
|
|
|
|
|
|
|
|
textdomain('airtime');
|
2013-01-10 00:03:23 +01:00
|
|
|
}
|
2014-11-04 22:57:40 +01:00
|
|
|
|
2014-11-05 23:24:54 +01:00
|
|
|
/**
|
|
|
|
* We need this function for the case where a user has logged out, but
|
|
|
|
* has an airtime_locale cookie containing their locale setting.
|
|
|
|
*
|
|
|
|
* If the user does not have an airtime_locale cookie set, we default
|
|
|
|
* to the station locale.
|
|
|
|
*
|
|
|
|
* When the user logs in, the value set in the login form will be passed
|
|
|
|
* into the airtime_locale cookie. This cookie is also updated when
|
|
|
|
* a user updates their user settings.
|
|
|
|
*/
|
|
|
|
public static function getUserLocale() {
|
|
|
|
$request = Zend_Controller_Front::getInstance()->getRequest();
|
|
|
|
$locale = $request->getCookie('airtime_locale', Application_Model_Preference::GetLocale());
|
|
|
|
return $locale;
|
|
|
|
}
|
2014-11-05 23:36:58 +01:00
|
|
|
|
2014-08-26 19:32:35 +02:00
|
|
|
}
|
|
|
|
|