public function getSectionByLocale($locale = NULL) { if (!strlen($locale)) { $locale = self::getLocale(); } return MultilingualSection::getByLocale($locale); }
public function create_page() { Loader::model('section', 'multilingual'); if (Loader::helper('validation/token')->validate('create_page', $_POST['token'])) { $ms = MultilingualSection::getByLocale($_POST['locale']); $page = Page::getByID($_POST['sourceID']); if (is_object($page) && !$page->isError()) { // we get the related parent id $cParentID = $page->getCollectionParentID(); $cParent = Page::getByID($cParentID); $cParentRelatedID = $ms->getTranslatedPageID($cParent); if ($cParentRelatedID > 0) { // we copy the page underneath it and store it $newParent = Page::getByID($cParentRelatedID); $ct = CollectionType::getByID($page->getCollectionTypeID()); $cp = new Permissions($newParent); if ($cp->canAddSubCollection($ct) && $page->canMoveCopyTo($newParent)) { $newPage = $page->duplicate($newParent); if (is_object($newPage)) { print '<a href="' . Loader::helper("navigation")->getLinkToCollection($newPage) . '">' . $newPage->getCollectionName() . '</a>'; } } else { print '<span class="ccm-error">' . t("Insufficient permissions.") . '</span>'; } } } } exit; }
public function add_content_section() { if (Loader::helper('validation/token')->validate('add_content_section')) { if (!Loader::helper('validation/numbers')->integer($this->post('pageID')) || $this->post('pageID') < 1) { $this->error->add(t('You must specify a page for this multilingual content section.')); } else { $pc = Page::getByID($this->post('pageID')); } if (!$this->error->has()) { $lc = MultilingualSection::getByID($this->post('pageID')); if (is_object($lc)) { $this->error->add(t('A language section page at this location already exists.')); } } if (!$this->error->has()) { if ($this->post('msIcon')) { $combination = $this->post('msLanguage') . '_' . $this->post('msIcon'); $locale = MultilingualSection::getByLocale($combination); if (is_object($locale)) { $this->error->add(t('This language/region combination already exists.')); } } } if (!$this->error->has()) { MultilingualSection::assign($pc, $this->post('msLanguage'), $this->post('msIcon')); $this->redirect('/dashboard/multilingual/setup', 'multilingual_content_updated'); } } else { $this->error->add(Loader::helper('validation/token')->getErrorMessage()); } $this->view(); }
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); Loader::model('section', 'multilingual'); // first we get the selected language if (isset($_POST['ccmMultilingualSiteDefaultLanguage'])) { // this is coming from "set default" custom template if (isset($_POST['ccmMultilingualSiteRememberDefault']) && $_POST['ccmMultilingualSiteRememberDefault']) { setcookie('DEFAULT_LOCALE', $_POST['ccmMultilingualSiteDefaultLanguage'], time() + 60 * 60 * 24 * 365, DIR_REL . '/'); } if (empty($_POST['ccmMultilingualSiteRememberDefault'])) { setcookie('DEFAULT_LOCALE', '', time() - 3600, DIR_REL . '/'); } $lang = MultilingualSection::getByLocale($_REQUEST['ccmMultilingualSiteDefaultLanguage']); } else { $lang = MultilingualSection::getByID($_REQUEST['ccmMultilingualChooseLanguage']); } if (is_object($lang)) { if (isset($_REQUEST['ccmMultilingualCurrentPageID'])) { $page = Page::getByID($_REQUEST['ccmMultilingualCurrentPageID']); if (!$page->isError()) { $relatedID = $lang->getTranslatedPageID($page); if ($relatedID) { $pc = Page::getByID($relatedID); header('Location: ' . Loader::helper('navigation')->getLinkToCollection($pc, true)); exit; } elseif ($page->isGeneratedCollection()) { $_SESSION['DEFAULT_LOCALE'] = (string) $lang->getLocale(); header('Location: ' . Loader::helper('navigation')->getLinkToCollection($page, true)); exit; }
public static function setupSiteInterfaceLocalization() { // don't translate dashboard pages $c = Page::getCurrentPage(); if ($c instanceof Page && Loader::helper('section', 'multilingual')->section('dashboard')) { return; } $ms = MultilingualSection::getCurrentSection(); if (is_object($ms)) { $locale = $ms->getLocale(); } else { $locale = DefaultLanguageHelper::getSessionDefaultLocale(); } // change core language to translate e.g. core blocks/themes if (strlen($locale)) { Localization::changeLocale($locale); } // site translations if (is_dir(DIR_LANGUAGES_SITE_INTERFACE)) { if (file_exists(DIR_LANGUAGES_SITE_INTERFACE . '/' . $locale . '.mo')) { $loc = Localization::getInstance(); $loc->addSiteInterfaceLanguage($locale); } } // add package translations if (strlen($locale)) { $ms = MultilingualSection::getByLocale($locale); if ($ms instanceof MultilingualSection) { $pl = PackageList::get(); $installed = $pl->getPackages(); foreach ($installed as $pkg) { if ($pkg instanceof Package) { $pkg->setupPackageLocalization($ms->getLocale()); } } } } }