本地化现有的PHP应用程序

时间:2011-07-12 00:18:13

标签: php internationalization locale

我有一个现有的,数据库驱动的PHP应用程序,大约有40页打印一个未知(但相当大)的英文字符串。这些字符串目前都是硬编码的。还有一组静态文档页面。我现在需要为此应用程序添加语言支持。

据我所知,gettext似乎是这个问题的标准解决方案,但gettext对我来说非常像一个“黑客”。我也不确定它会导致额外的开销(包括开发和运行时)。是否有其他解决方案或框架可以更好地满足我的要求?在开始这个项目时我应该注意哪些最佳实践或陷阱?

1 个答案:

答案 0 :(得分:2)

gettext是多语言文本存储的“标准”,但最终它只是一个存储引擎。它没有将正确的文本放入您的页面。您需要从View中抽象出文本,以便插入正确的文本。

最后,您需要一种方法将语言文本放在文档中。这意味着以某种方式“标记”文本,以便可以使用所需的语言文本进行搜索和替换。对于我管理的电子商务网站(3种语言),我使用了从Facebook FBML标记系统派生的技术。

您可以将文字换成“标签”<trans id="slt">something like this</trans>。然后使用PHP中的DOM工具提取ID,根据id查找翻译的文本,用适当的语言文本替换标记之间的内容。您仍然可以将gettext用于存储机制或数据库。您的浏览器将忽略这些标记,因此您的页面在开发过程中仍然可以正常显示。

这只是一个标记示例。您可以使用任何标记机制,并使用grep来提取,搜索和替换。

对于静态页面,您可以预先生成已翻译的版本并加载相应的语言版本。这样就不会有不同语言的额外开销。