dictionary.js
Что такое файл dictionary.js? Как он используется?
Введение
dictionary.js
— это файл, который Lingo.dev Compiler генерирует во время сборки. Он хранит переводы приложения в формате, который можно эффективно загружать во время выполнения.
Примечание: Все изменения в файле dictionary.js
должны быть зафиксированы в репозитории.
Пример файла
Это пример (очень минимального) файла dictionary.js
:
export default {
version: 0.1,
files: {
"components/hero.tsx": {
entries: {
"3/declaration/body/0/argument/1/1": {
content: {
en: "Welcome to our app",
es: "Bienvenido a nuestra aplicación",
},
hash: "a1b2c3d4e5f6...",
},
},
},
},
};
Для полного описания доступных свойств см. Свойства схемы.
Расположение файла
По умолчанию файл dictionary.js
выводится в директорию src/lingo
, относительно расположения конфигурации компилятора (например, файла vite.config.ts
).
Чтобы узнать, как настроить это расположение, см. Опции компилятора.
Загрузка словаря
Пакет lingo.dev
предоставляет несколько функций loadDictionary
. Эти функции отвечают за загрузку словаря для текущей локали пользователя (на основе текущего значения cookie локали).
Каждая вариация функции предназначена для использования в разных средах. Вот пример использования клиентской версии функции:
<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
<App />
</LingoProviderWrapper>
Вы должны использовать только предоставленные функции для загрузки словаря, а не пытаться загружать словарь вручную.
Редактирование словаря
Хотя файл dictionary.js
создается автоматически, его можно редактировать. Например, вы можете вручную изменить перевод, отредактировав содержимое перевода.
Однако, если исходное содержимое изменится, ручное редактирование будет перезаписано, поэтому обычно более удобно использовать атрибут data-lingo-override.
Свойства схемы
Этот раздел описывает все свойства, которые можно найти в файле dictionary.js
.
version
Идентификатор версии схемы, используемый для проверки совместимости и будущих миграций.
- Тип:
number
- Обязательно: Да
files
Объект-контейнер, который организует все записи переводов по их исходным путям файлов. Каждый ключ представляет относительный путь от корневой директории исходного кода (например, "components/hero.tsx"
, "pages/home.jsx"
).
- Тип:
object
- Обязательно: Да
files[filePath].entries
Контейнер для всех записей переводов, обнаруженных в конкретном исходном файле. Каждый ключ — это идентификатор на основе AST, который уникально определяет переводимый контент в файле.
- Тип:
object
- Обязательно: Да
files[filePath].entries[astKey].content
Сопоставляет идентификаторы локалей с их соответствующими переведенными строками. Содержит переводы для всех настроенных локалей в вашем проекте.
- Тип:
object
- Обязательно: Да
files[filePath].entries[astKey].hash
SHA-256 хэш исходного контента, используемый для обнаружения изменений и аннулирования кэша. Когда исходный контент изменяется, этот хэш также изменяется, что инициирует повторный перевод записи.
- Тип:
string
- Обязательно: Да