Exemplo n.º 1
0
 /**
  *
  */
 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>';
 }
Exemplo n.º 2
0
 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());
     }
 }
Exemplo n.º 3
0
 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());
     }
 }
Exemplo n.º 4
0
 /**
  *  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;
 }
Exemplo n.º 5
0
 /**
  * This helper returns the admin language
  *
  * @return string
  */
 public function getAdminLanguage()
 {
     return Digitalus_Language::getAdminLanguage();
 }
Exemplo n.º 6
0
 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);
     }
 }
Exemplo n.º 7
0
 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;
     }
 }
Exemplo n.º 8
0
 /**
  * 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;
 }
Exemplo n.º 9
0
 /**
  * Returns the current language
  *
  * @return string
  */
 public function getCurrentLanguage()
 {
     return Digitalus_Language::getLanguage();
 }