/** * */ public function listLanguageLinks() { $page = Digitalus_Builder::getPage(); $currentLanguage = $page->getLanguage(); $availableLanguages = $page->getAvailableLanguages(); $xhtml = $this->view->getTranslation('You are reading this page in') . ' ' . $this->view->getTranslation(Digitalus_Language::getFullName($currentLanguage)) . '.'; if (is_array($availableLanguages)) { $languageLinks = array(); $uri = new Digitalus_Uri(); $base = $uri->toString(); foreach ($availableLanguages as $locale => $name) { if (!empty($locale) && $locale != $currentLanguage) { $url = $base . '/p/language/' . $locale; $languageLinks[] = '<a href="' . $url . '">' . $this->view->getTranslation($name) . '</a>'; } } if (is_array($languageLinks) && count($languageLinks) > 0) { foreach ($languageLinks as $language) { $languageLinksTranslated[] = $this->view->getTranslation($language); } $xhtml .= ' ' . $this->view->getTranslation('This page is also translated into') . ' ' . implode(', ', $languageLinks); } } return '<p>' . $xhtml . '</p>'; }
public function setLanguage() { $lang = $this->_page->getParam('language'); if (!empty($lang)) { Digitalus_Language::setLanguage($lang); $this->_page->setLanguage($lang); } else { $this->_page->setLanguage(Digitalus_Language::getLanguage()); } }
public function setLanguage() { $language = $this->_page->getParam('language'); $availableLanguages = Digitalus_Language::getAvailableLanguages(); if (!empty($language) && key_exists($language, $availableLanguages)) { Digitalus_Language::setLanguage($language); $this->_page->setLanguage($language); } else { $this->_page->setLanguage(Digitalus_Language::getLanguage()); } }
/** * this helper renders a language selector * it also processes the selected language * it must be rendered above the content in order for the current * content to reflect the language selection */ public function languageForm() { //process form if this is a post back if (Digitalus_Filter_Post::has('setLang')) { Digitalus_Language::setLanguage($_POST['language']); // @todo: this needs to redirect so it loads the whole page in the new language } $currentLanguage = Digitalus_Language::getLanguage(); $languageSelector = $this->view->selectLanguage('language', $currentLanguage); $xhtml = '<form action="' . $this->view->ModuleAction() . '" method="post">'; $xhtml .= '<p>' . $languageSelector . '</p>'; $xhtml .= '<p>' . $this->view->formSubmit('setLang', $this->view->getTranslation('Set Language')) . '</p>'; $xhtml .= '</form>'; return $xhtml; }
/** * This helper returns the admin language * * @return string */ public function getAdminLanguage() { return Digitalus_Language::getAdminLanguage(); }
protected function _setTranslator($adapter = null) { if (empty($adapter)) { $adapter = Zend_Registry::get('Zend_Translate'); $request = Zend_Controller_Front::getInstance()->getRequest(); $module = $request->getModuleName(); $controller = $request->getControllerName(); // Add translation file depending on current module ('public' or 'admin') if ('public' == $module || 'public' == $controller) { $key = Digitalus_Language::getLanguage(); } else { $key = Digitalus_Language::getAdminLanguage(); } if (!empty($key)) { // Get site config $config = Zend_Registry::get('config'); $languageFiles = $config->language->translations->toArray(); $languagePath = $config->language->path . '/form/' . $languageFiles[$key] . '.form.csv'; if (is_file($languagePath)) { $adapter->addTranslation($languagePath, $key); } } } else { self::setDefaultTranslator($adapter); } }
public function getLabelById($pageId, $language = null) { if ($language == null) { $language = Digitalus_Language::getLanguage(); } $pageNode = new Model_PageNode(); //fetch the content nodes $info = $pageNode->fetchContentArray($pageId, 'label', $language); if (isset($info['label']) && '' != $info['label']) { return $info['label']; } else { $where[] = $this->_db->quoteInto('id = ?', $pageId); $row = $this->fetchRow($where); return $row->name; } }
/** * Initialize translations * * @return Zend_Translate */ protected function _initTranslation() { // Get site settings $settings = Zend_Registry::get('siteSettings'); // Get site config $config = Zend_Registry::get('config'); $languageFiles = $config->language->translations->toArray(); // Get cache object $cache = Zend_Registry::get('cache'); Zend_Translate::setCache($cache); $module = $this->_request->getModuleName(); $controller = $this->_request->getControllerName(); // Add translation file depending on current module ('public' or 'admin') if ('public' == $module || 'public' == $controller) { $end = 'front'; $key = Digitalus_Language::getLanguage(); } else { $end = 'back'; $key = Digitalus_Language::getAdminLanguage(); } // always load english translation file $adapter = new Zend_Translate('csv', $csvPath = $config->language->path . '/' . $end . '/' . $languageFiles['en'] . '.' . $end . '.csv', $key, array('disableNotices' => true)); Zend_Registry::set('Zend_Translate', $adapter); $csvPath = $config->language->path . '/' . $end . '/' . $languageFiles[$key] . '.' . $end . '.csv'; if (is_file($csvPath) && 'en' != $key) { $this->_addTranslation($csvPath, $key); } // Module translations (are NOT separated into 'back' and 'front') if ($modules = Digitalus_Module::getModules()) { foreach ($modules as $module) { $this->_addTranslation(APPLICATION_PATH . '/modules/' . $module . '/data/languages/' . $languageFiles[$key] . '.csv', $key); } } return $adapter; }
/** * Returns the current language * * @return string */ public function getCurrentLanguage() { return Digitalus_Language::getLanguage(); }