@midwayjs/i18n 3.3.5 → 3.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,19 +3,20 @@ export interface TranslateOptions {
3
3
  group?: string;
4
4
  args?: any;
5
5
  }
6
+ export interface RequestResolver {
7
+ queryField: string;
8
+ cookieField: {
9
+ fieldName: string;
10
+ cookieDomain: string;
11
+ cookieMaxAge: number;
12
+ };
13
+ }
6
14
  export interface I18nOptions {
7
15
  defaultLocale: string;
8
16
  localeTable: Record<string, Record<string, any>>;
9
17
  fallbacks: Record<string, any>;
10
18
  writeCookie: boolean;
11
- resolver: {
12
- queryField: string;
13
- cookieField: {
14
- fieldName: string;
15
- cookieDomain: string;
16
- cookieMaxAge: number;
17
- };
18
- };
19
+ resolver: RequestResolver | false;
19
20
  }
20
21
  export declare const I18N_ATTR_KEY = "i18n:locale";
21
22
  //# sourceMappingURL=interface.d.ts.map
@@ -17,15 +17,19 @@ const utils_1 = require("./utils");
17
17
  let I18nFilter = class I18nFilter {
18
18
  match(value, req, res) {
19
19
  const saveLocale = req.getAttr(interface_1.I18N_ATTR_KEY);
20
- if (this.i18nConfig.writeCookie && saveLocale) {
21
- const cookieOptions = {
22
- // make sure browser javascript can read the cookie
23
- httpOnly: false,
24
- maxAge: this.resolverConfig.cookieField.cookieMaxAge,
25
- signed: false,
26
- domain: this.resolverConfig.cookieField.cookieDomain,
27
- };
28
- res.cookie(this.resolverConfig.cookieField.fieldName, saveLocale, cookieOptions);
20
+ if (this.resolverConfig) {
21
+ if (this.i18nConfig.writeCookie &&
22
+ saveLocale &&
23
+ this.resolverConfig.cookieField) {
24
+ const cookieOptions = {
25
+ // make sure browser javascript can read the cookie
26
+ httpOnly: false,
27
+ maxAge: this.resolverConfig.cookieField.cookieMaxAge,
28
+ signed: false,
29
+ domain: this.resolverConfig.cookieField.cookieDomain,
30
+ };
31
+ res.cookie(this.resolverConfig.cookieField.fieldName, saveLocale, cookieOptions);
32
+ }
29
33
  }
30
34
  return value;
31
35
  }
@@ -48,31 +52,35 @@ let I18nMiddleware = class I18nMiddleware {
48
52
  // add a filter for i18n cookie
49
53
  app.useFilter(I18nFilter);
50
54
  return async (req, res, next) => {
51
- // get request locale from query/header/cookie
52
- let requestLocale = req.query[this.resolverConfig.queryField] ||
53
- req.cookies[this.resolverConfig.cookieField.fieldName];
54
55
  const i18nService = await req.requestContext.getAsync(i18nService_1.MidwayI18nService);
55
- if (!requestLocale) {
56
- // Accept-Language: zh-CN,zh;q=0.5
57
- // Accept-Language: zh-CN
58
- let languages = req.acceptsLanguages();
59
- if (languages) {
60
- if (Array.isArray(languages)) {
61
- if (languages[0] === '*') {
62
- languages = languages.slice(1);
63
- }
64
- if (languages.length > 0) {
65
- for (let i = 0; i < languages.length; i++) {
66
- const lang = (0, utils_1.formatLocale)(languages[i]);
67
- if (i18nService.hasAvailableLocale(lang)) {
68
- requestLocale = lang;
69
- break;
56
+ let requestLocale;
57
+ if (this.resolverConfig) {
58
+ // get request locale from query/header/cookie
59
+ requestLocale =
60
+ req.query[this.resolverConfig.queryField] ||
61
+ req.cookies[this.resolverConfig.cookieField.fieldName];
62
+ if (!requestLocale) {
63
+ // Accept-Language: zh-CN,zh;q=0.5
64
+ // Accept-Language: zh-CN
65
+ let languages = req.acceptsLanguages();
66
+ if (languages) {
67
+ if (Array.isArray(languages)) {
68
+ if (languages[0] === '*') {
69
+ languages = languages.slice(1);
70
+ }
71
+ if (languages.length > 0) {
72
+ for (let i = 0; i < languages.length; i++) {
73
+ const lang = (0, utils_1.formatLocale)(languages[i]);
74
+ if (i18nService.hasAvailableLocale(lang)) {
75
+ requestLocale = lang;
76
+ break;
77
+ }
70
78
  }
71
79
  }
72
80
  }
73
- }
74
- else {
75
- requestLocale = languages;
81
+ else {
82
+ requestLocale = languages;
83
+ }
76
84
  }
77
85
  }
78
86
  }
@@ -87,57 +95,63 @@ let I18nMiddleware = class I18nMiddleware {
87
95
  }
88
96
  else {
89
97
  return async (ctx, next) => {
90
- // get request locale from query/header/cookie
91
- let requestLocale = ctx.query[this.resolverConfig.queryField] ||
92
- ctx.cookies.get(this.resolverConfig.cookieField.fieldName, {
93
- signed: false,
94
- });
95
- const i18nService = await ctx.requestContext.getAsync(i18nService_1.MidwayI18nService);
96
- if (!requestLocale) {
97
- // Accept-Language: zh-CN,zh;q=0.5
98
- // Accept-Language: zh-CN
99
- let languages = ctx.acceptsLanguages();
100
- if (languages) {
101
- if (Array.isArray(languages)) {
102
- if (languages[0] === '*') {
103
- languages = languages.slice(1);
104
- }
105
- if (languages.length > 0) {
106
- for (let i = 0; i < languages.length; i++) {
107
- const lang = (0, utils_1.formatLocale)(languages[i]);
108
- if (i18nService.hasAvailableLocale(lang)) {
109
- requestLocale = lang;
110
- break;
98
+ if (this.resolverConfig) {
99
+ // get request locale from query/header/cookie
100
+ let requestLocale = ctx.query[this.resolverConfig.queryField] ||
101
+ ctx.cookies.get(this.resolverConfig.cookieField.fieldName, {
102
+ signed: false,
103
+ });
104
+ const i18nService = await ctx.requestContext.getAsync(i18nService_1.MidwayI18nService);
105
+ if (!requestLocale) {
106
+ // Accept-Language: zh-CN,zh;q=0.5
107
+ // Accept-Language: zh-CN
108
+ let languages = ctx.acceptsLanguages();
109
+ if (languages) {
110
+ if (Array.isArray(languages)) {
111
+ if (languages[0] === '*') {
112
+ languages = languages.slice(1);
113
+ }
114
+ if (languages.length > 0) {
115
+ for (let i = 0; i < languages.length; i++) {
116
+ const lang = (0, utils_1.formatLocale)(languages[i]);
117
+ if (i18nService.hasAvailableLocale(lang)) {
118
+ requestLocale = lang;
119
+ break;
120
+ }
111
121
  }
112
122
  }
113
123
  }
114
- }
115
- else {
116
- requestLocale = languages;
124
+ else {
125
+ requestLocale = languages;
126
+ }
117
127
  }
118
128
  }
119
- }
120
- // save current locale
121
- if (requestLocale) {
122
- i18nService.saveRequestLocale(requestLocale);
123
- }
124
- else {
125
- i18nService.saveRequestLocale();
129
+ // save current locale
130
+ if (requestLocale) {
131
+ i18nService.saveRequestLocale(requestLocale);
132
+ }
133
+ else {
134
+ i18nService.saveRequestLocale();
135
+ }
126
136
  }
127
137
  // run next middleware and controller
128
138
  await next();
129
139
  // get need save locale
130
140
  const saveLocale = ctx.getAttr(interface_1.I18N_ATTR_KEY);
131
- if (this.i18nConfig.writeCookie && saveLocale) {
132
- const cookieOptions = {
133
- // make sure browser javascript can read the cookie
134
- httpOnly: false,
135
- maxAge: this.resolverConfig.cookieField.cookieMaxAge,
136
- signed: false,
137
- domain: this.resolverConfig.cookieField.cookieDomain,
138
- overwrite: true,
139
- };
140
- ctx.cookies.set(this.resolverConfig.cookieField.fieldName, saveLocale, cookieOptions);
141
+ if (this.resolverConfig) {
142
+ if (this.i18nConfig.writeCookie &&
143
+ saveLocale &&
144
+ this.resolverConfig.cookieField) {
145
+ const cookieOptions = {
146
+ // make sure browser javascript can read the cookie
147
+ httpOnly: false,
148
+ maxAge: this.resolverConfig.cookieField.cookieMaxAge,
149
+ signed: false,
150
+ domain: this.resolverConfig.cookieField.cookieDomain,
151
+ overwrite: true,
152
+ };
153
+ ctx.cookies.set(this.resolverConfig.cookieField.fieldName, saveLocale, cookieOptions);
154
+ }
141
155
  }
142
156
  };
143
157
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@midwayjs/i18n",
3
3
  "description": "midway i18n component",
4
- "version": "3.3.5",
4
+ "version": "3.3.11",
5
5
  "main": "dist/index",
6
6
  "typings": "index.d.ts",
7
7
  "files": [
@@ -15,8 +15,8 @@
15
15
  "devDependencies": {
16
16
  "@midwayjs/core": "^3.3.5",
17
17
  "@midwayjs/decorator": "^3.3.4",
18
- "@midwayjs/express": "^3.3.5",
19
- "@midwayjs/koa": "^3.3.5",
18
+ "@midwayjs/express": "^3.3.11",
19
+ "@midwayjs/koa": "^3.3.6",
20
20
  "@midwayjs/mock": "^3.3.5"
21
21
  },
22
22
  "keywords": [
@@ -39,5 +39,5 @@
39
39
  "type": "git",
40
40
  "url": "https://github.com/midwayjs/midway.git"
41
41
  },
42
- "gitHead": "5a835008aaa26e1b3c7d99c525f4a9fdaa3e41d1"
42
+ "gitHead": "18610c9dd1cd329b83a81e4053eb01b9b2b2e8e2"
43
43
  }