做多语言站点,成为很多企业的需要。
多语言的功能,设计到内容的多语言,和网页界面的多语言;
内容多语言的设计,可以通过在表内加入lang字段,发布内容时选择对应语言,进行针对不同语言的内容编辑和录入;
网页界面的文本进行多语言翻译。可以采用语言包的方式。thinkphp的语言包功能基础上进行修改;
修改方案:
实现目标: 网页中 采用英文为第一语言,其他语言根据英语进行翻译;
网页中,尽可能是所见即所得的。例如 网页上有个文本内容:“Please open the door”,那么在网页代码中应该实现是
lang('Please open the door');
函数就能输出对应语言文本;
在中文语言包里面:
'Please open the door'=>'请打开门',
英文语言包里面:
'Please open the door'=>'Please open the door',
这是我的构想。
但是,最近在项目中,另外的同事觉得应该给每个语言文本进行一个key键值的编码:
他们担心,直接英文字符串当做 键值,可能有意向不到问题;
所以他们觉得上面的 语言包结构应该这样:
lang('please_open_the_door');
//中文语言:
'please_open_the_door'=>'请打开门',
//英文语言:
'please_open_the_door'=>'Please open the door',
如果设计成这样,那么在前端的模板中,将无办法对应找到网页显示出来的文本。
每次修改时都去数据库查找
'Please open the door'
到底是对应到哪个键值,更关键是 取键值的时候,怎么保证不重复?
而且,对同一个英文字符串,要是采用了不一样的 键值对应,会不会出现冗余;
好吧,这就是我对多语言的思考,个人觉得 直白的 第一种方案更加好用;
如果您有其他方案,可以加入一起讨论吧,