gtx-cli@2.10.0
Обзор
gtx-cli 2.10.0 добавляет поддержку метаданных для каждого ключа в файлах перевода JSON и YAML. Это инструкции по переводу для отдельных ключей, которые дают вам более точный контроль над тем, как переводятся отдельные строки.
До сих пор контекст перевода для файлов с ключами задавался на уровне проекта. Настройки стиля, записи глоссария и правила для конкретных локалей применялись сразу ко всему вашему контенту. Метаданные для каждого ключа позволяют пойти на уровень глубже, добавляя конкретные подсказки по переводу прямо к отдельным ключам в ваших файлах.
Как это выглядит
Вы создаёте сопутствующий файл метаданных, который находится рядом с исходным файлом и отражает ту же структуру ключей. На уровне конечных узлов вместо строк вы указываете объекты метаданных с инструкциями по переводу:
{
"nav": {
"home": "Home",
"bank": "Bank",
"save": "Save"
},
"alerts": {
"new_lead": "You have a new lead!"
}
}{
"nav": {
"home": {
"context": "Baseball term — home plate on a diamond. NOT a house."
},
"bank": {
"context": "Riverbank — the side of a river. NOT a financial institution."
},
"save": {
"context": "Sports term — a goalkeeper preventing a goal. NOT saving data.",
"maxChars": 12
}
},
"alerts": {
"new_lead": {
"context": "Sales/CRM context. A 'lead' is a potential customer.",
"maxChars": 30
}
}
}Сопутствующий файл должен находиться в той же директории, что и исходный файл, и соответствовать соглашению об именовании {name}.metadata.json (или .metadata.yaml для YAML-файлов). Интерфейс командной строки (CLI) автоматически подхватывает его при запуске npx gt translate.
При наличии контекста для каждого ключа "Bank" переводится как "Ribera" (берег реки), а не как возможное "Banco" (финансовое учреждение), а "Save" — как "Parada" (сэйв вратаря), а не "Guardar" (сохранять). Для строк, которые и так однозначны, метаданные вообще не нужны — добавляйте записи только для тех ключей, которым это действительно полезно.
Поддерживаемые поля
Сейчас мы поддерживаем три поля метаданных:
context— инструкции по переводу для конкретной строки. Это наиболее важное поле: используйте его, чтобы снять неоднозначность, указать терминологию предметной области или уточнить смысл.maxChars— максимальное количество символов в переведённом тексте. Это ограничение соблюдается по мере возможности: движок будет использовать более короткие синонимы и лаконичные формулировки, чтобы уложиться в лимит, но не станет обрезать перевод до нереалистично короткой длины.sourceCode— контекст окружающего исходного кода для строки. Позволяет показать движку, где и как строка используется в вашей кодовой базе, что помогает ему принимать более удачные решения о тоне, терминологии и формулировках.
Все поля необязательны для каждого ключа. Подробные сведения и примеры по каждому полю см. в справочнике по метаданным на уровне ключей.
Поддержка YAML
Тот же подход работает и для файлов YAML. Создайте дополнительный файл .metadata.yaml с той же структурой ключей:
ui:
buttons:
save:
context: "Спортивный термин — сейв вратаря. НЕ сохранение данных."
draft:
context: "Пиво на разлив, как в 'draft beer'. НЕ версия документа."
labels:
date:
context: "Съедобный плод финиковой пальмы. НЕ календарная дата."
chips:
context: "Британский английский: горячие жареные полоски картофеля (картофель фри). НЕ чипсы и не микросхемы."