在当前全球化及跨境业务的背景下,多语言国际化成为了许多应用程序开发者的必备技能。Deno 作为一种安全且高效的 JavaScript 平台,也支持多语言国际化的实现。本文将介绍 Deno 中如何进行多语言国际化。
翻译资源
在进行多语言国际化之前,我们需要准备好各种需要被翻译的字符串。这些字符串可以是文本、标签、按钮等等。通常,我们将它们存放在一个 JSON 格式的文件中,这个文件被称为语言包。一个语言包通常由键值对组成,键是原文本,值是对应的翻译文本,如下所示:
{ "hello": "你好", "welcome": "欢迎" }
基础实现
在 Deno 中,可以使用 Deno.readTextFile()
方法来读取语言包文件,代码如下所示:
const langData = await Deno.readTextFile('./lang/zh-CN.json');
接着,我们可以使用 JSON.parse()
方法将语言包文件解析成对象,代码如下所示:
const langObj = JSON.parse(langData);
有了语言包对象之后,我们就可以通过键名来获取对应翻译文本了,代码如下所示:
const translatedText = langObj['welcome'];
构建语言包管理器
我们可以在语言包管理器中封装语言包相关的操作。首先,我们可以创建一个 Language
类,代码如下所示:
-- -------------------- ---- ------- ----- -------- - ------- -------- -------------- -------- --------------------- ------- - ------------ - --------------------- - ------ -------- -------- ------ - ------ ----------------- -- ---- - -
上述代码中,我们利用了 TypeScript 的类型推断功能,将语言包对象的类型声明为 Record<string, string>
,它表示键名和值都是字符串类型的映射。Language
类中,使用了 ??
运算符提供了简单的默认翻译机制,即如果找不到匹配翻译,返回原始键名。
除了默认的获取翻译文本方法之外,我们还可以添加切换语言的方法,代码如下所示:
-- -------------------- ---- ------- ------ ----- --------------- - ------- ------ ------------ ------ - -------- ------- ------ -------- ----------- --------- - --- ------ ------ ------ ----- ------ - ----- ------------- - --------- --------- --- ------ ---- -- -------------- - ----- -------- - ----- ----------------------------------------- ----- ------- - --- ------------------- ---------------------- --------- - - ------ ------ ------------- ------- - -- ------------------------ - ---------------- - ----- - - ------ ------ -------- ------- - ----- - - ----------------------------------- ------ ------------ - -
上述代码中,我们使用了 Map
来存储支持的语言包。在 init()
方法中,我们异步读取所有支持的语言包文件,创建 Language
对象,然后将它们存储在 langMap
中。在 setLang()
方法中,我们可以通过传递语言包的名称来更改当前的语言,如果不存在,则不执行任何操作。在 get()
方法中,我们首先通过 currentLang
获取对应的语言包,然后再调用 get()
方法来获取对应翻译文本。
示例
在使用语言包管理器的时候,我们先需要初始化,代码如下所示:
await LanguageManager.init();
然后,我们可以通过下面的代码来设置当前语言包并获取对应的翻译文本:
LanguageManager.setLang('en-US'); await LanguageManager.get('key');
总结
本文介绍了如何在 Deno 中进行多语言国际化。我们先通过读取语言包文件来获取键值对,然后封装了一个语言包管理器,提供了获取指定翻译文本和语言包切换的方法。这些内容可以使你更加方便地实现多语言支持,让你的应用程序更加国际化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/654ee33e7d4982a6eb7f5664