PHP翻译前端类似于Rosetta?

PHP翻译前端类似于Rosetta?,php,zend-framework,internationalization,translation,gettext,Php,Zend Framework,Internationalization,Translation,Gettext,我目前正在将一个web应用程序从基于数据库的国际化方法(每个单词在翻译表中都有一个条目,以及实际的翻译)迁移到基于和CSV文件的方法 我需要提供一种最终用户友好的方式来快速轻松地更新这些翻译。理想情况下,为了最大限度地降低破坏内容的风险,用户不会直接编辑CSV文件,而是显示一个带有字段的漂亮表单 您知道一个独立的、基于PHP的、最终用户兼容的翻译前端,它支持Zend_Translate必须提供的适配器之一,最好是gettext或csv 类似于Python/Django,但使用PHP?罗塞塔正是我

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

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

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

类似于Python/Django,但使用PHP?罗塞塔正是我所需要的:

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


看起来它的方向是正确的,但太简单了——它似乎无法处理多种语言、目录和复数

如果您可以使用gettext文件(Zend_Translate支持它们),您可以尝试一下。自版本1.3以来,它的使用非常简单,并且支持复数形式


然而,用户将不得不下载文件并最终重新加载,因为POEdit不是一个在线工具。我不知道其他任何基于web的工具。

我没有看到其他工具,可能是因为以下原因。尽管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%,更冗长,所以你很快就会陷入地狱

  • 闪米特语从右向左

  • 日语和其他非基于字母的语言可以自上而下运行ltr rtl,有些甚至没有空格
  • 约会?美国、日本、英国、匈牙利各不相同
  • 货币和数字格式,甚至都不要启动我

很抱歉继续并总结一下:-对于简单的边到边只需自己编写,我花了大约两周的时间没有任何框架,并且在我继续使用标签替换的过程中完成了它。但是再想想,你在做什么。小心。

您可以尝试一个简单的web界面,用于在php数组中编辑翻译。

感谢您对翻译的深入了解!并不是所有这些都100%适用于我的情况——所讨论的翻译人员不是专业的软件翻译人员,工作中同样重要的一部分是使网站所有者能够动态地进行文本更改——但这是有价值的信息,对未来非常有帮助。我将看一看SimplePO,所以可能我误解了这个问题。我假设您希望从PHP代码中自动提取和替换文本字符串。是不是Rosetta实际上可以用来解决这个问题,但您的反对意见是它没有在PHP中实现?基于Python的脚本也能处理PHP代码中的文本字符串,这似乎很奇怪。也许问题是您将手工提取文本