Локализация
Для перевода документации на разные языки используется команда yfm translate, которая обеспечивает быстрые автоматические переводы.
Подкоманды extract и compose этой команды позволяют работать с системами машинного перевода (Computer Assisted Translation, или CAT), обмениваясь с ними *.xliff файлами.
Поддерживается перевод как *.md файлов, так и *.json (в том числе *.yaml) файлов по описанным схемам.
Параметры вызова подкоманды extract
|
Параметр |
Path |
Автоматический перевод
yfm translate --source ru-RU --target en-US
Автоматический перевод может быть выполнен с использованием таких сервисов, как Yandex Translate.
У этих систем есть ограничения по объему переводимых документов и качеству перевода. Однако они отличаются высокой скоростью работы.
Для уменьшения объема текста для перевода документ разбивается на более короткие сегменты, например, предложения или заголовки. Повторяющиеся сегменты затем удаляются.
Также для уменьшения объема переводов поддерживаются include и exclude фильтры.
Параметр запуска --dry-run может быть использован для определения объема текста, готового к переводу.
Если лимиты превышены, команда завершится с ошибкой TRANSLATE_LIMIT_EXCEED.
Использование
-
Перевести проект в текущей директории с
ruна{{translate.target-lang}}:yfm translate --source ru --target {{translate.target-lang}} -
Не переводить скрытые файлы в проекте:
yfm translate --exclude ru/**/_*.* --source ru --target {{translate.target-lang}}
Параметры вызова
Основные
|
Параметр |
Формат |
Описание |
|
|
Код языка оригинального документа в формате ISO 639-1 |
|
|
|
Код языка переведенного документа в формате ISO 639-1 |
|
|
|
Path |
Путь до корня переводимого проекта или конкретного файла в проекте. Если не указан, используется директория запуска команды. |
|
|
Path |
Путь до корня проекта, в который нужно сохранить перевод. Если не указан, используется |
|
|
Набор правил для фильтрации отправляемых на перевод файлов. По умолчанию |
|
|
|
Набор правил, запрещающих отправлять файлы на перевод. Применяется после |
Система переводов
|
Параметр |
Формат |
Описание |
|
|
Токен авторизации. Может быть передан несколькими способами: |
|
|
|
Id |
Идентификатор каталога, для которого у вашего аккаунта есть роль |
Фильтрация файлов
Если необходимо ограничить переводимые тексты фиксированным набором файлов, механизм гибких фильтров include/exclude может не подойти.
В таком случае можно сформировать файл с расширением *.list. Например translate.list.
# Файл поддерживает комментарии и пустые строки
# Пути до файлов должны быть сформированы относительно самого файла translate.list.
./some/path/to/translated/file-1.md
./some/path/to/translated/file-2.md
# Пути до файлов не должны находиться выше, чем translate.list.
# Пример неправильного пути:
../some/path/to/translated/file.md
Пример вызова команды с файлом фильтром
yfm translate --input ./translate.list --source ru --target {{translate.target-lang}}
Фильтрация контента страниц
Для исключения частей контента из перевода на платформе предусмотрены следующие синтаксические конструкции.
-
translate=noдля блоков кода:```sql translate=no // этот блок не уйдёт на перевод SELECT * FROM posts WHERE id=123 LIMIT 1 ``` -
:no-translateдля строковых фрагментов (работает в yaml- и в md-файлах):Формат даты: :no—translate[ISO 8601] со смещением относительно :no—translate[UTC]. -
:::no-translateдля блоков контента::::no–translate // весь этот блок не уйдёт на перевод Inconsistent indentation for list items at the same level: * One * Two * Three :::