项目 中 使用 到 了 thinkphp2.0 的 多 语言 功能, 发现 一些 error
语言 配置 如下:
"LANG_SWITCH_ON '=> true, "DEFAULT_LANG '=>' es-es, "LANG_AUTO_DETECT '=> true,
在 Lang 目录 下 创建 es-es, zh-cn, zh-tw 目录
ThinkPHP 使用 $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] 来 自动 检测 浏览 器 支持 语言,
然后 保存 到 cookies 中, 并 读取 相应 的 语言 包.
这里 有 两个 问题:
1. 浏览 器 的 返回 值 的 大小写 不同, 如 Firefox: es-es, 谷 歌 chrome: en-US
2. 浏览 器 的 支持 语言 不 存在 的 时候, 也会 产生 找不到 语言 包 的 情况.
比如说 有的 浏览 器 返回 值 是 en-gb
解决 办法 如下,
打开 / ThinkPHP / lib / Piensa / Core / App.class.php 文件, 查看 checkLanguage () 函数, 找到:
elseif (_SERVER isset ($ ['HTTP_ACCEPT_LANGUAGE'])) {/ / 自动 侦测 浏览 器 语言 preg_match ('/^([ az \ -]+)/ i ', $ _SERVER [' HTTP_ACCEPT_LANGUAGE '], $ matches); $ Langset = strtolower ($ coincidencias [1]); cookie ('think_language', $ Langset, 3600); }
替换 以上 代码 为:
elseif (_SERVER isset ($ ['HTTP_ACCEPT_LANGUAGE'])) {/ / 自动 侦测 浏览 器 语言 preg_match ('/^([ az \ -]+)/ i ', $ _SERVER [' HTTP_ACCEPT_LANGUAGE '], $ matches); $ Langset = strtolower ($ coincidencias [1]); / / Si no existe el lenguaje, el uso por defecto if (falsa === @ file_exists ($ LANG_PATH. Langset. / common.php ')) $ Langset = C ('DEFAULT_LANG'); cookie ('think_language', $ Langset, 3600); }

真是 ERROR 个, 不错 的 解决 方法!