Файлы перевода
Файл перевода хранит все тексты одной страницы: заголовок, подписи, надписи на кнопках, сообщения об ошибках. В контроллере и шаблоне тексты не пишут — тогда магазин можно перевести, добавив файл и не трогая код.
Где лежит
Файлы перевода витрины лежат в catalog/language/, по папке на язык. Путь внутри повторяет путь контроллера:
catalog/
├── controller/information/hello.php
└── language/
├── en-gb/information/hello.php
└── ru-ru/information/hello.phpen-gb — язык, который ставится вместе с магазином.
Создание файла
Создайте catalog/language/en-gb/information/hello.php вручную:
// catalog/language/en-gb/information/hello.php
$_['heading_title'] = 'Hello';
$_['text_welcome'] = 'Welcome to our shop!';Файл заполняет массив $_: ключ используют в коде, значение видит посетитель. В настоящем файле первой строкой стоит тег <?php.
Загрузка в контроллере
// catalog/controller/information/hello.php
public function index(): void
{
$this->load->language('information/hello');
$this->response->setOutput($this->language->get('text_welcome'));
}Откройте index.php?route=information/hello — страница покажет «Welcome to our shop!». load->language() читает файл текущего языка, language->get() возвращает текст по ключу. Если ключа нет, get() возвращает сам ключ — на странице появится text_welcome.
Текст со значением
Место для значения помечают %s и заполняют через sprintf():
// в файле перевода
$_['text_hello'] = 'Hello, %s!';
// в контроллере
$text = sprintf($this->language->get('text_hello'), 'Anna');В $text окажется «Hello, Anna!».
Приставки ключей
Ядро везде использует одни и те же приставки, и удобно им следовать:
| Приставка | Для чего |
|---|---|
heading_ | Заголовок страницы |
text_ | Обычный текст |
entry_ | Подпись поля формы |
button_ | Надпись на кнопке |
column_ | Заголовок столбца таблицы |
error_ | Сообщение об ошибке |
Второй язык
Сам язык добавляют в панели: System → Localisation → Languages. Для своей страницы создайте такой же файл в папке этого языка:
// catalog/language/ru-ru/information/hello.php
$_['heading_title'] = 'Здравствуйте';
$_['text_welcome'] = 'Добро пожаловать в наш магазин!';Откройте index.php?route=information/hello&language=ru-ru — страница покажет русский текст. Дальше в курсе файлы перевода показаны для ru-ru; для en-gb нужен такой же файл с английскими строками.
Частая ошибка
Файл создают только для одного языка, и на другом языке страница показывает ключи вроде text_welcome вместо текстов. Подставит ли движок строки из en-gb, зависит от выпуска, поэтому создавайте файл для каждого языка, установленного в магазине.