dictionary.js
什么是 dictionary.js 文件?它是如何使用的?
简介
dictionary.js
是一个由 Lingo.dev 编译器 在构建时生成的文件。它以一种可以在运行时高效加载的格式存储应用程序的翻译内容。
注意: 对 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...",
},
},
},
},
};
有关可用属性的完整描述,请参阅 Schema Properties。
文件位置
默认情况下,dictionary.js
文件会输出到相对于编译器配置(例如 vite.config.ts
文件)位置的 src/lingo
目录中。
要了解如何自定义此位置,请参阅 Compiler Options。
加载字典
lingo.dev
包提供了多个 loadDictionary
函数。这些函数负责根据当前 locale 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
- 必需: 是