Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


manual:components:languages

Компонент "Мультиязычность"

Панель управленияКомпонентыМультиязычность

Описание

Компонент реализует управление мультиязычностью на сайте. Мультиязычность включает в себя:

  • Текстовые фразы CMS, которые находятся в директориях system/languages/ЯЗЫК/
  • Возможность перевода интерфейсных фраз из админки, таких как: меню, категории, группы, поля и т.п.
  • Возможность перевода записей типов контента

Переключение языка сайта осуществляется через подстановку кода языка в начало любого URL, например, site.com/en/users. Более удобное переключение языка выполняется при помощи виджета «Элементы шаблона», в опции «Что выводить?» которого необходимо выбрать пункт «Выбор языка».

Как включить мультиязычность?

Возможность смены языка, а также использование возможности управления мультиязычностью включается в общих настройках сайта во вкладке «Интерфейс» - опция «Разрешить смену языка пользователями». Если также будет включена настройка «Автоматически определять язык по локали браузера», то язык будет определён по локали браузера. Если локаль браузера не соответствует ни одному из доступных языков в системе, то сайт будет показан на языке по умолчанию, заданном в опции «Локализация» той же формы настроек сайта.

:!: Важно! Необходимо сразу определиться, какой язык будет основной для сайта (в опции «Локализация») и НЕ менять его после, поскольку мультиязычные колонки в таблицах базы данных создаются с постфиксом языка, отличного от заданного по умолчанию.

После включения опции смены языка необходимо перейти непосредственно в настройки компонента «Мультиязычность». Панель управленияКомпонентыМультиязычность.

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

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

Для мультиязычности самих записей типов контента необходимо зайти в настройки полей, которые вы хотите сделать мультиязычными и поставить чекбокс «Мультиязычное поле».

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

Если ваш тип контента предполагается на нескольких языках, не забудьте включить опцию «Контент доступен на нескольких языках» в настройках типа контента, чтобы на страницах генерировались теги hreflang.

Особенности работы

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

URl записей типов контента, если их добавляет пользователь, будет сгенерирован согласно текущему языку пользователя. При этом убедитесь в соответствие шаблона генерации URL и доступности полей на разных языках. Например, у вас шаблон {title}, т.е. URL генерируется из названия. Включите мультиязычность для поля «Заголовок». Если этого не сделать, то URL может получиться не совсем тот, который вы ожидаете. Например, язык по умолчанию для сайта русский. Пользователь переключился на английский и создал статью с названием «Моя статья». URL сгенерируется как «untitled». Кроме этого, стоит включить опцию типа контента «Не изменять URL при редактировании записи».

Как добавить нужный язык?

В InstantCMS все текстовые фразы интерфейса хранятся в отдельном языковых файлах. Такой подход позволяет переводить интерфейсы на другие языки, не требуя при этом вмешательства в код и шаблоны.

Все языки, доступны для интерфейса, хранятся в директории system/languages/ по языковым директориям system/languages/ЯЗЫК/. Например, все фразы для русского языка хранятся в system/languages/ru/, для английского system/languages/en/.

Чтобы добавить новый язык в систему, нужно создать директорию языка, например system/languages/de/ для немецкого. После чего в неё скопировать файлы из того языка, с которого вам удобнее будет переводить на нужный вам язык. Например, содержимое директории system/languages/ru/ скопируйте в созданную вами директорию system/languages/de/. После чего вы можете приступить к переводу. Например, в русском файле system/languages/ru/language.php первые строки выглядят вот так:

define('LANG_LOADING',                   'Загрузка...');
define('LANG_SENDING',                   'Отправка...');
define('LANG_MORE',                      'Подробнее');
define('LANG_VERSION',                   'Версия');
// ...дальше пошли другие константы

Для немецкого в файле system/languages/de/language.php будет примерно вот так:

define('LANG_LOADING',                   'Laden...');
define('LANG_SENDING',                   'Absenden...');
define('LANG_MORE',                      'Mehr lesen');
define('LANG_VERSION',                   'Version');
// ...дальше пошли другие константы

По аналогии необходимо перевести все файлы с константами.


Назад к разделу Компоненты

manual/components/languages.txt · Последнее изменение: 25.05.2025 19:29 — fuze

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki