TYPO3 по умолчанию locallang.xlf, когда базовый язык сайта не английский - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть сайт, в качестве базового языка которого используется греческий язык.Так что на моей жидкости у меня есть <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), какой язык является моим базовым языком, и он автоматически прочитает гр.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"
}

И

[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 πφ, который также указал, что мой языковой префикс неверен.Так что спасибо вам обоим за помощь.

С уважением,

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Я точно знаю только для 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-код в языковой конфигурации.

0 голосов
/ 30 ноября 2018

Вам нужна правильная языковая конфигурация, чтобы 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 может определять текущий язык: с условием TS для параметра URL L (TYPO3 <9) или домена илисегмент пути (начиная с TYPO3 9) и используйте правильный файл переводов. </p>

...