阅读提示
本文约 853 字,预计阅读 3 分钟。文中命令与配置均经过实测,可直接参考执行。
本文约 853 字,预计阅读 3 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:前端调 API 总拿到中文
用 REST API 给 SPA/小程序供数,默认返回默认语言。多语言需让 API 按语言返回译文。
原理分析:API 的语言参数
WPML 给 REST 加 ?lang=en;Polylang 支持 ?lang=en 或在请求头带语言。插件 hook rest_pre_dispatch 把查询切到对应语言副本。自定义端点也要读该参数。
保姆级实操
WPML:
fetch('/wp-json/wp/v2/posts?lang=en&per_page=10')
.then(r=>r.json()).then(console.log);
Polylang:
// 自定义端点读取 lang
add_action('rest_api_init', function(){
register_rest_route('my/v1','posts', [
'methods'=>'GET',
'callback'=>function($req){
$lang = $req['lang'] ?? pll_default_language();
$q = new WP_Query(['post_type'=>'post','lang'=>$lang]);
return $q->posts;
}
]);
});
常见坑
- API 不传 lang,总默认语。
- 自定义端点忽略 lang,串语。
- 案例:某小程序用 REST 取文,没传 lang 全中文;加 ?lang 后按区域显示。
- 缓存 API 响应不分语言,串。
- WPML 没开 REST 多语,需设置。
总结
判断标准:REST 按 lang 返译文、自定义端点读参。行动清单:加 lang 参数 → 插件开 REST 多语 → 自定义端点读参 → 缓存分语言。详见多语言站点 Headless 方案。
觉得有用?点个赞支持一下
标签:
# lang 参数
# Polylang
# Polylang API
# REST API
# REST 按语言
# WPML
# WPML REST
# 多语言 REST API
# 无头
# 无头多语
