i18n多国语言Internationalization的实现

这篇具有很好参考价值的文章主要介绍了i18n多国语言Internationalization的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

i18n 是"Internationalization”的缩写,这个术语来源于英文单词中首尾字母“”和“n”以及中间的字符数(共计18个字符)

当我们需要开发不同语言版本时,就可以使用i18n多国语言的一个操作处理,i18n主要实现那一方面的内容呢?例如:文本内容本地化、日期/时间格式、货币与度量单位图形和图标、布局和阅读方向、区域敏感功能

  • 文本内容本地化:将应用程序中的所有文本内容翻译成不同的语言,以适应不同的用户。这包括按钮、标签、错误信息等文本,可以根据用户所在的语言环境自动加载对应的翻译文件。
  • 日期/时间格式:将日期和时间格式化为用户所在的地区或语言环境的标准格式。例如,在美国,日期通常是“月/日/年”,而在欧洲,日期通常是“日/月/年”。
  • 货币与度量单位:将货币和度量单位转换为用户所在的地区或语言环境的标准格式。例如,在美国,货币通常是美元,而在欧洲,货币通常是欧元。
  • 图形和图标:将图形和图标转换为用户所在的地区或语言环境的标准格式。例如,在某些国家,箭头指向右侧表示前进,而在其他国家,箭头指向左侧表示前进。
  • 布局和阅读方向:将应用程序的布局和阅读方向调整为用户所在的地区或语言环境的标准格式。例如,在阿拉伯语国家,布局和阅读方向是从右到左。
  • 区域敏感功能:根据用户所在的地区或语言环境,启用或禁用特定的功能。例如,在某些国家,政府监管要求使用特定的安全算法,而在其他国家则没有这样的要求。

总之,i18n是为了构建全球化产品而采取的一种策略,确保软件产品可以在全球范围内广泛进行使用,同时为用户提供符合当地文化和习惯的一个用户体验。
 

假设我们在react项目中进行一个简单的预览:

i18n多国语言Internationalization的实现,javascript,前端,react.js

具体我们应该如何做项目的操作呢?主要可以使用两个插件:

1. 下载 react-i18next  和 i18next

npm install react-i18next i18next --save

i18n多国语言Internationalization的实现,javascript,前端,react.js

2. 创建一个资源目录,这个目录主要实现语言预设

假设我们创建一个locales,里面创建两个文件夹,一个为cn(中文),一个为en(英文)

i18n多国语言Internationalization的实现,javascript,前端,react.js

3. 分别为两个文件 cn、en 都创建一个 translation.json 文件

i18n多国语言Internationalization的实现,javascript,前端,react.js

cn下的translation内容为:

{
    "main":{
        "header":"欢迎使用应用"
    }
}

en下的translation内容为:

{
    "main":{
        "header":"Welcome to the App"
    }
}

当前我们已经预设了一个locales本地的语言版本,包括了中文和英文版本

4. 在src目录下新建一个i18n的配置文件

i18n多国语言Internationalization的实现,javascript,前端,react.js

那么在这个文件当中,我们首先去引入资源文件

import cnJSON from './locales/cn/translation.json'; //引入cn下的translation.json
import enJSON from './locales/en/translation.json'; //引入en下的translation.json
import i18n from 'i18next'; //在i18next下引入i18n
import { initReactI18next } from 'react-i18next'; //从react-i18next中引入initReactI18next方法
 
 
//定义resources资源的边栏
const resources = {
    en:{...enJSON},
    cn:{...cnJSON}, //将这两个对象进行展开
}
 
//利用i18n进行一个插件的使用,使用的则是initReactI18next,利用init进行国际化内容的转换操作
i18n.use(initReactI18next).init({
    resources,  //可以设置resources资源内容
    debug:true,
    fallbackLng:"cn", //进行调试操作,英文的(en)
}) 
 
//暴露
export default i18n;

5. 操作main.jsx文件

将i18n文件进行一个引入

i18n多国语言Internationalization的实现,javascript,前端,react.js

import "./i18n";
import App  from "./App.jsx";
import React from "react";
import ReactDOM from "react-dom/client";

ReactDOM.createRoot(document.getElementById("root")).render(
    <React.StrictMode>
        <App />
    </React.StrictMode>
);

6. 在App.jsx文件进行相应内容的引入以及使用

(1)引入所需内容

import { Suspense } from 'react';
import { useTranslation } from 'react-i18next';

2)暴露一个函数(因为可能加载时间过长,所以写一个loading)

export default function WrapperApp() {
    return (
        <Suspense fallback="loading">
            <App />
        </Suspense>
    )
}

(3)在APP组件中

const { t } = useTranslation();  //使用useTranslation,t就是useTranslation转换的意思
 
 
return (
    <>
        <h1>i18n 多国语言的实现<h1>
        <h2>{t("main:header")}</h2>  //cn或en文件下的translation内的内容,由于main对我们来说其实是namespace命名空间的内容,不能用 . 需要用 : 分割
    <>
)

展示:

i18n多国语言Internationalization的实现,javascript,前端,react.js

如果我们想要英文的,那么将i18n.jsx中fallbackLng属性改为:en

i18n多国语言Internationalization的实现,javascript,前端,react.js

我们还可以使用对应的方法 i18n.changeLanguage 改变语言

i18n多国语言Internationalization的实现,javascript,前端,react.js

import cnJSON from './locales/cn/translation.json'; //引入cn下的translation.json
import enJSON from './locales/en/translation.json'; //引入en下的translation.json
import i18n from 'i18next'; //在i18next下引入i18n
import { initReactI18next } from 'react-i18next'; //从react-i18next中引入initReactI18next方法
 
 
//定义resources资源的边栏
const resources = {
    en:{...enJSON},
    cn:{...cnJSON}, //将这两个对象进行展开
}
 
//利用i18n进行一个插件的使用,使用的则是initReactI18next,利用init进行国际化内容的转换操作
i18n.use(initReactI18next).init({
    resources,  //可以设置resources资源内容
    debug:true,
    fallbackLng:"cn", //进行调试操作,英文的(en)
}) 
 
i18n.changeLanguage("en"); //即使fallbackLng设置为中文语言,但是随后我们又使用了changeLanguage将其设置为了en,所以页面显示的是英文。
 
//暴露
export default i18n;

在我们进行查看的时候,不是很方便,语言切换并不是很方便,所以在App.jsx文件中进行动态的操作,比如:

i18n多国语言Internationalization的实现,javascript,前端,react.js

i18n多国语言Internationalization的实现,javascript,前端,react.js

i18n多国语言Internationalization的实现,javascript,前端,react.js

代码演示文章来源地址https://www.toymoban.com/news/detail-795441.html

const locales = {
    en:{
        title:"English",
    },
    cn:{
        title:"中文",
    },
},
 
 
 
const { t,i18n } = useTranslation("main");
 
 
<ul>
    {Object.keys(locales).map((locale) => (
        <li key={locale}>
            <button onClick={() => i18n.changeLanguage(locale)}>
                {locales[locale].title}
            </button>
        </li>
    ))}
</ul>
 
<h2>{t("header")}</h2>

到了这里,关于i18n多国语言Internationalization的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序-切换语言(国际化i18n)的方法封装

    最近做的一个小程序的项目, 涉及到了 多语言的切换 , 就想到了之前vue用的多语言插件i18n, 就尝试着在微信开放社区搜了一下, 没有具体的实现, 但是提供了大致的实现思路, 如下: 又结合了很多大佬的分享经验, 试着去封装了一个微信的i18n方法 首先, 我们需要明确一下需要实

    2024年02月05日
    浏览(47)
  • 如何在Vue3中配置国际化语言i18n

    1. 安装 vue-i18n 2. 创建一个i8n的配置文件 如:i18nConfig.js 3. 新建语言文件 zh-CN.js 和 en-US.js zh-CN.js 文件 en-US.js 文件 CONFIG.js 文件 4. 在 main.js 里面全局配置 通过上面四步即可配置完毕 下面说一下如何使用,分三种情况 在 .vue 组件中的 template 使用 在 .vue 组件中的 script 中使用 在

    2024年02月09日
    浏览(56)
  • Next实现 i18n 传递 locales 给 getStaticPaths

    在 Next.js 中实现国际化( i18n )时,可以通过配置 next.config.js 文件来传递 locales 给 getStaticPaths 函数。下面是一个示例代码,演示如何在 next.config.js 中配置 locales ,并在 getStaticPaths 中获取并使用这些 locales : 1、配置 next.config.js 文件: 2、在页面组件中使用 getStaticPaths : 在

    2024年04月24日
    浏览(33)
  • 【angular】实现简单的angular国际化(i18n)

    实现简单的angular国际化。本博客实现中文版和法语版。 将 Hello i18n! 变为 中文版:你好 i18n! 或 法语版:Bonjour l’i18n ! 。 创建一个项目: 在集成终端中打开。 添加本地化包: 在html中添加格式化标识: 现在运行一下,页面是: 生成翻译模板语言包: 生成了一个文件夹: l

    2024年02月08日
    浏览(52)
  • SpringBoot - SpringBoot整合i18n实现消息国际化

    在我们开发WEB项目的时候,项目可能涉及到在国外部署或者应用,也有可能会有国外的用户对项目进行访问,那么在这种项目中, 为客户展现的页面或者操作的信息就需要根据客户系统的环境来使用不同的语言,这就是我们所说的项目国际化。 1. MessageSource源码 Spring中定义了

    2024年02月03日
    浏览(51)
  • next.js app目录 i18n国际化简单实现

    最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。 此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去

    2024年04月22日
    浏览(43)
  • Spring之国际化:i18n

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月03日
    浏览(57)
  • vue3 i18n配置详细教学

    npm install vue-i18n@next @next 表示安装i18n 最新的 vue3的版本 点击按钮切换语言 

    2024年02月16日
    浏览(36)
  • Vue - i18n 国际化的使用

    参考网址: 使用: https://huaweicloud.csdn.net/638f133edacf622b8df8eb26.html?spm=1001.2101.3001.6650.1utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125181861-blog-123845480.235%5Ev38%5Epc_relevant_anti_t3_basedepth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Ea

    2024年02月11日
    浏览(61)
  • nuxt使用i18n进行中英文切换

    中文效果图: 英文效果图: 版本: 安装:  新建en.js与zh.js两个文件进行切换显示 en.js内容  zh.js内容: 在plugins下新建i18n.js i18n.js内容:  在nuxt.config.js引入i18n.js 切换按钮( 两种切换方式选择一种即可 ) 页面展示 有导航的需要在导航切换的时候处理一下相关内容:

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包