public function testGetLanguageList() { $lang = new Zend_Translate(Zend_Translate::AN_ARRAY, array('msg1' => 'Message 1'), 'en'); $lang->addTranslation(array('msg1' => 'Message 1 (ru)'), 'ru'); $this->assertEquals(count($lang->getList()), 2); $this->assertTrue(in_array('en', $lang->getList())); $this->assertTrue(in_array('ru', $lang->getList())); }
/** Changes the currently active locale * @param string $locale The locale to activate (for example: 'en_US') * @param bool $coreOnly = false Set to true to load only the core translation files, set to false (default) to load also packages and site locale translations */ public function setLocale($locale, $coreOnly = false) { $localeNeededLoading = false; if ($locale == 'en_US' && !ENABLE_TRANSLATE_LOCALE_EN_US) { if (isset($this->translate)) { unset($this->translate); } return; } if (is_dir(DIR_LANGUAGES . '/' . $locale)) { $languageDir = DIR_LANGUAGES . '/' . $locale; } elseif (is_dir(DIR_LANGUAGES_CORE . '/' . $locale)) { $languageDir = DIR_LANGUAGES_CORE . '/' . $locale; } else { return; } $options = array('adapter' => 'gettext', 'content' => $languageDir, 'locale' => $locale, 'disableNotices' => true, 'ignore' => array('.', 'messages.po')); if (defined('TRANSLATE_OPTIONS')) { $_options = unserialize(TRANSLATE_OPTIONS); if (is_array($_options)) { $options = array_merge($options, $_options); } } if (!isset($this->translate)) { $this->translate = new Zend_Translate($options); $localeNeededLoading = true; } else { if (!in_array($locale, $this->translate->getList())) { $this->translate->addTranslation($options); $localeNeededLoading = true; } $this->translate->setLocale($locale); } if (!$coreOnly) { $this->addSiteInterfaceLanguage($locale); global $config_check_failed; if (!(isset($config_check_failed) && $config_check_failed)) { foreach (PackageList::get(1)->getPackages() as $p) { $pkg = Loader::package($p->getPackageHandle()); if (is_object($pkg)) { $pkg->setupPackageLocalization($locale, null, $this->translate); } } } } if ($localeNeededLoading) { Events::fire('on_locale_load', $locale); } }
/** * @group ZF-2736 */ public function testDoubleReroutingForTranslations() { $translate = new Zend_Translate(array('adapter' => Zend_Translate::AN_ARRAY, 'content' => dirname(__FILE__) . '/Translate/Adapter/_files/testarray/', 'locale' => 'auto', 'scan' => Zend_Translate::LOCALE_FILENAME, 'ignore' => array('.', 'ignoreme', 'LC_TEST'), 'route' => array('ja' => 'en_US', 'en_US' => 'ja'))); $translate2 = new Zend_Translate(array('adapter' => Zend_Translate::AN_CSV, 'content' => dirname(__FILE__) . '/Translate/Adapter/_files/translation_en.csv', 'locale' => 'en_US')); $translate->addTranslation($translate2); $langs = $translate->getList(); $this->assertFalse(array_key_exists('de_DE', $langs)); $this->assertTrue(array_key_exists('ja', $langs)); $this->assertTrue(array_key_exists('en_US', $langs)); $this->assertEquals('Message 5 (en)', $translate->translate('Message 5', 'ja')); $this->assertEquals('Message 5 (en)', $translate->translate('Message 5', 'ja')); }
public function testFileSearch() { $lang = new Zend_Translate(Zend_Translate::AN_CSV, dirname(__FILE__) . '/Translate/_files/test2', null, array('scan' => Zend_Translate::LOCALE_FILENAME)); $this->assertEquals(2, count($lang->getList())); $this->assertTrue(in_array('de_AT', $lang->getList())); $this->assertTrue(in_array('de_DE', $lang->getList())); }
// global vars global $errors, $locale, $languages; // autoloader for zend classes require_once 'Zend/Loader/Autoloader.php'; $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->registerNamespace('Zend'); // prepare language object if (isset($_POST['language'])) { $currentLang = $_POST['language']; } else { $currentLang = 'en'; } $locale = new Zend_Translate('csv', 'application/locale', 'en', array('scan' => Zend_Translate::LOCALE_DIRECTORY, 'delimiter' => "|")); // get languages $languages = array(); foreach ($locale->getList() as $lang) { $languages[$lang] = $locale->translate($lang); } // set language try { $languageLocale = new Zend_Locale(Zend_Locale::BROWSER); if (in_array($languageLocale->getLanguage(), $locale->getList())) { $currentLang = $languageLocale->getLanguage(); $locale->setLocale($languageLocale); } } catch (Exception $e) { $currentLang = 'en'; $locale->setLocale(new Zend_Locale('en')); } // get config $configDist = new Zend_Config_Ini(CONFIG_DIST_PATH);
<?php $options = array('scan' => Zend_Translate::LOCALE_FILENAME); $translate = new Zend_Translate('array', APPPATH . 'languages/', null, $options); // $translate->setLocale('en_US'); // $translate->setLocale('nl'); var_dump($translate->getList()); var_dump($translate->getLocale()); echo $translate->_('ADMIN');
/** * Translations & languages */ protected function _initSetTranslations() { $session = new Zend_Session_Namespace('Default'); $available_languages = array(); // load all php files from languages folder foreach (glob(APPLICATION_PATH . '/languages/*.php') as $file) { unset($data, $init); require_once $file; if (!isset($translate)) { $translate = new Zend_Translate('array', $data, $init['short']); } $translate->addTranslation($data, $init['short']); $available_languages[$init['short']] = $init['name']; } if (empty($available_languages)) { die('Error: language file is missing ' . APPLICATION_PATH . '/languages/*.php'); } // init Zend_Locale $locale = new Zend_Locale(); // set default language from options $default_language = Zend_Registry::get('config')->get('default_language'); if (!in_array($default_language, $translate->getList())) { // in case someone forgot to update settings -> general reset($available_languages); $default_language = key($available_languages); } $translate->setLocale($default_language); $locale->setLocale($default_language); Zend_Registry::set('locale', $default_language); // set current language based on user session if ($session->language && in_array($session->language, $translate->getList())) { $translate->setLocale($session->language); $locale->setLocale($session->language); Zend_Registry::set('locale', $session->language); } // push translator to registry Zend_Registry::set('Zend_Translate', $translate); // push translator to views $this->_view->translate = $translate; // push translator to forms Zend_Form::setDefaultTranslator($translate); // sort default as first & save array for forms $available_languages_sorted = array(); if (isset($available_languages[$default_language])) { $available_languages_sorted = array($default_language => $available_languages[$default_language]); unset($available_languages[$default_language]); } $available_languages_sorted = array_merge($available_languages_sorted, $available_languages); Zend_Registry::set('languages_array', $available_languages_sorted); }
/** * ZF-7941 */ public function testEmptyTranslation() { $lang = new Zend_Translate(Zend_Translate::AN_ARRAY, null, null, array('disableNotices' => true)); $this->assertEquals(0, count($lang->getList())); }