首页演练场案例展示应用文档博客
    • 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. Adonisjs
    Creation:2025-08-23Last update:2026-05-06
    在 GitHub 上查看应用程序模板

    此页面有可用的应用程序模板。

    将此文档参考到您的 AI 助手
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

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

    版本历史

    1. "更新 Solid useIntlayer API 用法以直接访问属性"
      v8.9.02026/5/4
    2. "初始化历史"
      v8.0.02025/12/30

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

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

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

    文档的 GitHub 链接
    Copy

    复制文档 Markdown 到剪贴板

    使用 Intlayer 翻译您的 AdonisJS 后端网站 | 国际化 (i18n)

    adonis-intlayer 是一个专为 AdonisJS 应用程序设计的强大国际化 (i18n) 包,旨在通过根据客户端首选项提供本地化响应,使您的后端服务全球化。

    实际用例

    • 以用户语言显示后端错误:当发生错误时,以用户的母语显示消息可以提高理解力并减少挫败感。这对于可能显示在前端组件(如 toast 或模态框)中的动态错误消息特别有用。

    • 检索多语言内容:对于从数据库中提取内容的应用程序,国际化确保您可以提供多种语言的内容。这对于电子商务网站或内容管理系统等需要以用户首选语言显示产品描述、文章和其他内容的平台至关重要。

    • 发送多语言电子邮件:无论是交易电子邮件、营销活动还是通知,以收件人的语言发送电子邮件都可以显著提高参与度和效率。

    • 多语言推送通知:对于移动应用程序,以用户首选语言发送推送通知可以增强互动和留存。这种个性化的触达可以使通知感觉更相关且更具操作性。

    • 其他通信:后端发出的任何形式的通信,如短信、系统警报或用户界面更新,都受益于使用用户的语言,确保清晰度并增强整体用户体验。

    通过对后端进行国际化,您的应用程序不仅尊重文化差异,而且更好地符合全球市场需求,这是在全球范围内扩展服务的关键一步。

    入门

    ide.intlayer.org

    See Application Template on GitHub.

    安装

    要开始使用 adonis-intlayer,请使用 npm 安装该包:

    bash
    复制代码

    复制代码到剪贴板

    npm install intlayer adonis-intlayernpx intlayer init

    设置

    在项目根目录创建 intlayer.config.ts 来配置国际化设置:

    intlayer.config.ts
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [
          Locales.ENGLISH,
          Locales.RUSSIAN,
          Locales.JAPANESE,
          Locales.FRENCH,
          Locales.KOREAN,
          Locales.CHINESE,
          Locales.SPANISH,
          Locales.GERMAN,
          Locales.ARABIC,
          Locales.ITALIAN,
          Locales.ENGLISH_UNITED_KINGDOM,
          Locales.PORTUGUESE,
          Locales.HINDI,
          Locales.TURKISH,
          Locales.POLISH,
          Locales.INDONESIAN,
          Locales.VIETNAMESE,
          Locales.UKRAINIAN,
        ],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;

    声明内容

    创建并管理您的内容声明以存储翻译:

    app/index.content.ts
    复制代码

    复制代码到剪贴板

    import { t, type Dictionary } from "intlayer";
    
    const indexContent = {
      key: "index",
      content: {
        exampleOfContent: t({
          en: "Example of returned content in English",
          fr: "Exemple de contenu renvoyé en français",
          zh: "中文返回内容示例",
          "es-ES": "Ejemplo de contenido devuelto en español (España)",
          "es-MX": "Ejemplo de contenido devuelto en español (México)",
        }),
      },
    } satisfies Dictionary;
    
    export default indexContent;
    只要您的内容声明包含在 contentDir 目录(默认为 ./src 或 ./app)中,就可以在应用程序的任何位置定义。并且符合内容声明文件扩展名(默认为 .content.{json,ts,tsx,js,jsx,mjs,cjs})。
    有关更多详细信息,请参阅 内容声明文档。

    AdonisJS 应用程序设置

    设置您的 AdonisJS 应用程序以使用 adonis-intlayer。

    注册中间件

    首先,您需要在应用程序中注册 intlayer 中间件。

    start/kernel.ts
    复制代码

    复制代码到剪贴板

    router.use([() => import("adonis-intlayer/middleware")]);

    定义路由

    start/routes.ts
    复制代码

    复制代码到剪贴板

    import router from "@adonisjs/core/services/router";import { t, getIntlayer, getDictionary } from "adonis-intlayer";import indexContent from "../app/index.content";router.get("/t_example", async () => {  return t({    en: "Example of returned content in English",    fr: "Exemple de contenu renvoyé en français",    zh: "中文返回内容示例",    "es-ES": "Ejemplo de contenido devuelto en español (España)",    "es-MX": "Ejemplo de contenido devuelto en español (México)",  });});router.get("/getIntlayer_example", async () => {  return getIntlayer("index").exampleOfContent;});router.get("/getDictionary_example", async () => {  return getDictionary(indexContent).exampleOfContent;});

    函数

    adonis-intlayer 导出了几个函数来处理应用程序中的国际化:

    • t(content, locale?):基础翻译函数。
    • getIntlayer(key, locale?):通过键从字典中检索内容。
    • getDictionary(dictionary, locale?):从特定字典对象检索内容。
    • getLocale():从请求上下文中检索当前语言区域。

    在控制器中使用

    app/controllers/example_controller.ts
    复制代码

    复制代码到剪贴板

    import type { HttpContext } from "@adonisjs/core/http";import { t } from "adonis-intlayer";export default class ExampleController {  async index({ response }: HttpContext) {    return response.send(      t({        en: "Hello from controller",        zh: "来自控制器的你好",      })    );  }}

    兼容性

    adonis-intlayer 完全兼容:

    • react-intlayer 用于 React 应用程序
    • next-intlayer 用于 Next.js 应用程序
    • vite-intlayer 用于 Vite 应用程序

    它还可以无缝地与跨各种环境(包括浏览器和 API 请求)的任何国际化解决方案配合使用。您可以自定义中间件通过标头或 cookie 检测语言区域:

    intlayer.config.ts
    复制代码

    复制代码到剪贴板

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  // ... 其他配置选项  middleware: {    headerName: "my-locale-header",    cookieName: "my-locale-cookie",  },};export default config;

    默认情况下,adonis-intlayer 将解释 Accept-Language 标头以确定客户端的首选语言。

    有关配置和高级主题的更多信息,请访问我们的 文档。

    配置 TypeScript

    adonis-intlayer 利用 TypeScript 的强大功能来增强国际化过程。TypeScript 的静态类型确保每个翻译键都被考虑到,从而降低丢失翻译的风险并提高可维护性。

    Autocompletion

    Translation error

    确保在 tsconfig.json 文件中包含自动生成的类型(默认为 ./types/intlayer.d.ts)。

    tsconfig.json
    复制代码

    复制代码到剪贴板

    {  // ... 您现有的 TypeScript 配置  "include": [    // ... 您现有的 TypeScript 配置    ".intlayer/**/*.ts", // 包含自动生成的类型  ],}

    VS Code 扩展

    为了改善您使用 Intlayer 的开发体验,您可以安装官方的 Intlayer VS Code 扩展。

    从 VS Code 市场安装

    此扩展提供:

    • 翻译键的自动补全。
    • 丢失翻译的实时错误检测。
    • 翻译内容的内联预览。
    • 轻松创建和更新翻译的快速操作。

    有关如何使用该扩展的更多详细信息,请参阅 Intlayer VS Code 扩展文档。

    Git 配置

    建议忽略 Intlayer 生成的文件。这可以避免将它们提交到您的 Git 仓库。

    为此,您可以将以下指令添加到您的 .gitignore 文件中:

    .gitignore
    复制代码

    复制代码到剪贴板

    # 忽略 Intlayer 生成的文件.intlayer
    Hono
    Lynx和React
    Alt+→

    在此页面

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

      npm install intlayer adonis-intlayernpx intlayer init
      router.use([() => import("adonis-intlayer/middleware")]);
      import router from "@adonisjs/core/services/router";import { t, getIntlayer, getDictionary } from "adonis-intlayer";import indexContent from "../app/index.content";router.get("/t_example", async () => {  return t({    en: "Example of returned content in English",    fr: "Exemple de contenu renvoyé en français",    zh: "中文返回内容示例",    "es-ES": "Ejemplo de contenido devuelto en español (España)",    "es-MX": "Ejemplo de contenido devuelto en español (México)",  });});router.get("/getIntlayer_example", async () => {  return getIntlayer("index").exampleOfContent;});router.get("/getDictionary_example", async () => {  return getDictionary(indexContent).exampleOfContent;});
      import type { HttpContext } from "@adonisjs/core/http";import { t } from "adonis-intlayer";export default class ExampleController {  async index({ response }: HttpContext) {    return response.send(      t({        en: "Hello from controller",        zh: "来自控制器的你好",      })    );  }}
      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  // ... 其他配置选项  middleware: {    headerName: "my-locale-header",    cookieName: "my-locale-cookie",  },};export default config;
      {  // ... 您现有的 TypeScript 配置  "include": [    // ... 您现有的 TypeScript 配置    ".intlayer/**/*.ts", // 包含自动生成的类型  ],}
      # 忽略 Intlayer 生成的文件.intlayer