TYPO3 默认 locallang.xlf 当网站的基本语言不是英语时

TYPO3 default locallang.xlf when the website's base language is not English

我有一个以希腊语为基本语言的网站。所以在我的液体上我有一个 <f:translate key="more_button" /> viewhelper。

由于 locallang.xlf 必须始终使用英文,我无法添加名称为 en.locallang.xlf 的文件,所以我不知道如何将其转换为希腊语。

我试图用 TypoScript 覆盖它,但我失败了。

我试过类似的东西:

plugin.tx_akmyBasebase._LOCAL_LANG.gr.more_button = Value
plugin.tx_ak_myBase_base._LOCAL_LANG.gr.more_button = Value

尽管在我的 TOB 上我的插件没有显示,因为我没有包含任何静态模板,所以我不知道这个想法有多有效。

接下来我尝试的是:locallang.xlf

1.

<?xml version="1.0" encoding="UTF-8"?>
 <xliff version="1.0">
  <file source-language="en" datatype="plaintext" original="messages" date="2017-07-18T14:10:33Z" product-name="bw_apoKardias_base">
    <header/>
    <body>
        <trans-unit id="more_button" xml:space="preserve">
           <source>More</source>
        </trans-unit>
    </body>
  </file>
</xliff>

并且我创建了一个文件 gr.locallang.xlf

<?xml version="1.0" encoding="UTF-8"?>
  <xliff version="1.0">
   <file source-language="en" target-language="gr" datatype="plaintext" original="messages" date="2017-07-18T14:10:33Z" product-name="bw_apoKardias_base">
    <header/>
    <body>
        <trans-unit id="more_button" xml:space="preserve">
            <source>More</source>
            <target>Value</target>
        </trans-unit>
    </body>
  </file>
</xliff>

我希望 TYPO3 能以某种方式理解(TypoScript 配置)哪种语言是我的基本语言,它会自动读取 gr.locallang 但它不起作用。

我的 TypoScript:

config {
  uniqueLinkVars = 1
  linkVars = L(int)
  sys_language_uid = 0
  sys_language_mode = content_fallback;2,1,0
  sys_language_overlay = 0
  language = gr
  locale_all = gr_GR.utf8
  htmlTag_langKey = el
  htmlTag_dir = ltr
  htmlTag_setParams = lang="el" dir="ltr" class="no-js"
}

AND

[globalVar = GP:L = 1]
  config {
     sys_language_uid = 1
     language = en
     locale_all = en_EN.UTF-8
     htmlTag_setParams = lang="en" dir="ltr" class="no-js"
    }
[global]

有什么想法吗?

编辑

@Morgus Lethe 的回答后,我的问题实际上是.。显然这个 . 是使多语言功能正常工作所必需的。去图吧。

如果不是@Bernd Wilke πφ 也指出我的语言前缀是错误的,我将找不到解决我的问题的方法。所以谢谢你们的帮助。

此致,

您需要适当的语言配置,以便 TYPO3 知道您当前使用的是什么语言。

在TYPO3 9之前(你用的是什么版本?)是这样的打字稿:

// no sys_language record: uid=0
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE.UTF-8
config.htmlTag_langKey = de

[globalVar = GP:L = 1]
// sys_langugage record with uid=1, does not need to match the L value!
config.sys_language_uid = 1
config.language = en
config.locale_all = en_US.UTF-8
config.htmlTag_langKey = en
[global]

从 TYPO3 9 开始,语言配置在站点配置中完成:

rootPageId: 2
base: 'https://www.beispiel.de/'
languages:
  -
    languageId: '0'
    title: Deutsch
    navigationTitle: ''
    base: /
    locale: de_DE.UTF-8
    iso-639-1: de
    hreflang: de-DE
    direction: ltr
    typo3Language: de
    flag: de
  -
    languageId: '1'
    title: English
    navigationTitle: ''
    # base: 'https://www.example.com/' 
    base: /en/
    locale: en_US.UTF-8
    iso-639-1: en
    hreflang: en-US
    direction: ltr
    typo3Language: default
    flag: us
    fallbackType: strickt
:    

从 URL TYPO3 可以检测当前语言:在 URL 参数 L(TYPO3 <9)或域或路径段(自 TYPO3 9)上使用 TS 条件并使用正确的翻译文件。

我只知道 Typo3 v9.5,它有很好的多语言功能,但我有一个非常相似的情况: 我的默认语言是斯洛文尼亚语,url 是 http://example.com 并且在站点配置中将英语定义为额外的站点语言,然后通过列表模块将其添加到我的站点中。 url 是 http://example.com/en/

为了翻译标签(例如),我有我的 locallang.xlf 文件,其中包含如下内容:

  <trans-unit id="common.contact" xml:space="preserve">
    <source>Contact</source>
  </trans-unit>

然后我有我的 sl.locallang.xlf 文件(斯洛文尼亚语),其中包含如下内容:

  <trans-unit id="common.contact" xml:space="preserve">
    <source>Contact</source>
    <target>Kontakt</target>
  </trans-unit>

然后我可以在我的流体模板中使用它来翻译标签:

<p>
<f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:common.contact" />
</p>

Typo3 然后会自动检测应该显示的语言并使用适当的翻译。

小心,我认为您必须使用 . 字符来定义标签,并确保您在语言配置中具有正确的语言标签、区域设置和 iso 代码。