Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Определения языка браузера и последующий редирект -  Согласно языку
Форумы портала PHP.SU » PHP » Программирование на PHP » Определения языка браузера и последующий редирект -  Согласно языку

Страниц (1): [1]
 

1. Kiriil1.Adv - 19 Августа, 2020 - 14:47:29 - перейти к сообщению
Всем, доброго дня

Подскажите пожалуйста рабочий пример, для "Определения языка браузера и последующий редирект на русскоязычную версию сайта для русской версия браузера, английский язык во всех других случаях",

Сам перечитал тону мануалов, но рабочей версии не нашёл. Например, в режиме инкогнито google chrome на MacOS всегда показывает английский язык, а Safari русский

Вот например при заходе на сайт www[dot]minecraft[dot]net если у меня операционнка на русском языке во всех браузера, а также в инкогнито режимах перекидывает на русскоязычную версию сайта, как это реализовано?


Заранее спасибо
2. Kiriil1.Adv - 20 Августа, 2020 - 19:33:25 - перейти к сообщению
в index.php в начало страницы вставил
----------------
<?php

preg_match('/^\w{2}/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $m);
switch (strtolower($m[0])) {
case 'ru': header('Location: /ru/index.php'); break;
}

...
...
...

----------------

index.php - сайт на английском (по  умолчанию)
/ru/index.php - русская версия

Соответсвенно:
1) если у пользователя в браузере любая локаль(кроме русской) - index.php продолжает дальше програжаться
2) если у пользователя в браузере русская локаль index.php делает редирект на /ru/index.php
3. Vladimir Kheifets - 21 Августа, 2020 - 10:45:15 - перейти к сообщению
Kiriil1.Adv пишет:
в index.php в начало страницы вставил
----------------
<?php

preg_match('/^\w{2}/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $m);
switch (strtolower($m[0])) {
case 'ru': header('Location: /ru/index.php'); break;
}

...
...
...

----------------

index.php - сайт на английском (по  умолчанию)
/ru/index.php - русская версия

Соответсвенно:
1) если у пользователя в браузере любая локаль(кроме русской) - index.php продолжает дальше програжаться
2) если у пользователя в браузере русская локаль index.php делает редирект на /ru/index.php

Добрый день!
1. Советую Вам добавить возможность выбора языка иначе, если у пользователя
в браузере любая локаль(кроме русской), он русскую версию не сможет открыть.

2. Вы можете избавится от редиректа и переписывания кодов на разных языках
(например, index.php на русском и index.php на английском), а вместо этого оставить
один index.php, заменив в нём тексты на переменные, выбираемые для выбранного
языка из БД или из файлов.

3.Если на сайте предусматривется авторизация пользователя, до желательно
предусмотреть в профили позиции для ввода языка и страны.
Тогда после авторизации можно автоматически переключать язык.

4.Вы можете использовать куки для сохранения выбранного языка и/или идентификатора
пользователя. Это также можно применить для автоматической авторизации
и переключения языка(не в режиме инкогнито).

Удачи!
4. Kiriil1.Adv - 21 Августа, 2020 - 11:31:21 - перейти к сообщению
Vladimir Kheifets пишет:
Kiriil1.Adv пишет:
в index.php в начало страницы вставил
----------------
<?php

preg_match('/^\w{2}/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $m);
switch (strtolower($m[0])) {
case 'ru': header('Location: /ru/index.php'); break;
}

...
...
...

----------------

index.php - сайт на английском (по  умолчанию)
/ru/index.php - русская версия

Соответсвенно:
1) если у пользователя в браузере любая локаль(кроме русской) - index.php продолжает дальше програжаться
2) если у пользователя в браузере русская локаль index.php делает редирект на /ru/index.php

Добрый день!
1. Советую Вам добавить возможность выбора языка иначе, если у пользователя
в браузере любая локаль(кроме русской), он русскую версию не сможет открыть.

2. Вы можете избавится от редиректа и переписывания кодов на разных языках
(например, index.php на русском и index.php на английском), а вместо этого оставить
один index.php, заменив в нём тексты на переменные, выбираемые для выбранного
языка из БД или из файлов.

3.Если на сайте предусматривется авторизация пользователя, до желательно
предусмотреть в профили позиции для ввода языка и страны.
Тогда после авторизации можно автоматически переключать язык.

4.Вы можете использовать куки для сохранения выбранного языка и/или идентификатора
пользователя. Это также можно применить для автоматической авторизации
и переключения языка(не в режиме инкогнито).

Удачи!



Стократно Благодарю, спасибо
5. LIME - 21 Августа, 2020 - 15:30:35 - перейти к сообщению
2. для публичных страниц все же лучше редирект для лучшей поисковой оптимизации
Не то чтобы это противоречит остальным пунктам, но язык лучше зафиксировать в урле/поддомене дополнительно, не в куке.
6. LIME - 21 Августа, 2020 - 18:08:48 - перейти к сообщению
.
7. Kiriil1.Adv - 24 Августа, 2020 - 13:07:25 - перейти к сообщению
У меня на выходных возникла идейка
- можно попробовать без куков и лишних заморочек
- только вопрос как на это отреагируют поисковики при индексации при новой структуре и что будут со старыми ссылками как их поисковик обработает?




Вот структура сайта (соответственно на каждой странице сайта будет возможность выбора языка принудительно, и ссылки будут переходить, согласно структуре сайта - ниже)
-----------------------


мойдомен.ru
|
index.php (содержит только на редирект (блок кода - 1 смотри внизу))
|
|\
мойдомен.ru/eng/index.php (и получаеться все обращания к страницам бцдцт в рамках префикса /eng/)
|
|
|\
мойдомен.ru/rus/index.php (и получаеться все обращания к страницам бцдцт в рамках префикса /rus/)




(блок кода - 1)
-------------------------------- -
preg_match('/^\w{2}/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $m);
switch (strtolower($m[0])) {
case 'ru': header('Location: /rus/index.php'); break;
default: header('Location: /eng/index.php'); break;
}

 

Powered by ExBB FM 1.0 RC1