首页演练场案例展示应用文档博客
    • English英语
      EN
    • русский俄语
      RU
    • 日本語日语
      JA
    • français法语
      FR
    • 한국어韩语
      KO
    • 中文中文
      ZH
    • español西班牙语
      ES
    • Deutsch德语
      DE
    • العربية阿拉伯语
      AR
    • italiano意大利语
      IT
    • British English英国英语
      EN-GB
    • português葡萄牙语
      PT
    • हिन्दी印地语
      HI
    • Türkçe土耳其语
      TR
    • polski波兰语
      PL
    • Indonesia印度尼西亚语
      ID
    • Tiếng Việt越南语
      VI
    • українська乌克兰语
      UK
    /
    按框架筛选文档
    Alt+←
    为什么Intlayer?
    开始
    概念
    • Intlayer如何工作
    • 配置
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • 可视化编辑器
    • CMS
    • CI/CD集成
    • 翻译复数枚举条件性别插入文件嵌套MarkdownHTML函数获取
    • 每个语言环境的文件
    • 编译器
    • 自动填充
    • 测试
    • 打包优化
    环境
    • Next.js 14和应用路由器
      Next.js 15
      Next.js 无 locale URL
      Next.js和页面路由器
      编译器
    • Tanstack Start Solid
    • Astro和React
      Astro和Svelte
      Astro和Vue
      Astro和Solid
      Astro和Preact
      Astro和Lit
      Astro和Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt和Vue
    • Vite和Solid
    • SvelteKit
    • Vite和Preact
    • Vite和Vanilla JS
    • Vite和Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native和Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx和React
    Plugins
    • JSON
    • gettext (.po)
    VS Code扩展
    代理
    • MCP服务器
    • 代理技能
    发布
    • v8
    • v7
    • v6
    基准测试
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    博客
    问问题
    1. Documentation
    2. 概念
    3. 配置
    Creation:2024-08-13Last update:2026-05-12
    将此文档参考到您的 AI 助手
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商

    版本历史

    1. "添加对 LM Studio 提供者的支持"
      v8.9.42026/5/12
    2. "在构建配置中添加了 `prune` 和 `minify` 选项"
      v8.7.02026/4/8
    3. "添加了 `currentDomain` 选项"
      v8.7.02026/4/3
    4. "为 'compiler.output' 和 'dictionary.fill' 添加了按区域设置的路径定义支持"
      v8.4.02026/3/20
    5. "将 'baseDir' 从 'content' 配置移至 'system' 配置"
      v8.3.02026/3/11
    6. "更新了编译器选项,添加了对 'output' 和 'noMetadata' 的支持"
      v8.2.02026/3/9
    7. "更新了编译器选项"
      v8.1.72026/2/25
    8. "添加了 'build-only' 编译器选项和字典前缀"
      v8.1.52026/2/23
    9. "添加了对 Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face 和 Together AI 提供商的支持"
      v8.0.62026/2/12
    10. "在 AI 配置中添加了 `dataSerialization`"
      v8.0.52026/2/6
    11. "将 `live` 导入模式重命名为 `fetch`,以更好地描述底层机制。"
      v8.0.02026/1/24
    12. "将构建配置 `importMode` 移至 `dictionary` 配置。"
      v8.0.02026/1/22
    13. "在路由配置中添加了 `rewrite` 选项"
      v8.0.02026/1/22
    14. "将系统配置从内容配置中分离。将内部路径移至 `system` 属性。添加了 `codeDir` 以将内容文件与代码转换分离。"
      v8.0.02026/1/18
    15. "添加了字典选项 `location` 和 `schema`"
      v8.0.02026/1/18
    16. "添加了对 JSON5 和 JSONC 文件格式的支持"
      v7.5.12026/1/10
    17. "添加了 `buildMode` 选项"
      v7.5.02025/12/17
    18. "添加了 `dictionary` 配置"
      v7.0.02025/10/25
    19. "将 `middleware` 替换为 `routing` 配置"
      v7.0.02025/10/21
    20. "添加了 `formatCommand` 选项"
      v7.0.02025/10/12
    21. "更新了 `excludedPath` 选项"
      v6.2.02025/10/12
    22. "添加了 `outputFormat` 选项"
      v6.0.22025/9/23
    23. "删除了 `dictionaryOutput` 和 `i18nextResourcesDir` 字段"
      v6.0.02025/9/21
    24. "添加了 `live` 导入模式"
      v6.0.02025/9/16
    25. "将 `hotReload` 字段替换为 `liveSync` 并添加了 `liveSyncPort`、`liveSyncURL` 字段"
      v6.0.02025/9/4
    26. "将 `activateDynamicImport` 替换为 `importMode` 选项"
      v5.6.12025/7/25
    27. "将默认 `contentDir` 从 `['src']` 改为 `['.']`"
      v5.6.02025/7/13
    28. "添加了 `docs` 命令"
      v5.5.112025/6/29

    此页面的内容已使用 AI 翻译。

    查看英文原文的最新版本
    编辑此文档

    如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。

    文档的 GitHub 链接
    Copy

    复制文档 Markdown 到剪贴板

    Intlayer 配置文档

    概述

    Intlayer 配置文件允许您自定义插件的各个方面,例如国际化 (i18n)、中间件和内容管理。本文档提供了配置中每个属性的详细说明。


    目录


    配置文件支持

    Intlayer 接受 JSON、JS、MJS 和 TS 配置文件格式:

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.json5
    • intlayer.config.jsonc
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    配置文件示例

    intlayer.config.ts
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";import { z } from "zod";/** * 包含所有可用选项的 Intlayer 配置文件示例。 */const config: IntlayerConfig = {  /**   * 国际化设置配置。   */  internationalization: {    /**     * 应用程序中支持的区域设置列表。     * 默认值:[Locales.ENGLISH]     */    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    /**     * 每个字典中必须定义的必需区域设置列表。     * 如果为空,则在 `strict` 模式下所有区域设置都是必需的。     * 默认值:[]     */    requiredLocales: [Locales.ENGLISH],    /**     * 国际化内容的严格级别。     * - "strict": 如果缺少已声明的区域设置或使用未声明的区域设置,则报错。     * - "inclusive": 如果缺少已声明的区域设置,则发出警告。     * - "loose": 接受任何现有的区域设置。     * 默认值:"inclusive"     */    strictMode: "inclusive",    /**     * 如果请求的区域设置不可用,则用作回退的默认区域设置。     * 默认值:Locales.ENGLISH     */    defaultLocale: Locales.ENGLISH,  },  /**   * 控制字典操作和缺失内容行为的设置。   */  dictionary: {    /**     * 控制字典的导入方式。     * - "static": 构建时静态导入。     * - "dynamic": 使用 Suspense 进行动态导入。     * - "fetch": 通过 Live Sync API 进行动态获取。     * 默认值:"static"     */    importMode: "static",    /**     * 使用 AI 自动填充缺失翻译的策略。     * 可以是布尔值或用于保存填充内容的路径模式。     * 默认值:true     */    fill: true,    /**     * 字典文件的物理位置。     * - "local": 存储在本地文件系统中。     * - "remote": 存储在 Intlayer CMS 中。     * - "hybrid": 同时存储在本地和 Intlayer CMS 中。     * - "plugin" (或任何自定义字符串): 由插件或自定义源提供。     * 默认值:"local"     */    location: "local",    /**     * 是否自动转换内容(例如将 Markdown 转换为 HTML)。     * 默认值:false     */    contentAutoTransformation: false,  },  /**   * 路由和中间件配置。   */  routing: {    /**     * 区域设置路由策略。     * - "prefix-no-default": 除默认语言外所有语言都有前缀(例如 /dashboard, /fr/dashboard)。     * - "prefix-all": 所有语言都有前缀(例如 /en/dashboard, /fr/dashboard)。     * - "no-prefix": URL 中没有区域设置。     * - "search-params": 使用 ?locale=...     * 默认值:"prefix-no-default"     */    mode: "prefix-no-default",    /**     * 用户选择的区域设置存储在哪里。     * 选项:'cookie', 'localStorage', 'sessionStorage', 'header' 或这些选项的数组。     * 默认值:['cookie', 'header']     */    storage: ["cookie", "header"],    /**     * 应用程序 URL 的基础路径。     * 默认值:""     */    basePath: "",    /**     * 特定区域设置路径的自定义 URL 重写规则。     */    rewrite: nextjsRewrite({      "/[locale]/about": {        en: "/[locale]/about",        fr: "/[locale]/a-propos",      },    }),    /**     * 将区域设置映射到域主机名以进行基于域的路由。     * 这些区域设置的 URL 将是绝对的(例如,https://intlayer.cn/)。     * 域意味着区域设置,因此不会向路径添加区域设置前缀。     * 默认值:undefined     */    domains: {      en: "intlayer.org",      zh: "intlayer.cn",    },  },  /**   * 用于发现和处理内容文件的设置。   */  content: {    /**     * 扫描字典的文件扩展名。     * 默认值:['.content.ts', '.content.js', '.content.json' 等]     */    fileExtensions: [".content.ts", ".content.js", ".content.json"],    /**     * .content 文件所在的目录。     * 默认值:["."]     */    contentDir: ["src"],    /**     * 源代码目录。     * 用于构建优化和代码转换。     * 默认值:["."]     */    codeDir: ["src"],    /**     * 扫描中排除的模式。     * 默认值:['node_modules', '.intlayer' 等]     */    excludedPath: ["node_modules"],    /**     * 是否在开发过程中监控更改并重新生成字典。     * 默认值:开发模式下为 true     */    watch: true,    /**     * 格式化新创建 / 更新的 .content 文件的命令。     */    formatCommand: 'npx prettier --write "{{file}}"',  },  /**   * 可视化编辑器配置。   */  editor: {    /**     * 是否启用可视化编辑器。     * 默认值:false     */    enabled: true,    /**     * 您的应用程序 URL,用于源验证。     * 默认值:""     */    applicationURL: "http://localhost:3000",    /**     * 本地编辑器服务器的端口。     * 默认值:8000     */    port: 8000,    /**     * 编辑器的公共 URL。     * 默认值:"http://localhost:8000"     */    editorURL: "http://localhost:8000",    /**     * Intlayer CMS 的 URL。     * 默认值:"https://app.intlayer.org"     */    cmsURL: "https://app.intlayer.org",    /**     * 后端 API 服务器的 URL。     * 默认值:"https://back.intlayer.org"     */    backendURL: "https://back.intlayer.org",    /**     * 是否启用实时内容同步。     * 默认值:false     */    liveSync: true,  },  /**   * 使用 AI 进行翻译和生成的设置。   */  ai: {    /**     * 使用的 AI 提供商。     * 选项:'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'     * 默认值:'openai'     */    provider: "openai",    /**     * 所选提供商使用的模型。     */    model: "gpt-4o",    /**     * 提供商的 API 密钥。     */    apiKey: process.env.OPENAI_API_KEY,    /**     * 引导 AI 生成翻译时的全局上下文。     */    applicationContext: "这是一个旅游预订应用程序。",    /**     * AI API 的基础 URL。     */    baseURL: "http://localhost:3000",    /**     * 数据序列化方式     *     * 选项:     * - "json": 默认,可靠;使用更多 token。     * - "toon": 更快,更少 token,但不如 JSON 稳定。     *     * 默认值:"json"     */    dataSerialization: "json",  },  /**   * 构建和优化设置。   */  build: {    /**     * 构建执行模式。     * - "auto": 应用程序构建期间自动构建。     * - "manual": 需要显式构建命令。     * 默认值:"auto"     */    mode: "auto",    /**     * 是否通过删除未使用的字典来优化应用程序包。     * 默认值:生产环境中为 true     */    optimize: true,    /**     * 压缩字典以减小包体大小。     * 默认值:true     *     * 注意:     * - 如果禁用 `optimize`,此选项将被忽略。     * - 如果 `editor.enabled` 为 true,此选项将被忽略。     */    minify: true,    /**     * 清除字典中未使用的键。     * 默认值:true     *     * 注意:     * - 如果禁用 `optimize`,此选项将被忽略。     */    purge: true,    /**     * 生成的字典文件的输出格式。     * 默认值:['cjs', 'esm']     */    outputFormat: ["cjs", "esm"],    /**     * 是否在构建期间执行 TypeScript 类型检查。     * 默认值:false     */    checkTypes: false,  },  /**   * 日志记录器配置。   */  log: {    /**     * 日志级别。     * - "default": 标准日志记录。     * - "verbose": 详细调试日志记录。     * - "disabled": 禁用日志记录。     * 默认值:"default"     */    mode: "default",    /**     * 日志中所有消息的前缀。     * 默认值:"[intlayer]"     */    prefix: "[intlayer]",  },  /**   * 系统配置(用于高级用法)   */  system: {    /**     * 存储本地化字典的目录。     */    dictionariesDir: ".intlayer/dictionary",    /**     * 模块扩充 (module augmentation) 的目录。     */    moduleAugmentationDir: ".intlayer/types",    /**     * 存储未合并字典的目录。     */    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",    /**     * 存储字典类型的目录。     */    typesDir: ".intlayer/types",    /**     * 应用程序主文件所在的目录。     */    mainDir: ".intlayer/main",    /**     * 已编译配置文件的目录。     */    configDir: ".intlayer/config",    /**     * 缓存文件的目录。     */    cacheDir: ".intlayer/cache",  },  /**   * 编译器配置(用于高级用法)   */  compiler: {    /**     * 是否启用编译器。     *     * - false: 禁用编译器。     * - true: 启用编译器。     * - "build-only": 开发期间跳过编译器以加快启动速度。     *     * 默认值:false     */    enabled: true,    /**     * 确定输出文件路径。替换 `outputDir`。     *     * - 以 `./` 开头的路径相对于组件目录解析。     * - 以 `/` 开头的路径相对于项目基础目录 (`baseDir`) 解析。     *     * - 路径中存在 `{{locale}}` 变量时,会启用按区域设置生成字典。     *     * 示例:     * ```ts     * {     *   // 在组件旁边生成多语言 .content.ts 文件     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // 通过模板字符串等效     * }     * ```     *     * ```ts     * {     *   // 在项目基础目录中生成按区域设置的集中式 JSON     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // 通过模板字符串等效     * }     * ```     *     * 变量列表:     *   - `fileName`: 文件名。     *   - `key`: 内容键。     *   - `locale`: 内容区域设置。     *   - `extension`: 文件扩展名。     *   - `componentFileName`: 组件文件名。     *   - `componentExtension`: 组件文件扩展名。     *   - `format`: 字典格式。     *   - `componentFormat`: 组件字典格式。     *   - `componentDirPath`: 组件目录路径。     */    output: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * 转换组件后是否保存它们。     *     * - 如果为 `true`,编译器将重写磁盘中的组件文件。因此转换将是永久性的,编译器将跳过下一次进程的转换。这样,编译器可以在转换应用后被移除。     *     * - 如果为 `false`,编译器仅在构建输出中将 `useIntlayer()` 函数调用注入代码中,并保持基础代码库不变。转换将仅在内存中进行。     */    saveComponents: false,    /**     * 生成的文件中仅保留内容。适用于按区域设置的 i18next 格式或 ICU MessageFormat JSON 输出。     */    noMetadata: false,    /**     * 字典键前缀     */    dictionaryKeyPrefix: "", // 为提取的字典键添加可选前缀  },  /**   * 用于字典内容验证的自定义架构。   */  schemas: {    "my-schema": z.object({      title: z.string(),    }),  },  /**   * 插件配置。   */  plugins: [],};export default config;

    配置参考指南

    以下是 Intlayer 中可用的各种配置参数的详细说明。


    国际化配置 (Internationalization)

    定义国际化相关的设置,包括可用区域设置和默认区域设置。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    locales 应用程序中支持的区域设置列表。 string[] [Locales.ENGLISH] ['en', 'fr', 'es']
    requiredLocales 应用程序中必需的区域设置列表。 string[] [] [] • 如果为空,则在 strict 模式下所有区域设置都是必需的。
    • 请确保必需的区域设置也已在 locales 字段中定义。
    strictMode 使用 TypeScript 确保国际化内容的强实现。 string 'inclusive' • 如果为 "strict": 为 t 函数定义每个已声明的区域设置是强制性的--如缺少或未声明则报错。
    • 如果为 "inclusive": 对缺少的区域设置发出警告,但允许使用未声明的现有区域设置。
    • 如果为 "loose": 接受任何现有的区域设置。
    defaultLocale 如果请求的区域设置不可用,则用作回退的默认区域设置。 string Locales.ENGLISH 'en' 如果 URL、cookie 或 header 中未指定区域设置,则用于确定区域设置。

    编辑器配置 (Editor)

    定义可视化编辑器的设置,包括服务器端口和启用状态。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    applicationURL 您的应用程序 URL。 string undefined 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • 用于出于安全原因限制编辑器的源。
    • 如果设置为 '*',则可以从任何源访问编辑器。
    port 可视化编辑器服务器的端口。 number 8000
    editorURL 编辑器服务器的 URL。 string 'http://localhost:8000' 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • 用于限制可以与应用程序通信的源。
    • 如果设置为 '*',则可以从任何源访问。
    • 如果端口已更改或编辑器托管在其他域,则需要设置此项。
    cmsURL Intlayer CMS 的 URL。 string 'https://app.intlayer.org' 'https://app.intlayer.org'
    backendURL 后端服务器的 URL。 string https://back.intlayer.org http://localhost:4000
    enabled 应用程序是否应与可视化编辑器通信。 boolean false process.env.NODE_ENV !== 'production' • 如果为 false,编辑器将无法与应用程序通信。
    • 在某些环境中禁用此项可提高安全性。
    clientId 允许 intlayer 包通过 oAuth2 向后端进行身份验证。访问 intlayer.org/project 获取您的访问令牌。 string |
    undefined
    undefined 应保持私密;使用环境变量。
    clientSecret 允许 intlayer 包通过 oAuth2 向后端进行身份验证。访问 intlayer.org/project 获取您的访问令牌。 string |
    undefined
    undefined 应保持私密;使用环境变量。
    dictionaryPriorityStrategy 当同时存在本地和远程字典时的字典优先级策略。 string 'local_first' 'distant_first' • 'distant_first': 远程字典优先于本地字典。
    • 'local_first': 本地字典优先于远程字典。
    liveSync 当在 CMS
    可视化编辑器
    后端服务器中检测到更改时,应用程序服务器是否立即构建内容重新加载。
    boolean true true • 添加/更新字典时刷新应用程序页面内容。
    • Live Sync 接受来自另一台服务器的内容,这可能会稍微影响性能。
    • 建议将两者托管在同一台机器上。
    liveSyncPort Live Sync 服务器的端口。 number 4000 4000
    liveSyncURL Live Sync 服务器的 URL。 string 'http://localhost:{liveSyncPort}' 'https://example.com' 默认指向本地主机;可以更改为指向远程实时同步服务器。

    路由配置 (Routing)

    控制路由行为的设置,包括 URL 结构、区域设置存储和中间件管理。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    mode 区域设置管理的 URL 路由模式。 'prefix-no-default' |
    'prefix-all' |
    'no-prefix' |
    'search-params'
    'prefix-no-default' 'prefix-no-default': /dashboard (en) 或 /fr/dashboard (fr)。 'prefix-all': /en/dashboard 。 'no-prefix': 区域设置以其他方式管理。 'search-params': /dashboard?locale=fr 不影响 cookie 管理或本地存储。
    storage 客户端区域设置存储的配置。 false |
    'cookie' |
    'localStorage' |
    'sessionStorage' |
    'header' |
    CookiesAttributes |
    StorageAttributes |
    Array
    ['cookie', 'header'] 'localStorage'
    [{ type: 'cookie', name: 'custom-locale', secure: true }]
    参阅下方的存储参数表。
    basePath 应用程序 URL 的基础路径。 string '' '/my-app' 如果您的应用程序位于 https://example.com/my-app,则 basePath 为 '/my-app',指向 URL 为 https://example.com/my-app/en 。
    rewrite 自定义 URL 重写规则,用于覆盖特定路径的默认路由模式。支持动态参数 [param]。 Record<string, StrictModeLocaleMap<string>> undefined 见下方示例 • 重写规则优先级高于 mode。
    • 与 Next.js 和 Vite 配合。
    • getLocalizedUrl() 自动应用适当的规则。
    • 见 自定义 URL 重写。
    domains 将区域设置映射到域主机名以进行基于域的路由。设置后,区域设置的 URL 将使用该域作为基础(绝对 URL),并且不会向路径添加区域设置前缀。 Partial<Record<Locale, string>> undefined { zh: 'intlayer.zh', fr: 'intlayer.org' } • 如果主机名中未包含,默认协议为 https://。
    • 域本身标识区域设置,因此不会添加 /zh/ 前缀。
    • getLocalizedUrl('/', 'zh') 返回 https://intlayer.zh/。

    rewrite 示例:

    typescript
    复制代码

    复制代码到剪贴板

    routing: {  mode: "prefix-no-default", // 回退策略  rewrite: nextjsRewrite({    "/about": {      en: "/about",      fr: "/a-propos",    },    "/product/[slug]": {      en: "/product/[slug]",      fr: "/produit/[slug]",    },    "/blog/[category]/[id]": {      en: "/blog/[category]/[id]",      fr: "/journal/[category]/[id]",    },  }),}

    存储参数 (Storage)

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    值 备注 说明
    'cookie' • 确保适当的用户同意以符合 GDPR 要求。
    • 通过 CookiesAttributes ({ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }) 可配置。
    将区域设置存储在 cookie 中--客户端和服务器均可访问。
    'localStorage' • 除非明确删除,否则不会过期。
    • Intlayer Proxy 无法访问它。
    • 通过 StorageAttributes ({ type: 'localStorage', name: 'custom-locale' }) 可配置。
    将区域设置存储在浏览器中,永不过期--仅限客户端。
    'sessionStorage' • 关闭标签页/窗口时删除。
    • Intlayer Proxy 无法访问它。
    • 通过 StorageAttributes ({ type: 'sessionStorage', name: 'custom-locale' }) 可配置。
    在页面会话期间存储区域设置--仅限客户端。
    'header' • 对于 API 调用很有用。
    • 客户端无法访问它。
    • 通过 StorageAttributes ({ type: 'header', name: 'custom-locale' }) 可配置。
    通过 HTTP header 存储或传递区域设置--仅限服务器。

    Cookie 属性 (Cookies Attributes)

    在 cookie 中使用存储时,可以设置额外属性:

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型
    name Cookie 名称。默认值:'INTLAYER_LOCALE' string
    domain Cookie 域。默认值:undefined string
    path Cookie 路径。默认值:undefined string
    secure 需要 HTTPS。默认值:undefined boolean
    httpOnly HTTP-only 标志。默认值:undefined boolean
    sameSite SameSite 策略。 'strict' |
    'lax' |
    'none'
    expires 过期日期或天数。默认值:undefined Date |
    number

    存储属性 (Storage Attributes)

    使用 localStorage 或 sessionStorage 时:

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型
    type 存储类型。 'localStorage' |
    'sessionStorage'
    name 存储中的键名。默认值:'INTLAYER_LOCALE' string

    配置示例

    以下是新 v7 路由结构的一些常见配置示例:

    基本配置(默认值):

    typescript
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: "localStorage",    basePath: "",  },};export default config;

    符合 GDPR 的配置:

    typescript
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: [      {        type: "localStorage",        name: "user-locale",      },      {        type: "cookie",        name: "user-locale",        secure: true,        sameSite: "strict",        httpOnly: false,      },    ],    basePath: "",  },};export default config;

    搜索参数 (Search Params) 模式:

    typescript
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "search-params",    storage: "localStorage",    basePath: "",  },};export default config;

    具有自定义存储的无前缀模式:

    typescript
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "no-prefix",    storage: {      type: "sessionStorage",      name: "app-locale",    },    basePath: "/my-app",  },};export default config;

    具有动态路径的自定义 URL 重写:

    typescript
    复制代码

    复制代码到剪贴板

    // intlayer.config.tsimport { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default", // 未重写路径的回退    storage: "cookie",    rewrite: nextjsRewrite({      "/about": {        en: "/about",        fr: "/a-propos",      },      "/product/[slug]": {        en: "/product/[slug]",        fr: "/produit/[slug]",      },      "/blog/[category]/[id]": {        en: "/blog/[category]/[id]",        fr: "/journal/[category]/[id]",      },    }),  },};export default config;

    内容配置 (Content)

    有关应用程序中如何管理内容、目录名称、文件扩展名以及派生配置的设置。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    watch 指示 Intlayer 是否应监控内容声明文件中的更改以重新生成字典。 boolean true
    fileExtensions 编译字典期间扫描的文件扩展名。 string[] ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx'] ['.data.ts', '.data.js', '.data.json'] 可帮助避免自定义冲突。
    contentDir 内容定义文件 (.content.*) 所在目录的路径。 string[] ['.'] ['src', '../../ui-library', require.resolve("@my-package/content"), '@my-package/content'] 用于内容文件跟踪和字典重新生成。
    codeDir 代码所在的路径目录,相对于基础目录。 string[] ['.'] ['src', '../../ui-library'] • 用于跟踪代码文件转换(删除不必要的部分、优化)。
    • 与 contentDir 分离可提高性能。
    excludedPath 要从内容扫描中排除的目录。 string[] ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**'] 目前未使用;计划在未来使用。
    formatCommand Intlayer 本地写入内容文件时对其进行格式化的命令。 string undefined 'npx prettier --write "{{file}}" --log-level silent' (Prettier), 'npx biome format "{{file}}" --write --log-level none' (Biome), 'npx eslint --fix "{{file}}" --quiet' (ESLint) • {{file}} 将被替换为文件路径。
    • 如果未定义,Intlayer 会尝试推断(测试 prettier, biome, eslint)。

    字典配置 (Dictionary)

    控制字典操作的参数,包括自动填充行为和内容生成。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    fill 控制自动填充 (AI 翻译) 输出文件的生成方式。 boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    true { en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false } • true: 默认路径(与源文件相同)。
    • false: 禁用。
    • 模板字符串/函数启用按区域设置生成。
    • 按区域设置对象:每个区域设置对应其自己的模板;false 排除该区域设置。
    • 包含 {{locale}} 启用按区域设置生成。
    • 字典级别的 fill 始终优先于此全局设置。
    description 帮助编辑器和 CMS 理解字典的目的。也用作 AI 生成翻译的上下文。 string undefined 'User profile section'
    locale 将字典转换为特定区域设置格式。每个声明的字段变为一个翻译节点。如果缺少,则字典被视为多语言。 LocalesValues undefined 'en' 如果字典是针对特定区域设置而非包含多种翻译,请使用此项。
    contentAutoTransformation 是否将内容字符串自动转换为类型化的节点(Markdown、HTML 或插入内容)。 boolean |
    { markdown?: boolean; html?: boolean; insertion?: boolean }
    false true • Markdown : ### Title → md('### Title') 。
    • HTML : <div>Title</div> → html('<div>Title</div>') 。
    • 插入内容 : Hello {{name}} → insert('Hello {{name}}') 。
    location 指出字典文件存储在哪里以及如何与 CMS 同步。 'local' |
    'remote' |
    'hybrid' |
    'plugin' |
    string
    'local' 'hybrid' • 'local': 仅本地管理。
    • 'remote': 仅远程管理 (CMS)。
    • 'hybrid': 本地和远程管理。
    • 'plugin' 或自定义字符串:通过插件或自定义源管理。
    importMode 控制字典的导入方式。 'static' |
    'dynamic' |
    'fetch'
    'static' 'dynamic' • 'static': 静态导入。
    • 'dynamic': 通过 Suspense 动态导入。
    • 'fetch': 通过 Live Sync API 获取;失败后回退到 'dynamic'。
    • 需要 @intlayer/babel 和 @intlayer/swc 插件。
    • 键必须静态声明。
    • 如果 optimize 关闭则忽略。
    • 不影响 getIntlayer, getDictionary 等。
    priority 字典优先级。在解决字典之间的冲突时,较高的值比较低的值具有优先级。 number undefined 1
    live 已弃用 - 请使用 importMode: 'fetch'。曾指示是否应通过 Live Sync API 动态获取字典内容。 boolean undefined 在 v8.0.0 中重命名为 importMode: 'fetch'。
    schema 由 Intlayer 自动生成,用于 JSON 架构验证。 'https://intlayer.org/schema.json' 自动生成 请勿手动编辑。
    title 帮助在编辑器和 CMS 中识别字典。 string undefined 'User Profile'
    tags 对字典进行分类并为编辑器和 AI 提供上下文或指令。 string[] undefined ['user', 'profile']
    version 远程字典版本;帮助跟踪当前正在使用的版本。 string undefined '1.0.0' • 在 CMS 中管理。
    • 请勿本地编辑。

    fill 示例:

    ts
    复制代码

    复制代码到剪贴板

    dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};

    日志记录器配置 (Log)

    自定义 Intlayer 日志输出的参数。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    mode 指示日志记录器模式。 'default' |
    'verbose' |
    'disabled'
    'default' 'verbose' • 'verbose': 记录更多调试信息。
    • 'disabled': 完全禁用日志记录器。
    prefix 日志中所有消息的前缀。 string '[intlayer] ' '[我的前缀] '

    AI 配置 (AI)

    控制 Intlayer AI 功能的设置,包括提供商、模型和 API 密钥。

    如果您在 Intlayer Dashboard 中注册访问密钥,则此配置是可选的。Intlayer 将根据您的需求自动为您管理最具成本效益且最高效的 AI 解决方案。使用默认选项可确保获得最佳的长期支持,因为 Intlayer 会不断更新以使用最新模型。

    如果您更喜欢使用自己的 API 密钥或特定模型,则可以定义自己的 AI 配置。 此 AI 配置将在您的 Intlayer 环境中全局使用。CLI 命令(如 fill)将默认使用这些设置,同样 SDK、可视化编辑器和 CMS 也是如此。您可以通过命令参数在特定情况下覆盖这些默认值。

    Intlayer 支持多个 AI 提供商,以提供最大的灵活性。当前支持的提供商有:

    • OpenAI (默认)
    • Anthropic Claude
    • Mistral AI
    • DeepSeek
    • Google Gemini
    • Google AI Studio
    • Google Vertex
    • Meta Llama
    • Ollama
    • OpenRouter
    • Alibaba Cloud
    • Fireworks
    • Hugging Face
    • Groq
    • Amazon Bedrock
    • Together.ai
    • LM Studio
    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    provider 要为 Intlayer AI 功能使用的提供商。 'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio'
    undefined 'anthropic' 不同的提供商需要不同的 API 密钥,且价格不同。
    model 要为 AI 功能使用的 AI 模型。 string 无 'gpt-4o-2024-11-20' 具体模型取决于提供商。
    temperature 控制 AI 响应的随机性。 number 无 0.1 温度越高 = 越具创造力且越不可靠。
    apiKey 所选提供商的您的 API 密钥。 string 无 process.env.OPENAI_API_KEY 应保持私密;使用环境变量。
    applicationContext 有关应用程序的其他上下文,以帮助 AI 生成更准确的翻译(领域、目标受众、语气、术语)。 string 无 '我的自定义应用程序上下文' 可用于添加规则(例如:"您不应转换您的 URL" )。
    baseURL AI API 的基础 URL。 string 无 'https://api.openai.com/v1'
    'http://localhost:5000'
    可以指向本地或自定义的 AI API 端点。
    dataSerialization AI 功能的数据序列化格式。 'json' |
    'toon'
    undefined 'toon' • 'json': 默认,可靠;使用更多 token。
    • 'toon': token 更少,但也更不稳定。
    • 将上下文作为额外参数(reasoning effort 等)传递给模型。

    构建配置 (Build)

    控制 Intlayer 如何优化和编译应用程序国际化的参数。

    构建选项应用于 @intlayer/babel 和 @intlayer/swc 插件。

    在开发模式下,Intlayer 使用字典的静态导入以便于开发过程。
    在优化期间,Intlayer 将替换字典调用以优化分块 (chunking),使生成的包仅导入实际使用的字典。
    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    mode 控制构建模式。 'auto' |
    'manual'
    'auto' 'manual' • 'auto': 构建在应用程序构建期间自动启动。
    • 'manual': 仅通过显式构建命令触发。
    • 可用于防止字典构建(例如避免在 Node.js 环境中运行)。
    optimize 控制是否应执行构建优化。 boolean undefined process.env.NODE_ENV === 'production' • 如果未定义,则在框架构建 (Vite/Next.js) 期间启动优化。
    • true 在开发模式下也会强制执行优化。
    • false 将其禁用。
    • 如果启用,则会替换字典调用以优化分块。
    • 需要 @intlayer/babel 和 @intlayer/swc 插件。
    minify 压缩字典以减小包体大小。 boolean false • 指定是否应最小化包内容。
    • 默认值:生产环境中为 true。
    • 如果禁用了 optimize,该选项将被忽略。
    • 如果 editor.enabled 为 true,该选项将被忽略。
    purge 清除字典中未使用的键。 boolean false • 指定是否应清理包内容。
    • 默认值:生产环境中为 true。
    • 如果禁用了 optimize,该选项将被忽略。
    checkTypes 指示构建是否应检查 TypeScript 类型并记录错误。 boolean false 可能会减慢构建过程。
    outputFormat 控制字典的输出格式。 ('esm' | 'cjs')[] ['esm', 'cjs'] ['cjs']
    traversePattern 优化期间指定要扫描的文件的模式。 string[] ['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*'] ['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**'] • 通过将优化限制在相关文件来提高构建性能。
    • 如果 optimize 关闭则忽略。
    • 使用 glob 模式。

    系统配置 (System)

    这些设置面向高级用户和 Intlayer 内部配置。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    dictionariesDir 已编译字典的目录。 string '.intlayer/dictionary'
    moduleAugmentationDir TypeScript 模块扩充的目录。 string '.intlayer/types'
    unmergedDictionariesDir 存储未合并字典的目录。 string '.intlayer/unmerged_dictionary'
    typesDir 生成类型的目录。 string '.intlayer/types'
    mainDir Intlayer 主文件的目录。 string '.intlayer/main'
    configDir 已编译配置文件的目录。 string '.intlayer/config'
    cacheDir 缓存文件的目录。 string '.intlayer/cache'

    编译器配置 (Compiler)

    控制 Intlayer 编译器的设置,该编译器直接从组件中收集字典。

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型 默认值 示例 备注
    enabled 指示编译器是否应处于活动状态以收集字典。 boolean |
    'build-only'
    true 'build-only' 'build-only' 在开发过程中跳过编译器以实现更快构建;仅在构建命令期间运行。
    dictionaryKeyPrefix 收集的字典键的前缀。 string '' 'my-prefix-' 加在生成的键(基于文件名)之前以避免冲突。
    saveComponents 转换组件后是否应将其保存。 boolean false • 如果为 true,原始文件将被转换后的版本覆盖。
    • 允许运行一次编译器后将其删除。
    output 确定输出文件路径。替换 outputDir。支持模板变量:{{fileName}},
    {{key}},
    {{locale}},
    {{extension}},
    {{componentFileName}},
    {{componentExtension}},
    {{format}},
    {{componentFormat}},
    {{componentDirPath}} 。
    boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    undefined './{{fileName}}{{extension}}'
    '/locales/{{locale}}/{{key}}.json'
    { en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }
    • ./ 路径相对于组件目录解析。
    • / 路径相对于项目基础。
    • {{locale}} 启用按区域设置生成。
    • 支持按区域设置的对象表示法。
    noMetadata 如果为 true,编译器会从输出中删除字典元数据(键、内容包装器)。 boolean false false → {"key":"my-key","content":{"key":"value"}}
    true → {"key":"value"}
    • 对于 i18next 格式或 ICU MessageFormat JSON 输出非常有用。
    • 与 loadJSON 插件很好地配合。
    dictionaryKeyPrefix 字典键前缀 string '' 为提取的字典键添加可选前缀

    自定义架构 (Custom Schemas)

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型
    schemas 允许您定义 Zod 架构来验证您的字典结构。 Record<string, ZodSchema>

    插件 (Plugins)

    显示表格的所有内容

    在弹窗中打开表格以清晰地查看所有数据

    字段 说明 类型
    plugins 要包含的 Intlayer 插件列表。 IntlayerPlugin[]
    Intlayer如何工作
    CLI
    Alt+→

    在此页面

      讨论是匿名的,并会定期审查以解决常见问题。欢迎分享功能想法、对文档的反馈或任何与 Intlayer 相关的内容, 我们会利用这些意见来制定路线图并改进产品。

      import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";import { z } from "zod";/** * 包含所有可用选项的 Intlayer 配置文件示例。 */const config: IntlayerConfig = {  /**   * 国际化设置配置。   */  internationalization: {    /**     * 应用程序中支持的区域设置列表。     * 默认值:[Locales.ENGLISH]     */    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    /**     * 每个字典中必须定义的必需区域设置列表。     * 如果为空,则在 `strict` 模式下所有区域设置都是必需的。     * 默认值:[]     */    requiredLocales: [Locales.ENGLISH],    /**     * 国际化内容的严格级别。     * - "strict": 如果缺少已声明的区域设置或使用未声明的区域设置,则报错。     * - "inclusive": 如果缺少已声明的区域设置,则发出警告。     * - "loose": 接受任何现有的区域设置。     * 默认值:"inclusive"     */    strictMode: "inclusive",    /**     * 如果请求的区域设置不可用,则用作回退的默认区域设置。     * 默认值:Locales.ENGLISH     */    defaultLocale: Locales.ENGLISH,  },  /**   * 控制字典操作和缺失内容行为的设置。   */  dictionary: {    /**     * 控制字典的导入方式。     * - "static": 构建时静态导入。     * - "dynamic": 使用 Suspense 进行动态导入。     * - "fetch": 通过 Live Sync API 进行动态获取。     * 默认值:"static"     */    importMode: "static",    /**     * 使用 AI 自动填充缺失翻译的策略。     * 可以是布尔值或用于保存填充内容的路径模式。     * 默认值:true     */    fill: true,    /**     * 字典文件的物理位置。     * - "local": 存储在本地文件系统中。     * - "remote": 存储在 Intlayer CMS 中。     * - "hybrid": 同时存储在本地和 Intlayer CMS 中。     * - "plugin" (或任何自定义字符串): 由插件或自定义源提供。     * 默认值:"local"     */    location: "local",    /**     * 是否自动转换内容(例如将 Markdown 转换为 HTML)。     * 默认值:false     */    contentAutoTransformation: false,  },  /**   * 路由和中间件配置。   */  routing: {    /**     * 区域设置路由策略。     * - "prefix-no-default": 除默认语言外所有语言都有前缀(例如 /dashboard, /fr/dashboard)。     * - "prefix-all": 所有语言都有前缀(例如 /en/dashboard, /fr/dashboard)。     * - "no-prefix": URL 中没有区域设置。     * - "search-params": 使用 ?locale=...     * 默认值:"prefix-no-default"     */    mode: "prefix-no-default",    /**     * 用户选择的区域设置存储在哪里。     * 选项:'cookie', 'localStorage', 'sessionStorage', 'header' 或这些选项的数组。     * 默认值:['cookie', 'header']     */    storage: ["cookie", "header"],    /**     * 应用程序 URL 的基础路径。     * 默认值:""     */    basePath: "",    /**     * 特定区域设置路径的自定义 URL 重写规则。     */    rewrite: nextjsRewrite({      "/[locale]/about": {        en: "/[locale]/about",        fr: "/[locale]/a-propos",      },    }),    /**     * 将区域设置映射到域主机名以进行基于域的路由。     * 这些区域设置的 URL 将是绝对的(例如,https://intlayer.cn/)。     * 域意味着区域设置,因此不会向路径添加区域设置前缀。     * 默认值:undefined     */    domains: {      en: "intlayer.org",      zh: "intlayer.cn",    },  },  /**   * 用于发现和处理内容文件的设置。   */  content: {    /**     * 扫描字典的文件扩展名。     * 默认值:['.content.ts', '.content.js', '.content.json' 等]     */    fileExtensions: [".content.ts", ".content.js", ".content.json"],    /**     * .content 文件所在的目录。     * 默认值:["."]     */    contentDir: ["src"],    /**     * 源代码目录。     * 用于构建优化和代码转换。     * 默认值:["."]     */    codeDir: ["src"],    /**     * 扫描中排除的模式。     * 默认值:['node_modules', '.intlayer' 等]     */    excludedPath: ["node_modules"],    /**     * 是否在开发过程中监控更改并重新生成字典。     * 默认值:开发模式下为 true     */    watch: true,    /**     * 格式化新创建 / 更新的 .content 文件的命令。     */    formatCommand: 'npx prettier --write "{{file}}"',  },  /**   * 可视化编辑器配置。   */  editor: {    /**     * 是否启用可视化编辑器。     * 默认值:false     */    enabled: true,    /**     * 您的应用程序 URL,用于源验证。     * 默认值:""     */    applicationURL: "http://localhost:3000",    /**     * 本地编辑器服务器的端口。     * 默认值:8000     */    port: 8000,    /**     * 编辑器的公共 URL。     * 默认值:"http://localhost:8000"     */    editorURL: "http://localhost:8000",    /**     * Intlayer CMS 的 URL。     * 默认值:"https://app.intlayer.org"     */    cmsURL: "https://app.intlayer.org",    /**     * 后端 API 服务器的 URL。     * 默认值:"https://back.intlayer.org"     */    backendURL: "https://back.intlayer.org",    /**     * 是否启用实时内容同步。     * 默认值:false     */    liveSync: true,  },  /**   * 使用 AI 进行翻译和生成的设置。   */  ai: {    /**     * 使用的 AI 提供商。     * 选项:'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'     * 默认值:'openai'     */    provider: "openai",    /**     * 所选提供商使用的模型。     */    model: "gpt-4o",    /**     * 提供商的 API 密钥。     */    apiKey: process.env.OPENAI_API_KEY,    /**     * 引导 AI 生成翻译时的全局上下文。     */    applicationContext: "这是一个旅游预订应用程序。",    /**     * AI API 的基础 URL。     */    baseURL: "http://localhost:3000",    /**     * 数据序列化方式     *     * 选项:     * - "json": 默认,可靠;使用更多 token。     * - "toon": 更快,更少 token,但不如 JSON 稳定。     *     * 默认值:"json"     */    dataSerialization: "json",  },  /**   * 构建和优化设置。   */  build: {    /**     * 构建执行模式。     * - "auto": 应用程序构建期间自动构建。     * - "manual": 需要显式构建命令。     * 默认值:"auto"     */    mode: "auto",    /**     * 是否通过删除未使用的字典来优化应用程序包。     * 默认值:生产环境中为 true     */    optimize: true,    /**     * 压缩字典以减小包体大小。     * 默认值:true     *     * 注意:     * - 如果禁用 `optimize`,此选项将被忽略。     * - 如果 `editor.enabled` 为 true,此选项将被忽略。     */    minify: true,    /**     * 清除字典中未使用的键。     * 默认值:true     *     * 注意:     * - 如果禁用 `optimize`,此选项将被忽略。     */    purge: true,    /**     * 生成的字典文件的输出格式。     * 默认值:['cjs', 'esm']     */    outputFormat: ["cjs", "esm"],    /**     * 是否在构建期间执行 TypeScript 类型检查。     * 默认值:false     */    checkTypes: false,  },  /**   * 日志记录器配置。   */  log: {    /**     * 日志级别。     * - "default": 标准日志记录。     * - "verbose": 详细调试日志记录。     * - "disabled": 禁用日志记录。     * 默认值:"default"     */    mode: "default",    /**     * 日志中所有消息的前缀。     * 默认值:"[intlayer]"     */    prefix: "[intlayer]",  },  /**   * 系统配置(用于高级用法)   */  system: {    /**     * 存储本地化字典的目录。     */    dictionariesDir: ".intlayer/dictionary",    /**     * 模块扩充 (module augmentation) 的目录。     */    moduleAugmentationDir: ".intlayer/types",    /**     * 存储未合并字典的目录。     */    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",    /**     * 存储字典类型的目录。     */    typesDir: ".intlayer/types",    /**     * 应用程序主文件所在的目录。     */    mainDir: ".intlayer/main",    /**     * 已编译配置文件的目录。     */    configDir: ".intlayer/config",    /**     * 缓存文件的目录。     */    cacheDir: ".intlayer/cache",  },  /**   * 编译器配置(用于高级用法)   */  compiler: {    /**     * 是否启用编译器。     *     * - false: 禁用编译器。     * - true: 启用编译器。     * - "build-only": 开发期间跳过编译器以加快启动速度。     *     * 默认值:false     */    enabled: true,    /**     * 确定输出文件路径。替换 `outputDir`。     *     * - 以 `./` 开头的路径相对于组件目录解析。     * - 以 `/` 开头的路径相对于项目基础目录 (`baseDir`) 解析。     *     * - 路径中存在 `{{locale}}` 变量时,会启用按区域设置生成字典。     *     * 示例:     * ```ts     * {     *   // 在组件旁边生成多语言 .content.ts 文件     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // 通过模板字符串等效     * }     * ```     *     * ```ts     * {     *   // 在项目基础目录中生成按区域设置的集中式 JSON     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // 通过模板字符串等效     * }     * ```     *     * 变量列表:     *   - `fileName`: 文件名。     *   - `key`: 内容键。     *   - `locale`: 内容区域设置。     *   - `extension`: 文件扩展名。     *   - `componentFileName`: 组件文件名。     *   - `componentExtension`: 组件文件扩展名。     *   - `format`: 字典格式。     *   - `componentFormat`: 组件字典格式。     *   - `componentDirPath`: 组件目录路径。     */    output: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * 转换组件后是否保存它们。     *     * - 如果为 `true`,编译器将重写磁盘中的组件文件。因此转换将是永久性的,编译器将跳过下一次进程的转换。这样,编译器可以在转换应用后被移除。     *     * - 如果为 `false`,编译器仅在构建输出中将 `useIntlayer()` 函数调用注入代码中,并保持基础代码库不变。转换将仅在内存中进行。     */    saveComponents: false,    /**     * 生成的文件中仅保留内容。适用于按区域设置的 i18next 格式或 ICU MessageFormat JSON 输出。     */    noMetadata: false,    /**     * 字典键前缀     */    dictionaryKeyPrefix: "", // 为提取的字典键添加可选前缀  },  /**   * 用于字典内容验证的自定义架构。   */  schemas: {    "my-schema": z.object({      title: z.string(),    }),  },  /**   * 插件配置。   */  plugins: [],};export default config;
      routing: {  mode: "prefix-no-default", // 回退策略  rewrite: nextjsRewrite({    "/about": {      en: "/about",      fr: "/a-propos",    },    "/product/[slug]": {      en: "/product/[slug]",      fr: "/produit/[slug]",    },    "/blog/[category]/[id]": {      en: "/blog/[category]/[id]",      fr: "/journal/[category]/[id]",    },  }),}
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: "localStorage",    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: [      {        type: "localStorage",        name: "user-locale",      },      {        type: "cookie",        name: "user-locale",        secure: true,        sameSite: "strict",        httpOnly: false,      },    ],    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "search-params",    storage: "localStorage",    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "no-prefix",    storage: {      type: "sessionStorage",      name: "app-locale",    },    basePath: "/my-app",  },};export default config;
      // intlayer.config.tsimport { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default", // 未重写路径的回退    storage: "cookie",    rewrite: nextjsRewrite({      "/about": {        en: "/about",        fr: "/a-propos",      },      "/product/[slug]": {        en: "/product/[slug]",        fr: "/produit/[slug]",      },      "/blog/[category]/[id]": {        en: "/blog/[category]/[id]",        fr: "/journal/[category]/[id]",      },    }),  },};export default config;
      dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};