Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vacancy #24

Merged
merged 3 commits into from
Mar 22, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/xliff
3 changes: 3 additions & 0 deletions .yfm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ resources:
style:
- _assets/style/custom.css

translate:
folder: b1gpieerntm5sa95psrk

docs-viewer:
project-name: diplodoc
langs: ['en','ru']
Expand Down
1 change: 1 addition & 0 deletions ru/presets.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
default:
PROGRAM: yfm
algorithms: |
- Массив - и его отличие от списков
- Связный список - и его реализации на js
Expand Down
13 changes: 13 additions & 0 deletions ru/tools/docs/presets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
default:
required: '<b style="color:red" title="Обязательный">*</b>'
fmt:
glob: '[Glob](https://en.wikipedia.org/wiki/Glob_(programming))'
locale: '[Locale](https://en.wikipedia.org/wiki/ISO_639-1)'
iam-token: '[IAM‑токен](https://cloud.yandex.ru/ru/docs/translate/api-ref/authentication)'
api-key: '[API‑ключ](https://cloud.yandex.ru/ru/docs/iam/operations/api-key/create)'
translate:
google-support: false
glossary-support: false
source: ru-RU
source-lang: ru
target: en-US
154 changes: 111 additions & 43 deletions ru/tools/docs/translate.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,111 @@
# Перевод

`yfm translate` переводит вашу документацию используя [Yandex Translator](https://cloud.yandex.ru/docs/translate/).

## Настройка

- получите OAUTH-токен как описано в [документации yandex.cloud](https://cloud.yandex.ru/docs/iam/concepts/authorization/oauth-token);

- положите его в `.ya_oauth_token` файл внутри домашней директории или укажите с помощью `YANDEX_OAUTH_TOKEN` переменной окружения;

- получите идентификатор каталога, на который у вашего аккаунта есть роль editor или выше, как описано в [документации yandex.cloud](https://cloud.yandex.ru/docs/resource-manager/operations/folder/get-id);

- в поле `yandexCloudTranslateFolderId` внутри `.yfm` файла конфигурации укажите значение идентификатора из предыдущего пункта;

- добавьте поле `yandexCloudTranslateGlossaryPairs` внутри `.yfm` файла конфигурации если вам требуется использование glossary-словаря:

```
# glossary example

yandexCloudTranslateGlossaryPairs:
- { sourceText: InstreamAdBreakPositionType, translatedText: InstreamAdBreakPositionType }
```

_В результате выполнения **InstreamAdBreakPositionType** останется без изменения в тексте._

Теперь вы можете использовать `yfm` для перевода вашей документации.

## Опции

| Название опции | Обязательная или нет | Значение | Описание |
| ----------------- | -------------------- | ---------------- | ---------------------------------------------------------------------------- |
| --input | да | путь | путь до входной документации |
| --output | да | путь | путь до выходной документации |
| --source-language | да | код языка | код языка в [формате ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) |
| --target-language | да | код языка | код языка в [формате ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) |

## Использование

```
yfm translate --input input_folder --output output_folder --source-language ru --target-language en
```

_В результате выполнения ваша русская документация из **input_folder** будет переведена на английский и расположена в **output_folder**._
---
meta:
tags: ['translate', 'xliff', 'cat']
---
# Локализация

Для перевода документации на разные языки используется команда `{{PROGRAM}} translate`, которая обеспечивает быстрые [автоматические переводы](#auto).

Подкоманды `extract` и `compose` этой команды позволяют работать с системами [машинного перевода](#cat) (Computer Assisted Translation, или CAT), обмениваясь с ними `*.xliff` файлами.

Поддерживается перевод как `*.md` файлов так и `*.json` (в том числе `*.yaml`) файлов по [описанным схемам](#json-schemas).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет якоря #json-schemas

## Автоматический перевод {#auto}

Автоматический перевод может быть выполнен с использованием таких сервисов, как [Yandex Translate](https://cloud.yandex.ru/docs/translate/){% if translate.google-support == true %} или [Cloud Translate](https://cloud.google.com/translate/docs){% endif %}.

Эти системы имеют определенные [ограничения](https://cloud.yandex.ru/ru/docs/translate/concepts/limits) по объему документов, которые могут быть переведены, а также по качеству перевода. Однако они значительно выигрывают с точки зрения скорости.

С целью уменьшения объема текста, подлежащего переводу, документ разбивается на более короткие сегменты, такие как предложения или заголовки. Повторяющиеся сегменты затем удаляются.

Так же для уменьшения объема переводов поддерживаются `include` и `exclude` фильтры.

Параметр запуска `--dry-run` может быть использован для определения объема текста, готового к переводу.

Если лимиты превышены, команда завершится с ошибкой `TRANSLATE_LIMIT_EXCEED`.

### Параметры вызова

#### Основные

#|
|| Параметр | Формат | Описание ||
|| --source {{required}}| {{fmt.locale}} |
Код языка оригинального документа в формате ISO 639-1
\
`{{PROGRAM}} translate --source {{translate.source}}`
||
|| --target {{required}}| {{fmt.locale}} |
Код языка переведенного документа в формате ISO 639-1
\
`{{PROGRAM}} translate --target {{translate.target}}`
||
|| --input | Path |
Путь до **корня** переводимого проекта или конкретного файла в проекте. Если не указан используется директория запуска команды.
\
Директорию языка в пути указывать не надо - она добавляется автоматически.
\
`{{PROGRAM}} translate -i ./docs`
\
`{{PROGRAM}} translate -i ./docs/index.md`
\
Так же в качестве пути можно указать [файл фильтр](#filter).
\
`{{PROGRAM}} translate -i translate.list`
||
|| --output | Path |
Путь до **корня** проекта, в который нужно сохранить перевод. Если не указан используется `input` директория.
||
|| --include | {{fmt.glob}} |
Набор правил для фильтрации отправляемых на перевод файлов. По умолчанию `{lang}/**/*.@(md\|yaml\|json)`.
\
Может быть передан несколько раз.
\
Игнорируется, если используется [файл фильтр](#filter).
\
`{{PROGRAM}} translate --include {{translate.source-lang}}/**/*.md`
||
|| --exclude | {{fmt.glob}} |
Набор правил запрещающих отправлять файлы на перевод. Применяется после `include`.
\
Может быть передан несколько раз.
\
`{{PROGRAM}} translate --exclude {{translate.source-lang}}/_no-translate/**/*.md`
||
|#

#### Система переводов

{% list tabs %}

- Yandex Translation

#|
|| Параметр | Формат | Описание ||
|| --auth {{required}} | Path<br/>{{fmt.iam-token}}<br/>{{fmt.api-key}} |
Токен авторизации. Может быть передан несколькими способами:
\
{{fmt.iam-token}} как параметр командной строки
\
`{{PROGRAM}} translate --auth <token>`
\
Путь до файла, в котором хранится {{fmt.iam-token}}
\
`{{PROGRAM}} translate --auth path/to/.auth`
\
Путь до файла, в котором хранится {{fmt.api-key}} сервисного аккаунта.
\
`{{PROGRAM}} translate --auth path/to/.api-key`

||
|| --folder {{required}} | Id |
[Идентификатор каталога](https://cloud.yandex.ru/ru/docs/resource-manager/operations/folder/get-id), на который у вашего аккаунта есть роль `ai.translate.user` или выше.
||
{% if glossary-support == true %}
|| --glossary | Path |
TODO
||
{% endif %}
|#

{% endlist %}
Loading