82 lines
2.8 KiB
PHP
82 lines
2.8 KiB
PHP
<?php
|
|
|
|
final class Application_Model_Locale
|
|
{
|
|
private static $domains = ['libretime'];
|
|
|
|
public static $locales = [
|
|
'en_US' => 'English (USA)',
|
|
'cs_CZ' => 'Český',
|
|
'de_AT' => 'Deutsch (Österreich)',
|
|
'de_DE' => 'Deutsch',
|
|
'el_GR' => 'Ελληνικά',
|
|
'en_CA' => 'English (Canada)',
|
|
'en_GB' => 'English (Britain)',
|
|
'es_ES' => 'Español',
|
|
'fr_FR' => 'Français',
|
|
'hr_HR' => 'Hrvatski',
|
|
'hu_HU' => 'Magyar',
|
|
'it_IT' => 'Italiano',
|
|
'ja_JP' => '日本語',
|
|
'ko_KR' => '한국어',
|
|
// 'nl_NL' => '',
|
|
'pl_PL' => 'Polski',
|
|
'pt_BR' => 'Português (Brasil)',
|
|
'ru_RU' => 'Русский',
|
|
'sr_RS' => 'Српски (Ћирилица)',
|
|
'sr_RS@latin' => 'Srpski (Latinica)',
|
|
// 'tr_TR' => '',
|
|
'uk_UA' => 'украї́нська мо́ва',
|
|
'zh_CN' => '简体中文',
|
|
];
|
|
|
|
public static function getLocales()
|
|
{
|
|
return self::$locales;
|
|
}
|
|
|
|
public static function configureLocalization($locale = null)
|
|
{
|
|
$codeset = 'UTF-8';
|
|
if (is_null($locale)) {
|
|
$lang = Application_Model_Preference::GetLocale() . '.' . $codeset;
|
|
} else {
|
|
$lang = $locale . '.' . $codeset;
|
|
}
|
|
// 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);
|
|
}
|
|
|
|
// 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('libretime');
|
|
}
|
|
|
|
/**
|
|
* 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();
|
|
|
|
return $request->getCookie('airtime_locale', Application_Model_Preference::GetLocale());
|
|
}
|
|
}
|