Index: class.tslib_fe.php =================================================================== --- class.tslib_fe.php (revision 3674) +++ class.tslib_fe.php (working copy) @@ -332,6 +332,7 @@ var $displayEditIcons=''; // If set, edit icons are rendered aside content records. Must be set only if the ->beUserLogin flag is set and set_no_cache() must be called as well. var $displayFieldEditIcons=''; // If set, edit icons are rendered aside individual fields of content. Must be set only if the ->beUserLogin flag is set and set_no_cache() must be called as well. var $sys_language_uid=0; // Site language, 0 (zero) is default, int+ is uid pointing to a sys_language record. Should reflect which language menus, templates etc is displayed in (master language) - but not necessarily the content which could be falling back to default (see sys_language_content) + var $sys_language_record=false; // Site language record, automatically loaded from L var (or fixed sys_langage_uid) var $sys_language_mode=''; // Site language mode for content fall back. var $sys_language_content=0; // Site content selection uid (can be different from sys_language_uid if content is to be selected from a fall-back language. Depends on sys_language_mode) var $sys_language_contentOL=0; // Site content overlay flag; If set - and sys_language_content is > 0 - , records selected will try to look for a translation pointing to their uid. (If configured in [ctrl][languageField] / [ctrl][transOrigP...] @@ -1816,7 +1817,8 @@ 'type' => intval($this->type), 'gr_list' => (string)$this->gr_list, 'MP' => (string)$this->MP, - 'cHash' => $this->cHash_array + 'cHash' => $this->cHash_array, + 'sys_language_uid' => $this->sys_language_uid, ) ); @@ -2106,9 +2108,18 @@ * @access private */ function settingLanguage() { + if (isset($this->config['config']['sys_language_uid']) && t3lib_div::testInt($this->config['config']['sys_language_uid'])) { + // Get values from TypoScript: + $this->sys_language_uid = $this->sys_language_content = intval($this->config['config']['sys_language_uid']); + $this->sys_language_record = $this->sys_page->checkRecord('sys_language', $this->sys_language_uid); + } elseif (intval(t3lib_div::_GET('L'))) { + $this->sys_language_record = $this->sys_page->checkRecord('sys_language', intval(t3lib_div::_GET('L'))); - // Get values from TypoScript: - $this->sys_language_uid = $this->sys_language_content = intval($this->config['config']['sys_language_uid']); + if ($this->sys_language_record) { + $this->sys_language_uid = $this->sys_language_content = intval($this->sys_language_record['uid']); + } + } + list($this->sys_language_mode,$sys_language_content) = t3lib_div::trimExplode(';', $this->config['config']['sys_language_mode']); $this->sys_language_contentOL = $this->config['config']['sys_language_overlay']; @@ -2206,6 +2217,10 @@ * @return void */ function settingLocale() { + if (!$this->config['config']['locale_all'] && $this->sys_language_record && trim($this->sys_language_record['locale'])) { + //** Get the value from locale field + $this->config['config']['locale_all'] = $this->sys_language_record['locale']; + } // Setting locale if ($this->config['config']['locale_all']) { @@ -4117,7 +4132,13 @@ function initLLvars() { // Setting language key and split index: - $this->lang = $this->config['config']['language'] ? $this->config['config']['language'] : 'default'; + if ($this->config['config']['language']) { + $this->lang = $this->config['config']['language']; + } elseif ($this->sys_language_record && $this->sys_language_record['lang']) { + $this->lang = $this->sys_language_record['lang']; + } else { + $this->lang = 'default'; + } $ls = explode('|',TYPO3_languages); while(list($i,$v)=each($ls)) {