Lingo.dev + .json5 (JSON5)
Lingo.dev CLI переводит файлы локализации в формате JSON5 с полной поддержкой синтаксиса JSON5, включая комментарии, некавыченные ключи, завершающие запятые и одинарные кавычки. CLI сохраняет форматирование JSON5 и удобный для разработчиков синтаксис, обеспечивая совместимость с фреймворками и обрабатывая только изменённый контент для экономии затрат.
Быстрая настройка
Создайте конфигурационный файл i18n.json
:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json5": {
"include": ["locales/[locale].json5"]
}
}
}
Напоминание: [locale]
— это плейсхолдер, который должен оставаться в конфигурации буквально, так как он заменяется на фактический язык во время выполнения CLI.
Перевод всего
npx lingo.dev@latest i18n
Автоматически обрабатывает функции синтаксиса JSON5, сохраняет комментарии и форматирование, а также обновляет только изменённый контент.
Поддержка синтаксиса JSON5
JSON5 расширяет JSON, добавляя удобный для разработчиков синтаксис:
{
// Поддерживаются комментарии
title: "Привет, мир!", // Работают однострочные комментарии
description: 'Допустимы одинарные кавычки',
unquoted: 'ключи работают без кавычек',
trailing: 'запятая допустима',
/* Блочные комментарии
также поддерживаются */
multiline: "Это \
длинная строка, которая \
распространяется на несколько строк",
// Шестнадцатеричные числа
hex_value: 0xDEADBEEF,
positive: +123,
nested: {
key: 'значение',
}, // Допустима завершающая запятая
}
Умное сохранение структуры
Сохраняет синтаксис JSON5 и соглашения фреймворков:
{
nav: {
home: "Главная",
about: {
team: "Наша команда"
}
},
items: {
one: "{{count}} элемент",
other: "{{count}} элементов"
},
// Конфигурация остаётся неизменной
version: 0x010203
}
Расширенная конфигурация
Исключение файлов
"json5": {
"include": ["locales/[locale]/*.json5"],
"exclude": ["locales/[locale]/config.json5"]
}
Блокировка технических ключей
"json5": {
"lockedKeys": ["app/version", "settings/apiKey"]
}
Используйте прямой слэш (/
) для путей вложенных ключей или звёздочку (*
) для совпадения с несколькими путями ключей.
JSON5 против JSON
JSON5 обеспечивает улучшенный опыт разработчика, сохраняя полную совместимость с JSON:
- Комментарии: Документируйте ваши переводы с помощью встроенных и блочных комментариев
- Ключи без кавычек: Более чистый синтаксис без кавычек вокруг имен свойств
- Завершающие запятые: Упрощенное редактирование и сравнение версий в системах контроля версий
- Одинарные кавычки: Гибкость в использовании кавычек для строк
- Многострочные строки: Лучшая читаемость для длинного текста
- Форматы чисел: Шестнадцатеричные, положительные знаки и другие
Все файлы JSON являются допустимыми JSON5, что делает миграцию бесшовной.