TYPO3:获取语言代码

问题描述 投票:0回答:3

据我所知,有两种方法可以检索当前(前端)语言:

$GLOBALS['TSFE']->config['config']['language']
$GLOBALS['TSFE']->sys_language_uid

如果后者为 2,则配置值为“dk”。 但是,如果语言 UID 为 0,则第一个变量返回 ''(空字符串)。

sys_language_uid
和语言代码之间是否存在映射,或者换句话说,我在哪里/如何找到默认语言(代码)?

typo3
3个回答
1
投票

更深入一点:

sys_language_id
和语言代码之间存在映射。

您正在通过实例根目录上的

sys_language
记录(通过“页面”uid 0 上的列表模块)设置网站可用的语言。这些记录包含一个选择字段
static_lang_isocode
,您可以在其中为要创建/编辑的语言记录选择相应的 ISO 2 字符代码。这允许获取给定的任何语言 uid 的 2 字符代码。

只要您正确插入页面语言,您就会有一个映射,可以这么说。 除了 对于 uid

0
,如 konsolenfreddy 所写。


0
投票

您可能需要在 TypoScript 中初始化语言:

config {
    sys_language_uid = 0
    language = de
    locale_all = de_DE.UTF-8
    htmlTag_langKey = de_DE
}

[globalVar = GP:L = 1]
    config {
        sys_language_uid = 1
        language = en
        locale_all = en_EN.UTF-8
        htmlTag_langKey = en_EN
    }
[end]

这将默认为德语并在您的情况下返回“de”


0
投票

问题和答案有点过时了:


注意我添加了信息数据类型,不应复制,因为没有必要。

这是前端的:

(1) 例如,如果您在控制器中,则可以使用请求对象 (

$this-request
)。

/** \TYPO3\CMS\Core\Site\Entity\SiteLanguage $language */
$language = $this->request->getAttribute('language');

// Locale, like 'de_CH' or 'en_GB'

$locale = $language->getLocale();

// or get language id
/** int $lanuageId */
$languageId = $language->getLanguageId();

https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/RequestLifeCycle/RequestAttributes/Language.html#language

(2)使用语言方面

$languageAspect = GeneralUtility::makeInstance(Context::class)->getAspect('language');
$languageId = $languageAspect->getId();
© www.soinside.com 2019 - 2024. All rights reserved.