Russian TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 04.04.2012, 22:49   #1
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию Неверное отображение в меню переключения языков

Длительное время сайт работал в двуязычном варианте: русский - по-умолчанию, английский. Потребовалось добавить третий язык - турецкий. Конфиг следующий:
Код:
# 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]
Если перевод страницы и элемент страницы на турецком существует, то переведенные элементы меню выводятся на турецком, не переведенные - на русском.
Если перевод страницы страницы на турецком существует, а элемент страницы нет, то переведенные элементы меню выводятся на турецком, не переведенные и элемент страницы - на русском.
Если перевод страницы и элемент страницы на турецком не существует, то переведенные элементы меню выводятся на турецком, не переведенные - на русском, а элемент страницы на английском.
А хочется простого, чтобы для турецкого языка отсутствующий контент и меню выводились на английском и только при отсутствии английского варианта на русском.
Вот такой вот зоопарк! Где тут собака порылась...
Может кто сталкивался?
__________________
Не ошибается тот, кто ничего не делает!

Последний раз редактировалось gabdullin; 04.04.2012 в 23:20 Причина: дополнение
gabdullin вне форума   Ответить с цитированием
Старый 05.04.2012, 11:44   #2
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 704
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Проблема решаема, почитайте поточнее здесь
Андрей Аксенов вне форума   Ответить с цитированием
Старый 06.04.2012, 13:09   #3
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

Цитата:
Сообщение от Андрей Аксенов Посмотреть сообщение
Проблема решаема, почитайте поточнее здесь
Скрывать не буду, я писал свой пост после внимательного изучения данного руководства и длительных экспериментов с комбинированием:
Код:
sys_language_uid =
sys_language_mode =
sys_language_overlay =
которые не привели к нужному результату. Возможно что-то упустил, попробую повторить свои изыскания на досуге.
P.S. Кстати, хотелось бы выразить большую благодарность всем, кто приложил свои усилия к переводу документации.
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 06.04.2012, 13:41   #4
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 704
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Может как-то так:
PHP код:
sys_language_mode content_fallback 2,1,
ошибка в синтаксисе - нужно двоеточие, а использовалась точка с запятой... поэтому настройка расценивалась как sys_language_mode = content_fallback
Андрей Аксенов вне форума   Ответить с цитированием
Старый 06.04.2012, 16:40   #5
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

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

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

Последний раз редактировалось gabdullin; 06.04.2012 в 18:14
gabdullin вне форума   Ответить с цитированием
Старый 06.04.2012, 17:19   #6
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 704
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Честно говоря, в процессе перевода этот режим не пробовал... Поверил на слово создателю документации. Но вот в багтрекере по-моему по этой части: http://forge.typo3.org/issues/19114
Андрей Аксенов вне форума   Ответить с цитированием
Старый 07.04.2012, 12:24   #7
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 704
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

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

Механизм работы замещения перевода стал понятен.
Единственно осталось не понятным почему для меню это правило не работает?! Почему меню не замещается?!
__________________
Не ошибается тот, кто ничего не делает!
gabdullin вне форума   Ответить с цитированием
Старый 07.04.2012, 21:40   #9
Андрей Аксенов
Senior Member
 
Регистрация: 12.04.2008
Адрес: Россия, Москва
Сообщений: 704
Отправить сообщение для Андрей Аксенов с помощью ICQ Отправить сообщение для Андрей Аксенов с помощью Skype™
По умолчанию

Цитата:
Сообщение от gabdullin Посмотреть сообщение
Механизм работы замещения перевода стал понятен.
Единственно осталось не понятным почему для меню это правило не работает?! Почему меню не замещается?!
А что происходит? Поточнее, как сейчас работает сайт и какие настройки?
Андрей Аксенов вне форума   Ответить с цитированием
Старый 07.04.2012, 21:50   #10
gabdullin
Продвинутый
 
Регистрация: 13.05.2006
Адрес: Россия, Казань
Сообщений: 62
Отправить сообщение для gabdullin с помощью Skype™
По умолчанию

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

Теги
мультиязычность, мультиязычный, multidomain, multilanguage

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухуровневое меню в разных div vip1321 Общие вопросы 5 03.05.2011 10:54
Не выводится меню переключения языков :( Olga25 TypoScript практикум 2 22.04.2009 12:56
Рендеринг меню в таблицу AleXUnder Общие вопросы 3 26.03.2009 17:55
Разметка каскадного вложенного меню в TemplaVoila maaboo Общие вопросы 7 27.07.2008 17:11
еще раз меню языков. только текстовое. (:) Общие вопросы 2 10.05.2006 16:31


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория