/** * Setup test * * @return void */ public function setUp() { // Backup server array $this->_server = $_SERVER; // Clean host env unset($_SERVER['HTTP_HOST'], $_SERVER['HTTPS'], $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT']); // Set translator $translator = new Translator\Translator('arrayAdapter', array('foo' => 'en_foo', 'bar' => 'en_bar'), 'en'); $translator->addTranslation(array('foo' => 'de_foo', 'bar' => 'de_bar'), 'de'); $translator->setLocale('en'); \Zend\Registry::set('Zend_Translate', $translator); }
/** * Set global default translator object * * @param Translator\Translator|Translator\Adapter|null $translator * @return void */ public static function setDefaultTranslator($translator = null) { if (null === $translator) { self::$_translatorDefault = null; } elseif ($translator instanceof Translator\Adapter\AbstractAdapter) { self::$_translatorDefault = $translator; } elseif ($translator instanceof Translator\Translator) { self::$_translatorDefault = $translator->getAdapter(); } else { throw new Exception\InvalidArgumentException('Invalid translator specified'); } }
public function testErrorMessagesFromProcessAjaxAreLocalizedWhenTranslateAdapterPresent() { $translations = (include __DIR__ . '/TestAsset/locale/array.php'); $translate = new Translator('ArrayAdapter', $translations, 'en'); $translate->setLocale('en'); $this->form->addElements(array('foo' => array('type' => 'text', 'options' => array('required' => true, 'validators' => array('NotEmpty'))), 'bar' => array('type' => 'text', 'options' => array('required' => true, 'validators' => array('Digits')))))->setTranslator($translate); $data = array('foo' => ''); $return = $this->form->processAjax($data); $messages = Json::decode($return, Json::TYPE_ARRAY); $this->assertTrue(is_array($messages)); $this->assertTrue(isset($messages['foo'])); $this->assertFalse(isset($messages['bar'])); foreach ($messages['foo'] as $key => $message) { if (array_key_exists($key, $translations)) { $this->assertEquals($translations[$key], $message); } else { $this->fail('Translation for ' . $key . ' does not exist?'); } } }
public function testRetrievingLabelRetrievesLabelWithTranslationAndPrefixAndSuffix() { $translate = new Translator('ArrayAdapter', array('My Label' => 'Translation'), 'en'); $translate->setLocale('en'); $element = new Element('foo'); $element->setView($this->getView()) ->setLabel('My Label') ->setTranslator($translate); $this->decorator->setElement($element) ->setOptions(array( 'optionalPrefix' => '> ', 'optionalSuffix' => ':', 'requiredPrefix' => '! ', 'requiredSuffix' => '*:', )); $label = $this->decorator->getLabel(); $this->assertEquals('> Translation:', $label); $element->setRequired(true); $label = $this->decorator->getLabel(); $this->assertEquals('! Translation*:', $label); }
/** * Sets a translation Adapter for translation * * @param \Zend\Translator\Translator|\Zend\Translator\Translator_Adapter $translate Instance of \Zend\Translator\Translator * @throws \Zend\View\Exception When no or a false instance was set * @return \Zend\View\Helper\Translate */ public function setTranslator($translate) { if ($translate instanceof \Zend\Translator\Adapter\Adapter) { $this->_translator = $translate; } else { if ($translate instanceof \Zend\Translator\Translator) { $this->_translator = $translate->getAdapter(); } else { $e = new View\Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); $e->setView($this->view); throw $e; } } return $this; }
/** * ZF-9877 */ public function testSetCacheThroughOptions() { $cache = Cache\Cache::factory('Core', 'File', array('lifetime' => 120, 'automatic_serialization' => true), array('cache_dir' => __DIR__ . '/../_files/')); $translate = new Translator\Translator(array('adapter' => Translator\Translator::AN_ARRAY, 'content' => array('msg1' => 'Message 1 (en)'), 'locale' => 'en', 'cache' => $cache)); $return = Translator\Translator::getCache(); $this->assertTrue($return instanceof Cache\Frontend); $this->assertTrue(Translator\Translator::hasCache()); }
/** ZF-2568 */ public function testTranslatedMessagesCanContainVariableSubstitution() { $localeFile = __DIR__ . '/TestAsset/locale/array.php'; $translations = (include $localeFile); $translations['notDigits'] .= ' "%value%"'; $translator = new Translator('ArrayAdapter', $translations, 'en'); $translator->setLocale('en'); $this->element->setAllowEmpty(false)->setTranslator($translator)->addValidator('digits'); $this->element->isValid('abc'); $messages = $this->element->getMessages(); $found = false; foreach ($messages as $key => $message) { if ($key == 'notDigits') { $found = true; break; } } $this->assertTrue($found, 'String Empty message not found: ' . var_export($messages, 1)); $this->assertContains(' "abc"', $message); $this->assertContains('Translating the notDigits string', $message); }
public function testMultiOptionsPassedToViewHelperAreTranslated() { $element = new SelectElement('foo'); $options = array('foo' => 'This Foo Will Not Be Displayed', 'bar' => 'This Bar Will Not Be Displayed', 'baz' => 'This Baz Will Not Be Displayed'); $element->setMultiOptions($options); $translations = array('This Foo Will Not Be Displayed' => 'This is the Foo Value', 'This Bar Will Not Be Displayed' => 'This is the Bar Value', 'This Baz Will Not Be Displayed' => 'This is the Baz Value'); $translate = new Translator('ArrayAdapter', $translations, 'en'); $translate->setLocale('en'); $element->setTranslator($translate); $test = $element->render($this->getView()); foreach ($options as $key => $value) { $this->assertNotContains($value, $test); $this->assertContains($translations[$value], $test); } }
/** * Sets a translation Adapter for translation * * @param Translation|TranslationAdapter $translator * @return Translator * @throws Exception\InvalidArgumentException When no or a false instance was set */ public function setTranslator($translator) { if ($translator instanceof TranslationAdapter) { $this->translator = $translate; } else { if ($translator instanceof Translation) { $this->translator = $translator->getAdapter(); } else { throw new Exception\InvalidArgumentException('You must set an instance of Zend\\Translator\\Translator or Zend\\Translator\\Adapter'); } } return $this; }
/** * Set translator object for localization * * @param \Zend\Translator\Translator|null $translator * @return Zend_File_Transfer_Abstract */ public function setTranslator($translator = null) { if (null === $translator) { $this->_translator = null; } elseif ($translator instanceof \Zend\Translator\Adapter\Adapter) { $this->_translator = $translator; } elseif ($translator instanceof \Zend\Translator\Translator) { $this->_translator = $translator->getAdapter(); } else { throw new Transfer\Exception('Invalid translator specified'); } return $this; }
/** * @group ZF-10034 */ public function testSetCacheFromCacheManager() { $configCache = array('translate' => array('frontend' => array('name' => 'Core', 'options' => array('lifetime' => 120, 'automatic_serialization' => true)), 'backend' => array('name' => 'Black Hole'))); $this->bootstrap->registerPluginResource('cachemanager', $configCache); $options = $this->_translationOptions; $options['cache'] = 'translate'; $resource = new TranslateResource($options); $resource->setBootstrap($this->bootstrap); $resource->init(); $this->assertType('Zend\\Cache\\Frontend\\Core', Translator::getCache()); Translator::clearCache(); }
/** * @group ZF-10911 */ public function testRoutingOnHttpHeader() { $translate = new Translator\Translator(array('adapter' => Translator\Translator::AN_ARRAY, 'content' => __DIR__ . '/Adapter/_files/testarray/', 'locale' => 'auto', 'scan' => Translator\Translator::LOCALE_FILENAME, 'ignore' => array('.', 'ignoreme', 'LC_OTHER'), 'route' => array('ja' => 'de_AT', 'de_AT' => 'de_DE', 'de_DE' => 'en_US'), 'routeHttp' => true)); $translate2 = new Translator\Translator(array('adapter' => Translator\Translator::AN_CSV, 'content' => __DIR__ . '/Adapter/_files/translation_en.csv', 'locale' => 'en_US')); $translate->addTranslation($translate2); $langs = $translate->getList(); $this->assertFalse(array_key_exists('de_AT', $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')); }
/** * Process a single value * * @param $value * @return mixed */ public function processValue($value) { return $this->translator->translate($value, $this->locale); }
/** * @group ZF-5568 */ public function testOptGroupTranslationsShouldWorkAfterPopulatingElement() { $translations = array('ThisIsTheLabel' => 'Optgroup label', 'ThisShouldNotShow' => 'Foo Value', 'ThisShouldNeverShow' => 'Bar Value'); $translate = new Translator('ArrayAdapter', $translations, 'en'); $translate->setLocale('en'); $options = array('ThisIsTheLabel' => array('foovalue' => 'ThisShouldNotShow', 'barvalue' => 'ThisShouldNeverShow')); $this->element->setTranslator($translate)->addMultiOptions($options); $this->element->setValue('barValue'); $html = $this->element->render($this->getView()); $this->assertContains($translations['ThisIsTheLabel'], $html, $html); }
/** * ZF-6724 */ public function testTranslationWithPercent() { $trans = new Translator\Translator('arrayAdapter', array('one' => 'eins', "two %1\$s" => "zwei %1\$s", "three %1\$s %2\$s" => "drei %1\$s %2\$s", 'vier%ig' => 'four%'), 'de'); $trans->setLocale('de'); $this->helper->setTranslator($trans); $this->assertEquals("four%", $this->helper->direct("vier%ig")); $this->assertEquals("zwei 100", $this->helper->direct("two %1\$s", "100")); }
/** * Set translator object * * @param Translator\Translator|Translator\Adapter|null $translator * @return DisplayGroup */ public function setTranslator($translator = null) { if (null === $translator || $translator instanceof Translator\Adapter\AbstractAdapter) { $this->_translator = $translator; } elseif ($translator instanceof Translator\Translator) { $this->_translator = $translator->getAdapter(); } else { throw new Exception\InvalidArgumentException('Invalid translator specified'); } return $this; }
/** * @group ZF-9489 */ public function testAddingAdapterToSourcealsUsingOwnRule() { $translate = new Translator\Translator(Translator\Translator::AN_ARRAY, array('singular' => array('plural_0 (en)', 'plural_1 (en)', 'plural_2 (en)', 'plural_3 (en)'), 'plural' => ''), 'en'); $this->assertFalse($translate->isTranslated('Message 1')); $adapter = new Adapter\Gettext(dirname(__FILE__) . '/Adapter/_files/translation_en.mo', 'en'); $translate->addTranslation($adapter); $this->assertTrue($adapter->isTranslated('Message 1')); $adapter2 = new Adapter\Gettext(dirname(__FILE__) . '/Adapter/_files/testmo/de_AT/LC_TEST/translation-de_DE.mo', 'de_AT'); $adapter2->addTranslation(dirname(__FILE__) . '/Adapter/_files/translation_en2.mo', 'fr'); $translate->addTranslation($adapter2, 'fr'); $languages = $translate->getList(); $this->assertFalse(array_key_exists('de_AT', $languages)); $this->assertTrue(array_key_exists('fr', $languages)); }