在 Web 开发中,国际化(i18n)是一个重要的概念。它使得网站可以根据用户所在的语言环境来显示不同的界面和内容,提供更好的用户体验。而 locale
就是一个用于处理国际化的 npm 包。
安装 locale
安装 locale
很简单,只需要使用 npm 命令行工具即可:
npm install locale --save
引入 locale
引入 locale
也很简单,只需在 JavaScript 文件中添加以下代码:
const { Locale } = require('locale');
使用 locale
创建 Locale 实例
创建 Locale
实例时,需要传入用户所在地区的标识符(如 zh-CN
表示中国大陆的中文环境)作为参数。例如:
const zhCN = new Locale('zh-CN');
这样就创建了一个表示中文环境的 Locale
实例。
获取语言信息
Locale
实例有许多方法可以获取当前语言环境的信息,例如:
getLanguage()
:获取当前语言的 ISO 639-1 代码(如zh
)。getRegion()
:获取当前地区的 ISO 3166-1 代码(如CN
)。getTranslations()
:获取当前语言环境下的所有翻译信息,返回一个对象。
例如,以下代码可以输出当前语言环境的 ISO 639-1 代码和地区的 ISO 3166-1 代码:
console.log(zhCN.getLanguage()); // 输出:zh console.log(zhCN.getRegion()); // 输出:CN
获取翻译信息
Locale
实例的 getTranslations()
方法返回一个对象,这个对象包含了当前语言环境下所有的翻译信息。我们可以通过该方法获取任何需要翻译的文本信息。
例如,以下代码可以输出一个包含中英文翻译信息的对象:
const messages = zhCN.getTranslations(); console.log(messages); // 输出: // { // "hello": "你好", // "world": "世界" // }
翻译文本
有了翻译信息后,我们就可以使用 Locale
实例的 translate()
方法来将文本翻译成当前语言环境的语言。例如:
console.log(zhCN.translate('hello')); // 输出:你好 console.log(zhCN.translate('world')); // 输出:世界
如果要在翻译时传入参数,可以使用 {}
包裹参数名。例如:
console.log(zhCN.translate('hello {name}', { name: '张三' })); // 输出:你好 张三
设置默认语言
locale
包还提供了设置默认语言的方法,当用户所在地区没有对应的翻译信息时,会显示默认语言的翻译信息。
例如,以下代码将默认语言设置为英文:
const enUS = new Locale('en-US'); Locale.setDefault(enUS);
示例代码
下面是一个完整的使用 locale
包的示例代码:
-- -------------------- ---- ------- ----- - ------ - - ------------------ ----- ---- - --- ---------------- ----- -------- - ----------------------- -------------------------------- -- ----- ------------------------------ -- ----- ---------------------- -- --- -- - -- -------- ----- -- -------- ---- -- - ------------------------------------- -- ----- ------------------------------------- -- ----- --------------------------------- -------- - ----- ---- ---- -- ----- -- ----- ---- - --- ---------------- ------------------------ ------------------------------------- -- --- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------展开代码