/** * @param $id * @param bool $create * @param bool $returnIdIfEmpty * @param null $language * @return array * @throws \Exception * @throws \Zend_Exception */ public static function getByKeyLocalized($id, $create = false, $returnIdIfEmpty = false, $language = null) { if ($user = Tool\Admin::getCurrentUser()) { $language = $user->getLanguage(); } elseif ($user = Tool\Authentication::authenticateSession()) { $language = $user->getLanguage(); } elseif (\Zend_Registry::isRegistered("Zend_Locale")) { $language = (string) \Zend_Registry::get("Zend_Locale"); } if (!in_array($language, Tool\Admin::getLanguages())) { $config = \Pimcore\Config::getSystemConfig(); $language = $config->general->language; } return self::getByKey($id, $create, $returnIdIfEmpty)->getTranslation($language); }
/** * @param $instance * @throws \Zend_Exception */ public static function initTranslations($instance) { $language = "en"; $locale = $instance->getLanguage(); if ($locale) { $locale = new \Zend_Locale($locale); foreach ([(string) $locale, $locale->getLanguage()] as $localeVariant) { if (in_array($localeVariant, AdminTool::getLanguages())) { $language = $localeVariant; break; } } } //add translations to registry $coreLanguageFile = AdminTool::getLanguageFile($language); $translator = new \Zend_Translate('Pimcore\\Translate\\Adapter\\Json', $coreLanguageFile, $language); $languageFile = AdminTool::getLanguageFile($language); $translator->addTranslation($languageFile, $language); if (\Zend_Registry::isRegistered("Zend_Locale")) { $locale = \Zend_Registry::get("Zend_Locale"); @$translator->setLocale($locale); } \Zend_Registry::set("Zend_Translate", $translator); if ($instance) { $instance->setTranslator($translator); } }
/** * @param $instance * @throws \Zend_Exception */ public static function initTranslations($instance) { //add translations to registry $coreLanguageFile = AdminTool::getLanguageFile("en"); $translator = new \Zend_Translate('Pimcore\\Translate\\Adapter\\Json', $coreLanguageFile, 'en'); $availableLanguages = AdminTool::getLanguages(); foreach ($availableLanguages as $lang) { if ($lang != "en") { $languageFile = AdminTool::getLanguageFile($lang); $translator->addTranslation($languageFile, $lang); } } if (\Zend_Registry::isRegistered("Zend_Locale")) { $locale = \Zend_Registry::get("Zend_Locale"); @$translator->setLocale($locale); } \Zend_Registry::set("Zend_Translate", $translator); if ($instance) { $instance->setTranslator($translator); } }
/** * @param $id * @param bool $create * @param bool $returnIdIfEmpty * @return static * @throws \Exception * @throws \Zend_Exception */ public static function getByKey($id, $create = false, $returnIdIfEmpty = false) { $cacheKey = "translation_" . $id; if (\Zend_Registry::isRegistered($cacheKey)) { return \Zend_Registry::get($cacheKey); } $translation = new static(); $idOriginal = $id; $id = mb_strtolower($id); if ($translation instanceof Model\Translation\Admin) { $languages = Tool\Admin::getLanguages(); } else { $languages = Tool::getValidLanguages(); } try { $translation->getDao()->getByKey(self::getValidTranslationKey($id)); } catch (\Exception $e) { if (!$create) { throw new \Exception($e->getMessage()); } else { $translation->setKey($id); $translation->setCreationDate(time()); $translation->setModificationDate(time()); $translations = []; foreach ($languages as $lang) { $translations[$lang] = ""; } $translation->setTranslations($translations); $translation->save(); } } if ($returnIdIfEmpty) { $translations = $translation->getTranslations(); foreach ($languages as $language) { if (!array_key_exists($language, $translations) || empty($translations[$language])) { $translations[$language] = $idOriginal; } } $translation->setTranslations($translations); } // add to key cache \Zend_Registry::set($cacheKey, $translation); return $translation; }
public function getAvailableAdminLanguagesAction() { $langs = array(); $availableLanguages = Tool\Admin::getLanguages(); $locales = Tool::getSupportedLocales(); foreach ($availableLanguages as $lang) { if (array_key_exists($lang, $locales)) { $langs[] = array("language" => $lang, "display" => $locales[$lang]); } } $this->_helper->json($langs); }
public function addAdminTranslationKeysAction() { $this->removeViewRenderer(); $keys = $this->getParam("keys"); if ($keys) { $availableLanguages = Tool\Admin::getLanguages(); $data = \Zend_Json_Decoder::decode($keys); foreach ($data as $translationData) { $t = null; // reset try { $t = Translation\Admin::getByKey($translationData); } catch (\Exception $e) { \Logger::log($e); } if (!$t instanceof Translation\Admin) { $t = new Translation\Admin(); $t->setKey($translationData); $t->setCreationDate(time()); $t->setModificationDate(time()); foreach ($availableLanguages as $lang) { $t->addTranslation($lang, ""); } try { $t->save(); } catch (\Exception $e) { \Logger::log($e); } } } } }
public function installAdminTranslations() { $csv = PIMCORE_PLUGINS_PATH . '/Toolbox/install/translations/data.csv'; Admin::importTranslationsFromFile($csv, true, \Pimcore\Tool\Admin::getLanguages()); }