项目中使用到了thinkphp2.0的多语言功能,发现一些bug
语言配置如下:
在Lang目录下创建en-us,zh-cn,zh-tw目录
ThinkPHP使用$_SERVER['HTTP_ACCEPT_LANGUAGE']来自动检测浏览器支持语言,
然后保存到cookie中,并读取相应的语言包。
这里有两个问题:
1. 浏览器的返回值的大小写不同, 如Firefox:en-us, 谷歌chrome:en-US
返回值是小写的时候没有问题,大写的时候(chrome)就会产生找不到语言包的情况。
2. 浏览器的支持语言不存在的时候,也会产生找不到语言包的情况。
比如说有的浏览器返回值是 en-gb
解决办法如下,
打开/ThinkPHP/Lib/Think/Core/App.class.php文件,查看checkLanguage()函数,找到:
替换以上代码为:
修改完成后,一定记得清除/Runtime/~runtime.php文件,然后清除浏览器的cookie,刷新页面,一切就都正常了。...