* `config.concatenateJsAndCss`
* `config.defaultGetVars`
* `config.language`
+* `config.language_alt`
* `config.locale_all`
* `config.sys_language_isocode`
* `config.sys_language_isocode_default`
* @param string|null $extensionName The name of the extension
* @param array $arguments The arguments of the extension, being passed over to vsprintf
* @param string $languageKey The language key or null for using the current language from the system
- * @param string[] $alternativeLanguageKeys The alternative language keys if no translation was found. If null and we are in the frontend, then the language_alt from TypoScript setup will be used
+ * @param string[] $alternativeLanguageKeys The alternative language keys if no translation was found.
* @return string|null The value from LOCAL_LANG or null if no translation was found.
*/
public static function translate(string $key, ?string $extensionName = null, array $arguments = null, string $languageKey = null, array $alternativeLanguageKeys = null): ?string
}
/**
- * Sets the currently active language/language_alt keys.
- * Default values are "default" for language key and an empty array for language_alt key.
+ * Sets the currently active language keys.
*
* @return array
*/
'alternativeLanguageKeys' => [],
];
if (TYPO3_MODE === 'FE') {
- $tsfe = static::getTypoScriptFrontendController();
$siteLanguage = self::getCurrentSiteLanguage();
- // Get values from site language, which takes precedence over TypoScript settings
- if ($siteLanguage instanceof SiteLanguage) {
- $languageKeys['languageKey'] = $siteLanguage->getTypo3Language();
- } elseif (isset($tsfe->config['config']['language'])) {
- $languageKeys['languageKey'] = $tsfe->config['config']['language'];
- if (isset($tsfe->config['config']['language_alt'])) {
- $languageKeys['alternativeLanguageKeys'] = $tsfe->config['config']['language_alt'];
- }
- }
+ // Get values from site language
+ $languageKeys['languageKey'] = $siteLanguage->getTypo3Language();
- if (empty($languageKeys['alternativeLanguageKeys'])) {
- $locales = GeneralUtility::makeInstance(Locales::class);
- if (in_array($languageKeys['languageKey'], $locales->getLocales())) {
- foreach ($locales->getLocaleDependencies($languageKeys['languageKey']) as $language) {
- $languageKeys['alternativeLanguageKeys'] = $language;
- }
+ $locales = GeneralUtility::makeInstance(Locales::class);
+ if (in_array($languageKeys['languageKey'], $locales->getLocales())) {
+ foreach ($locales->getLocaleDependencies($languageKeys['languageKey']) as $language) {
+ $languageKeys['alternativeLanguageKeys'] = $language;
}
}
} elseif (!empty($GLOBALS['BE_USER']->uc['lang'])) {
return null;
}
- /**
- * @return \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
- */
- protected static function getTypoScriptFrontendController(): \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
- {
- return $GLOBALS['TSFE'];
- }
-
/**
* @return \TYPO3\CMS\Core\Localization\LanguageService
*/
*/
use TYPO3\CMS\Core\Authentication\LoginType;
+use TYPO3\CMS\Core\Http\ServerRequest;
+use TYPO3\CMS\Core\Http\Uri;
+use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
use TYPO3\CMS\Felogin\Controller\FrontendLoginController;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
public function setUp(): void
{
+ $GLOBALS['TYPO3_REQUEST'] = (new ServerRequest())->withAttribute('language', new SiteLanguage(0, 'en_US', new Uri('/'), ['typo3Language' => 'en']));
$GLOBALS['TSFE'] = new \stdClass();
parent::setUp();
}
use TYPO3\CMS\Form\Domain\Model\FormElements\FormElementInterface;
use TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface;
use TYPO3\CMS\Form\Domain\Runtime\FormRuntime;
-use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
/**
* Advanced translations
}
/**
- * Sets the currently active language/language_alt keys.
- * Default values are "default" for language key and "" for language_alt key.
+ * Sets the currently active language keys.
*/
protected function setLanguageKeys()
{
$this->alternativeLanguageKeys = [];
if (TYPO3_MODE === 'FE') {
- $tsfe = $this->getTypoScriptFrontendController();
-
- if ($this->getCurrentSiteLanguage() instanceof SiteLanguage) {
- $this->languageKey = $this->getCurrentSiteLanguage()->getTypo3Language();
- } elseif (isset($tsfe->config['config']['language'])) {
- $this->languageKey = $tsfe->config['config']['language'];
- if (isset($tsfe->config['config']['language_alt'])) {
- $this->alternativeLanguageKeys[] = $tsfe->config['config']['language_alt'];
- }
- }
+ $this->languageKey = $this->getCurrentSiteLanguage()->getTypo3Language();
- if ($this->languageKey !== 'default' && empty($this->alternativeLanguageKeys)) {
+ if ($this->languageKey !== 'default') {
/** @var \TYPO3\CMS\Core\Localization\Locales $locales */
$locales = GeneralUtility::makeInstance(Locales::class);
if (in_array($this->languageKey, $locales->getLocales(), true)) {
{
return $GLOBALS['LANG'];
}
-
- /**
- * @return TypoScriptFrontendController
- */
- protected function getTypoScriptFrontendController(): TypoScriptFrontendController
- {
- return $GLOBALS['TSFE'];
- }
}
$this->frontendController->reqCHash();
}
}
- $siteLanguage = $this->getCurrentSiteLanguage();
- if ($siteLanguage) {
- $this->LLkey = $siteLanguage->getTypo3Language();
- } elseif (!empty($this->frontendController->config['config']['language'])) {
- $this->LLkey = $this->frontendController->config['config']['language'];
- }
+ $this->LLkey = $this->getCurrentSiteLanguage()->getTypo3Language();
- if (empty($this->frontendController->config['config']['language_alt'])) {
- /** @var Locales $locales */
- $locales = GeneralUtility::makeInstance(Locales::class);
- if (in_array($this->LLkey, $locales->getLocales())) {
- $this->altLLkey = '';
- foreach ($locales->getLocaleDependencies($this->LLkey) as $language) {
- $this->altLLkey .= $language . ',';
- }
- $this->altLLkey = rtrim($this->altLLkey, ',');
+ /** @var Locales $locales */
+ $locales = GeneralUtility::makeInstance(Locales::class);
+ if (in_array($this->LLkey, $locales->getLocales())) {
+ foreach ($locales->getLocaleDependencies($this->LLkey) as $language) {
+ $this->altLLkey .= $language . ',';
}
- } else {
- $this->altLLkey = $this->frontendController->config['config']['language_alt'];
+ $this->altLLkey = rtrim($this->altLLkey, ',');
}
}
*
* The TYPO3 project - inspiring people to share!
*/
+
+use TYPO3\CMS\Core\Http\ServerRequest;
+use TYPO3\CMS\Core\Http\Uri;
+use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\TextContentObject;
// Allow objects until 100 levels deep when executing the stdWrap
$GLOBALS['TSFE'] = new \stdClass();
$GLOBALS['TSFE']->cObjectDepthCounter = 100;
+ $GLOBALS['TYPO3_REQUEST'] = (new ServerRequest())->withAttribute('language', new SiteLanguage(0, 'en_US', new Uri('/'), ['typo3Language' => 'en']));
$this->abstractPlugin = new AbstractPlugin();
$contentObjectRenderer = new ContentObjectRenderer();
<default><![CDATA[
]]></default>
</property>
- <property name="language_alt" type="string">
- <description><![CDATA[If "config.language" (above) is used, this can be set to another language key which will be used for labels if a label was not found for the main language. For instance a brazil portuguese website might specify "pt" as alternative language which means the portuguese label will be shown if none was available in the main language, brazil portuguese. This feature makes sense if one language is incompletely translated and close to another language.]]></description>
- <default><![CDATA[
-]]></default>
</property>
<property name="linkVars" type="string">
<description><![CDATA[HTTP_GET_VARS, which should be passed on with links in TYPO3. This is compiled into a string stored in $GLOBALS["TSFE"]->linkVars
'labelStdWrap': kw('labelStdWrap'),
'labelWrap': kw('labelWrap'),
'lang': kw('lang'),
- 'language': B,
- 'language_alt': kw('language_alt'),
'languageField': kw('languageField'),
'layout': A,
'left': kw('left'),