Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Неверное отображение в меню переключения языков (http://forum.typo3.ru/showthread.php?t=10037)

gabdullin 04.04.2012 22:49

Неверное отображение в меню переключения языков
 
Длительное время сайт работал в двуязычном варианте: русский - по-умолчанию, английский. Потребовалось добавить третий язык - турецкий. Конфиг следующий:
Код:

# Alternative Languages [Begin]
config {
        // Setting up the language variable "L" to be passed along with links
        linkVars = L
        uniqueLinkVars = 1
        sys_language_uid = 0
        sys_language_overlay = 1
        language = ru
        locale_all = ru_RU.UTF-8
        htmlTag_langKey = ru-RU
        baseURL = http://domain.ru/
}

[globalVar = GP:L=1]
config {
        sys_language_uid = 1
        language = en
        locale_all = en_US.UTF-8
        htmlTag_langKey = en-US
        baseURL = http://domain.com/
}

[globalVar = GP:L=2]
config {
        sys_language_uid = 2
        sys_language_mode = content_fallback ; 2,1,0
        language = tr
        locale_all = tr_TR.UTF-8
        htmlTag_langKey = tr-TR
        baseURL = http://domain.com.tr/
}
[global]
# Alternative Languages [End]

Если перевод страницы и элемент страницы на турецком существует, то переведенные элементы меню выводятся на турецком, не переведенные - на русском.
Если перевод страницы страницы на турецком существует, а элемент страницы нет, то переведенные элементы меню выводятся на турецком, не переведенные и элемент страницы - на русском.
Если перевод страницы и элемент страницы на турецком не существует, то переведенные элементы меню выводятся на турецком, не переведенные - на русском, а элемент страницы на английском.
А хочется простого, чтобы для турецкого языка отсутствующий контент и меню выводились на английском и только при отсутствии английского варианта на русском.
Вот такой вот зоопарк! Где тут собака порылась...
Может кто сталкивался?

Андрей Аксенов 05.04.2012 11:44

Проблема решаема, почитайте поточнее здесь

gabdullin 06.04.2012 13:09

Цитата:

Сообщение от Андрей Аксенов (Сообщение 33500)
Проблема решаема, почитайте поточнее здесь

Скрывать не буду, я писал свой пост после внимательного изучения данного руководства и длительных экспериментов с комбинированием:
Код:

sys_language_uid =
sys_language_mode =
sys_language_overlay =

которые не привели к нужному результату. Возможно что-то упустил, попробую повторить свои изыскания на досуге.
P.S. Кстати, хотелось бы выразить большую благодарность всем, кто приложил свои усилия к переводу документации.

Андрей Аксенов 06.04.2012 13:41

Может как-то так:
PHP код:

sys_language_mode content_fallback 2,1,

ошибка в синтаксисе - нужно двоеточие, а использовалась точка с запятой... поэтому настройка расценивалась как sys_language_mode = content_fallback

gabdullin 06.04.2012 16:40

Как раз напротив, точка с запятой заставляют эту конструкцию работать, поэтому я склоняюсь к мысли, что ошибка в синтаксисе, как раз в документации.
И эта конструкция более или менее работает когда отсутствует перевод для языка, в этом случае меню на русском (L=0), а элемент страницы (с отсутствуещей локализацией) - на английском (L=1). Но если перевод для страницы присутствует, то меню и элемент страницы (с отсутствуещей локализацией) выводятся на русском (L=0).

P.S. Здесь Дмитрий Дулепов доступно объясняет, что мои тайные желания слегка неверны и вряд ли будут реализованы и, похоже, он прав!

Андрей Аксенов 06.04.2012 17:19

Честно говоря, в процессе перевода этот режим не пробовал... Поверил на слово создателю документации. Но вот в багтрекере по-моему по этой части: http://forge.typo3.org/issues/19114

Андрей Аксенов 07.04.2012 12:24

Итак, подытожим, со слов Дмитрия Дулепова, чтобы языковая поддержка работала должным образом, нужно проверить следующие настройки:
- Корректная настройка content_fallback.
- Установка config.sys_language_mode на hideIfNotTranslated (или что-то подобное, согласно TSRef), либо в 0 (смотря по тому, что нужно для Вашего сайта).
- [ВАЖНО] убедитесь, что "альтернативная языковая запись" (alternative language record) для языка без содержимого не существует. Если же такая запись имеется, то система считает страницу переведенной на соответствующий язык и пытается вывести содержимое на этом языке, а содержимого-то и нет. Замещение содержимого другим языком (content fallback) происходить ТОЛЬКО в том случае, когда нет записи страницы для альтернативного языка (система считает, что страница не переведена). Именно так все и работает, хотя в TSRef говорится: "система всегда работает с выбранным языком, даже если страница не переведена при помощи замещающих записей (альтернативных языковых записей). Таким образом, например, меню остаются переведенными, а содержимое страницы может быть замещено записями на другом языке, определяемом значением ключевого слова".
- [ВАЖНО] удостоверьтесь, что в Install tools отключен параметр hidePagesIfNotTranslatedByDefault=0. Если же он включен (= 1), то при удалении альтернативной языковой записи страницы будет получена ошибка 404, при обращении к странице на языке с удаленной альтернативной записью.

gabdullin 07.04.2012 21:34

Механизм работы замещения перевода стал понятен.
Единственно осталось не понятным почему для меню это правило не работает?! Почему меню не замещается?!

Андрей Аксенов 07.04.2012 21:40

Цитата:

Сообщение от gabdullin (Сообщение 33521)
Механизм работы замещения перевода стал понятен.
Единственно осталось не понятным почему для меню это правило не работает?! Почему меню не замещается?!

А что происходит? Поточнее, как сейчас работает сайт и какие настройки?

gabdullin 07.04.2012 21:50

Настройки, как приведены выше. Все элементы меню для которых отсутствует перевод выводятся на русском, т.е. языке по-умолчанию, для которых перевод есть, естественно на турецком. Те страницы для которых нет перевода турецкого, но есть английский, выводятся на английском, меню при этом на русском, причем особенно это напрягает для страниц на которых присутствует "Меню подстраниц выбранных страниц с резюме" особенно при отсутствии перевода на турецкий.
Выглядит это так: меню на русском, часть страницы на английском, список вложенных страниц на русском.
Слегка не логично. Я вообщем то изначально об этом и писал. Чуть ушел в сторону в процессе обсуждения.


Часовой пояс GMT +4, время: 22:43.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot