Перевод плагина (локализация)
Вы можете добавлять новые переводы для своего плагина в папку author/myplugin/lang. Они регистрируются автоматически. Переведенные строки появляются автоматически в интерфейсе меню, лэйблах и других элементах административного интерфейса, если Вы подставили ключ перевода вместо реальной строки (система попытается найти и загрузить его из файла локализации). В других случаях Вам нужно будет загрузить строку локализации при помощи API.
Примечание: Для перевода содержимого сайта используйте плагин Rainlab Translate (opens new window).
# Папка с переводом (локализацией) и структура файлов
Пример структуры мультиязычного плагина:
plugins/
acme/
todo/ <=== Папка плагина
lang/ <=== Папка с переводами
en/ <=== Папка языка перевода
lang.php <=== Файл перевода
fr/
lang.php
Файл lang.php может возвратить массив любой глубины. Например:
<?php
return [
'app' => [
'name' => 'OctoberCMS',
'tagline' => 'Getting back to basics'
]
];
# Доступ к строкам перевода (локализации)
Строки локализации могут быть получены при помощи класса Lang
. Параметр - ключ строки перевода, который состоит из имени плагина, имени файла локализации и пути к строке локализации внутри массива, возвращенного из файла. Следующий пример отображает строку app.name из файла plugins/acme/blog/lang/en/lang.php (язык здесь установлен с помощью параметра locale
в конфигурационном файле app/config/app.php
):
echo Lang::get('acme.blog::lang.app.name');
# Переопределение строк перевода (локализации)
Пользователи могут переопределить строки локализации плагина без изменения файлов плагина. Сделать это можно путем добавления необходимых файлов в директорию app/lang. Для примера давайте переопределим перевод плагина acme/blog, создав файл в следующей папке:
lang/ <=== App localization directory
en/ <=== Language directory
acme/ <=== Plugin / Module directory
blog/ <===^
lang.php <=== Localization override file
Файл может содержать только строку, которую нам требуется переопределить. Поэтому нет необходимости полностью заменять весь файл. Пример:
<?php
return [
'app' => [
'name' => 'OctoberCMS!'
]
];