Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Файлы перевода

Файл перевода хранит все тексты одной страницы: заголовок, подписи, надписи на кнопках, сообщения об ошибках. В контроллере и шаблоне тексты не пишут — тогда магазин можно перевести, добавив файл и не трогая код.

Где лежит

Файлы перевода витрины лежат в catalog/language/, по папке на язык. Путь внутри повторяет путь контроллера:

catalog/
├── controller/information/hello.php
└── language/
    ├── en-gb/information/hello.php
    └── ru-ru/information/hello.php

en-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, зависит от выпуска, поэтому создавайте файл для каждого языка, установленного в магазине.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.