在 node 端通过解析路径(/zh/news 、/en/news)拿到 zh 、en 等 locale,通过 umijs 提供的 render 可以把 locale 传递到页面的 props 中,可是我在组件外的一些地方如何拿到这个 locale 呢,比如有个公共的 request 函数,在这个函数里我要把 header 中的 accept-language 设置成对应的 locale 。
export function request(params {
const headers = {
'Accept-Language': '这里如何取到 locale???'
};
// ...
}
在 umijs ssr 的文档里有这样的代码,是把 locale 挂到 nodejs 的 global 上,可是这样多个请求一起过来的时候,很大可能会出现 locale 污染的情况啊。
// app.ts
export const ssr = {
beforeRenderServer: async ({
env,
location,
history,
mode,
context,
}) => {
// global 为 Node.js 下的全局变量
// 避免直接 mock location,这样会造成一些环境判断失效
global.mockLocation = location;
// 国际化
if (location.pathname.indexOf('zh-CN') > -1) {
global.locale = 'zh-CN'
}
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.