eggjs / eggjs/egg

egg-i18n 国际化问题求助

Open
#4,343 4 comments 0 reactions 0 assignees View on GitHub
Inactive
Dominant language
TypeScript
Stars
19k
Forks
1.8k
PR merge metrics
No merged PRs in 30d

Description

- 最近开始使用vue,遇到问题了,求助。

- 我是通过cookie来控制国际化,当用户通过en.xxx.com访问时,我在中间件中将cookie设置成en;当用户通过www.xxx.com访问时,我在中间件中将cookie设置成zh。每个请求都会执行中间件
- 问题:当我访问www.xxx.com后,再访问en.xxx.com,浏览器加载出来的还是中文版
- 问题追踪:当我访问www.xxx.com后,request的cookie的language值是zh,然后再访问en.xxx.com,服务器收到的请求中的language值还是zh,这时通过中间件来修改cookie值,然后执行后面的页面渲染逻辑,但渲染出来的还是中文页面
- 我的疑惑:是不是因为egg的国际化处理逻辑在中间件之前就执行了?

language_handler.js(中间件)
```
module.exports = () => {
return async function (ctx, next) {

let host = ctx.ctx.request.header['host'], language = 'zh';

if(host.startsWith('en')){
language = 'en';
}

ctx.cookies.set('language', language ,{
domain: '.xxx.com',
httpOnly: false
});
await next();
};
};
```

config.default.js
```
config.middleware = [ 'languageHandler']

config.i18n = {
defaultLocale: 'zh',
queryField: 'language',
cookieField: 'language',
cookieDomain: '.xxx.com',
cookieMaxAge: '1y'
}
```

plugin.js

```
config.i18n = {
enable: true,
package: 'egg-i18n'
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.