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

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

Дающим карму - да воздастся! Напишите на стене что-то приятное!
+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.