Английский по умолчанию

InstantCMS 2.X
#1 13 декабря 2021 в 21:09

Всем привет. Как сделать английскую локализацию по умолчанию. Сейчас, если я в админке выставляю английский, то сайт английский. Но если я включаю чекбокс «Разрешить смену языка пользователями (подстановкой префикса в URL)», что бы заработал виджет смены языка, то сайт по умолчанию становится русским. Хотя в конфиге остаётся английским. Как то тут, что то не так).

#2 13 декабря 2021 в 23:15

Всем привет. Как сделать английскую локализацию по умолчанию. Сейчас, если я в админке выставляю английский, то сайт английский. Но если я включаю чекбокс «Разрешить смену языка пользователями (подстановкой префикса в URL)», что бы заработал виджет смены языка, то сайт по умолчанию становится русским. Хотя в конфиге остаётся английским. Как то тут, что то не так).

Lora

Вроде Fuze задумал какую-то глобальную доработку языков в следующем обновлении, если успеет, как он написал ранее. Может там будет уже эта возможность:)

#3 13 декабря 2021 в 23:47

Понятно.Спасибо.Думал может что то не так включаю)

#4 14 декабря 2021 в 01:50

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

#5 14 декабря 2021 в 13:09

Да там без бутылки не разобрать. Например в файле виджета есть такая переменная, которая потом передаётся в шаблон.

  1. $current_lang = cmsCore::getLanguageName();

Метод getLanguageName()

  1. public static function getLanguageName() {
  2. return self::$language;
  3. }

Но он всегда возвращает 'ru', даже если поменять на

  1. public static function getLanguageName() {
  2.  
  3. $config = cmsConfig::getInstance();
  4.  
  5. return $config->language;
  6. }

Хотя в конфиге 'en').

 

#6 14 декабря 2021 в 15:21

Lora, ради интереса, чтобы проверить свою догадку, приведённую выше, скачал систему. Действительно есть пара моментов когда язык по умолчанию может зависеть от языка, который сообщает сайту браузер HTTP_ACCEPT_LANGUAGE и переопределять конфиг. 

instantcms_20211012_v2.14.3\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. }

 

может посмотреть в этом направлении? 

#7 14 декабря 2021 в 16:01

Блин, совсем не подумал про этот файл. Ок, сейчас гляну.

Добавлено спустя 10 минут

Ну всё, молодец  Нил™, догадался. Это  от самый код). Закоментил и всё стало как надо.

Добавлено спустя 1 минуту

Теперь понятно почему возвращало всегда 'ru'

#8 3 апреля 2022 в 08:49

Насколько понимаю по датам сообщениям, данный топик обсуждался до выпуска ветки 2.15, то есть для версий 2.14.3 и ранее.

А у меня для сайта на версии 2.15.1 — абсолютно противоположная проблема:

1. Я настраиваю языковую локализацию по умолчанию (в моём случае она не русская и не английская).

2. Затем включаю опцию " Разрешить смену языка пользователями (подстановкой префикса в URL)", чтобы русский и английский язык были доступны на сайте в качестве языков международного общения.

3. И у меня наоборот — языком по умолчанию становится английский, а не тот, который мне нужен.

— — — — -

Вот поднятый мной топик:
instantcms.ru/forum/multijazychnyi-sait-s-jazykom-po-umolchaniyu-ne-angliiskim.html

Решение пока ищу. Разбор рекомендаций в данном топике точно будут полезны. Но если знаете конкретный ответ по моему запросу — также буду очень признателен за подсказки.

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