随着互联网的发展,越来越多的企业需要在全球范围内经营业务,因此多语言站点变得越来越重要。然而,构建一个高质量且易于管理的多语言站点并不容易,需要考虑实现的复杂性和更新内容的成本。本文将探讨如何利用 Headless CMS(无头内容管理系统)快速构建多语言站点,其中涵盖了深度的学习和指导意义,并提供了示例代码。
什么是 Headless CMS
传统的 CMS 在设计上具有内置的前端,即传统的网站将所有内容和页面都存储在一个系统中。与之相反,Headless CMS(无头内容管理系统)将内容管理和前端设计分离,意味着 CMS 负责存储和管理原始内容,而前端工程师要设计和构建与 CMS 交互的用户界面。
Headless CMS 的主要优点包括内容管理的灵活性和多语言站点的支持。Headless CMS 不提供内置的前端,因此开发人员可以在其代码库中自由地设计和构建前端。此外,Headless CMS 实现多语言站点也十分简单,每种语言一组字符串存储在 CMS 数据库中,接着可查看并读取这些字符串并在任何语言的前端中渲染出来。
如何创建一个多语言站点
以下基于 WordPress 将介绍 Headless CMS 的创建步骤,同时我们将以 React 为例构建前端。
步骤一:建立 WordPress 网站
在此我们使用 WordPress 作为本次项目的 Headless CMS。若您已有现成 WordPress 网站,则可直接进行下一步。如果您尚未完成创建,请在虚拟机或 Web 服务器上建立 WordPress 网站。
步骤二:安装 WordPress 插件
WordPress 插件是用于添加额外功能的软件,可将多语言支持添加到您的 WordPress 网站。在此我们推荐 WPML 插件,它是一个非常流行且功能强大的多语言插件。可以从 https://wpml.org 下载并安装。
平常使用本地调试的话,可以在 http://exmple.wordpress.test/
地址中安装插件并生成多个语言的内容,如下
步骤三:创建 React 应用程序
为了连接 Headless CMS 和前端,需要在 React 中创建应用程序。你可以按照自己的喜好使用 Create React App 或其他框架。项目文件夹创建完成后,必须将下列功能包添加到项目中以使 React 更加有用。
npm install axios i18next i18next-browser-languagedetector i18next-http-backend react-i18next
步骤四:配置项目环境
在接下来的过程中,我们需要使用 WPML 处理多语言站点的翻译。同时必须引入 i18next 库,以便在 React 中跨各种语言使用字符串。我们可以在根目录下创建配置文件与 WordPress 的 API 发起请求:
-- -------------------- ---- ------- --------- ------ ---- ---- ---------- ------ - ---------------- - ---- ---------------- ------ ------- ---- ----------------------- ------ ---------------- ---- ----------------------------------- ---- ------------- ---------------------- ---------------------- ------- -------------- ------ ----- ------ ------------ ----- ------ ----- ---------- - ------ --------------- ---------- ------ ----------- -- -------- - --------- --------------------------------------------------------------------- -- --- ------ ------- -----
-- -------------------- ---- ------- ----------- ----- ------- - ------------------- ----- ---- - ---------------- ----- ----- - ----------------- ----- ----------------- - -------------------------------------- ----- ------- - ---------------------- ----- --- - ---------- ----------------------------------------- - ------------- --------- ---- ------------------------------------------- ----------- -------------------- ----- ----- ---- -- - ----- - --- - - ------------- ----- - ----- ---- - - ----- ------------------------------------------------------------------------------------- ----- - ----- ---- - - ----- ------------------------------------------------------------------------------------------ ----- - ----- ----- - - ----- --------------------------------------------------------------- ----- - ----- ------------ - - ----- ------------------------------------------------------------------------------- ---------- ----- ----- ------ ------------ --- --- ----------------- ----- ---- -- - ---------------------- ------ ---- ------ --- --- ------------ ----- ---- -- - --------------------------------- --------------------- --- ---------------------- -- ----------------- -----------------
步骤五:使用 i18next 和 WPML 创建多语言站点
在创建 React 应用程序时,我们需要使用 i18next 和 WPML 从 Headless CMS 中获取多语言站点数据。 WPML 必须配置以支持所有站点语言,并在获取时使用 i18next。
-- -------------------- ---- ------- ------------ ------ ------ - --------- - ---- -------- ------ - -------------- - ---- ---------------- ------ ----- ---- -------- ------ ------ ---- -------------------- ------ ---- ---- --------- ----- ----- - ------------------ -- -- -------------- -------- ------ ----- ----------- - ----------------- -- -- -------------- -------------- ------ ----- ---------- - ----------- -------- ----- - - ------------- ----- - -- -------- ----- - ----- - ---- - - ----------------- ------------ -- - ----------------------------------------------- ---- -- -------- ------------ -- - ----- --------- - ----- -- -- - ----- - ---- - - ----- ----------------------- ----- - ----- ----- ------ ------------ - - ----- ------------------ ------------- -------------- ------------------------------ -- ---------------------------------- ----------------- ----------- ---------------- ------------------- ------ ------------------- ------ -------------------- ------- -- ------------ -- -------- ------ - ----- ------------ -- ----------------- -- -------------------- -- -------------------- ------------- --------------------------- --------------------------------------------- ------ -- - ------ ------- ----
步骤六:实现语言切换
现在已经实现了多语言站点,并使用 WPML 插件在 WordPress 中配置了所需的语言。因此,可以将其他语言添加到 CMS 并在 React 前端中进行调用。 但是,我们还需要使用户能够轻松地随时更改当前站点的语言。 这可以通过 i18next-react-languagedetector 库轻松实现。
以下例子中,我将创建一个允许用户切换语言并将新语言应用于当前页面的组件。首先,需要使用 useTranslation 钩子获取当前语言和翻译函数。
-- -------------------- ---- ------- ------------ ------ - -------------- - ---- ---------------- ------ ---------------- ---- ----------------------------------- -------- ----- - ----- - -- ---- - - ----------------- ------ - ----- ------- ----------- -- ----------------------------- ----------------------------- ------- ----------- -- ----------------------------- ----------------------------- ------- ----------- -- ----------------------------- ----------------------------- ------ -- - ------ ------- ----
结论
本文提供了一个从头开始构建多语言站点的指南,重点介绍了利用 Headless CMS 的优势和 WPML 实现语言翻译的过程。同时我们还提供了示例代码以方便读者更好的理解它们的实际应用。总之,Headless CMS 构建多语言站点的方法可以简单有效地解决很多问题,让您节省时间从而可以更专注于前端设计。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670be0c866ef9cf37facd1e9