Page 6 of 25

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 9:39 am
by ulan
Я делаю язык по мануалу https://smartcj.com/wiki/doku.php?id=ru ... _сайта_i18

Там вставляется пхп код определения языка для пользователя в порядке приоритета
1 кука
2 force_lng (если пользователь находится в конкретной языковой зоне site.com/<язык>)
3 язык браузера
4 английский (дефолтный) если язык, что определился не входит в поддерживаемые языки

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

но не могу согласовать это с системой редиректа. она просто игнорирует куку force_lng и если юзер (с ру браузером) сменил язык на site.com/de/ и потом зашел на site.com, то его перекинет на site.com/ru/

что хотелось бы от редиректа?
1 если пользователь ранее выбрал язык (force_lng) и зашел на морду, то его редиректит на нужный языковый урл
2 иначе как и щас от языка браузера
3 но если итоговый язык не поддерживается, то выбирается дефолтный: en
4 если язык en, то никакой редирект не делать.

То есть енг-юзер блуждает по сайту как есть, а тот, кто ранее насильно сменил язык (кука) или поддерживаемый язык браузера редиректися в site.com/<язык>/

то есть что образно получается

1 редирект должен учитывать форсированный язык (кука)
2 чтобы не было site.com/en/ должен быть способ задать урл по которому язык будет выставлен en
(по идее он уже есть. это явный site.com/?force_lang=en (лишь бы от него не было побочных эффектов))
3 ну и по хорошему разве не может движок сам определять язык и заведовать кукой и передать в шаблон типа $userlang, а не писать в шаблонах детект самому, если уж он все равно не может без редиректа

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 9:40 am
by ulan
admin wrote: Thu Apr 16, 2020 9:39 am потому что стоит

location = / {
index /scj/cgi/index.php?force_lng=en;
}

надо просто подумать , не строчить сразу, а задуматься на 5 минут будет ли работать так как вы хотите
ну можно еще раз почитать что я пишу
мне не нужна /en/ страница для енглиша
он должен быть на морде

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:30 am
by XLodger
я сделал проще для урла domain.com/en/ просто поставил реврайт на domain.com
и у меня не подставляет при перестановке для этого языка /en/ в урл а сам язык меняется на en
все остальные языки /de/ /it/ с этой частью просто и все

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:32 am
by admin
Ок, добавил в ап редирект по куке

если стоит кука COOKIE['force_lng'] и человек открывает индекс без GET['force_lng'] , то редиректим на язык указанный в куке.

смотрите все ли ок у вас, если нет то показывайте какой переход работает не так с хедерами

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:43 am
by ulan
admin wrote: Thu Apr 16, 2020 11:32 am Ок, добавил в ап редирект по куке

если стоит кука COOKIE['force_lng'] и человек открывает индекс без GET['force_lng'] , то редиректим на язык указанный в куке.

смотрите все ли ок у вас, если нет то показывайте какой переход работает не так с хедерами
Да ридерект срабатывает как надо
как теперь мне только корень сделать английским по умолчанию если
location = / {
index /scj/cgi/index.php?force_lng=en;
}
не помогло(

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:47 am
by admin
не ясно по описанию какой конкретно язык должен быть на индексе

показывайте БЕЗ реврайта с хедерами

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:52 am
by ulan
ну конкретно должен быть ЕН язык
ен язык не создавал на старнице языков (он как я понял дефолтный)
вот как его привязать к индексу с установкой кук и плюшек)))
может типа если сайт мультиязычный давать какому то языку привязку к морде?

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:54 am
by admin
если вы заходите на сайт
и нет force_lng
то показывает дефолтный язык

если у вас не показывает деофлтный (ЕН) - значит стоит force_lng

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 11:58 am
by ulan
а что в данном случае дефолтный язык?
какие под него перменные в языковом шаблоне?

Re: Мультиязычный индекс

Posted: Thu Apr 16, 2020 12:03 pm
by admin
дефолтный - тот который при редактировании написан как main