这里是文章模块栏目内容页
thinkphp全站多语言的设计方案探讨

做多语言站点,成为很多企业的需要。

多语言的功能,设计到内容的多语言,和网页界面的多语言;

内容多语言的设计,可以通过在表内加入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'

到底是对应到哪个键值,更关键是 取键值的时候,怎么保证不重复?

而且,对同一个英文字符串,要是采用了不一样的 键值对应,会不会出现冗余;


好吧,这就是我对多语言的思考,个人觉得 直白的 第一种方案更加好用;

如果您有其他方案,可以加入一起讨论吧,