通常我将字符串与描述它们的关键字相关联,然后将它们存储在结构为id int, id varchar(16), language char(2), string varchar
的数据库表中。然后我根据访问者当前的语言创建一个PHP包装函数来获取每个字符串。
我被告知(并且我认为在某处读到)使用PHP的内置方法来处理国际化。但是我没有找到任何真正“令人信服”的信息,说明为什么它应该比我的数据库方式更合适。
处理国际化网站字符串的最合适方法是什么?为什么?有没有一个我应该总是喜欢它的更好的表现?如果有一个性能更好的话,我会切换到使用它。
答案 0 :(得分:2)
这取决于你的目标是什么。如果您需要网站用户在线更新您的翻译,那么您的数据库方法是可以的。但是,如果翻译由专业翻译人员提供,那么最好将翻译与网站分离。在这种情况下,使用类似gettext的东西是一个更好的主意 - 您将能够发送.po文件进行翻译,然后将其集成回您的网站。
考虑整个过程,管理翻译,管理变更等。
答案 1 :(得分:1)
Gettext似乎通常依赖于每个进程的语言环境设置,它们也依赖于系统安装的语言环境。对于Web应用程序,请考虑使用您自己的数据库实现以及已经指出的一些缓存方法。
答案 2 :(得分:0)
有许多方法可以给猫皮肤。我认为你已经得到了这个建议,因为PHP使用客户端设置来获取默认语言(尽管你可能使用了类似的方法)。无论哪种方式,都必须存储多个字符串。如果你更喜欢db保存那些字符串,那么这是有效的。如果您没有看到任何性能问题,请继续使用它。无需改变自己喜欢的内容。