Привет, дамы и господа!
Сегодня озаботимся переводом на русский язык интерфейса наиболее популярного движка для создания интернет-магазинов, который называется Lunar.
Для начала стоит заметить, что изначально русского языка там просто нет и найти переводы где-то в сообществе не удалось. Потому пришлось переводить самому. Вроде бы, задача простая, но решение почему-то оказалось не таким уж очевидным.
Lunar использует админку Filament, и с переключением интерфейса Filament на русский язык проблем не возникло вообще никаких. Конфиг просто взял значение локали из системного файла .env и всё… Локаль указана в конфиге — Filament использует локаль из конфига. Просто и удобно. Почему-то всё совсем не так с самим Lunar.
Раз вообще нет языковых файлов в движке, то естественное решение — взять какой-то существующий язык, создать на его основе новую нужную мне локаль и переключиться на эту новую локаль. Загвоздка оказалась как раз в переключении на новую локаль. Даже не знаю, почему Lunar оказался настолько огнеупорным в данном вопросе. Он напрочь игнорирует конфигурацию, а также все способы явно и настырно переключиться на другой язык.
Во-первых, совершенно недостаточно просто создать новые файлы в специальной папке. Вроде как, они должны иметь приоритет перед файлами из папки /vendor. То есть, если у меня просто имеются специальные языковые файлы в специальном месте, то они бы должны автоматически и приоритетно подхватываться сами. Не подхватываются.
Также не срабатывают никакие способы подсунуть локаль в момент создания панели, как и способы изменить локаль существующей панели. Скверно ещё и то, что нейросети имеют крайне скудное понимание архитектуры актуальной версии Lunar. Фактически, в итоге решение нашлось без них и даже довольно случайно. Я просто просматривал какой-то очередной исходник и увидел способ, который не связан с локалью. В Laravel имеется стандартный метод loadTranslationsFrom(), который и сработал.
Остальное было делом техники: я поочередно загрузил все англоязычные файлы в нейросеть и попросил перевести значения полей, сохранив структуру файлов и ключи. И вот в таких задачах нейросети, конечно, абсолютно великолепны. Большие языковые модели хорошо владеют языком и точно понимают, какие фрагменты являются значениями полей, требующих перевода, а какие англоязычные слова — это ключи или метки, которые переводить точно не стоит, иначе файл просто перестанет быть функциональным.
Итог: перевод состоялся, но осадочек остался: Lunar по-прежнему использует неправильную локаль, в результате чего кое-где встречаются английские слова. В частности, названия месяцев на графике. Глубже копать я пока не стал, т. к. основная задача выполнена.
Если кто-то знает работающий способ смены локали в Lunar — напишите мне, пожалуйста. Наверно, это что-то очень простое. Просто я найти его за адекватное время не смог.
Комментарии (0)