PHP翻译前端类似于Rosetta?

PHP translation frontend similar to Rosetta?

提问人:Pekka 提问时间:6/5/2011 最后编辑:Pekka 更新时间:5/18/2013 访问量:2421

问:

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

我需要提供一种最终用户友好的方式来快速轻松地更新这些翻译。理想情况下,为了最大限度地降低破坏内容的风险,用户不会直接编辑 CSV 文件,而是会看到一个带有字段的漂亮表单。

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

类似于 Python 的 / Django 的 Rosetta,但在 PHP 中?罗塞塔完全符合我的需求:

enter image description here

但出于服务器设置的原因,我非常想在这里使用 PHP。

SimplePO 看起来正朝着正确的方向发展,但太简单了——它似乎无法处理多种语言和目录以及复数形式。

php zend-framework 国际化 翻译 gettext

评论

0赞 Ira Baxter 6/30/2011
所以也许我误解了这个问题。我假设您想从 PHP 代码中自动提取和替换文字字符串。Rosetta 是否真的可以用来解决问题,但您的反对意见是它没有在 PHP 中实现?基于 Python 的人也可以处理 PHP 代码中的文字字符串,这似乎很奇怪。也许问题在于您将手动提取感兴趣的文字并修改 PHP 代码以访问翻译,而您想要的只是翻译管理部分?如果是这样的话,PHP程序不是相对容易吗?
0赞 Pekka 6/30/2011
@Ira PHP 而不是 Python 的论点是,我正在将大量部署到后者不可用的平台上,并且要求能够即时更改翻译。自己滚动确实相对容易,但我想知道是否有现成的产品已经完成了这项工作。
0赞 Ira Baxter 6/30/2011
确实,我误会了。我仍然不明白 Rosetta 如何处理 PHP 部分,但我会把它当作诗意的许可。我已经撤回了我的答案。
0赞 Adrian World 7/3/2011
不知何故,我感觉到你已经选择了 Zend_Translate 和 CSV(或 gettext?您现在需要的是一种编辑 CSV(或 gettext)数据的方法?
0赞 Pekka 7/5/2011
@Adrian没错!哪一个都没关系,我可以接受两种格式。

答:

2赞 Marc Demierre 6/5/2011 #1

如果你可以使用gettext文件(Zend_Translate支持它们),你可以尝试一下POEdit。它使用起来非常简单,并且从 1.3 版开始支持复数形式。

但是,用户最终必须下载文件并重新上传,因为 POEdit 不是在线工具。我不知道任何其他基于网络的工具。

22赞 PurplePilot 6/6/2011 #2

我没有见过另一个,可能是出于以下原因。尽管 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,有些甚至没有空格
  • 日期?美国、日本、英国、匈牙利都不同
  • 货币和数字格式,甚至不要开始我

很抱歉继续总结一下:- 对于简单的并排,只需自己编写即可,我花了大约两周的时间,没有任何框架,并在我进行时使用它,只需使用标签替换即可。但再多想想你在做什么。仔细。

评论

1赞 Pekka 6/7/2011
感谢您对翻译的深刻见解!在我的情况下,并非所有内容都 100% 适用 - 有问题的翻译人员不是专业的软件翻译人员,工作中同样重要的部分是使网站所有者能够即时进行文本更改 - 但这是有价值的信息,并且很高兴知道未来。我将看看 SimplePO。
2赞 user570605 5/18/2013 #3

您可以尝试 Transtable,这是一个用于编辑 php 数组中翻译的简单 Web 集成。