Новое в Symfony 5.3: Поставщики переводов

Процесс перевода приложений Symfony требует извлечения всего переводимого содержимого из шаблонов и кода. Эта задача скучна и подвержена ошибкам; вот почему Symfony предоставляет команду translation:update для автоматического извлечения содержимого и обновления каталогов.

Это отлично работает, если ваше приложение не использует внешние службы перевода с собственными локальными средствами перевода или средствами перевода на основе SaaS. Затем вам нужно время от времени отправлять им каталоги переводов, чтобы переводить новое содержимое, а затем объединять возвращенный каталог обратно в ваше приложение.

В Symfony 5.3 улучшили этот рабочий процесс благодаря интеграции внешних поставщиков переводов. Теперь вы можете загружать/скачивать переводы в такие сервисы, как Crowdin, Loco и Lokalise, и автоматически объединять новые переводы в свое приложение.

Представим, что вы нанимаете переводческую компанию, которая использует Crowdin, чтобы делиться с вами своей работой. Сначала настройте доступ к этому провайдеру:

# config/packages/translation.yaml
framework:
    translator:
        providers:
            crowdin:
                dsn: 'crowdin://PROJECT_ID:API_TOKEN@ORGANIZATION_DOMAIN.default'
                domains: ['messages']
                locales: ['en', 'ja']

Теперь вы можете загрузить текущие переводы приложения с помощью этой команды:

php bin/console translation:push crowdin --force

php bin/console translation:push crowdin --locales ja

php bin/console translation:push crowdin --domain admin

Точно так же вы можете загрузить переводы из внешнего сервиса и позволить Symfony автоматически объединить их с существующими переводами:

php bin/console translation:pull crowdin --force

php bin/console translation:pull crowdin --locales ja

Обе команды определяют дополнительные флаги и параметры. Запустите их с параметром --help, чтобы узнать об этих параметрах.