Lingo.dev + .json-dictionary
Lingo.dev CLI переводит JSON-файлы, где каждая переводимая строка содержит несколько ключей локалей в одном объекте. В отличие от стандартного формата JSON, который разделяет локали по разным файлам, формат json-dictionary хранит все переводы вместе с ключами локалей, например: {"en": "Hello", "es": "Hola"}
.
Быстрая настройка
Создайте конфигурационный файл i18n.json
:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json-dictionary": {
"include": ["content/pages.json"]
}
}
}
Структура файла
Формат json-dictionary хранит переводы в виде вложенных объектов с ключами локалей:
{
"title": {
"en": "Welcome to our site",
"es": "Bienvenido a nuestro sitio"
},
"navigation": {
"home": {
"en": "Home",
"es": "Inicio"
},
"about": {
"en": "About Us",
"es": "Acerca de nosotros"
}
},
"staticValue": "Это не будет переведено",
"pages": [
{
"title": {
"en": "Page One",
"es": "Página Uno"
}
}
]
}
Перевод всего
npx lingo.dev@latest i18n
CLI автоматически:
- Извлекает только переводимые объекты (те, которые содержат ключи локалей)
- Сохраняет неизменными значения, не подлежащие переводу
- Добавляет ключи целевых локалей рядом с существующими
- Сохраняет порядок ключей локалей (сначала исходная, затем остальные в алфавитном порядке)
Поведение ключей
Определение переводимости: Только объекты, содержащие ключ вашей исходной локали, считаются переводимыми. Простые строки, числа, булевы значения и объекты без ключей локалей остаются неизменными.
Порядок ключей: При добавлении переводов ключ исходной локали отображается первым, за ним следуют другие локали в алфавитном порядке:
{
"message": {
"en": "Original text",
"de": "Deutscher Text",
"es": "Texto en español",
"fr": "Texte français"
}
}
Поддержка вложенности: Работает с глубоко вложенными структурами и массивами, содержащими переводимые объекты.
Расширенная конфигурация
Исключение файлов
"json-dictionary": {
"include": ["content/*.json"],
"exclude": ["content/config.json"]
}