public function translate($key) { $translated = $key; if ($key) { $locale = $_REQUEST["systemLocale"]; if ($locale) { try { $translation = Translation_Admin::getByKey($key); } catch (Exception $e) { } if ($translation instanceof Translation_Admin) { if ($translation->getTranslation($locale)) { $translated = $translation->getTranslation($locale); } else { if (PIMCORE_DEBUG) { $translated = "+" . $key . "+"; } } } else { $t = new Translation_Admin(); $availableLanguages = Pimcore_Tool_Admin::getLanguages(); $t->setKey($key); $t->setDate(time()); foreach ($availableLanguages as $lang) { $t->addTranslation($lang, ""); } try { $t->save(); } catch (Exception $e) { Logger::debug(get_class($this), ": could not save new translation for key [ {$key} ]"); } } } } return $translated; }
public static function initTranslations($instance) { //add translations to registry $coreLanguageFile = Pimcore_Tool_Admin::getLanguageFile("en"); $translator = new Zend_Translate('csv', $coreLanguageFile, 'en', array('delimiter' => ',')); $availableLanguages = Pimcore_Tool_Admin::getLanguages(); foreach ($availableLanguages as $lang) { if ($lang != "en") { $languageFile = Pimcore_Tool_Admin::getLanguageFile($lang); $translator->addTranslation($languageFile, $lang); } } if (Zend_Registry::isRegistered("Zend_Locale")) { $locale = Zend_Registry::get("Zend_Locale"); @$translator->setLocale($locale->getLanguage()); } Zend_Registry::set("Zend_Translate", $translator); if ($instance) { $instance->setTranslator($translator); } }
public function getAvailableAdminLanguagesAction() { $langs = array(); $availableLanguages = Pimcore_Tool_Admin::getLanguages(); foreach ($availableLanguages as $lang) { $langs[] = array("language" => $lang, "display" => Zend_Locale::getTranslation($lang, 'language', $lang)); } $this->_helper->json($langs); }
/** * Download language files for a specific language for pimcore core and all plugins or * download language files for all existing system languages for pimcore core and plugins if parameter is null * @static * @param $language * @return bool */ public static function downloadLanguage($lang = null) { $languages = Pimcore_Tool_Admin::getLanguages(); if (!empty($lang)) { $languages = array($lang); } else { //omit core language $additonalLanguages = array(); foreach ($languages as $lang) { if ($lang != "en") { $additonalLanguages[] = $lang; } } $languages = $additonalLanguages; } //directory for additional languages $langDir = PIMCORE_WEBSITE_PATH . "/var/config/texts"; if (!is_dir($langDir)) { mkdir($langDir, 0755, true); } $success = is_dir($langDir); if ($success) { if (is_array($languages)) { foreach ($languages as $language) { //TODO: remove hard coded $src = "http://www.pimcore.org/?controller=translation&action=download&language=" . $language; $data = Pimcore_Tool::getHttpData($src); if (!empty($language) and !empty($data)) { try { $languageFile = $langDir . "/" . $language . ".csv"; $fh = fopen($languageFile, 'w'); fwrite($fh, $data); fclose($fh); } catch (Exception $e) { Logger::error("could not download language file"); Logger::error($e); $success = false; } } } } } else { Logger::warning("Pimcore_Update: Could not create language dir [ {$langDir} ]"); } return $success; }