Используйте языковые настройки браузера для установки языка (rlmp_language_detection)

Я пытаюсь автоматически установить язык на моей странице с одним деревом typo3 6.2.

В моей настройке я использую RealURL, чтобы добавить язык к URL-адресу, я использую параметр Lпо умолчанию. Я НЕ использую коды ISO для языков, но я использую static_info_tables для установки кода ISO. Для переключения языка я пытаюсь использовать расширение rlmp_language_detection, но оно не работает.

Моя языковая конфигурация (typo3name, официальный код ISO — выбран с помощью static_info_tables, ID — используется для Lparameter)

  • по умолчанию, -, 0
  • en-jp, en, 1
  • en-us, en, 2
  • jp-jp, ja, 3

Мой Typoscript для плагина:

plugin.tx_rlmplanguagedetection_pi1 {
   useOneTreeMethod = 1
   defaultLang = en
}

Мой Typoscript для языков:

config {
sys_language_uid = 0
language = en
locale_all = en-eu
}

[globalVar = GP:L = 1]
config {
sys_language_uid = 1
language = en
locale_all = en-us
}
[global]

[globalVar = GP:L = 2]
config {
sys_language_uid = 2
language = en
locale_all = en-jp
}
[global]

[globalVar = GP:L = 3]
config {
sys_language_uid = 3
language = jp
locale_all = jp-jp
}
[global]

Чтобы проверить это, я установил свой первый язык на японский, и когда я запрашиваю корневую страницу, это находится в моем заголовке запроса:

Accept-Language:ja,de-DE;q=0.8,de;q=0.6,en-US;q=0.4,en;q=0.2

http://mybrowserinfo.com/ скажите:

Language:Japanese
System Language:Not detectable with this browser
User Language:de

Но параметр L вообще не установлен, поэтому я получаю язык по умолчанию.


person nbar    schedule 12.03.2015    source источник
comment
Вы имеете в виду, что при использовании навигации у вас нет параметра l?   -  person Fixus    schedule 12.03.2015
comment
@Fixus Я вызываю страницу без параметра L. (Когда я добавляю параметр L, я получаю правильный язык, но идея в том, что это работает автоматически)   -  person nbar    schedule 12.03.2015
comment
когда вы устанавливаете параметр L, он отображается в навигации? Я имею в виду, можете ли вы перемещаться по странице с правильным языком?   -  person Fixus    schedule 12.03.2015
comment
@Fixus извините за поздний ответ. Да, перевод работает. Просто обнаружения/перенаправления нет.   -  person nbar    schedule 17.04.2015


Ответы (2)


У меня были такие же проблемы: Как я сделал это шаг за шагом:

Шаг 1: установите static_info_tables будьте осторожны, он должен быть в БД utf-8 charsetin latin1 (в моем случае) не работает

Шаг 2: установите rlmp_language_detection

Шаг 3: проверьте, установлен ли на вашем сервере php-geoip модуль php, если нет, установите Ext: ml_geoip или каким-либо образом установите его.

4 шаг включить статические шаблоны включить статические шаблоны в шаблон TS

5 этап

введите здесь описание изображениявведите здесь описание изображения

Пожалуйста, не забудьте выбрать код ISO игрового языка в дереве базовых страниц.

Шаг 6 Настройки TS — добавьте это после всех настроек языка

plugin.tx_rlmplanguagedetection_pi1 {
   # this mean that you hav ejust one tree pages for all lang, for multi trees look manual
   useOneTreeMethod = 1 

   #important - this your website sys_language default
   defaultLang = ru 

   # use -1 when you wont to test redirect, after change to 0
   cookieLifetime = -1 

   # you defind which method will be used for redirect browser or ip, better testing just with one
   testOrder = browser,ip

  # we can config aliases like "code = lang1, lang2"
  languageAliases >
  languageAliases {
    ua = uk,en
    en = en
    ru = ru,en
  }

  #we can country codes dependencies "country code = lang"
  countryCodeToLanguageCode >
  countryCodeToLanguageCode {
    ua = uk
    us = en
    gb = en
    nz = en
    au = en
    ie = en
    ca = en
    by = ru
  }

  #this just limit input params array
  limitToLanguages = ru,uk,en 

}

# ok just after all we include ext to page, on ts begining you shoud to have "page = PAGE" just check
page.1007 = < plugin.tx_rlmplanguagedetection_pi1
person Oleg V Karun    schedule 19.02.2016

Я бы предложил использовать .htaccess для перенаправления языка принятия браузера. Это избавляет вас от загрузки всего экземпляра TYPO3 только для того, чтобы выполнить перенаправление.

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

RewriteCond %{HTTP:Accept-Language} ^en-us [NC]
RewriteRule ^$ /en-us/ [L,R=307]

RewriteCond %{HTTP:Accept-Language} ^ja [NC]
RewriteRule ^$ /jp/ [L,R=307]

RewriteCond %{HTTP:Accept-Language} ^en-gb [NC]
RewriteRule ^$ /en-eu/ [L,R=307]

Я не знаю, как ориентироваться на en-jp.

На наших веб-сайтах мы используем 307 в качестве кода состояния, поэтому браузер всегда будет искать начальную страницу (в случае изменения структуры), также это не влияет на SEO.

person konsolenfreddy    schedule 13.03.2015
comment
спасибо за работу вокруг. Похоже, я буду делать это сейчас так. Любая идея, как я могу сделать перенаправление по умолчанию? Например, когда первый язык в Accept-Language не исправляет ни одно из правил? - person nbar; 17.04.2015
comment
С этим решением может возникнуть проблема, поскольку оно перенаправляет меня на локализованную страницу, даже если я выбрал язык по умолчанию, учитывая, что главная страница языка по умолчанию находится в /. - person Steven; 22.03.2016