📜  国际化在 JavaScript 中是如何工作的?(1)

📅  最后修改于: 2023-12-03 15:07:33.197000             🧑  作者: Mango

国际化在 JavaScript 中是如何工作的?

国际化(Internationalization,简称 i18n)是指将软件设计成能够适应不同的语言和文化环境的过程。在 JavaScript 中,实现国际化主要包括以下几个方面:

多语言支持

在多语言支持方面,需要为应用程序提供多种语言的页面文本、提示文字等内容,同时实现语言切换的功能。在 JavaScript 中,可以使用 i18next、react-intl 和 vue-i18n 等库来实现多语言支持。

以 i18next 为例,其基本用法如下:

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

i18n.use(initReactI18next).init({
  resources: {
    en: {
      translation: {
        hello: 'Hello',
        welcome: 'Welcome to my app!',
      },
    },
    zh: {
      translation: {
        hello: '你好',
        welcome: '欢迎来到我的应用!',
      },
    },
  },
});

function App() {
  const { t } = useTranslation();

  return (
    <>
      <h1>{t('hello')}</h1>
      <p>{t('welcome')}</p>
    </>
  );
}

在这个例子中,使用 i18next 初始化时传入了两种语言的翻译资源。在组件中使用 useTranslation() 钩子获取 t 函数,通过传入翻译资源中的键名来读取对应语言的翻译文本。

日期、时间、货币格式化

在国际化中,不同国家和地区使用不同的日期格式、时间格式、货币符号等。因此,在 JavaScript 中,需要提供格式化工具来帮助开发人员将日期、时间、货币等格式化为符合不同语言环境的标准。

在 JavaScript 中,日期和时间可以使用 Intl.DateTimeFormat 对象进行格式化。以格式化成英国标准为例,代码如下:

const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const formattedDate = new Intl.DateTimeFormat('en-GB', options).format(new Date());

console.log(formattedDate); // "Friday, January 1, 2021"

货币格式化可以使用 Intl.NumberFormat 对象。以格式化成人民币为例,代码如下:

const formattedAmount = new Intl.NumberFormat('zh-CN', {
  style: 'currency',
  currency: 'CNY',
}).format(123.45);

console.log(formattedAmount); // "¥123.45"
来源