Example #1
0
 /**
  * Retturn translation string
  * example $l->translate('Field %1 is incorrect', 'FieldName');
  *
  * @param string $msg Message to transalte.
  */
 public function translate($msg)
 {
     $translated = $msg;
     if ($this->translate->isTranslated($msg, true, $this->locale)) {
         $translated = $this->translate->translate($msg);
     } else {
         foreach ($this->translationsPaths as $name => $value) {
             if (!$this->translate->isAvailable($name)) {
                 try {
                     $this->translate->addTranslation($this->translationsPaths[$name], $name);
                     $this->translate->setLocale($this->getLocale());
                 } catch (Zend_Translate_Exception $e) {
                     continue;
                 }
             }
             if ($this->translate->isTranslated($msg, $name)) {
                 $translated = $this->translate->translate($msg, $name);
                 break;
             }
         }
     }
     if (func_num_args() > 1) {
         $params = func_get_args();
         $params[0] = $translated;
         $translated = @call_user_func_array("sprintf", $params);
         //add shield for incorrect translations(warning about incorrect number of arguments)
     }
     return $translated;
 }
Example #2
0
	static function translate($locale_code, $module_name, $key, $replace = null, $do_translation = true) {

// DON'T EVER LEAVE THIS UNCOMMENTED
// ob_clean();
// can be useful for debugging since using dd() will dump out into the existing markup and be hard to see
// but this clears out all the other markup so the debug data can be seen clearly

		$translation = $key;
		if ($do_translation) {
			if (RivetyCore_Registry::get('enable_localization') == '1'
			 && !is_null($module_name) && trim($module_name) != ""
			 && !is_null($key) && trim($key) != "") {
				$locale_code = RivetyCore_Translate::cleanZendLocaleCode($locale_code);

				// TODO: account for core rivety module
				$path_to_csv = RivetyCore_Registry::get('basepath')."/modules/".$module_name."/languages/".$locale_code.".csv";

				if (file_exists($path_to_csv)) {
					try {
						$translate = new Zend_Translate("csv", $path_to_csv, $locale_code, array('delimiter' => ","));
						$translation = $translate->_($key);
						// this next bit will populate the locale file with untranslated terms
						// so it's easier for someone to go through and translate them
						if (RivetyCore_Registry::get('auto_populate_language_files') == '1') {
							if (!$translate->isTranslated($key, true, $locale_code)) {
								$key_no_quotes = str_replace('"', '"', $key);
								$str = '"'.$key_no_quotes.'","'.$key_no_quotes.'"'."\n";
								file_put_contents($path_to_csv, $str, FILE_APPEND);
							}
						}
					} catch (Exception $e) {
						$translation = $key;
					}
				} else {
					// create the file
					file_put_contents($path_to_csv, $key.','.$key);
				}
			}
		}
		$output = "";
		if (is_null($replace)) {
			// no replace, no sprintf
			$output = $translation;
		} else {
			if (is_array($replace)) {
				if (count($replace) > 1) {
					// there are multiple indices, use vsprintf
					$output = vsprintf($translation, $replace);
				} else {
					// there's only one index, use the cheaper sprintf instead
					$output = sprintf($translation, $replace[0]);
				}
			} else {
				// $replace is not an array, so try using it straight
				$output = sprintf($translation, $replace);
			}
		}
		return $output;
	}
 public function testTranslationOfLanguages()
 {
     $languages = Opus_Language::getAll();
     foreach ($languages as $language) {
         $key = $language->getPart2T();
         $this->assertTrue($this->translate->isTranslated($key), $key);
     }
 }
Example #4
0
 /**
  * Checks if a string is translatable
  *
  * @param string $message
  *
  * @return mixed
  */
 public function isTranslated($message)
 {
     if (strlen($message) == 0) {
         return false;
     }
     if ($this->getTranslator()) {
         return $this->_translator->isTranslated($message);
     }
     return false;
 }
Example #5
0
 public static function getValues(Zend_Translate $lang)
 {
     $vars = Unsee_Hash::$ttlTypes;
     $values = array();
     foreach ($vars as $item) {
         $elLangString = 'settings_delete_ttl_' . $item;
         if ($lang->isTranslated($elLangString)) {
             $values[$item] = $lang->translate($elLangString);
         }
     }
     return $values;
 }
 /**
  * @group ZF-9489
  */
 public function testAddingAdapterToSourceUsingOwnRule()
 {
     $translate = new Zend_Translate(Zend_Translate::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 Zend_Translate_Adapter_Gettext(dirname(__FILE__) . '/Translate/Adapter/_files/translation_en.mo', 'en');
     $translate->addTranslation($adapter);
     $this->assertTrue($adapter->isTranslated('Message 1'));
     $adapter2 = new Zend_Translate_Adapter_Gettext(dirname(__FILE__) . '/Translate/Adapter/_files/testmo/de_AT/LC_TEST/translation-de_DE.mo', 'de_AT');
     $adapter2->addTranslation(dirname(__FILE__) . '/Translate/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));
 }
Example #7
0
$translate->addTranslation('../languages/it/webacula_it.mo', 'it');
$translate->addTranslation('../languages/es/webacula_es.mo', 'es');
$translate->addTranslation('../languages/cs/webacula_cs.mo', 'cs');
if (isset($config->general->locale)) {
    // locale is user defined
    $locale = new Zend_Locale(trim($config->general->locale));
} else {
    // autodetect locale
    // Search order is: given Locale, HTTP Client, Server Environment, Framework Standard
    try {
        $locale = new Zend_Locale('auto');
    } catch (Zend_Locale_Exception $e) {
        $locale = new Zend_Locale('en');
    }
}
if ($translate->isTranslated('Desktop', false, $locale)) {
    // can be translated (есть перевод)
    $translate->setLocale($locale);
} else {
    // can't translated (нет перевода)
    // set to English by default
    $translate->setLocale('en');
    $locale = new Zend_Locale('en');
}
// assign the $translate object to the registry so that it can be retrieved elsewhere in the application
$registry->set('translate', $translate);
$registry->set('locale', $locale);
$registry->set('language', $locale->getLanguage());
// Show human readable short Job description instead of Job Bacula names
if (isset($config->general->show_job_description)) {
    if ($config->general->show_job_description < 0 || $config->general->show_job_description > 2) {
 public function testIsTranslated()
 {
     $lang = new Zend_Translate(Zend_Translate::AN_ARRAY, array('msg1' => 'Message 1 (en)'), 'en_US');
     $this->assertTrue($lang->isTranslated('msg1'));
     $this->assertFalse($lang->isTranslated('msg2'));
     $this->assertFalse($lang->isTranslated('msg1', false, 'en'));
     $this->assertFalse($lang->isTranslated('msg1', true, 'en'));
     $this->assertFalse($lang->isTranslated('msg1', false, 'ru'));
 }
Example #9
0
 /**
  * ZF-7508
  */
 public function testDontLogUntranslatedMessageWithIsTranslated()
 {
     $lang = new Zend_Translate(Zend_Translate::AN_CSV, dirname(__FILE__) . '/Translate/Adapter/_files', 'en', array('delimiter' => ','));
     $this->assertFalse($lang->isTranslated('ignored'));
     $stream = fopen('php://memory', 'w+');
     require_once 'Zend/Log/Writer/Stream.php';
     $writer = new Zend_Log_Writer_Stream($stream);
     require_once 'Zend/Log.php';
     $log = new Zend_Log($writer);
     $lang->setOptions(array('logUntranslated' => true, 'log' => $log));
     $this->assertFalse($lang->isTranslated('ignored'));
     rewind($stream);
     $this->assertNotContains('ignored', stream_get_contents($stream));
 }