我目前正在将基于数据库的国际化方法(每个单词在翻译表中有一个条目,实际翻译)的Web应用程序迁移到基于Zend_Translate
和CSV文件的文件。
我需要提供一种最终用户友好的方式来快速轻松地更新这些翻译。理想情况下,为了最大限度地降低破坏内容的风险,用户不会直接编辑CSV文件,而是显示带有字段的漂亮表单。
你知道一个独立的,基于PHP的,最终用户兼容的翻译前端,它支持Zend_Translate
必须提供的一个适配器 - 理想情况下是gettext或csv吗?
像Python的/ Django的Rosetta,但在PHP? Rosetta正是我所需要的:
但出于服务器设置原因,我非常希望继续使用PHP。
SimplePO看起来正朝着正确的方向发展,但过于简单 - 它似乎无法处理多种语言和目录以及复数形式。
答案 0 :(得分:22)
我还没有见过另一个,可能是由于以下原因。尽管它在SimplePO网站上所说的内容,但翻译人员并不喜欢并且通常不会在如上所示的并排翻译系统上工作。
这就是程序员想象翻译人员会如何工作而且存在缺陷。翻译人员使用名为TMX的工具包,翻译记忆库交换(通用名称参见Okapi,一个开源实现来感受它),并在其中构建单词,短语和句子的翻译词典。他们采用不同格式的文件并将其提供给TMX软件,这为他们提供了60%,70%等翻译的第一遍,但是就像目标语言中有意义的谷歌语言API一样可怕。
然后他们所做的就是翻译TMX未处理的词,添加到逻辑词典,并将它们俗称化,即使其在目标语言中工作并理解它。出于这个原因,译者应该始终翻译成他们的母语。
他们这样做是出于多种原因,a)它有意义,有效并减少了他们的工作量b)因为他们通过这个词获得报酬并且做并排翻译不允许他们使用他们的工具并最大化他们的收入。
翻译者想要的是一种格式,您可以导出,他们可以导入和翻译,导出并发送给您进行导入。
文件格式可以是csv,rtf,tmx,xliff,gettext,如果您阅读Symfony框架文档,您可以看到他们是如何做到并处理它的(我认为他们做得非常好)。
大约8年前,当我不得不用英语,法语,德语,匈牙利语和斯洛伐克语写一个网站时,我已经说过一切类似的位置了,我和SimplPO做了同样的事情,只是写了我自己的并排应用程序允许这样做。然而,我们编写申请的公司在内部进行了所有自己的翻译,所以我们没有遇到翻译问题。当我们这样做时,我们写了一个导出到RTF并从RTF导入(这本身就令人难以置信),所以翻译人员可以按上述方式运行。
然而,SimplePO是我所见过的唯一其他实现。像Zend这样的框架似乎认为你只是创建查找标签来替换单词和短语,并且不构建对应用程序的控制来管理进程。因此很快就会失控,维护它变得既困难又昂贵。
撰写多语种网站的大多数人实际上并没有这样做。他们编写一个主站点,然后复制,翻译并维护翻译版本。我们的逻辑类型似乎很笨拙,但实际上非常有效。
它有效的原因之一是i18n和l10n与语言有很多不同之处。
法语和某种程度上德语比同等英语长30%,更冗长,所以你的布局很快就会在手提篮中下地狱。
闪族语言从右向左运行
很抱歉继续并总结: - 为了简单的并排,只需自己写一下,花了我两个星期没有任何框架,并在我使用标签替换时进行处理。但是更多,并考虑你在做什么。小心。
答案 1 :(得分:2)
如果你可以使用gettext文件(Zend_Translate支持它们),你可以尝试POEdit。从版本1.3开始,使用和支持复数形式非常简单。
但是,用户必须下载文件并最终重新上传,因为POEdit不是在线工具。我不知道任何其他基于Web的工具。
答案 2 :(得分:2)
您可以尝试Transtable,一个简单的网络界面,用于编辑php数组中的翻译。