Перейти к основному содержимому

Добавить язык

С OpenCLI идут десять переводов: English, 简体中文, 繁體中文, 日本語, 한국어, Español, Português (Brasil), Français, Deutsch и Русский.

Любой другой язык — это один файл, и исправление в одном из этих десяти — тоже.

Через интерфейс​

Customize → Language → Add a language file… принимает файл .json и оставляет его у себя. Он сразу появляется в списке выбора.

Вручную​

Тот же файл, в ~/.opencli/locales, названный по языку:

~/.opencli/locales/nl.json

Оба пути пишут в одно и то же место, так что добавленное через интерфейс можно потом править вручную или скопировать на другую машину.

Что внутри​

Каждая запись — английская фраза ровно в том виде, в каком она встречается в интерфейсе, и то, что показать вместо неё:

{
"name": "Nederlands",
"strings": {
"Dispatch": "Verzenden",
"Scheduled tasks": "Geplande taken",
"Runs ({count})": "Uitvoeringen ({count})"
}
}

name — то, что показывает переключатель языков. Без него берётся имя файла. Голая таблица соответствий тоже годится, без обёртки:

{ "Dispatch": "Verzenden" }

Начать с одного из встроенных​

Встроенные переводы — файлы того же вида, в web/src/locales/. Скопируйте один, замените правую часть каждой строки — и у вас полноценная отправная точка, а не список фраз, которые ещё надо разыскать.

Чтобы увидеть каждую фразу, которую использует интерфейс:

python3 scripts/i18n-check.py

Подстановки​

{name} в фразе подставляется. Сохраняйте те же подстановки, в том порядке, в каком их хочет ваш язык — эта перестановка и есть большая часть причины, по которой они существуют:

{ "Allowed {count} of {total}": "Разрешено {count} из {total}" }

Множественное число​

plural() выбирает между двумя формами. Английскому, немецкому, испанскому, французскому и португальскому этого хватает; третьей формы, которой русский требует для 2–4, у него нет. Там, где языку нужно больше двух форм, пишите фразу так, чтобы смысл нёс сам числитель: запусков: {count}, а не существительное, которое обязано с ним согласоваться.

Китайский, японский и корейский берут форму единственного числа и оставляют работу числу — это уже сделано за вас.

Исправить встроенный перевод​

Файл, названный по уже встроенному языку, сливается с ним, а не заменяет его. Чтобы поменять одну фразу, напишите одну запись:

{ "Dispatch": "Отправка" }

Всё остальное сохраняет встроенные формулировки.

Когда это вступает в силу​

Файл, добавленный через интерфейс, действует сразу. Положенный в каталог вручную читается, когда подключается окно, — переоткройте окно. Файл, который не разбирается, пропускается, со строкой в журнале шлюза — на другие языки это не влияет.

Непереведённые фразы​

Фраза без записи показывается по-английски, поэтому частичный перевод читается как смесь, а не как экран из пустот. Чтобы он приносил пользу, доводить его до конца не нужно.

Справа налево​

Арабского, иврита и фарси среди встроенных переводов нет, и добавление одного из них файлом даст страницу, свёрстанную слева направо. Интерфейс пока не обрабатывает dir="rtl"; это правка в таблице стилей, а не в файле перевода.