npm 包 @gandi/react-translate 使用教程

阅读时长 7 分钟读完

随着 Web 应用的复杂性不断增加,国际化变得越来越必要。在 React 项目中,一个好用的翻译框架是必不可少的。本文介绍了一种使用 npm 包 @gandi/react-translate 进行多语言翻译的方法,以及一些最佳实践。

@gandi/react-translate 入门

@gandi/react-translate 是一个 React 的 npm 包,可以帮助开发者实现多语言翻译。首先,需要使用 npm 安装该包:

安装好之后,在应用程序的顶层组件中(比如说 App.js),导入翻译封装:

然后,我们可以包装 App 组件,并向其传递一个配置对象(见下方示例):

在这个例子中,我们将应用程序的默认语言设置为英语,使用 resources 对象指定其他语言的翻译。resources 对象的结构如下所示:

在组件中使用翻译,只需要在要翻译的文本上套一个 “t” 标签,并指定翻译的 key:

最后在应用程序中引入 TranslatableStrings 组件(在上述示例中,我们可以在 App.js 组件中导入该组件):

实现语言切换

为了使用户可以切换语言,我们可以使用一个 Select 组件,让用户选择他们想要使用的语言。此外,还需要在应用程序中存储当前选择的语言。我们来看看示例代码:

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

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

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

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

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

在上述示例中,我们使用 useState 钩子函数来存储当前的语言选择,选择的语言将传递到 TranslateProvider 组件中的 currentLanguage 属性。将 TranslatableStrings 组件作为 TranslateProvider 的子组件包含在内,以确保翻译组件知道有哪些文本需要翻译。

翻译 React 组件

有时候,我们可能需要在 React 组件中进行翻译。例如,在下面的示例中,我们有一个 LandingPage 组件,该组件包含一个特殊的翻译标签,用于在应用程序的顶部显示欢迎消息:

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

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

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

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

我们可以定义在应用程序中使用的所有字典翻译,以及包含特殊翻译标记的组件。在此之后,我们可以使用 Trans tag 渲染所有翻译文本。以下是此解决方案的代码示例:

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

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

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

在上面的代码片段中,我们在应用程序的根组件中定义了翻译字典。我们还在按钮元素中提供了切换语言的选项。最后,我们向 TranslateProvider 组件传递了当前所选语言,并在 LandingPage 组件中应用了翻译标记(即使用 Trans tag 渲染所有翻译文本)。

最佳实践

最后,我们来看看使用 @gandi/react-translate 的最佳实践:

  1. 传递资源对象时,请将默认语言作为 “defaultLanguage” 配置中的一个属性传递,以确保您的应用程序始终显示某种语言的文本。

  2. 始终考虑标记翻译内容,以便更轻松地进行管理和编辑。

  3. 如果您的应用程序需要通过服务器动态生成翻译内容,请在服务器端使用 @gandi/slang 进行国际化处理。

  4. 如果您的应用程序包含许多翻译内容,请使用 .json 文件来组织翻译资源。

总之,@gandi/react-translate 是一个实用的多语言翻译解决方案,为开发人员提供了一种方便的方式来管理和实现 Web 应用程序的多语言支持。我们希望这个教程对您有帮助!

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