Назад

gtx-cli@2.10.0

Fernando Aviles avatarFernando Aviles
gtx-cli2.10.0metadatacontextjsonyamltranslation-quality

Обзор

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: "Британский английский: горячие жареные полоски картофеля (картофель фри). НЕ чипсы и не микросхемы."