41 $this->store = GeneralUtility::makeInstance(LanguageStore::class);
50 $this->cacheInstance = GeneralUtility::makeInstance(CacheManager::class)->getCache(
'l10n');
63 public function getParsedData($fileReference, $languageKey, $charset =
'', $errorMode =
null, $isLocalizationOverride =
false)
67 if (strpos($fileReference,
'EXT:lang/Resources/Private/Language/') === 0) {
69 'lang/Resources/Private/Language/locallang_alt_intro.xlf' =>
'about/Resources/Private/Language/Modules/locallang_alt_intro.xlf',
70 'lang/Resources/Private/Language/locallang_alt_doc.xlf' =>
'backend/Resources/Private/Language/locallang_alt_doc.xlf',
71 'lang/Resources/Private/Language/locallang_login.xlf' =>
'backend/Resources/Private/Language/locallang_login.xlf',
72 'lang/Resources/Private/Language/locallang_common.xlf' =>
'core/Resources/Private/Language/locallang_common.xlf',
73 'lang/Resources/Private/Language/locallang_core.xlf' =>
'core/Resources/Private/Language/locallang_core.xlf',
74 'lang/Resources/Private/Language/locallang_general.xlf' =>
'core/Resources/Private/Language/locallang_general.xlf',
75 'lang/Resources/Private/Language/locallang_misc.xlf' =>
'core/Resources/Private/Language/locallang_misc.xlf',
76 'lang/Resources/Private/Language/locallang_mod_web_list.xlf' =>
'core/Resources/Private/Language/locallang_mod_web_list.xlf',
77 'lang/Resources/Private/Language/locallang_tca.xlf' =>
'core/Resources/Private/Language/locallang_tca.xlf',
78 'lang/Resources/Private/Language/locallang_tsfe.xlf' =>
'core/Resources/Private/Language/locallang_tsfe.xlf',
79 'lang/Resources/Private/Language/locallang_wizards.xlf' =>
'core/Resources/Private/Language/locallang_wizards.xlf',
80 'lang/Resources/Private/Language/locallang_browse_links.xlf' =>
'recordlist/Resources/Private/Language/locallang_browse_links.xlf',
81 'lang/Resources/Private/Language/locallang_tcemain.xlf' =>
'workspaces/Resources/Private/Language/locallang_tcemain.xlf',
83 $filePath = substr($fileReference, 4);
84 trigger_error(
'There is a reference to "' . $fileReference .
'", which has been moved to "EXT:' . $mapping[$filePath] .
'". This fallback will be removed with TYPO3 v10.0.', E_USER_DEPRECATED);
85 $fileReference =
'EXT:' . $mapping[$filePath];
89 if (strpos($fileReference,
'EXT:saltedpasswords/Resources/Private/Language/') === 0) {
91 'saltedpasswords/Resources/Private/Language/locallang.xlf' =>
'core/Resources/Private/Language/locallang_deprecated_saltedpasswords.xlf',
92 'saltedpasswords/Resources/Private/Language/locallang_em.xlf' =>
'core/Resources/Private/Language/locallang_deprecated_saltedpasswords_em.xlf',
94 $filePath = substr($fileReference, 4);
95 trigger_error(
'There is a reference to "' . $fileReference .
'", which has been moved to "EXT:' . $mapping[$filePath] .
'". This fallback will be removed with TYPO3 v10.0.', E_USER_DEPRECATED);
96 $fileReference =
'EXT:' . $mapping[$filePath];
99 $hash = md5($fileReference . $languageKey);
102 if (!$this->store->hasData($fileReference,
'default') && $languageKey !==
'default') {
106 if ($this->store->hasData($fileReference, $languageKey)) {
107 return $this->store->getData($fileReference);
111 $data = $this->cacheInstance->get($hash);
112 if ($data !==
false) {
113 $this->store->setData($fileReference, $languageKey, $data);
114 return $this->store->getData($fileReference);
118 $this->store->setConfiguration($fileReference, $languageKey);
120 $parser = $this->store->getParserInstance($fileReference);
122 $LOCAL_LANG =
$parser->getParsedData($this->store->getAbsoluteFileReference($fileReference), $languageKey);
125 $this->store->setData($fileReference, $languageKey, []);
126 $LOCAL_LANG = $this->store->getData($fileReference);
130 if (!$isLocalizationOverride && isset(
$GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'locallangXMLOverride'])) {
135 $this->store->setData($fileReference, $languageKey, $LOCAL_LANG[$languageKey]);
138 $this->cacheInstance->set($hash, $this->store->getDataByLanguage($fileReference, $languageKey));
140 return $this->store->getData($fileReference);
155 $fileReferenceWithoutExtension = $this->store->getFileReferenceWithoutExtension($fileReference);
156 $locallangXMLOverride =
$GLOBALS[
'TYPO3_CONF_VARS'][
'SYS'][
'locallangXMLOverride'];
157 foreach ($this->store->getSupportedExtensions() as $extension) {
158 if (isset($locallangXMLOverride[$languageKey][$fileReferenceWithoutExtension .
'.' . $extension]) && is_array($locallangXMLOverride[$languageKey][$fileReferenceWithoutExtension .
'.' . $extension])) {
159 $overrides = array_merge($overrides, $locallangXMLOverride[$languageKey][$fileReferenceWithoutExtension .
'.' . $extension]);
160 } elseif (isset($locallangXMLOverride[$fileReferenceWithoutExtension .
'.' . $extension]) && is_array($locallangXMLOverride[$fileReferenceWithoutExtension .
'.' . $extension])) {
161 $overrides = array_merge($overrides, $locallangXMLOverride[$fileReferenceWithoutExtension .
'.' . $extension]);
164 if (!empty($overrides)) {
165 foreach ($overrides as $overrideFile) {
166 $languageOverrideFileName = GeneralUtility::getFileAbsFileName($overrideFile);