使用Lingua进行MODX全球化


2018-11-08 08:47:12

MODX是一个基于PHP的开源CMS。它内置支持后端本地化,但不提供开箱即用的前端本地化。 Lingua是一个以在前端显示词典切换器而闻名的软件包。它是为了支持多语言网站。

在这篇博客中,我将说明Lingua的工作原理。

Lingua的背景

有几个额外的或包,是为MODX提供本地化而开发的 ,最受欢迎的是Babel。Babel的问题在于它需要每种语言的上下文,其中每种语言都可以复制资源。

虽然此过程在某些情况下可能会有所帮助,但对于具有许多资源和多语言实现的大型CMS来说,这是一个漫长且难以维护的过程。为了估计使用上下文实现翻译需要多少工作,请将CMS中可翻译资源(资源和模板变量)的数量乘以目标语言的数量。

使用Lingua进行MODX全球化

Lingua通过实现自己的翻译表来避免上下文。Lingua基于翻译包,但由于翻译仍处于测试阶段,因此Lingua的方向不同。

Lingua如何工作

如果您实现了资源的多个翻译,那么您需要在前端使用语言切换器。

为了能够使用Lingua,您需要:

  1. 在上下文设置中添加一个设置:

    1. modRequest.class=> LinguaRequest

  2. 提供Lingua自定义管理器页面,供您选择将使用的语言(翻译)。

MODX全球化使用Lingua  -  1

Lingua有自己的一组预定义语言,但您可以根据需要添加任何语言。

  1. 要使切换器显示在前端,必须使用Lingua.selector来显示词典切换器。

MODX全球化使用Lingua  -  2

  1. Lingua克隆资源内容和所有已定义的模板变量(TV),但不支持在本文档中提到的MODX TV数据库中创建的自定义电视 。因此,该过程归结为从CMP提供每个资源的转换。

MODX全球化使用Lingua  -  3

  1. 除了与上下文混合外,Lingua还将翻译保存在自己的Lingua表中,其中站点内容和模板变量被翻译成目标语言。

MODX全球化使用Lingua  -  4

上图中概述的部分包含网站内容和模板变量的翻译值,因此不将可翻译元素嵌入到片段中的块或硬代码字符串中非常重要,因为它们不会被翻译。Lingua目前不支持可翻译块。

结论

MODX全球化和本地化可以通过多种方式实施,最适合您的是基于您的需求。对于采用MODX官方开发最佳实践的中型到大型CMS,Lingua会派上用场。