使用 Node.js 和 Express.js 构建多语言 Web 应用程序

阅读时长 4 分钟读完

随着全球化的发展和互联网的普及,越来越多的 Web 应用程序需要支持多种语言。本文介绍如何使用 Node.js 和 Express.js 构建多语言 Web 应用程序。我们将学习如何使用 i18n 模块来实现国际化和本地化。

什么是 i18n

i18n 全称 Internationalization(国际化),是指把 Web 应用程序设计得可以轻松地适应不同的语言和地区的要求。

i18n 模块是一个 Node.js 模块,用于国际化和本地化。它支持从不同语言的 JSON 文件中读取文本,并根据客户端浏览器的语言设置为用户提供正确的文本。i18n 还支持动态添加语言和自定义标记。让我们来看看如何在 Express.js 中使用 i18n 模块。

安装 i18n 模块

使用以下命令在你的 Express.js 项目中安装 i18n 模块:

配置 i18n 模块

在你的 Express.js 项目中,你需要创建一个 ./locales 目录,并将语言文件存放在该目录中。语言文件应命名为语言代码,例如 en.json,zh-CN.json 等。语言文件应包含一个 JSON 对象,该对象的键为文本标记,值为文本值。

例如,en.json 文件可能如下所示:

在你的 Express.js 项目中,你需要配置 i18n 模块以读取语言文件并从客户端浏览器的语言设置提供正确的语言。在你的 ./app.js 或 ./bin/www 文件中添加以下代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ---- - ----------------
----- ------------ - -------------------------
----- --- - ----------

-- -- ---- --
----------------
  -------- ------ --------- -- -----
  ---------- --------- - ----------- -- ---------
  -------------- ----- -- ----
  ------- ----------- -- --- ------ ------
---
------------------------
-------------------

-- --------
-- ---

-- -- ---------- ---
---------------- -- -- -
  ------------------- ------- -- ------------------------
---

这将配置 i18n 模块并在 Express.js 应用程序中启用语言支持。

要从客户端浏览器的语言设置提供正确的语言,你需要在浏览器中设置一个 cookie。在你的应用程序中,你可以添加一个中间件来设置语言 cookie。例如:

-- -------------------- ---- -------
------------- ---- ----- -- -
  -- ------------------ ------ -
  -- --------------- -- ----------------------------------------- --- --- -
    ---------------------- --------------- - ------- ------- --------- ---- ---
    ---------------------
  - ---- -
    -------
  -
---

这将从请求的查询参数中获取语言代码,并将其存储在一个名为 language 的 cookie 中。

在 Express.js 应用程序中使用 i18n 模块

一旦你的 Express.js 应用程序配置了 i18n 模块,你就可以在视图文件中使用该模块来提供正确的文本。在你的视图文件中,你可以使用以下语法来获取正确的文本:

这将从应用程序的语言文件中获取 greeting 标记的文本,然后将其插入到 HTML 中。

你还可以在你的控制器中使用 i18n 模块来获取文本。例如:

这将从应用程序的语言文件中获取 submit 标记的文本,并将其作为 submitText 变量传递给视图。

总结

在本文中,我们介绍了如何使用 Node.js 和 Express.js 构建多语言 Web 应用程序。我们学习到了 i18n 模块的基本用法,以及如何配置 i18n 模块并在 Express.js 应用程序中使用它来提供正确的文本。希望这篇文章对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646829eb968c7c53b0858c66

纠错
反馈