express 多语言i18n国际化,怎么做?

引言

网上关于国际化的讨论和教程大多是vue和react等前端框架的,那么对于express这样的后端框架,如何去国际化?

后端也需要国际化?

是的,后端也需要。常见的情况如下:

  • 动态的错误提示
  • 导出Excel的表头
  • 其他一些需要动态展示或生成的内容

后端国际化相对前端有什么不同?

  • 前端一般是一个网站显示同一种语言。
  • 后端则每次响应可能是不同的语言。

该怎么实现?

这里以express为例

1、创建一个实例

ts 复制代码
import { createI18nSafe} from "soon-i18n"
export const { yiLocales } = createI18nSafe(
  { lang: "zh", fallbacks: ["en"] },
  {
    zh: {
      hello:(username:string)=> `欢迎 ${username} 登录!`
    }, en: {
      hello: (username:string)=> ` ${username} , welcome `
    }
  }, //全局定义的locales,按需要可不定义
)

2、在请求中使用

ts 复制代码
import { yiLocales } from "../i18n"

app.post("/login", async (req, res) => {
  const lang = req.headers["lang"] as 'en' ?? "en"
  const t = yiLocales(lang,
    {
      zh: { err: '用户名或密码输入错误' },
      en: { err: 'Username or password is error.' }
    } //局部定义的locales,按需要可不定义
   )
  //如成功时返回欢迎 (全局定义的信息)
  res.json({ msg: t('hello', req.body.username) })
  //失败时返回错误 (局部定义的信息)
  res.json({ msg: t('err') })
  })

支持一下

热情地欢迎各位兄弟姐妹的大力支持!

github: github.com/leafio?tab=...

期待至少一个项目能达成1000个star

期待至少一个npm能达成每周1000次下载

相关推荐
徐志斌7 分钟前
Linux 内核与 Zero-Copy 零拷贝
后端
Java编程爱好者7 分钟前
Spring-Boot-缓存实战-@Cacheable-这10个坑
后端
|晴 天|12 分钟前
实现草稿自动保存功能:5秒无操作自动保存
前端·vue.js·typescript
Cisyam^18 分钟前
Bright Data Web Scraping 指南:用 MCP + Dify 自动采集 TikTok 与 LinkedIn数据
大数据·前端·人工智能
XGeFei1 小时前
【表单处理】——如何防止CSRF(跨站请求伪造)攻击的?
前端·网络·csrf
还不秃顶的计科生1 小时前
多模态模型下载
java·linux·前端
沛沛rh451 小时前
用 Rust 实现用户态调试器:mini-debugger项目原理剖析与工程复盘
开发语言·c++·后端·架构·rust·系统架构
GISer_Jing1 小时前
笑不活了!蒸馏Skill竟能复刻前任、挽留同事?三大热门项目+完整地址汇总
前端·人工智能
消失的旧时光-19431 小时前
Spring Boot + MyBatis 从 0 到 1 跑通查询接口(含全部踩坑)
spring boot·后端·spring·mybatis
SamDeepThinking2 小时前
Spring AOP记录日志,生产环境的代码长什么样
java·后端·架构