当前位置:首页 > 新闻动态 > 网站文章

网站国际化(多语言切换)

来源: 浏览:231 时间:2023-08-10

项目上很好的东西一直没有总结,今天抽空整理一下,以便不时之需。

web项目要实现多语言,这个功能需求很常见,一般的都会有中英文两种版本。

先说一下本项目的情况:本项目是基于zend framework的一个项目,在本项目中用到了两种国际化方案:

1.在js中实现国际化(主要针对ajax异步请求获取的数据,需要翻译的时候使用).

2.在PHP中实现国际化(主要针对项目的模板页面上的翻译数据).

下面我们先看一看js实现的部分:

思路:新建一个js文件,在文件中添加键名和对应的键值,然后定义一个公用方法,来用键名获取键值。

实现:项目中两种语言则丁一两个文件zh_CN.js和en_US.js分别存放中英文的键名与键值的对应。不多说了直接上一点代码:(这里以英文为例)

    

用的时候在js代码中这样写:__('Please wait {n} minutes',3);即可。注意:函数的第二个参数是这种格式的:'2,3,4,5'用逗号隔开的。

其他要说明的:如何实现语言切换,大概思路如下:切换语言的时候加上?locale=en_US,然后在从url中获取到,存储在cookie的一个变量lang中,供取用。

在程序中根据cookie中lang的值不同来判断加载不同的js,这样就可以对项目中的js部分的翻译做处理了。

 

 

2.下面看一下php部分如何实现翻译:

  php部分因为用到的是zend框架所以会用到里面的zend_Translate适配器。该适配器功能强大。

  先理一下思路:在根目录中新建languages文件夹,下面新建zh和en文件夹分别存放中英文翻译文件,这里面用csv文件保存,具体格式是:

  ok,'OK',

  wait me {n} minutes,'Please wait me {n} minutes!'

   ....

  关于zend_Translate 的配置就不多讲了,可以参考网上的资料。

   可以参考这一份配置方法:http://my.oschina.net/netljx/blog/32485

  最终我们要顶一个公共的方法来攻供模板页面使用:代码如下:

   

用的时候这样使用:

Commenfunc::translate('ok');

Commenfunc::translate('wait me {n} minutes',$n);

大概的思路就是这样了,实现的过程中还有很多小问题需要不断的去做修改,不嫌烦就能搞定。

 

  

 

地址 · ADDRESS

地址:建邺区新城科技园嘉陵江东街18号2层

邮箱:309474043@qq.Com

点击查看更多案例

联系 · CALL TEL

400-8793-956

售后专线:025-65016872

业务QQ:309474043    售后QQ:1850555641

©南京安优网络科技有限公司 版权所有   苏ICP备12071769号-4  网站地图