提问人:Pekka 提问时间:6/5/2011 最后编辑:Pekka 更新时间:5/18/2013 访问量:2421
PHP翻译前端类似于Rosetta?
PHP translation frontend similar to Rosetta?
问:
我目前正在将一个 Web 应用程序从基于数据库的国际化方法(每个单词在翻译表中都有一个条目,以及实际翻译)迁移到基于 Zend_Translate
和 CSV 文件的方法。
我需要提供一种最终用户友好的方式来快速轻松地更新这些翻译。理想情况下,为了最大限度地降低破坏内容的风险,用户不会直接编辑 CSV 文件,而是会看到一个带有字段的漂亮表单。
您是否知道一个独立的、基于 PHP 的、最终用户兼容的翻译前端,它支持必须提供的适配器之一 - 最好是 gettext 或 csv?Zend_Translate
类似于 Python 的 / Django 的 Rosetta,但在 PHP 中?罗塞塔完全符合我的需求:
但出于服务器设置的原因,我非常想在这里使用 PHP。
SimplePO 看起来正朝着正确的方向发展,但太简单了——它似乎无法处理多种语言和目录以及复数形式。
答:
如果你可以使用gettext文件(Zend_Translate支持它们),你可以尝试一下POEdit。它使用起来非常简单,并且从 1.3 版开始支持复数形式。
但是,用户最终必须下载文件并重新上传,因为 POEdit 不是在线工具。我不知道任何其他基于网络的工具。
我没有见过另一个,可能是出于以下原因。尽管 SimplePO 网站上有这样的说法,但翻译人员不喜欢并且通常不会在并排翻译系统上工作,如上所示。
这就是程序员想象翻译器的工作方式,这是有缺陷的。翻译人员使用一个名为 TMX 的工具包,即翻译记忆库交换(通用名称,请参阅 Okapi 开源实现以了解它),并在其中为单词、短语和句子构建翻译词典。他们获取不同格式的文件并将其输入 TMX 软件,这为他们提供了 60%、70% 等翻译的第一遍,但就像 Google 语言 API 一样,在目标语言中的意义方面严重受损。
然后他们所做的是翻译 TMX 未处理的单词,将逻辑添加到词典中,并将其口语化,即使其在目标语言中工作并理解它。因此,译者应始终将其翻译成他们的母语。
他们这样做的原因有很多,a)它有意义,有效并减少了他们的工作量,b)因为他们按单词获得报酬,并且并排翻译不允许他们使用他们的工具并最大化他们的收入。
翻译人员想要的是您可以导出的格式的文件,他们可以导入和翻译、导出并发送回您导入。
文件格式可以是 csv、rtf、tmx、xliff、gettext,如果你阅读了 Symfony 框架文档,你可以看到他们是如何做到的和处理的(在我看来,他们做得很好)。
话虽如此,大约 8 年前,当不得不用英语、法语、德语、匈牙利语和斯洛伐克语编写网站时,我处于类似的位置,我做了与 SimplPO 相同的操作,只是编写了我自己的并排应用程序以允许这样做。但是,我们为其编写应用程序的公司内部进行了所有自己的翻译,因此我们没有遇到翻译人员的问题。当我们这样做时,我们编写了 export to RTF 和 import from RTF(这本身就令人难以置信),因此翻译器可以如上所述运行。
但是,SimplePO 是我见过的唯一其他想法实现。像 Zend 这样的框架似乎认为你只是创建查找标签来替换单词和短语,而没有在应用程序中构建控制来管理流程。因此,它很快就会失控,维护它变得既困难又昂贵。
大多数编写多语言网站的人实际上并没有。他们编写一个主网站,然后制作副本,翻译并维护翻译版本。对于我们逻辑类型来说,这似乎很笨拙,但实际上非常有效。
它有效的原因之一是 i18n 和 l10n 与语言以外的许多其他事情有关。
- 外观和感觉。盎格鲁撒克逊人喜欢冷色和圣衬线字体,西班牙裔人喜欢衬线字体和更明亮的颜色。当您跨越其他文化时,对布局、类型、颜色等的期望差异很大。
法语和某种程度上的德语比同等的英语长 30%,更冗长,因此您的布局很快就会在手篮中进入地狱。
闪米特语从右到左
- 日语和其他不基于字母的语言可以从上到下运行 ltr rtl,有些甚至没有空格
- 日期?美国、日本、英国、匈牙利都不同
- 货币和数字格式,甚至不要开始我
很抱歉继续总结一下:- 对于简单的并排,只需自己编写即可,我花了大约两周的时间,没有任何框架,并在我进行时使用它,只需使用标签替换即可。但再多想想你在做什么。仔细。
评论
您可以尝试 Transtable,这是一个用于编辑 php 数组中翻译的简单 Web 集成。
评论