类似 Rosetta 的 PHP 前端翻译工具?

26

我目前正在将一个基于数据库的国际化方法(每个单词在翻译表中都有一个条目和实际翻译)迁移到基于Zend_Translate和CSV文件的方法。

我需要提供一种用户友好的方式来快速轻松地更新这些翻译。理想情况下,为了最小化出错的风险,用户不会直接编辑CSV文件,而是会显示一个带有字段的漂亮表单。

您是否知道一个独立的、基于PHP的、与终端用户兼容的翻译前端,支持Zend_Translate所提供的适配器之一-最好是gettext或csv?

类似于Python/Django的Rosetta,但是用PHP? Rosetta正是我所需要的:

enter image description here

但出于服务器设置原因,我希望继续使用PHP。SimplePO 看起来是朝着正确的方向发展,但它太简单了 - 似乎无法处理多种语言和目录以及复数形式。

也许我误解了问题。我假设您想要自动提取和替换PHP代码中的文字字符串。是这样吗?Rosetta实际上可以用来解决这个问题,但您的反对意见是它没有在PHP中实现?一个基于Python的工具可以处理PHP代码中的文字字符串似乎有些奇怪。也许问题在于您将手动提取感兴趣的文字,并修改PHP代码以访问翻译,而您想要的只是翻译管理部分?如果是这样,那么编写一个PHP程序来完成这个任务会相对容易,不是吗? - Ira Baxter
@Ira,选择PHP而不是Python的原因是我要部署到许多平台上,而后者并不可用,并且要求能够随时更改翻译。自己开发一个相对容易,但我想知道是否有现成的产品可以完成这项工作。 - Pekka
确实,我误解了。我仍然不明白Rosetta如何处理PHP部分,但我会把它当作诗意的许可。我已经撤回了我的答案。 - Ira Baxter
我感觉你已经选择了Zend_Translate和CSV(或gettext?)。现在你需要的是一种编辑CSV(或gettext)数据的方法? - Adrian World
@Adrian 确实如此!哪种都无所谓,我可以接受两种格式。 - Pekka
@Pekka:是什么阻止你编写一个专门用于CSV的小表单(使用Zend)?我猜它将比调整任何现有解决方案更快地集成到您的应用程序中。 - Adrian World
3个回答

22

我没有看到过另一个这样的翻译系统,可能是因为以下原因。尽管SimplePO网站上写着的不一样,但翻译人员不喜欢并且通常不会使用如上所示的并排翻译系统。

这就是程序员想象中翻译人员的工作方式,但这是有缺陷的。翻译人员使用一个称为TMX(Translation Memory Exchange)的工具包(通用名称,请参见开源实现Okapi以了解其感觉),在其中建立单词、短语和句子的翻译字典。然后,他们将各种格式的文件输入到TMX软件中,这给他们提供了第一遍翻译,翻译率为60%、70%等,但像Google语言API一样,在目标语言中难以理解。

然后,他们翻译未被TMX处理的单词,并在逻辑上添加到字典中,并使其口语化,即使其在目标语言中起作用并有意义。因此,翻译人员应始终将其翻译成母语。

他们之所以这样做,有很多原因:a)这是有道理的,有效的,可以减轻他们的工作量;b)因为他们按单词计费,而并排翻译不允许他们使用工具并最大化收入。

翻译相关的内容:译者想要的是一个可以导出、他们可以导入和翻译、再导出并发送回您进行导入的文件格式。
文件格式可以是csv、rtf、tmx、xliff、gettext,如果您阅读Symfony框架文档,您可以看到他们如何处理它(在我看来,他们做得相当不错)。
话虽如此,大约8年前,当我需要用英语、法语、德语、匈牙利语和斯洛伐克语编写网站时,我处于类似的位置,我和SimplPO一样,只是编写了自己的并排应用程序来完成这项工作。然而,我们为应用程序编写的公司都是自己内部进行翻译的,所以我们没有遇到与翻译人员有关的问题。当我们遇到问题时,我们编写了一个RTF导出和导入(这本身就令人费解),以便翻译人员可以像上面那样工作。
然而,SimplePO是我见过的唯一其他实现这个想法的东西。像Zend这样的框架似乎认为你只需创建查找标记来替换单词和短语,并且不会在应用程序中构建任何控件来管理该过程。因此,它很快失控,维护它变得既困难又昂贵。

大多数编写多语言网站的人实际上并没有这样做。他们编写一个主站点,然后复制它,翻译它并维护翻译版本。对于我们这些逻辑类型来说,这似乎很笨拙,但实际上非常有效。

它有效的原因之一是i18n和l10n涉及的不仅仅是语言。

  • 外观和感觉。盎格鲁-撒克逊人喜欢酷色调和无衬线字体,西班牙裔人喜欢衬线字体和更亮的颜色。随着你穿越其他文化,期望在布局、类型、颜色等方面变化巨大。
  • 法语和在某种程度上德语比英语等效语言长30%,所以你的布局会很快崩溃。

  • 闪族语言从右到左运行

  • 日语和其他非基于字母的语言可以从左到右、从右到左、从上到下运行,有些甚至没有空白
  • 日期?美国、日本、英国、匈牙利都不同
  • 货币和数字格式,别让我开始

很抱歉继续说下去并总结一下:对于简单的侧边栏,只需自己编写代码即可,没有任何框架,按照自己的想法进行标签替换,大约需要两周时间。但是如果需要更多功能,请仔细考虑你正在做什么。


1
感谢您对翻译的深入洞察!并非所有内容都完全适用于我的情况——所涉及的翻译人员并非专业软件翻译人员,而同样重要的工作部分是使网站所有者能够随时进行文本更改。但这是有价值的信息,对未来非常有帮助。我将查看SimplePO。 - Pekka

2
如果你使用gettext文件(Zend_Translate支持它们),你可以试试POEdit。它非常容易使用并支持复数形式,从1.3版本开始。
然而,用户最终需要下载这些文件并重新上传,因为POEdit不是在线工具。我不知道其他基于Web的工具。

2
您可以尝试使用Transtable,这是一个简单的Web界面,用于编辑php数组中的翻译内容。 点击此处了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接