/** * Sets language * * @param string $lang Used language * @return void */ public function setLanguage($lang) { $this->lang = $lang; $this->languageDependencies = []; // Language is found. Configure it: if (in_array($this->lang, $this->locales->getLocales())) { $this->languageDependencies[] = $this->lang; foreach ($this->locales->getLocaleDependencies($this->lang) as $language) { $this->languageDependencies[] = $language; } } }
/** * Update selected languages * * @param array $languages * @return array */ public function updateSelectedLanguages($languages) { // Add possible dependencies for selected languages $dependencies = array(); foreach ($languages as $language) { $dependencies = array_merge($dependencies, $this->locales->getLocaleDependencies($language)); } if (count($dependencies)) { $languages = array_unique(array_merge($languages, $dependencies)); } $dir = count($languages) - count($this->selectedLanguages); $diff = $dir < 0 ? array_diff($this->selectedLanguages, $languages) : array_diff($languages, $this->selectedLanguages); \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager')->setLocalConfigurationValueByPath($this->configurationPath, array('availableLanguages' => $languages)); return array('success' => count($diff) > 0, 'dir' => $dir, 'diff' => array_values($diff), 'languages' => $languages); }
/** * Update selected languages * * @param array $languages The languages * @return array Update information */ public function updateSelectedLanguages($languages) { // Add possible dependencies for selected languages $dependencies = []; foreach ($languages as $language) { $dependencies = array_merge($dependencies, $this->locales->getLocaleDependencies($language)); } if (!empty($dependencies)) { $languages = array_unique(array_merge($languages, $dependencies)); } $dir = count($languages) - count($this->selectedLocales); $diff = $dir < 0 ? array_diff($this->selectedLocales, $languages) : array_diff($languages, $this->selectedLocales); GeneralUtility::makeInstance(ConfigurationManager::class)->setLocalConfigurationValueByPath($this->configurationPath, ['availableLanguages' => $languages]); return ['success' => !empty($diff), 'dir' => $dir, 'diff' => array_values($diff), 'languages' => $languages]; }