PHP-将i18n添加到Web应用程序的最佳方法是什么?

我正在寻求i18n大小的网络应用程序.该站点将不断变化:将重写文本,添加新内容等.该Web应用程序是用PHP编写的,但适用于任何语言.

基本上我想要:

1)代码易于阅读和维护
2)当新的内容用英语添加或英语更改时,将向翻译人员发送电子邮件
3)知道某事是否是最新的.
4)译者能够在线更新内容

我想最好的主意是将所有内容存储在数据库中,并以比PO文件和gettext更好的方式进行处理.但是最好的方法是什么:

$lang(‘contactus’)的缺点是不可读(按代码编写),并且开发速度较慢(因为所有英语都需要提供唯一的密钥并存储在数据库中)

$lang(‘请与我们联系以获取更多信息’)可读性强,速度更快,但是如果英语发生更改(打字,语法编辑,更新),则翻译会完全消失.

其他应用程序/框架如何处理?

解决方法:

避免将需要翻译的字符串存储在数据库中.自己做了,并对此感到后悔.使用可以发送给翻译者的外部文件.使用首选语言的字符串作为键.因此,以您的示例为例,$lang(‘更多信息请联系我们’).英文文本的更改可能意味着翻译的相应更改,是的,这是一个维护难题.

此外,它还有更多的功能,而不仅仅是字符串翻译.有货币符号和格式,数字格式(十进制,数字分组符号,出现符号的地方)以及日期格式.名称格式-在某些语言环境中,人们通常使用其他人通常没有的中间名.文本阅读从左到右,从右到左.啊.

对于Web应用程序,有时将网页分成语言区域目录并以这种方式处理要简单得多.您确实将所有业务逻辑与视图代码分开了吗?这就是将业务逻辑直接嵌入html ala的地方,典型的PHP方法真正开始受到伤害.

上一篇:如何在php中从IDN编码和解码URL?


下一篇:spring-JSP自定义标记中的i18n翻译