Appearance
网站自动切换中英文/货币?IP定位帮你搞定本地化
做过海外业务的朋友都知道,用户第一次访问你的站,弹个"请选择语言"的框,是件很劝退的事。好的体验是:访客一进来,网站就自动用他的语言和他打招呼。
做到这个,靠的就是IP定位。
思路一句话
访问者IP → 查归属地国家 → 根据国家决定默认语言、货币、时区 → 前端自动应用。
不用用户手动选,一切自动。用户如果有偏好,再手动切,并记住选择。
实现步骤
1. 查国家
python
def detect_country(ip):
r = requests.get(f"https://ip9.com.cn/get?ip={ip}", timeout=3)
d = r.json()
if d.get("ret") == 200:
return d["data"].get("country_code") # 如 "us"、"cn"
return None用 country_code(标准ISO简码)来判断,最靠谱。
2. 国家 → 语言/货币映射
python
LOCALE_MAP = {
"cn": {"lang": "zh-CN", "currency": "CNY", "timezone": "Asia/Shanghai"},
"us": {"lang": "en-US", "currency": "USD", "timezone": "America/New_York"},
"jp": {"lang": "ja-JP", "currency": "JPY", "timezone": "Asia/Tokyo"},
# ...
}
DEFAULT_LOCALE = {"lang": "en", "currency": "USD", "timezone": "UTC"}
def get_locale(country_code):
return LOCALE_MAP.get(country_code, DEFAULT_LOCALE)3. 前端自动应用
后端把检测结果放在Cookie里(或者放进页面初始化的JS变量),前端加载时读取:
javascript
// 页面加载时读取后端给的 locale
const locale = window.__INITIAL_LOCALE__;
// 简单示例:切换语言文案
const dict = {
'zh-CN': { 'welcome': '欢迎光临' },
'en-US': { 'welcome': 'Welcome' },
'ja-JP': { 'welcome': 'いらっしゃいませ' }
};
document.getElementById('welcome').textContent = dict[locale.lang].welcome;价格显示也同理,按货币格式化:
javascript
const price = 99.9;
document.getElementById('price').textContent =
new Intl.NumberFormat(locale.lang, {
style: 'currency', currency: locale.currency
}).format(price);一定要做的几件事
1. 记得"记住用户选择"
自动检测只是默认值,用户手选过的语言/货币,要优先于IP检测。存Cookie,下次访问直接用用户选择。别用IP判断去覆盖用户的手动选择,会被人骂死。
2. 海外判断用国家,别用城市
本地化关心的是"国家/地区"级,不要为了语言去精确到城市(没意义还容易错)。
3. 代理用户怎么办
挂代理的访客,IP是代理服务器的国家。这个没法完全避免,但可以把"检测到的语言"做成可切换的,让用户自己改回来。
4. 时区也别忘
列表页、倒计时这些,用检测到的时区去格式化时间,体验提升巨大。
效果描述一下
我之前给一个小型跨境电商站做了一套。原来用户进来都是中文,海外访客一脸懵;改完之后,美国用户进来自动英文+美元,日本用户自动日文+日元,跳出率肉眼可见地降了。
这一步,成本很低,但对"国际化感"的提升非常直接。
提醒一句
IP定位做本地化,讲究"默认值 + 用户可覆盖"。它不是用来强制用户的,是让"绝大多数访客开箱即用"。把这个定位想清楚,你就能把这事儿做得很舒服。
检测国家的接口:https://www.ip9.com.cn