同时使用gettext和数据库驱动的翻译

时间:2013-06-06 23:34:48

标签: php mysql database internationalization gettext

我目前正在开发一个PHP网站,我决定选择gettext来管理翻译。我设置了一个很好的Pootle服务器,以便我可以轻松管理翻译和一个运行cron的bash脚本,该脚本从要翻译的PHP文件中提取所有值并创建.pot翻译模板文件。

到目前为止,这么好。但是,我只记得网站文本的一部分存储在数据库中。为简单起见,我们称之为“产品”。我希望产品描述,名称和其他一些字段可以翻译,但如果我可以有一个集中的方式来翻译它们而不必创建一个单独的接口来翻译数据库条目,那将是很好的。由于Pootle已经设置好了,能够使用它会很好。

我想到了两个解决方案:

  1. 忘记使用数据库并仅使用PHP数组
  2. 编写一个脚本,该脚本将从数据库中提取所有值并生成一个文件,然后由上述bash脚本扫描并将值添加到pot文件,另一个脚本将仅运行在bash脚本之后重新更新数据库中的所有值。
  3. 这些解决方案似乎都不是理想的。第一个很容易设置并且易于使用Pootle,但是我失去了使用DBMS所带来的所有灵活性,每次我想使用它时我都必须导入整个数组。功能损失并不是那么糟糕,因为我(目前)没有对行执行任何高级计算,基本上只是SELECT s而且就是这样。第二个可以工作,但需要更多的计划(和编码)才能正确设置。

    我是否还有其他任何方式可以让我获得数据库的灵活性,但允许我轻松地将其与网站的其他部分一起集中转换,例如Pootle?

1 个答案:

答案 0 :(得分:0)

您可以直接从数据库生成pot / po文件,然后将它们提供给Pootle。然后,您就可以直接对从数据库返回的值使用gettext函数。

例如,您可以查看phpMyAdmin,我们使用similar approach翻译structured text file