sintonia/legacy/application/models/Locale.php

81 lines
2.7 KiB
PHP
Raw Normal View History

<?php
2017-03-23 23:01:20 +01:00
final class Application_Model_Locale
{
2021-10-14 19:58:14 +02:00
private static $domains = ['libretime'];
2021-10-11 16:10:47 +02:00
public static $locales = [
'en_US' => 'English (USA)',
'cs_CZ' => 'Český',
'de_AT' => 'Deutsch (Österreich)',
'de_DE' => 'Deutsch',
2021-10-11 16:10:47 +02:00
'el_GR' => 'Ελληνικά',
'en_CA' => 'English (Canada)',
'en_GB' => 'English (Britain)',
2021-10-11 16:10:47 +02:00
'es_ES' => 'Español',
'fr_FR' => 'Français',
'hr_HR' => 'Hrvatski',
'hu_HU' => 'Magyar',
'it_IT' => 'Italiano',
'ja_JP' => '日本語',
'ko_KR' => '한국어',
// 'nl_NL' => '',
2021-10-11 16:10:47 +02:00
'pl_PL' => 'Polski',
'pt_BR' => 'Português (Brasil)',
'ru_RU' => 'Русский',
'sr_RS' => 'Српски (Ћирилица)',
'sr_RS@latin' => 'Srpski (Latinica)',
// 'tr_TR' => '',
2021-10-11 16:10:47 +02:00
'zh_CN' => '简体中文',
];
public static function getLocales()
{
return self::$locales;
}
public static function configureLocalization($locale = null)
{
$codeset = 'UTF-8';
if (is_null($locale)) {
2021-10-11 16:10:47 +02:00
$lang = Application_Model_Preference::GetLocale() . '.' . $codeset;
} else {
2021-10-11 16:10:47 +02:00
$lang = $locale . '.' . $codeset;
}
//putenv("LC_ALL=$lang");
//putenv("LANG=$lang");
2021-10-11 16:10:47 +02:00
//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
2021-10-11 16:10:47 +02:00
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);
}
2021-10-11 16:10:47 +02:00
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);
}
2021-10-11 16:10:47 +02:00
2021-10-14 19:58:14 +02:00
textdomain('libretime');
}
2021-10-11 16:10:47 +02:00
/**
2021-10-11 16:10:47 +02:00
* We need this function for the case where a user has logged out, but
* has an airtime_locale cookie containing their locale setting.
2021-10-11 16:10:47 +02:00
*
* If the user does not have an airtime_locale cookie set, we default
* to the station locale.
2021-10-11 16:10:47 +02:00
*
* 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.
*/
2021-10-11 16:10:47 +02:00
public static function getUserLocale()
{
$request = Zend_Controller_Front::getInstance()->getRequest();
2014-11-05 23:36:58 +01:00
2021-10-11 16:10:47 +02:00
return $request->getCookie('airtime_locale', Application_Model_Preference::GetLocale());
}
}