function initLocalize($argLanguage = null) { $language = 'en_US'; // 適用言語判定 if (null === $argLanguage && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // 指定がなければHTTP_ACCEPT_LANGUAGEから判定する $argLanguage = $_SERVER['HTTP_ACCEPT_LANGUAGE']; } if (false !== strpos($argLanguage, "ja") || false !== strpos(strtolower($argLanguage), "jp")) { // 強制日本語 $argLanguage = 'ja_JP'; } if (false !== strpos($argLanguage, "zh") || false !== strpos(strtolower($argLanguage), "cn") || false !== strpos(strtolower($argLanguage), "tw")) { // 強制中国語(簡体) $argLanguage = 'zh_CN'; } if (false !== strpos($argLanguage, "ja_JP") || false !== strpos($argLanguage, "zh_CN")) { // 言語を決定 $language = $argLanguage . ".UTF-8"; } debug("lng=" . $language); // 言語処理 putenv("LANG={$language}"); setlocale(LC_ALL, $language); $domain = "messages"; bindtextdomain($domain, dirname(__FILE__)); textdomain($domain); return $language; }
public function __construct($options) { putenv("LC_ALL=" . $options['locale']); setlocale(LC_ALL, $options['locale']); bindtextdomain($options['file'], $options['directory']); textdomain($options['file']); }
function postfixadmin_optpage_register_block() { // Gets added to the user's OPTIONS page. global $optpage_blocks; global $AllowVacation; global $AllowChangePass; // if ( !soupNazi() ) { bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale'); textdomain('postfixadmin'); $optpage_blocks[] = array('name' => _("Forwarding"), 'url' => '../plugins/postfixadmin/postfixadmin_forward.php', 'desc' => _("Here you can create and edit E-Mail forwards."), 'js' => FALSE); bindtextdomain('squirrelmail', SM_PATH . 'locale'); textdomain('squirrelmail'); bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale'); textdomain('postfixadmin'); if ($AllowVacation) { $optpage_blocks[] = array('name' => _("Auto Response"), 'url' => '../plugins/postfixadmin/postfixadmin_vacation.php', 'desc' => _("Set an OUT OF OFFICE message or auto responder for your mail."), 'js' => false); bindtextdomain('squirrelmail', SM_PATH . 'locale'); textdomain('squirrelmail'); } bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale'); textdomain('postfixadmin'); if ($AllowChangePass) { $optpage_blocks[] = array('name' => _("Change Password"), 'url' => '../plugins/postfixadmin/postfixadmin_changepass.php', 'desc' => _("Change your mailbox password."), 'js' => false); bindtextdomain('squirrelmail', SM_PATH . 'locale'); textdomain('squirrelmail'); } }
/** * ------------------------------------------------------------------------- * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * ------------------------------------------------------------------------- * * * @package smarty-gettext * @link https://github.com/smarty-gettext/smarty-gettext/ * @author Karlheinz Toni <*****@*****.**> * @author Boleslaw Tekielski <*****@*****.**> * @author Elan Ruusamäe <*****@*****.**> * @copyright 2012 Karlheinz Toni * @copyright 2015 Boleslaw Tekielski * @copyright 2015 Elan Ruusamäe */ function smarty_function_locale($params, &$smarty) { static $stack; // init stack as array if ($stack === null) { $stack = array(); } $path = $smarty->template_dir . $params['path']; $domain = isset($params['domain']) ? $params['domain'] : 'messages'; $stack_operation = isset($params['stack']) ? $params['stack'] : 'push'; if (!$path && $stack_operation != 'pop') { trigger_error("static (file {$smarty->template}): missing 'path' parameter.", E_USER_ERROR); } if ($stack_operation == 'push') { $stack[] = array($domain, $path); } elseif ($stack_operation == 'pop') { if (count($stack) > 1) { array_pop($stack); } list($domain, $path) = end($stack); } else { trigger_error("Unknown stack operation '{$stack_operation}'", E_USER_ERROR); } bind_textdomain_codeset($domain, 'UTF-8'); bindtextdomain($domain, $path); textdomain($domain); }
protected function registerTextDomains() { foreach (func_get_args() as $domain) { bindtextdomain($domain, __DIR__ . '/../Resources/translations'); bind_textdomain_codeset($domain, 'UTF-8'); } }
function init($language, $baseDir) { if (!is_file($baseDir . 'language/' . $language . '/LC_MESSAGES/pommo.mo')) { Pommo::kill('Unknown Language (' . $language . ')'); } // if LC_MESSAGES is not available.. make it (helpful for win32) if (!defined('LC_MESSAGES')) { define('LC_MESSAGES', 6); } // load gettext emulation layer if PHP is not compiled w/ gettext support if (!function_exists('gettext')) { require_once $baseDir . 'lib/gettext/gettext.php'; require_once $baseDir . 'lib/gettext/gettext.inc'; } // set the locale if (!Pommo_Helper_L10n::_setLocale(LC_MESSAGES, $language, $baseDir)) { // *** SYSTEM LOCALE COULD NOT BE USED, USE EMULTATION **** require_once $baseDir . 'lib/gettext/gettext.php'; require_once $baseDir . 'lib/gettext/gettext.inc'; if (!Pommo_Helper_L10n::_setLocaleEmu(LC_MESSAGES, $language, $baseDir)) { Pommo::kill('Error setting up language translation!'); } } else { // *** SYSTEM LOCALE WAS USED *** if (!defined('_poMMo_gettext')) { // set gettext environment $domain = 'pommo'; bindtextdomain($domain, $baseDir . 'language'); textdomain($domain); if (function_exists('bind_textdomain_codeset')) { bind_textdomain_codeset($domain, 'UTF-8'); } } } }
static function package($name, $path = null) { if ($path !== null) { bindtextdomain($name, $GLOBALS['_lang']->path . $path); } textdomain($name); }
/** * TuiyoLocalize::initiate() * Initiates a language domain * @param mixed $domain * @param mixed $locale * @param mixed $encoding * @return */ public function initiate($domain, $locale, $encoding) { //Initialize gettText $locale = !empty($locale) ? $locale : TUIYO_DEFAULT_LOCALE; $domain = !empty($domain) ? $domain : 'system'; $encoding = !empty($encoding) ? $encoding : TUIYO_DEFAULT_ENCODING; putenv("LANG={$locale}"); if (!extension_loaded('gettext')) { TuiyoLoader::import("gettext.gettext", "elibrary", "inc"); T_setlocale(LC_ALL, $locale); T_bindtextdomain($domain, TUIYO_LOCALE); T_bind_textdomain_codeset($domain, $encoding); T_textdomain($domain); //return TRUE; } setlocale(LC_ALL, $locale); bindtextdomain($domain, TUIYO_LOCALE); bind_textdomain_codeset($domain, $encoding); textdomain($domain); $path = "components/com_tuiyo/locale/" . $locale; //Load the parameters for the site! if (!class_exists('JSite')) { $path = "../components/com_tuiyo/locale/" . $locale; } $GLOBALS['mainframe']->addMetaTag("locale", $locale); $GLOBALS['mainframe']->addCustomHeadTag('<link href="' . $path . '/LC_MESSAGES/system.client.json" lang="' . $locale . '" rel="gettext" />'); }
public function __construct($lang = 'en_EN', $domain = 'default') { /* ./locale/en_EN/LC_MESSAGES/default.po */ $fnMO = dirname(__FILE__) . '/locale/' . $lang . '/LC_MESSAGES/' . $domain . '.mo'; if (!file_exists($fnMO)) { $fnPO = substr($fnMO, 0, -2) . 'po'; if (file_exists($fnPO) && is_readable($fnPO)) { $this->_moConverter($fnPO); } } @putenv('LC_ALL=' . $lang); @setlocale(LC_ALL, $lang); if (function_exists('bindtextdomain')) { bindtextdomain($domain, dirname(__FILE__) . '/locale'); } if (function_exists('bind_textdomain_codeset')) { bind_textdomain_codeset($domain, 'UTF-8'); } if (function_exists('textdomain')) { textdomain($domain); } $this->_defaultFunction = false; $this->_cache = array(); if (function_exists('gettext')) { $this->_defaultFunction = true; } else { $_tmp = $this->_moRead($fnMO, $lang); if (is_array($_tmp)) { $this->_cache = $_tmp[$lang]; } unset($_tmp); } }
/** * Build a new reporter html render */ protected function __construct() { putenv('LC_ALL=' . self::$lang); setlocale(LC_ALL, self::$lang); bindtextdomain($this->domain, self::$i18nPath); textdomain($this->domain); }
protected function setUp() { // override bootstrap settings bindtextdomain("default", E7_PATH . "/tests/i18n"); textdomain("default"); bind_textdomain_codeset("default", 'UTF-8'); }
/** * ------------------------------------------------------------------------- * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * ------------------------------------------------------------------------- * * * @package smarty-gettext * @link https://github.com/smarty-gettext/smarty-gettext/ * @author Karlheinz Toni <*****@*****.**> * @author Boleslaw Tekielski <*****@*****.**> * @author Elan Ruusamäe <*****@*****.**> * @copyright 2012 Karlheinz Toni * @copyright 2015 Boleslaw Tekielski * @copyright 2015 Elan Ruusamäe */ function smarty_function_locale($params, &$smarty) { static $stack; // init stack as array if ($stack === null) { $stack = array(); } $path = null; $template_dirs = method_exists($smarty, 'getTemplateDir') ? $smarty->getTemplateDir() : $smarty->template_dir; $path_param = isset($params['path']) ? $params['path'] : ''; $domain = isset($params['domain']) ? $params['domain'] : 'messages'; $stack_operation = isset($params['stack']) ? $params['stack'] : 'push'; foreach ((array) $template_dirs as $template_dir) { $path = $template_dir . $path_param; if (is_dir($path)) { break; } } if (!$path && $stack_operation != 'pop') { trigger_error("Directory for locales not found (path='{$path_param}')", E_USER_ERROR); } if ($stack_operation == 'push') { $stack[] = array($domain, $path); } elseif ($stack_operation == 'pop') { if (count($stack) > 1) { array_pop($stack); } list($domain, $path) = end($stack); } else { trigger_error("Unknown stack operation '{$stack_operation}'", E_USER_ERROR); } bind_textdomain_codeset($domain, 'UTF-8'); bindtextdomain($domain, $path); textdomain($domain); }
private function init() { Tools::initPhp(); if (isset($_SESSION['poche_user']) && $_SESSION['poche_user'] != array()) { $this->user = $_SESSION['poche_user']; } else { # fake user, just for install & login screens $this->user = new User(); $this->user->setConfig($this->getDefaultConfig()); } # l10n $language = $this->user->getConfigValue('language'); @putenv('LC_ALL=' . $language); setlocale(LC_ALL, $language); bindtextdomain($language, LOCALE); textdomain($language); # Pagination $this->pagination = new Paginator($this->user->getConfigValue('pager'), 'p'); # Set up theme $themeDirectory = $this->user->getConfigValue('theme'); if ($themeDirectory === false) { $themeDirectory = DEFAULT_THEME; } $this->currentTheme = $themeDirectory; # Set up language $languageDirectory = $this->user->getConfigValue('language'); if ($languageDirectory === false) { $languageDirectory = DEFAULT_THEME; } $this->currentLanguage = $languageDirectory; }
public function initialize_domain($domain, $path) { if (!isset($this->domains[$domain])) { bindtextdomain($domain, $path); $this->domains[$domain] = $path; } }
/** Set domain name. * * @param string $dir Directory path, where to find domain. In this directory current locale named subdirectory will be searched. * @param string $domain Domain name - filename without MO extension. * @param string $codeset Domain file codeset. * * @return $this */ public final function setDomain($dir, $domain, $codeset = 'UTF-8') { bindtextdomain($domain, $dir); bind_textdomain_codeset($domain, $codeset); $this->domains[] = $domain; return $this; }
/** * {@inheritdoc} */ public function bindTextDomain($textDomain, $codeSet = null) { $this->bendTextDomains[$textDomain] = array(); $textDomainDir = bindtextdomain($textDomain, $this->directory); $translationFileDir = $textDomainDir . DIRECTORY_SEPARATOR . StringUtils::beforeFirst(setlocale(LC_MESSAGES, '0'), '.') . DIRECTORY_SEPARATOR . 'LC_MESSAGES'; $moFilePath = $translationFileDir . DIRECTORY_SEPARATOR . $textDomain . '.mo'; $poFilePath = $translationFileDir . DIRECTORY_SEPARATOR . $textDomain . '.po'; if (file_exists($moFilePath) === true) { $this->bendTextDomains[$textDomain]['file_path'] = $moFilePath; $this->bendTextDomains[$textDomain]['type'] = 'mo'; } elseif (file_exists($poFilePath) === true && $this->poParserInterface instanceof PoParserInterface === true) { $this->bendTextDomains[$textDomain]['file_path'] = $poFilePath; $this->bendTextDomains[$textDomain]['type'] = 'po'; $this->bendTextDomains[$textDomain]['plural_expr'] = false; $this->bendTextDomains[$textDomain]['entries'] = $this->poParserInterface->extract($poFilePath); $this->bendTextDomains[$textDomain]['plural_expr'] = '$' . $this->defaultPluralRule . ';'; // Default plural rule $this->bendTextDomains[$textDomain]['plurals'] = 2; if (isset($this->bendTextDomains[$textDomain]['entries']['']) === true) { foreach ($this->bendTextDomains[$textDomain]['entries']['']['msgstr'] as $meta) { if (preg_match('/Plural-Forms:\\s+nplurals=(\\d+);\\s+(plural=[^;]+)/', $meta, $matches) === 0) { continue; } $this->bendTextDomains[$textDomain]['plurals'] = (int) $matches[1]; $this->bendTextDomains[$textDomain]['plural_expr'] = '$' . $matches[2] . ';'; } } } else { return; } $textDomainCodeSet = $codeSet !== null ? $codeSet : $this->defaultCodeSet; if (bind_textdomain_codeset($textDomain, $textDomainCodeSet) === $textDomainCodeSet) { $this->bendTextDomains[$textDomain]['code_set'] = $textDomainCodeSet; } }
function __construct() { $CI =& get_instance(); $CI->load->library('form_validation'); $CI->load->library('session'); $CI->form_validation->set_rules('lang_select', 'lang_select', 'exact_length[2]'); $this->lang_default = 'en'; if ($CI->input->post('lang_select')) { if ($CI->form_validation->run() == TRUE) { $this->lang = $CI->input->post('lang_select'); } else { $this->lang = $this->lang_default; } $CI->session->set_userdata(array('lang' => $this->lang, 'lang_txt' => $this->lang_allowed[$this->lang])); } else { if (!$CI->session->userdata('lang')) { $this->lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if (array_key_exists($this->lang, $this->lang_allowed)) { $CI->session->set_userdata(array('lang' => $this->lang, 'lang_txt' => $this->lang_allowed[$this->lang])); } else { $CI->session->set_userdata(array('lang' => $this->lang_default, 'lang_txt' => $this->lang_allowed[$this->lang_default])); } } } $del = array($CI->session->userdata('lang') => $CI->session->userdata('lang_txt')); $CI->session->set_userdata('lang_allowed', array_diff($this->lang_allowed, $del)); setlocale(LC_ALL, $CI->session->userdata('lang') . '_' . strtoupper($CI->session->userdata('lang')) . '.UTF-8'); setlocale(LC_NUMERIC, $CI->session->userdata('lang') . '_' . strtoupper($CI->session->userdata('lang')) . '.UTF-8'); bindtextdomain(strtolower($this->domain), APPPATH . '/language/locales/'); textdomain(strtolower($this->domain)); }
/** * Set the path for a domain. * * @param string $domain * @param string $path * @return string */ public function bindTextDomain($domain, $path) { if ($this->driver->hasLocaleAndFunction('bindtextdomain')) { return bindtextdomain($domain, $path); } return $this->driver->bindTextDomain($domain, $path); }
public function setOptions($options) { if (!is_array($options)) { throw new \Exception('Invalid options'); } if (!isset($options['locale'])) { throw new \Exception('Parameter "locale" is required'); } if (strpos($options['locale'], '..') !== false) { throw new \Exception('Locale has dangerous characters'); } if (!isset($options['domains'])) { throw new \Exception('domains must be specified and it must be an array.'); } if (isset($options['compileAlways']) && $options['compileAlways'] === true) { $compiler = new Compiler(); $compiler->compileLocale(['locale' => $options['locale'], 'domains' => $options['domains'], 'localeDir' => $options['localeDir'], 'localeCacheDir' => $options['localeCacheDir']]); } $codeset = 'UTF-8'; putenv('LANG=' . $options['locale'] . '.' . $codeset); putenv('LANGUAGE=' . $options['locale'] . '.' . $codeset); setlocale(LC_ALL, $options['locale'] . '.' . $codeset); foreach ($options['domains'] as $domain) { bindtextdomain($domain, $options['localeCacheDir']); bind_textdomain_codeset($domain, $codeset); } $this->domains = $options['domains']; $this->defaultDomain = reset($options['domains']); textdomain($this->defaultDomain); }
function localization_setup() { global $lang, $domain, $encoding, $available_locales, $preferred_lang; // Choose a default language based on the client's HTTP headers. // TODO: Replace HTTP::negotiateLanguage with something less buggy. // (See http://www.dracos.co.uk/web/php/HTTP/ for details.) $supported = $available_locales; $preferred_lang = HTTP::negotiateLanguage($supported, $lang); if ($preferred_lang) { $lang = $preferred_lang; } // Override the default if the user has an explicit cookie or query string. $force_lang = get_requested_lang(); if ($force_lang) { $lang = $force_lang; } if ($available_locales[$lang]) { // Set the locale. $locale = $available_locales[$lang][0]; setlocale(LC_ALL, $locale); // Find the locale directory. $path_parts = pathinfo(__FILE__); $this_dir = $path_parts["dirname"]; bindtextdomain($domain, "{$this_dir}/../locale"); // Set up gettext message localization. textdomain($domain); bind_textdomain_codeset($domain, $encoding); } // Tell clients to cache different languages separately. header("Vary: Accept-Language"); }
public static function setlocale_twoletter($locale) { putenv("LANG={$locale}"); setlocale(LC_MESSAGES, $locale); bindtextdomain(self::DOMAIN, self::LOCALEDIR); textdomain(self::DOMAIN); }
/** * Initialise our use of Gettext */ function init_gettext($domain, $location) { bindtextdomain($domain, $location); $codeset = bind_textdomain_codeset($domain, "UTF-8"); textdomain($domain); dbg_error_log("I18N", "Bound domain =%s= to location =%s= using character set =%s=", $domain, $location, $codeset); }
function locale($params, &$smarty) { global $stack; $path = isset($params['path']) ? str_replace(array("'", '"'), '', $params['path']) : null; $domain = isset($params['domain']) ? str_replace(array("'", '"'), '', $params['domain']) : 'messages'; $stack_operation = isset($params['stack']) ? str_replace(array("'", '"'), '', strtolower($params['stack'])) : 'push'; if ($path == null && $stack_operation != 'pop') { trigger_error("static (file {$smarty->_current_file}): missing 'path' parameter.", E_USER_ERROR); } if ($stack_operation == 'push') { $stack[] = array($domain, $path); } else { if ($stack_operation == 'pop') { if (count($stack) > 1) { array_pop($stack); } $definition = end($stack); $domain = $definition[0]; $path = $definition[1]; } } bind_textdomain_codeset($domain, 'UTF-8'); bindtextdomain($domain, $path); textdomain($domain); }
/** * Sets i18n locale language * * sets the language for i18n php gettext module * (gettext has to be enabled in the php.ini) * */ function set() { if (extension_loaded('gettext')) { // try and find the default locale $default_lang = preg_replace('/-/', '_', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $locale = 'en_US'; $locale_dir = "./locale"; $directories = getdirectories($locale_dir, ""); foreach ($directories as $directory) { $buf = substr($directory, strlen($locale_dir) + 1, strlen($directory) - strlen($locale_dir)); if (preg_match("/" . $buf . "/i", $default_lang)) { $locale = $buf; break; } } // set locale $language = isset($_COOKIE['ari_lang']) ? $_COOKIE['ari_lang'] : $locale; putenv("LANG={$language}"); putenv("LANGUAGE={$language}"); setlocale(LC_MESSAGES, $language); bindtextdomain('ari', './locale'); bind_textdomain_codeset('ari', 'UTF-8'); textdomain('ari'); } else { function _($str) { return $str; } } }
/** * Configures the gettext translations */ public function __construct(array $vars = null) { if (defined('THEME')) { $dir = SITE_HOME . '/Themes/' . THEME; if (is_dir($dir)) { $this->theme = $dir; $config_file = $dir . '/theme_config.inc'; if (is_file($config_file)) { $this->theme_config = (require $config_file); } } } if (count($vars)) { foreach ($vars as $name => $value) { $this->vars[$name] = $value; } } $locale = LOCALE . '.utf8'; putenv("LC_ALL={$locale}"); setlocale(LC_ALL, $locale); bindtextdomain('labels', APPLICATION_HOME . '/language'); bindtextdomain('messages', APPLICATION_HOME . '/language'); bindtextdomain('errors', APPLICATION_HOME . '/language'); textdomain('labels'); }
function translate($lang, $test = 0) { global $LOCALE_PATH; putenv("LANGUAGE={$lang}"); bindtextdomain("zarafa", "{$LOCALE_PATH}"); if (STORE_SUPPORTS_UNICODE == false) { bind_textdomain_codeset('zarafa', "windows-1252"); } else { bind_textdomain_codeset('zarafa', "utf-8"); } textdomain('zarafa'); setlocale(LC_ALL, $lang); $trans_array["Sent Items"] = _("Sent Items"); $trans_array["Outbox"] = _("Outbox"); $trans_array["Deleted Items"] = _("Deleted Items"); $trans_array["Inbox"] = _("Inbox"); $trans_array["Calendar"] = _("Calendar"); $trans_array["Contacts"] = _("Contacts"); $trans_array["Drafts"] = _("Drafts"); $trans_array["Journal"] = _("Journal"); $trans_array["Notes"] = _("Notes"); $trans_array["Tasks"] = _("Tasks"); $trans_array["Junk E-mail"] = _("Junk E-mail"); return $trans_array; }
static function set($lang) { global $language, $language_base, $root; $language = $lang; $domain = 'messages'; putenv("LANG={$language}"); setlocale(LC_ALL, $language); if (function_exists('bindtextdomain')) { bindtextdomain($domain, "{$root}/share/locale/"); } if (function_exists('textdomain')) { textdomain($domain); } if ($language != 'C' && $language != '') { if (($pos = strpos($language, '_')) !== false) { $language = substr($language, 0, $pos); } if (($pos = strpos($language, '-')) !== false) { $language = substr($language, 0, $pos); } if (($pos = strpos($language, '.')) !== false) { $language = substr($language, 0, $pos); } $language_base = $language; header("Content-Language: {$language_base}"); } else { $language_base = 'C'; } }
public function defineLanguage() { setlocale(LC_MESSAGES, $this->locales[$this->language]); bindtextdomain($this->route['view'], 'language'); textdomain($this->route['view']); bind_textdomain_codeset($this->route['view'], 'UTF-8'); }
function before($route) { $lang_mapping = array('fr' => 'fr_FR'); if (!isset($_SESSION['locale'])) { $locale = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); $_SESSION['locale'] = strtolower(substr(chop($locale[0]), 0, 2)); } $lang = $_SESSION['locale']; // Convert simple language code into full language code if (array_key_exists($lang, $lang_mapping)) { $lang = $lang_mapping[$lang]; } $lang = "{$lang}.utf8"; $textdomain = "localization"; putenv("LANGUAGE={$lang}"); putenv("LANG={$lang}"); putenv("LC_ALL={$lang}"); putenv("LC_MESSAGES={$lang}"); setlocale(LC_ALL, $lang); setlocale(LC_CTYPE, $lang); $locales_dir = dirname(__FILE__) . '/i18n'; bindtextdomain($textdomain, $locales_dir); bind_textdomain_codeset($textdomain, 'UTF-8'); textdomain($textdomain); set('locale', $lang); }
function set_language() { global $amp_conf, $db; $nt = notifications::create($db); if (extension_loaded('gettext')) { $nt->delete('core', 'GETTEXT'); if (php_sapi_name() !== 'cli') { if (empty($_COOKIE['lang']) || !preg_match('/^[\\w\\._@-]+$/', $_COOKIE['lang'], $matches)) { $lang = $amp_conf['UIDEFAULTLANG'] ? $amp_conf['UIDEFAULTLANG'] : 'en_US'; if (empty($_COOKIE['lang'])) { setcookie("lang", $lang); } } else { preg_match('/^([\\w\\._@-]+)$/', $_COOKIE['lang'], $matches); $lang = !empty($matches[1]) ? $matches[1] : 'en_US'; } $_COOKIE['lang'] = $lang; } else { $lang = $amp_conf['UIDEFAULTLANG'] ? $amp_conf['UIDEFAULTLANG'] : 'en_US'; } putenv('LC_ALL=' . $lang); putenv('LANG=' . $lang); putenv('LANGUAGE=' . $lang); setlocale(LC_ALL, $lang); bindtextdomain('amp', $amp_conf['AMPWEBROOT'] . '/admin/i18n'); bind_textdomain_codeset('amp', 'utf8'); textdomain('amp'); return $lang; } $nt->add_warning('core', 'GETTEXT', _("Gettext is not installed"), _("Please install gettext so that the PBX can properly translate itself"), 'https://www.gnu.org/software/gettext/'); return 'en_US'; }