Версия:

Принцип работы

Ядро умеет автоматически подставлять переводы, а при их отсутствии переводить на лету (с задержкой) и сохранять в базу для последующих запросов.

После сохранения в базу, эти автоматически сделанные переводы можно скорректировать, если они были “криво” переведены, или если вы хотите сохранить оригинальное значение (для всех переводов пподставить оригинал). Чтобы исправить перевод, необходимо в админке зайти в соответсвующий раздел в меню “Translate” и исправить нужный перевод.

Переводы разбиты по категориям, что именно переводиться.

Источники перевода:

Источники будут дополнены в будущем, но принцип тот же.

Как пользоваться функциями перевода (руководство для разработчика), см. в отдельных разделах.

Особенности работы механизма

Если перевод уже сохранен в базе, то он формируется еще на уровне запроса в базу, что делает его “нативным”, то есть как будто в самих таблицах с данными уже хранятся переведенные на нужный язык значения. Из этого также следует, что по таким полям будет корректно работать поиск и фильтры.

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

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

Отдельная фоновая задача следит, за тем, чтобы переводы, которые по каким либо причинам не были успешно завершены (например сервис переводов недоступен или истрачен лимит) и периодически пытается закончить перевод.

Перевод осуществляется с помощью сервисов настроенных в конфиге.