如何快速构建多语言企业级应用:Egg.js国际化完整指南
如何快速构建多语言企业级应用: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提供了多种语言切换方式,优先级从高到低依次为:
- URL查询参数:
/?locale=en-US - Cookie:
locale=zh-TW - 请求头:
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.js、zh-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.js和config/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),仅供参考
