예제 #1
0
 /**
  * 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);
 }
예제 #2
0
파일: Form.php 프로젝트: rikaix/zf2
 /**
  * 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');
     }
 }
예제 #3
0
 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?');
         }
     }
 }
예제 #4
0
    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);
    }
예제 #5
0
 /**
  * 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;
 }
예제 #6
0
 /**
  * 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());
 }
예제 #7
0
 /** 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);
 }
예제 #8
0
 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);
     }
 }
예제 #9
0
 /**
  * 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;
 }
예제 #10
0
 /**
  * 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;
 }
예제 #11
0
 /**
  * @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();
 }
예제 #12
0
 /**
  * @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'));
 }
예제 #13
0
 /**
  * Process a single value
  *
  * @param $value
  * @return mixed
  */
 public function processValue($value)
 {
     return $this->translator->translate($value, $this->locale);
 }
예제 #14
0
 /**
  * @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);
 }
예제 #15
0
 /**
  * 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"));
 }
예제 #16
0
 /**
  * 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;
 }
예제 #17
0
 /**
  * @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));
 }