Просмотр поста

.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
ПРАКТИЧЕСКОЕ РУКОВОДСТВО: НАПИСАНИЕ КОДА
Для примера будем рассматривать модуль альбомов.
Подразумевается, что у нас пороцедурный код. Любители ООП могут данную часть подробно не читать, у них есть свои возможности прямой связи с контейнером и пакетом i18n.

В первую очередь Вам надо сообщить движку, откуда в Вашем модуле берется перевод и каков его формат. Поддерживаются форматы gettext, phparray, ini (нужное значение передается в виде аргумента).
Для этого вставляем в свой код ПОСЛЕ(!!!) подключения require('../incfiles/core.php') следующие строки:
/** @var Interop\Container\ContainerInterface $container */
$container = App::getContainer();
/** @var Zend\I18n\Translator\Translator $translator */
$translator = $container->get(Zend\I18n\Translator\Translator::class);
$translator->addTranslationFilePattern('gettext', __DIR__ . '/locale', '/%s/default.mo');

В данном коде мы в начале получаем объект контейнера $container, а далее от него требуем объект транслятора, чтоб потом сообщить ему откуда брать файлы пеервода.
Последняя строка нашего куска кода (метод addTranslationFilePattern()) как раз этим и занимается. Первым аргументом мы передаем тип файлов с фразами (gettext, phparray, ini), а вторым аргументом патерн поиска файлов с фразами.
Если используете формат Gettext и следуете рекомендациям по структуре, то просто скопируйте код как есть.

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

Ну а далее все просто...
Пишете свой код в Вашем любимом РНР редакторе, все фразы, которые нужно выводить в браузер и которые нужно перевести на другие языки, заключаете в функцию _t()
Про плюрализацию и варианты множественных чисел напишу отдельно.