Перевод плагина (локализация)

Вы можете добавлять новые переводы для своего плагина в папку author/myplugin/lang. Они регистрируются автоматически. Переведенные строки появляются автоматически в интерфейсе меню, лэйблах и других элементах административного интерфейса, если Вы подставили ключ перевода вместо реальной строки (система попытается найти и загрузить его из файла локализации). В других случаях Вам нужно будет загрузить строку локализации при помощи API.

Примечание: Для перевода содержимого сайта используйте плагин Rainlab Translate.

Папка с переводом (локализацией) и структура файлов

Пример структуры мультиязычного плагина:

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!'
    ]
];