如何快速构建多语言企业级应用:Egg.js国际化完整指南
2026/5/3 19:05:27 网站建设 项目流程

如何快速构建多语言企业级应用:Egg.js国际化完整指南

【免费下载链接】egg🥚 Born to build better enterprise frameworks and apps with Node.js & Koa项目地址: https://gitcode.com/gh_mirrors/egg11/egg

Egg.js作为基于Node.js和Koa的企业级框架,提供了强大的国际化(I18n)支持,帮助开发者轻松构建支持多语言的应用。本指南将详细介绍如何利用Egg.js内置的国际化功能,快速实现应用的多语言支持,满足全球用户的需求。

Egg.js国际化功能简介

Egg.js的国际化支持由egg-i18n插件提供,该插件已内置在框架中,无需额外安装。通过简单的配置和使用,开发者可以轻松实现应用的多语言切换、文本翻译等功能。

国际化核心配置文件

Egg.js的国际化配置主要集中在以下文件中:

  • config/config.default.js:国际化默认配置
  • config/plugin.js:i18n插件配置

快速开始:Egg.js国际化基础配置

启用i18n插件

Egg.js默认已启用i18n插件,如需确认或手动启用,可以在config/plugin.js中进行配置:

// config/plugin.js exports.i18n = { enable: true, package: 'egg-i18n', };

修改默认语言

Egg.js默认语言为en-US,如需修改为其他语言(如简体中文),可以在config/config.default.js中进行配置:

// config/config.default.js exports.i18n = { defaultLocale: 'zh-CN', };

多语言切换机制

Egg.js提供了多种语言切换方式,优先级从高到低依次为:

  1. URL查询参数:/?locale=en-US
  2. Cookie:locale=zh-TW
  3. 请求头:Accept-Language: zh-CN,zh;q=0.5

自定义切换参数

如需修改语言切换的参数名称,可以在配置文件中进行自定义:

// config/config.default.js exports.i18n = { queryField: 'locale', // URL查询参数名称 cookieField: 'locale', // Cookie名称 cookieMaxAge: '1y', // Cookie过期时间,默认为1年 };

多语言文件的组织与编写

Egg.js的多语言文本统一存放在config/locales目录下,支持.js.json两种格式。文件命名格式为语言代码.js(或.json),如en-US.jszh-CN.js等。

文件结构示例

- config/locales/ - en-US.js - zh-CN.js - zh-TW.js

编写多语言文本

JavaScript格式

// config/locales/zh-CN.js module.exports = { 'Email': '邮箱', 'Welcome back, %s!': '欢迎回来,%s!', 'Hello {0}! My name is {1}.': '你好 {0}! 我的名字叫 {1}。', };

JSON格式

// config/locales/zh-CN.json { "Email": "邮箱", "Welcome back, %s!": "欢迎回来,%s!", "Hello {0}! My name is {1}.": "你好 {0}! 我的名字叫 {1}。" }

在应用中使用多语言文本

Egg.js提供了__(别名gettext)函数来获取多语言文本,支持占位符替换。

在Controller中使用

module.exports = async (ctx) => { ctx.body = { message: ctx.__('Welcome back, %s!', ctx.user.name), // 或者使用gettext // message: ctx.gettext('Welcome back, %s!', ctx.user.name) user: ctx.user, }; };

在View中使用

以Nunjucks模板引擎为例:

<li>{{ __('Email') }}: {{ user.email }}</li> <li>{{ __('Welcome back, %s!', user.name) }}</li> <li>{{ __('Hello {0}! My name is {1}.', ['foo', 'bar']) }}</li>

国际化应用示例

下面是一个简单的多语言应用示例,展示了如何在Egg.js中实现多语言切换和文本展示。

1. 配置多语言文件

首先,创建config/locales/en-US.jsconfig/locales/zh-CN.js文件,分别定义英文和中文文本。

2. 编写Controller

// app/controller/home.js module.exports = class HomeController extends Controller { async index() { const { ctx } = this; ctx.body = { title: ctx.__('Welcome to Egg.js'), message: ctx.__('Hello {0}! My name is {1}.', ['Egg.js', 'i18n']), }; } };

3. 配置路由

// app/router.js module.exports = app => { const { router, controller } = app; router.get('/', controller.home.index); };

4. 运行应用并测试

启动应用后,可以通过以下方式测试多语言效果:

  • 访问http://localhost:7001/?locale=en-US,显示英文文本
  • 访问http://localhost:7001/?locale=zh-CN,显示中文文本

国际化高级配置

框架与插件的国际化支持

Egg.js的国际化功能不仅对应用目录生效,在框架和插件的config/locales目录下同样生效。这使得开发者可以方便地为框架和插件提供多语言支持。

动态切换语言

在应用中,除了通过URL参数、Cookie和请求头切换语言外,还可以通过代码动态切换语言:

// 在Controller中动态设置语言 ctx.locale = 'zh-TW';

总结

Egg.js的国际化功能为开发者提供了简单、高效的多语言支持方案。通过本文介绍的配置和使用方法,你可以快速为企业级应用添加多语言支持,满足全球用户的需求。无论是简单的文本翻译,还是复杂的多语言业务逻辑,Egg.js的国际化功能都能轻松应对。

如果你想深入了解Egg.js国际化的更多细节,可以参考官方文档:docs/source/zh-cn/core/i18n.md。

【免费下载链接】egg🥚 Born to build better enterprise frameworks and apps with Node.js & Koa项目地址: https://gitcode.com/gh_mirrors/egg11/egg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询