我在我参与的许多项目中都成功地使用了 GNU Gettext,但在我最近的工作中,我突然发现自己被迫使用一个非常笨拙的本地化系统。
当前系统将翻译存储在数据库中,添加新的翻译是这样的:
- 将带有翻译键的函数调用添加到源代码中,例如
print translate('foo');
- 向
translations.sql
文件添加一些 SQL INSERT 语句。 - 创建名为
(current revision nr + 1).sql 的文件
- 执行数据库中的.sql文件。
- 提交您的更改(在其他人设法提交并更改当前修订号之前)。
所有这些过程完全是手动的,即使需要更正一个小的拼写错误,您也必须重复几乎所有的过程。不支持复数形式。整个翻译数据库相当困惑,因为翻译几乎从未从中删除 - 只是添加和更新。
我已经尝试了几种论据来说服其他开发人员(尤其是一位特定的开发人员):
- 我谈到了 Gettext 已成为标准,并且有许多工具可用于处理 PO 文件。
- 我试图解释将翻译存储在数据库中与将翻译存储在文本文件中没有任何好处 - 我们只是通过 key 从数据库中检索翻译,仅此而已。
- 另一位开发人员正在开发我们应用程序的 PHP 部分,PHP 内置了 Gettext。我正在开发 JavaScript 方面,它不支持 Gettext,但我过去曾为此构建了自己的工具。
- 我们的应用程序不是很大,即使手动完成从旧系统转换到 Gettext 也会花费大量时间,我很确定它可以轻松实现自动化。
- 我什至在我们公司的一个较小的应用程序中成功使用了 Gettext。
但人们仍然不相信。我可能做错了什么?
编辑:
发布这个问题几个月后,我们现在终于过渡到 Gettext。当我们需要支持两种以上的语言时,我们当前系统的缺点对于那些迄今为止抵制它的人来说变得更加明显。
最佳答案
你做错的是告诉他们如何解决他们认为不存在的问题。
您需要让他们看到这实际上是一个需要解决的问题。
编辑:
很高兴看到你最终到达那里,第二种语言似乎让他们承认了房间里的大象!
关于php - 如何说服其他程序员使用 Gettext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802405/