首页 > 其他分享 >在Express中使用i18next

在Express中使用i18next

时间:2023-08-11 16:12:05浏览次数:40  
标签:en zh Express i18next user 使用 import locales

背景

框架:Express
语法:TypeScript
配置插件:i18next

安装

npm install i18next --save
npm install i18next-http-middleware --save

项目配置

装饰器

src根目录创建装饰器i18next.d.ts

import "i18next";
import enLocales from "./locales/en";
import zhLocales from "./locales/zh-CN";

declare module "i18next" {

  // Extend CustomTypeOptions

  interface CustomTypeOptions {
    locales: ['en', 'zh'],
    queryParameter: 'lang', // 设置查询参数
    defaultLocale: 'en',
    resources: {
        zh: typeof zhLocales,
        en: typeof enLocales

    }    

  }

}

语言文件

创建json配置与公共输出口:
(举例zh,其他语言也一样)
路径: locales/en/index.ts

import * as user from "./user.json"
const zhLocales = {
    user
}
export default zhLocales

路径:locales/en/user.json

{
    "HTTP_CODE_403":"服务器理解该请求,但不会满足它"
}

注册配置

在根目录的server.ts 内添加

import i18next from "i18next";
import * as i18nextMiddleware from 'i18next-http-middleware'

const app = express();

//其他配置

// ========= LOCALIZATION
i18next.use(i18nextMiddleware.LanguageDetector).init({
    preload: ['en', 'zh']
})

app.use(i18nextMiddleware.handle(i18next,{
    removeLngFromUrl:false
}));

//注册路由

使用

在路由中使用:

router.post("/", async(req: Request, res: Response) => {
	const { email } = req.body;
	if (user) {
		res.status(HttpStatusCodes.FORBIDDEN).json(
			{
				msg:  t("zh:user.HTTPODE_403")
			}
         )
     }
})

官方文档:
https://www.i18next.com/overview/typescript

标签:en,zh,Express,i18next,user,使用,import,locales
From: https://www.cnblogs.com/chrisleon/p/17623231.html

相关文章

  • pip安装使用详解
    pip类似RedHat里面的yum,安装Python包非常方便。本节详细介绍pip的安装、以及使用方法。1、pip下载安装1.1pip下载 #wget"https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb"--no-check-certificate1.2pip......
  • 使用LabVIEW 实现物体识别、图像分割、文字识别、人脸识别等深度视觉
    前言哈喽,各位朋友们,这里是virobotics(仪酷智能),这两天有朋友私信问之前给大家介绍的工具包都可以实现什么功能,最新的一些模型能否使用工具包加载,今天就给大家介绍一下博主目前使用工具包已经实现的深度视觉模型及案例下表为前期写过的一些范例介绍,朋友们可以按需点击查看名字......
  • C++使用Py*调用Python3模块中类成员函数及数组参数传递
    1.首先来看Python模块的部分结构和代码。ssd_network_classify.py文件中有SSD_Network_Classify类及其识别的成员函数detect_image(),返回值是一个1维的不定长double型数组。classSSD_Network_Classify:#其他函数实现省略。。。defdetect_image(sel......
  • 使用rootfs制作docker容器镜像
    参考基于rootfs构建Docker镜像将rootfs.tar.gz制作成dockerimage基于rootfs制作镜像HowtoCreateYourOwnDockerBaseImagesFrom制作rootfs这里为了简化,直接使用dracut生成initramfs。生成initramfs#dracut-H--keepinitramfs.imgNotremoving/var/tmp/dr......
  • Redis/SSDB+Twemproxy安装与使用
    目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端......
  • [Unity]为什么不要在Unity中使用构造函数
    MonoBehaviour派生出来的类会作为Unity3D中的Component挂载在GameObject上,而GameObject会在编辑器的多个地方被显示,如场景编辑器内、Prefab选中时等,这些时候都需要调用它们的构造函数来初始化成员变量的默认值,以便在编辑器中显示它们,也就是说,构造函数的调用次数和调用时机是“完全......
  • c++ 使用移动语义来提高 vector 性能
    本文学习了微软的官方实例,用于理解std::move语义。#pragmaonce#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;classMemoryBlock{public://Simpleconstructorthatinitializestheresource.explicitMemoryBl......
  • Anyline+PostgeSQL使用理解之二
    第一篇:springboot+postgresql集成anyline试水总结几个目前遇到的比较简单的使用场景,以后可能会继续在此更新。下文anylineService皆为org.anyline.service.AnylineService。查询基本列表查询DataSetds=anylineService.querys(TABLE_NAME+"(id,row,col,start_time,senso......
  • Http 文件服务器搭建 —— 作为 Unity Addressable 远程服务器使用
    方式一通过HFS:HFS-超好用的本地文件分享利器,快速从电脑传文件到手机等设备 方式二通过IIS:WindowIIS搭建Http文件服务器    ......
  • 在生产环境中使用Apache Mesos和Docker
    本文翻译自IVOVERBERK博客,Docker容器软件已受到了从科技巨头到企业的广泛注意。但是,随着容器概念转变成为现实世界中的成熟技术,那么问题就变成了:怎么样才能快速把Docker应用于生产环境中呢?介绍在生产环境中安全有效地的运行Docker容器会有很多复杂的挑战。许多复杂性挑战都是在......