Сохранённые ключи один раз инициализируются значениями из исходного текста, а затем защищаются от автоматических обновлений. CLI никогда их не перезаписывает — они служат заполнителями для контента, который требует ручного перевода, например юридических текстов, материалов о соответствии требованиям или маркетинговых слоганов.
Конфигурация#
Добавьте preservedKeys в bucket в i18n.json:
{
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"preservedKeys": ["legal/privacy", "legal/terms"]
}
}
}Как это работает#
Возьмём такой исходный файл:
{
"welcome": "Welcome to our platform",
"legal": {
"privacy": "We respect your privacy and protect your data.",
"terms": "By using this service, you agree to our terms."
}
}При первом запуске CLI копирует сохранённые ключи как есть, а всё остальное переводит:
// locales/es.json (first run)
{
"welcome": "Bienvenido a nuestra plataforma",
"legal": {
"privacy": "We respect your privacy and protect your data.",
"terms": "By using this service, you agree to our terms."
}
}После того как вы вручную переведёте юридический раздел, при следующих запусках CLI ваши переводы останутся без изменений.
Сохранение ключей vs. блокировка ключей#
| Сохранение ключей | Блокировка ключей | |
|---|---|---|
| Начальное значение | Исходное значение как заполнитель | Исходное значение (всегда) |
| Ручные правки | Сохраняются навсегда | Перезаписываются исходным значением при каждом запуске |
| Сценарий использования | Юридические тексты, соответствие требованиям, ручной перевод | Названия брендов, технические идентификаторы |
Нотация путей ключей#
Используйте прямой слеш (/) для вложенных ключей и звёздочку (*) для масок:
{ "preservedKeys": ["legal/*", "marketing/tagline"] }