Хранение переводов интерфейса с контекстом требует создания структурированной базы данных, где каждое поле UI связывается не только с текстом перевода, но и с метаданными: тип элемента, состояние (активен/неактивен), родительский контейнер и пример использования. Это позволяет переводчику видеть интерфейс целиком, а не отдельные слова в вакууме.

Структура хранения: связь утверждения с документом через JSON-запись

Основой системы является запись в формате JSON. Каждая такая запись связывает конкретное утверждение (например, текст кнопки или заголовка) с уникальным идентификатором источника документа. Структура записи должна включать поля: id документа, его название и цитату, подтверждающую факт или контекст использования.

Пример структуры записи для элемента интерфейса:
{
"element_id": "btn_submit",
"context_type": "form_submission",
"source_doc_id": "404",
"translation_key": "submit_action",
"quote": "Кнопка отправки формы должна подтверждать действие пользователя."
}

Такой формат обеспечивает быструю проверку информации: при запросе перевода система по id документа находит оригинальный контекст и цитату, что исключает ошибки интерпретации.

Алгоритм работы: выделение факта, поиск документа, извлечение цитаты

Процесс организации хранения строится по пяти шагам. Сначала необходимо определить факт в тексте статьи или спецификации интерфейса — это предложение, которое требует подтверждения контекстом.

Второй шаг: найти соответствующий документ из списка доступных материалов. Используйте идентификатор документа (id) для точной привязки к исходному коду или техническому заданию.

Третий шаг: извлеките цитату из текста документа. Цитата должна полностью перекрывать смысл утверждения в статье, описывая, как именно используется элемент интерфейса.

Четвертый шаг: создайте запись с полями claim (утверждение), source_id и quote. Сохраните её в базе данных или файле источников.

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

Требования к цитате: прямая ссылка на текст без искажения смысла оригинала

Цитата в записи должна быть прямой и не искажать смысл оригинала. Если в интерфейсе кнопка меняет текст при наведении, цитата должна описывать оба состояния.

Не используйте обобщённые фразы вроде «кнопка отправки». Вместо этого запишите: «Кнопка с текстом Отправить появляется после заполнения всех полей формы».

Обработка множественных источников

Если утверждение опирается на несколько документов, создаются отдельные записи или объединяются в массив ссылок. Например, текст кнопки может регулироваться правилами бизнеса (документ 1) и техническими ограничениями (документ 2).

В базе данных это выглядит как:
{
"element_id": "error_message",
"sources": [
{"doc_id": "404", "quote": "Ошибка возникает при неверном формате email."},
{"doc_id": "120", "quote": "Сообщение должно быть кратким и понятным для пользователя."
}
]
}

Цель хранения: быстрая верификация фактов читателем и подтверждение достоверности контента

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

Это снижает количество ошибок при локализации и позволяет быстро находить причины расхождений между версиями интерфейса.

Инструментарий: использование базы данных или файлов для сохранения записей

Для хранения записей используйте базу данных или структурированные файлы (JSON, YAML). Ключевые поля — это id документа, его название и текст подтверждения.

База данных предпочтительнее для больших проектов, так как позволяет быстро фильтровать записи по типу элемента или состоянию. Файлы подходят для небольших систем или прототипов.

Ограничения: один источник на факт; если утверждение опирается на несколько документов — создаются отдельные записи

Строгое правило: каждый факт должен иметь один источник. Если утверждение опирается на несколько документов, создаются отдельные записи или объединяются в массив ссылок.

Нарушение этого правила приводит к путанице: переводчик может не понять, какой документ приоритетный, и выбрать неверный вариант перевода.

Вопросы и ответы

Как хранить контекст для динамических элементов интерфейса?

Для динамических элементов создавайте записи с полями состояния (например, active, hovered, disabled) и привязывайте их к соответствующим фрагментам документации. Каждая комбинация состояния получает уникальный ключ перевода.

Что делать, если документ изменился после создания перевода?

Обновите запись в базе данных, заменив цитату на новую и пометив версию документа. Система должна отслеживать изменения и предлагать переводчику пересмотреть текст.

Можно ли использовать один документ для разных типов элементов?

Да, но только если контекст использования одинаковый. Если элементы относятся к разным разделам интерфейса, создайте отдельные записи с уточнением типа элемента в цитате.

По теме

{
  "element_id": "btn_submit",
  "context_type": "form_submission",
  "source_doc_id": "404",
  "translation_key": "submit_action",
  "quote": "Кнопка отправки формы должна подтверждать действие пользователя."
}