如何将预先存在的 Web 应用转换为多语言应用?

2022-08-30 18:30:11

我将从事一个项目,其中需要调整一个相当大的Web应用程序以处理多种语言。这个东西是用手工制作的PHP代码运行的,但它很干净。

我想知道最好的方法是什么?

  1. 我自己做一些东西,试图适应实际的架构。

  2. 使用一个框架(例如,Symfony)重写它的很大一部分,这将为我管理i18n?

对于选项 1,我应该在哪里存储 i18n 数据?*.po, xliff, pure DB?

我想到了另一种选择:仅使用Symfony进行翻译,但将控制器设置为按原样加载网站。很快,但很脏。另一方面,它允许我们进行下一次修改,慢慢地移动到完整的Symfony:这个网站确实是一个很好的候选者。

但也许有一些独立的翻译引擎可以比整个Web框架更好地完成这项工作。这有点像用火箭筒杀死一只苍蝇......


答案 1

使用语言文件。

  1. 将每个文本字符串替换为变量
  2. 每种语言创建一个语言文件,并在其中定义每个变量及其相应的文本。(French.inc, dutch.inc ...)
  3. 在每个页面中包含正确的文件。

这是针对小型网站的。

如果变大,请用数据库替换文件。:)


答案 2

有许多方法可以解决这个问题。他们都不是“最好的方法”,他们都在短期或长期内都有问题。首先要说的是,多语言网站并不容易,翻译人员和可爱的人,但很难与之合作,大多数程序员认为问题只是一个技术问题。在这个答案的范围之外,还有另一个维度,即你是翻译还是本地化。这包括查看目标受众的文化习俗,然后根据该文化定制语言,风格,布局,颜色,字体等。最后,不要将机器翻译(机器翻译)用于任何严重的事情,或者是否需要准确,并且在获取翻译人员时,请确保他们将从外语翻译成母语,这意味着他们了解目标语言的所有细微差别。

右。解决 方案。在您不想重写站点的基础上,只需克隆您拥有的站点并将副本翻译为目标语言即可。假设代码库是稳定的,则可以使用 VCS 来管理任何代码更改。您可以调整网站的各个部分以适应目标语言,例如法语文本平均比等效的英语文本大30%,因此使用一个网站来交付这意味着您可能(将)遇到格式问题,并且需要根据语言交换不同的css文件。这似乎是一种笨拙的方式,但是这些网站将存在多长时间?以这种方式执行此操作的管理开销可能比其他选项要少。

第二种方式无需重建。用标签替换当前网站中的所有内容,然后将不同的语言放在文件或数据库表中,嗅探用户所需的语言(您是否有可以进行首选项的注册用户,或者您是否想要获取浏览器语言标签,或者它将是URL dot-com dot-fr,dot-de做出选择),然后将标签替换为目标语言。然后,您需要分别解决大小问题和图像问题。当像Symfony和Zend这样的框架来实现l10n时,这个解决方案就生效了。

然后,您可以使用框架或gettext进行重新构建,并且可能有一个更干净的解决方案,但请记住,框架旨在解决其他问题,而不是翻译,并且翻译组件已作为部分解决方案而不是完整解决方案进入框架。

所有解决方案的最大问题是持续维护。因为您不仅有一个代码库,而且还需要维护多个语言库。除非你们在一个解决方案中真正聪明和有效,否则正在进行的任务将是困难的。


推荐