meta.json

什么是 meta.json 文件?它是如何使用的?

简介

meta.json 是一个文件,由 Lingo.dev 编译器 在构建时生成。它记录了在 React 应用中发现的所有可翻译内容,作为构建时分析与运行时翻译之间的桥梁。

注意:meta.json 文件的所有更改都应提交到代码库中。

示例文件

以下是一个(非常简化的)meta.json 文件示例:

{
  "version": 0.1,
  "files": {
    "components/hero.tsx": {
      "scopes": {
        "3/declaration/body/0/argument/1/1": {
          "type": "element",
          "hash": "a1b2c3d4e5f6...",
          "context": "",
          "skip": false,
          "overrides": {},
          "content": "Welcome to our app"
        }
      }
    }
  }
}

要了解所有属性的含义,请参阅 Schema Properties

文件位置

默认情况下,meta.json 文件输出到相对于编译器配置(例如 vite.config.ts 文件)位置的 src/lingo 目录。

要了解如何自定义此位置,请参阅 Compiler Options

架构属性

本节描述了 meta.json 文件中所有属性的含义。

version

用于兼容性检查和未来迁移的架构版本标识符。

  • 类型: number
  • 必需:

files

一个容器对象,用于按源文件路径组织所有可翻译的范围。每个键表示从源根目录的相对路径(例如,"components/hero.tsx""pages/home.jsx")。

  • 类型: object
  • 必需:

files[filePath].scopes

用于存储在特定源文件中发现的所有可翻译内容的容器。每个键是一个基于 AST 的标识符,唯一标识文件中的一段可翻译内容。

  • 类型: object
  • 必需:

files[filePath].scopes[astKey].type

指示可翻译内容是来自 JSX 元素的内容还是 JSX 属性的值。

  • 类型: "element" | "attribute"
  • 必需:

files[filePath].scopes[astKey].hash

用于变更检测的源内容的 SHA-256 哈希值。当源内容发生变化时,此哈希值也会随之变化,表明可能需要重新翻译。

  • 类型: string
  • 必需:

files[filePath].scopes[astKey].context

帮助译者理解内容用途或位置的上下文信息。

  • 类型: string
  • 必需:

files[filePath].scopes[astKey].skip

指示是否应将此内容排除在翻译之外的标志。

  • 类型: boolean
  • 必需:

files[filePath].scopes[astKey].overrides

绕过正常翻译流程的特定语言翻译覆盖。适用于品牌名称、技术术语或自定义翻译。

  • 类型: object
  • 必需:

files[filePath].scopes[astKey].content

需要翻译的实际源文本,从您的 React 组件中提取。

  • 类型: string
  • 必需: