Локализация
Для перевода документации на разные языки используется команда 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 :::