读书人

php兑现不同ip不同语言包

发布时间: 2013-01-04 10:04:14 作者: rapoo

php实现不同ip不同语言包
做了一个外贸站 ,怎样针对用户的ip设置语言包,让老外访问时是英文,咱们访问时是中文,还有其他不同语言,请问如何实现?
[解决办法]
四大门户都提供了获取IP位置的接口,但并不推荐你这样做,因为程序要等待接口返回结果。这很妨碍用户体验。
你可以借助浏览器发送的客户信息 Accept-language 来判定使用那个语言包,因为老外肯定不会把他浏览器首选语言设为中文。
[解决办法]
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];

可能的取值(括号中的)
Afrikaans (af)南非荷兰语
Albanian (sq)阿尔巴尼亚
Basque (eu)巴斯克(欧盟)
Bulgarian (bg)保加利亚
Byelorussian (be)白俄罗斯
Catalan (ca)加泰罗尼亚语
Chinese (zh)中国
Chinese/China (zh-cn)中国/中国
Chinese/Taiwan (zh-tw)中国/台湾
Chinese/Hong Kong (zh-hk)中国/香港
Chinese/singapore (zh-sg)中国/新加坡
Croatian (hr)克罗地亚
Czech (cs)捷克
Danish (da)丹麦
Dutch (nl)荷兰语
Dutch/Belgium (nl-be)荷兰/比利时
English (en)英语
English/United Kingdom (en-gb)英语/英国
English/United Satates (en-us)英语/美国
English/Australian (en-au)英国/澳大利亚
English/Canada (en-ca)英国/加拿大
English/New Zealand (en-nz)英国/新西兰
English/Ireland (en-ie)英国/爱尔兰
English/South Africa (en-za)英语/南非
English/Jamaica (en-jm)英语/牙买加
English/Belize (en-bz)英语/伯利兹
English/Trinidad (en-tt)英语/特
Estonian (et)爱沙尼亚语
Faeroese (fo)法罗
Farsi (fa)波斯语
Finnish (fi)芬兰
French (fr)法语
French/Belgium (fr-be)法国/比利时
French/France (fr-fr)法国/法国
French/Switzerland (fr-ch)法国/瑞士
French/Canada (fr-ca)法国/加拿大
French/Luxembourg (fr-lu)法国/卢森堡
Gaelic (gd)盖尔文
Galician (gl)加利西亚语
German (de)德语
German/Austria (de-at)德国/奥地利
German/Germany (de-de)德国/德国
German/Switzerland (de-ch)德国/瑞士
German/Luxembourg (de-lu)德国/卢森堡
German/Liechtenstein (de-li)德国/列支敦士登
Greek (el)希腊语
Hindi (hi)印地文
Hungarian (hu)匈牙利
Icelandic (is)冰岛
Indonesian (id or in)印度尼西亚
Irish (ga)爱尔兰
Italian (it)意大利
Italian/ Switzerland (it-ch)意大利/瑞士
Japanese (ja)日语
Korean (ko)韩文
Latvian (lv)拉脱维亚
Lithuanian (lt)立陶宛
Macedonian (mk)马其顿语
Malaysian (ms)马来西亚
Maltese (mt)马耳他
Norwegian (no)挪威
Polish (pl)波兰
Portuguese (pt)葡萄牙
Portuguese/Brazil (pt-br)葡萄牙/巴西
Rhaeto-Romanic (rm)里托罗曼斯文
Romanian (ro)罗马尼亚
Romanian/Moldavia (ro-mo)罗马尼亚/摩尔达维亚
Russian (ru)俄语
Russian /Moldavia (ru-mo)俄罗斯/摩尔达维亚
Scots Gaelic (gd)苏格兰的盖尔语
Serbian (sr)塞尔维亚
Slovack (sk)Slovack
Slovenian (sl)斯洛文尼亚语
Sorbian (sb)索布语
Spanish (es or es-do)西班牙语
Spanish/Argentina (es-ar)西班牙/阿根廷
Spanish/Colombia (es-co)西班牙/哥伦比亚
Spanish/Mexico (es-mx)西班牙/墨西哥
Spanish/Spain (es-es)西班牙/西班牙
Spanish/Guatemala (es-gt)西班牙/危地马拉
Spanish/Costa Rica (es-cr)西班牙/哥斯达黎加
Spanish/Panama (es-pa)西班牙/巴拿马
Spanish/Venezuela (es-ve)西班牙/委内瑞拉
Spanish/Peru (es-pe)西班牙/秘鲁
Spanish/Ecuador (es-ec)西班牙/厄瓜多尔
Spanish/Chile (es-cl)西班牙/智利
Spanish/Uruguay (es-uy)西班牙/乌拉圭
Spanish/Paraguay (es-py)西班牙/巴拉圭
Spanish/Bolivia (es-bo)西班牙/玻利维亚
Spanish/El salvador (es-sv)西班牙/萨尔瓦多
Spanish/Honduras (es-hn)西班牙/洪都拉斯
Spanish/Nicaragua (es-ni)西班牙/尼加拉瓜
Spanish/Puerto Rico (es-pr)西班牙/波多黎各


Sutu (sx)苏图
Swedish (sv)瑞典语
Swedish/Findland (sv-fi)瑞典/ Findland
Thai (ts)泰国
Tswana (tn)茨瓦纳人
Turkish (tr)土耳其
Ukrainian (uk)乌克兰
Urdu (ur)乌尔都语
Vietnamese (vi)越南
Xshosa (xh)xshosa
Yiddish (ji)意第绪语
Zulu (zu)祖鲁族
[解决办法]
1 是客户浏览器的语言
2 这个是你编程的事情了。一般情况下,把所有屏显文字转成变量,不同语言包文件定义这些变量。
例如,原来的
价格
变成
<?=$LANGS['price']?>
然后
zh-cn.php:
$_LANGS['price'] = '价格';

zh-tw.php:
$_LANGS['price'] = '格';

en.php:
$_LANGS['price'] = 'Price';

if(strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh-cn') !== false) {
include('zh-cn.php');
} else if(..............)
[解决办法]
$_SERVER['HTTP_ACCEPT_LANGUAGE'] 得到的是浏览器传过来的,浏览器所在操作系统的默认语言

$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if(! file_exists("语言包路径/$lang.php")) $lang = 'en'; //设置为默认语言
include "语言包路径/$lang.php"; //加载语言包

读书人网 >PHP

热点推荐