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

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

Дающим карму - да воздастся! Напишите на стене что-то приятное!
+69
Репутация
-28
Рейтинг
#1 Как настроить мультиязычный сайт с языком по умолчанию - НЕ английским? 28 марта 2022 в 00:00

Узнал благодаря личной коммуникации с одним из разработчиков компонентов для Инстанта, что описанная функциональность — это именно в версии 2.15.1 такой глюк наблюдается.

В версии 2.14.3 выбор языка по умолчанию работал более корректно.

Даже не знаю, ну не переделывать же сайт заново на более старой версии из-за этого?

#2 Как настроить мультиязычный сайт с языком по умолчанию - НЕ английским? 24 марта 2022 в 19:56

Поставьте в админке англ. И на сайте станет анг. Или в system/core/core.php примерно стр 18

private static $language = 'ru'; Поменяйте на en или какой там вам нужен? Немецкий? Не знаю какие буквы надо)

Хотя думаю в админке в любом случае нужно сменить язык

Lora

 Lora, спасибо за идею!!

Но блин, я не верю, что именно этот фрагмент кода как-то поможет.

По крайней мере потому, что я описал выше — язык по умолчанию становится английский.
Поэтому если эта переменная имеет значение 'ru', то замена его на 'ge' явно не поможет изменить английский как язык по умолчению.

Но возможно да, с этой переменной надо поработать. Но точно дальше по коду, не при определении значения по умолчанию.

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

Мне кажется, вот с этой переменной надо поработать:

  1. private static $language_href_prefix = '';

В частности — с этим участком кода:

  1. private static function detectLanguage() {
  2.  
  3. $config = cmsConfig::getInstance();
  4.  
  5. self::$language = $config->language;
  6.  
  7. if (!empty($_SERVER['REQUEST_URI']) && !empty($config->is_user_change_lang)) {
  8.  
  9. $segments = explode('/', mb_substr($_SERVER['REQUEST_URI'], mb_strlen($config->root)));
  10.  
  11. if (empty($segments[0])) { return; }
  12.  
  13. $query_str = '';
  14. // Есть ли в GET параметры
  15. $pos_que = mb_strpos($segments[0], '?');
  16. if ($pos_que !== false) {
  17. $query_str = mb_substr($segments[0], $pos_que);
  18. $segments[0] = strstr($segments[0], '?', true);
  19. }
  20.  
  21. // язык может быть только двухбуквенный, определяем его по первому сегменту
  22. if (preg_match('/^[a-z]{2}$/i', $segments[0])) {
  23. if (is_dir($config->root_path . 'system/languages/' . $segments[0] . '/')) {
  24. // язык по умолчанию без префиксов, дубли нам не нужны
  25. if ($segments[0] != $config->language) {
  26.  
  27. // включаем для моделей поддержку
  28. cmsModel::globalLocalizedOn();
  29.  
  30. self::$language = self::$language_href_prefix = $segments[0];
  31. unset($segments[0]);
  32.  
  33. $_SERVER['REQUEST_URI'] = $config->root . implode('/', $segments) . $query_str;
  34. }
  35. }
  36. }
  37. }
  38. }
  39.  
Добавлено спустя 6 часов

Попробовал поменять 'ru' на 'ge' — естественно не помогло. ))

#1 Автоопределение языка для мультиязычных сайтов 24 марта 2022 в 11:12

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

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

— — — — - 

ПРЕДПОСЫЛКИ

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

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

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

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

— — — — - 

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

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

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

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

— — — — - 

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

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

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

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

#1 Как настроить мультиязычный сайт с языком по умолчанию - НЕ английским? 24 марта 2022 в 10:29

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

Такой вопрос, практическая задача.
Буду благодарен за ЛЮБЫЕ идеи, наводки, подсказки по решению.

— — — — - 

Я создаю с тремя языками интерфейса: русским, английским и немецким.

Саму мультиязычность я настраиваю с помощью компонента «Языки 2.0».

Вернее, частично мультиязычность зашита в движок, а данный компонент предоставляет удобный интерфейс для перевода информации на разных языках. Плюс в нём есть интеграция с Яндекс.Переводчиком и Google Translate API, и переводить можно одним кликом, а затем лишь корректировать перевод.

На мой взгляд очень удобный компонент.

— — — — - 

Но! Он работает лишь поверх функционала мультиязычности самого движка.

А в движке есть такая особенность.

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

По адресу «названиесайта.de» — становится доступна именно английская версия.
По адресу  «названиесайта.de/ru» — русская, а по адресу «названиесайта.de/de» — немецкая.

Причём от того, какой язык на момент включения опции «Разрешить смену языка пользователями (подстановкой префикса в URL)» указан в соседнем поле «Локализация» — вообще ничего не зависит.

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

— — — — - 

Скриншот настроек:

Изображение

— — — — - 

Мне нужно настроить движок сайта так, чтобы был такой расклад (при сохранении другого функционала, конечно):

По адресу «названиесайта.de» — немецкая версия.
По адресу  «названиесайта.de/ru» — русская, а по адресу «названиесайта.de/en» — английская.

Насколько я понимаю, для реализации допилов кода движка нужно копать примерно сюда.

В файле конфигурации опции «Разрешить смену языка пользователями (подстановкой префикса в URL)» настроек сайта соответствует переменная «is_user_change_lang».

Далее эта переменная используется в функции detectLanguage() в файле system/core/core.php.

Вот где-то там нужно напильником подточить код.
Но если кто-то из коллег подскажет, что именно, или альтернативные решения — буду очень признателен.

#3 Чешская локализация 16 марта 2022 в 15:50

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

Loadырь

 Loadырь, благодарю, здесь Вы очень ясно и понятно, прямо со скриншотами объяснили:
instantcms.ru/forum/kak-realizovana-multijazychnost-v-2-14-1.html?page=2#post-350252

Реально понимания у меня лично точно прибавилось.
Спасибо большое!

#4 Как реализована мультиязычность в 2.14.1? 16 марта 2022 в 15:49

И вы знаете как идет привязка к стандартным таблицам?

Loadырь

Именно как, в деталях — пока не знаю.
Но буду разбираться, так как внедряю компонент «Языки 2.0» сейчас для своего проекта.

Если что — напишу сюда.

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

Это и есть мультиязычный сайт. Есть ещё вариант типа — «мультинациональный» сайт, где все иноязычные пишут только на своем языке и им показывается только то, что они могут прочитать.

Loadырь

 Loadырь, спасибо большое.

Вы со сути здесь ответили на вот этот мой вопрос:
instantcms.ru/forum/cheshskaja-lokalizacija.html?page=2#post-350240


#5 Пользовательская экспертиза компонента Translate 15 марта 2022 в 19:49
На мультиязычном сайте должна работать автоматическая геолокация, в связи с чем сайт всегда будет открываться на языке региона с которого посетитель!
vikont

Подскажите, пожалуйста, кто знает, данный функционал сейчас реализован? В каком компоненте?

#6 Как реализована мультиязычность в 2.14.1? 15 марта 2022 в 19:42
На сколько я знаю у того компонента (как и у любого другого) свои таблицы с переводами, не как не связанные с таблицами типов контента. Поэтому такой формат не пройдет.
Loadырь

У компонента «Языки» — свои отдельные таблицы.
А у компонента «Языки 2.0» — идёт привязка к стандартным таблицам контента.

Подробнее — тут:
youtu.be/Gg_rlqqSnGc

#7 Многоязычность (мультиязычность) из Коробки 15 марта 2022 в 19:34

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

А вот интерфейсная оболочка в админке и на самом сайте — вот она реализована лишь с помощью дополнительных компонентов.

#8 Чешская локализация 15 марта 2022 в 15:18

Коллеги, хочу уточнить, как устроена локализация, мультиязычность в Инстанте сейчас.

— — — — -

Допустим, есть есть мультиязычный сайт на Инстанте.

Язык по умолчанию: русский.
И есть ещё две локализации: английская и чешская.

Правильно ли я понимаю логику работы сайта.

Если пользователи сайта публикуют определённый контент и если НЕ используется перевод на другие языки (ручной или автоматический), то НЕ ВАЖНО, какой интерфейс сейчас у данного пользователя — контент будет относиться к языку по умолчанию.

То есть даже если пользователь зашёл в чешскую версию сайта, опубликовал пост, объявление или комментарий на чешском языке, то этот контент будет отображаться на русскоязычной версии.

А также, поскольку переводы на английский и чешский КАК БЫ не заполнены — то на чешской и английской версии тоже будет опубликован тот же контент (в данном случае — на чешском).

И теперь чтобы перевести этот контент на русский и английский, нужно сделать два действия:
1. Из полей, относящихся к языку по умолчанию, в данном случае — русском, нужно перенести контен в поля для чешской локализации.
2. И теперь заполнить эти поля переводом на русский.
3. Затем отдельно заполнить поля, относящиеся к английской локализации.

— — — — -

Резюмирую:

1. Сайт с позиции движка — не трёхязычный.
А реализованный на языке по умолчанию (русском) с двумя дополнительными языками локализациями.

2. Весь публикуемый контент по-умолчанию публикуется как относящийся к языку по умолчанию. :)

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

4. А если перевод контента на дополнительный язык выполнен, тогда при переключении сайта на дополнительный язык — отображаются версии контента на дополнительном языке.

— — — — -

Правильно ли я понимаю?

#9 [ЕСТЬ РЕШЕНИЕ] Установка двух экземляров движка InstantCMS - в корневую папку домена и в подпапку 14 марта 2022 в 17:51

 IamB, благодарю за уточнение!

#10 [ЕСТЬ РЕШЕНИЕ] Установка двух экземляров движка InstantCMS - в корневую папку домена и в подпапку 13 марта 2022 в 23:57

Начните с документации: 1, 2.

IamB

 IamB, спасибо за помощь.

В документации 1 — я информацию про установку и последующую работу сайта в подпапке — я не увидел.

А вот в документации 2 — нашёл именно то, что нужно:
docs.instantcms.ru/manual/settings/relocation#смотрите-также

Спасибо большое!

#1 [ЕСТЬ РЕШЕНИЕ] Установка двух экземляров движка InstantCMS - в корневую папку домена и в подпапку 13 марта 2022 в 23:25

Приветствую всех Инстантологов!

Пытался нагуглить информацию, но вроде не нашёл.
Буду признателен, если подскажите.

— — — — -

Предпосылки к вопросу:

Иногда возникает необходимости поставить движок в подпапке.

Например, основной сайт — на Тильде, а блог или каталог товаров — на Инстанте.
И, например, с позиции SEO или по другим причинам решили, что лучше, чтобы блог был в подпапке, а не на поддомене.

— — — — -

Или другой пример, как раз мой актуальный случай.

Я купил несколько доменов с привязкой к доменам.

Но мне нужна копия сайта, в которой я могу проводить эксперименты.

Многие «староверы» используют локальный сервер.

Мне это не удобно, поскольку настройки локального сервера и реального хостинга — могут сильно отличаться.

Обычно я использую для таких целей поддомен dev.*.
Но платные дополнени при этом слетают, сайт слетает.

Соответственно, есть идея разворачивать тестовую версию сайта — в подпапке основного домена.

— — — — -

Вопросы:

1. Можно ли в целом настроить сайт на Инстанте так, чтобы он работал не в корневой папке домена, а в подпапке?

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

3. Если таким образом настроить два экземпляра движка — в корневой и подпапке, то не будут ли они конфликтовать на уровне обработки HTTP-запросов к конкретным урлам?

— — — — -

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

#11 [ЗАКРЫТО] Компонент "Языки 2.0" 13 марта 2022 в 12:03
Всем украинцам: терпения и возможностей пережить текущую ситуацию с минимальными потерями и в кратчайшие сроки!
AndroS

AndroS, спасибо огромное.

Мира, благополучия, СВОБОДЫ и ВЗАИМОПОНИМАНИЯ всем нашим странам!

В сообществе много специалистов из Украины.
Хочется, чтобы эти связи сохранялись.

И хочется, чтобы Инстант развивался как мощный, международный проект.
Это и хорошие международные связи, и экономически выгодно.

Прошу прощения за оффтоп.

#12 [ЗАКРЫТО] Компонент "Языки 2.0" 11 марта 2022 в 19:27

 dwd, о, спасибо огромное, что откликнулись!!!

Получил письмо от вас 8-го числа, ответил спустя 2 часа, проверяйте почту.

dwd

Тут мой костяк. Я сначала в личку написал.
Затем в Скайпе.

Затем уже мне почту Вашу подкинули.
Я написал, но ожидал, что Вы именно на почту ответите. ))

Меня всегда можно найти написав мне письмо через форму обратной связи на сайте icms2-docs.ru

dwd

У меня есть проблемы с регистрацией на Вашем сайте.
Подробности написал Вам в личку.

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

dwd

Полностью Вас понимаю.

Я купил компонент авторизации с помощью социальных сетей от Zau4man.
Но в процессе настройки возникло столько мелких нюансов, связанных НЕ с компонентом, а с особенностями самих социальных сетей. И Zau4man очень терпеливо и очень конструктивно на них отвечает. Такая забота — точно трудоёмкая и очень ценная.

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

dwd


Тоже полностью согласен. Причём не просто локализация на другие языки, но также именно МУЛЬТИязычность, возможность переключаться между языками.

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.