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

#1 24 марта 2022 в 11:12

Уважаемые инстантоведы!

Буду признателен за подсказку готовых решений или идей, наводок, как реализовать на мультиязычном сайте автоматическое перенаправление на версию сайта на наиболее комфортном языке для конкретного пользователя.

— — — — - 

ПРЕДПОСЫЛКИ

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

Но у таких сайтов одна из версий — будет по умолчанию.
Причем сейчас версией по умолчанию являетя именно английская.

Если пользователь заходит на сайт по основному адресу «названиесайта.домен/путь-к-файлу» — то ему будет отображаться контент языка по умолчанию, то есть английский.

А для просмотра контента на других языках — нужно совершать дополнительное действие, переключаться на нужный язык. Ну либо сразу трафик собирать на страницы по типу «названиесайта.домен/двухбуквенный-код-ДОПОЛНИТЕЛЬНОГО-языка/путь-к-файлу».

— — — — - 

ИДЕИ ПО ФУНКЦИОНАЛУ

То, что контент сайта на разных языках имеет разные URL, — это очень круто с позиции SEO, а также репостов ссылок. 

Но! На мой взгляд, потенциально было бы хорошо, если бы для НОВЫХ посетителей мультиязычного сайта из одной шестой части суши (определяемых по IP и/или параметрам браузера/операционной системы) — мультиязычный сайт аккуратно, безшовно с позиции SEO редиректил на версию этой же страницы, но на русском языке. И аналогично — для других языков.

Также для уже посещавших сайт, при СЛЕДУЮЩЕМ посещении мультиязычного сайта — было бы хорошо аналогичным бесшовным образом редиректить на тот язык, который выбирал пользователь при предыдущем своем посещении.

— — — — - 

Предлагаю обсудить эти идеи, их плюсы, преимущества, удобства для посетителей сайта.
А также ограничения, моменты, которые могут быть негативными с позиции SEO.

Ещё раз подчеркну: моя идея не автозамене контента на страницах, а именно бесшовной переадресации на версию сайта на другом языке, вероятнее всего БОЛЕЕ УДОБНОМ для данного конкретного посетителя.

Хорошая эта идея?

Может быть есть готовые дополнения?
Или хотя бы примеры сайтов, в которых реализован подобный функционал?

#2 3 апреля 2022 в 12:17

Дополнение к данной теме.

Оказывается, в движке есть определённые наработки в этом направлении.

В частности, в файле bootstrap.php есть вот такой фрагмент кода:

  1. // Язык браузера
  2. if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($config->is_user_change_lang)){
  3. $user_lang = strtolower(substr((string)$_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
  4. if($user_lang !== $config->getConfig('language') &&
  5. preg_match('/^[a-z]{2}$/i', $user_lang) &&
  6. is_dir($config->root_path.'system/languages/'.$user_lang.'/')){
  7. $config->set('language', $user_lang);
  8. }
  9. }
  10.  

В процессе настройки мультиязычности этот фрагмент кода создаёт определённые путаницы для установки языка по умолчанию.

А вот для пользователей сайта — данный код выполняет автоматический выбор языка. Но насколько корректно работает данный код — пока сказать не берусь.

Если знаете — напишите, пожалуйста.

В целом тема остаётся для меня актуальной.

#3 3 апреля 2022 в 19:29

Но насколько корректно работает данный код — пока сказать не берусь.

Владимир Переверзев

Поменяйте в настройках вашего браузера язык на другой (который есть на сайте) и посмотрите как поменяется ваш «язык по умолчанию» на сайте. Потом снова верните на английский язык в настройках браузера и «язык по умолчанию» на сайте для вашего браузера снова станет en. А для моего браузера он как был, так и остался таким, в котором отобаржается меню настроек браузера.

Если знаете — напишите, пожалуйста.

Владимир Переверзев

Если стоит галочка в настройках сайта о смене языка пользователями, то проверяется информация передаваемая сервером в $_SERVER['HTTP_ACCEPT_LANGUAGE']. Если известно HTTP_ACCEPT_LANGUAGE и оно не равно установленому в «язык по умолчанию» и есть такая языковая папка в system/languages, то языком по умолчанию станоится именно этот язык (тот, что в HTTP_ACCEPT_LANGUAGE ).

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.