@midwayjs/i18n 3.0.1 → 3.0.2
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.
- package/dist/config/config.default.js.map +1 -0
- package/dist/configuration.js.map +1 -0
- package/dist/i18nService.js +6 -2
- package/dist/i18nService.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/interface.d.ts +0 -1
- package/dist/interface.js +1 -2
- package/dist/interface.js.map +1 -0
- package/dist/middleware.d.ts +1 -0
- package/dist/middleware.js +17 -12
- package/dist/middleware.js.map +1 -0
- package/dist/utils.js.map +1 -0
- package/package.json +9 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.default.js","sourceRoot":"","sources":["../../src/config/config.default.ts"],"names":[],"mappings":";;;AACA,mDAA6C;AAEhC,QAAA,IAAI,GAAgB;IAC/B,aAAa,EAAE,OAAO;IACtB,WAAW,EAAE;QACX,KAAK,EAAE,EAAE;KACV;IACD,SAAS,EAAE;IACT,qBAAqB;IACrB,iBAAiB;KAClB;IACD,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE;QACR,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,kBAAM,CAAC,EAAE,CAAC,QAAQ;SACjC;KACF;CACF,CAAC","sourcesContent":["import { I18nOptions } from '../interface';\nimport { FORMAT } from '@midwayjs/decorator';\n\nexport const i18n: I18nOptions = {\n defaultLocale: 'en_US',\n localeTable: {\n en_US: {},\n },\n fallbacks: {\n // 'en_*': 'en_US',\n // pt: 'pt-BR',\n },\n writeCookie: true,\n resolver: {\n queryField: 'locale',\n cookieField: {\n fieldName: 'locale',\n cookieDomain: '',\n cookieMaxAge: FORMAT.MS.ONE_YEAR,\n },\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA4D;AAC5D,yDAAyD;AACzD,yCAA0D;AAC1D,6CAA8C;AAU9C,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAG5B,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,kBAAkB;aACpB,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;aAClD,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,GAAG,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AARC;IADC,IAAA,kBAAM,GAAE;8BACW,+BAAwB;6DAAC;AAFlC,iBAAiB;IAR7B,IAAA,yBAAa,EAAC;QACb,SAAS,EAAE,MAAM;QACjB,aAAa,EAAE;YACb;gBACE,OAAO,EAAE,aAAa;aACvB;SACF;KACF,CAAC;GACW,iBAAiB,CAU7B;AAVY,8CAAiB","sourcesContent":["import { Configuration, Inject } from '@midwayjs/decorator';\nimport * as DefaultConfig from './config/config.default';\nimport { MidwayApplicationManager } from '@midwayjs/core';\nimport { I18nMiddleware } from './middleware';\n\n@Configuration({\n namespace: 'i18n',\n importConfigs: [\n {\n default: DefaultConfig,\n },\n ],\n})\nexport class I18nConfiguration {\n @Inject()\n applicationManager: MidwayApplicationManager;\n async onReady() {\n this.applicationManager\n .getApplications(['koa', 'egg', 'faas', 'express'])\n .forEach(app => {\n app.useMiddleware(I18nMiddleware);\n });\n }\n}\n"]}
|
package/dist/i18nService.js
CHANGED
|
@@ -216,8 +216,12 @@ let MidwayI18nService = class MidwayI18nService {
|
|
|
216
216
|
*/
|
|
217
217
|
saveRequestLocale(locale) {
|
|
218
218
|
var _a, _b;
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
if (locale) {
|
|
220
|
+
(_a = this.ctx) === null || _a === void 0 ? void 0 : _a.setAttr(interface_1.I18N_ATTR_KEY, (0, utils_1.formatLocale)(locale));
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
(_b = this.ctx) === null || _b === void 0 ? void 0 : _b.setAttr(interface_1.I18N_ATTR_KEY, (0, utils_1.formatLocale)(this.getDefaultLocale()));
|
|
224
|
+
}
|
|
221
225
|
}
|
|
222
226
|
/**
|
|
223
227
|
* get locale string by find fallback and default, ignore match message
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18nService.js","sourceRoot":"","sources":["../src/i18nService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAO6B;AAC7B,2CAA8D;AAC9D,gCAAgC;AAEhC,mCAA0E;AAK1E,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAAvC;QAIU,kBAAa,GAAkC,IAAI,GAAG,EAAE,CAAC;QAEzD,kBAAa,GAGhB,EAAE,CAAC;QACA,qBAAgB,GAAG,EAAE,CAAC;IAgLhC,CAAC;IA7KW,KAAK,CAAC,IAAI;QAClB,IAAI,CAAC,aAAa,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvE;QACD,YAAY;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtD,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAc,EAAE,iBAAsC;QACrE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAE1D,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;YACnC,IAAI,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBAC9C,iBAAiB;gBACjB,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;aACpE;iBAAM;gBACL,eAAe;gBACf,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;oBAC3C,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAC7B,MAAM,EACN,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAC/B,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,OAAe,EAAE,UAA4B,EAAE;;QAC9D,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,MAAA,OAAO,CAAC,MAAM,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,SAAS,CAAC;QAEzC,IAAI,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE;YAC5C,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wBAC3B,OAAO,IAAI,CAAC;qBACb;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,QAAQ,EAAE;oBACZ,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAC7B,QAAQ,CAAC,MAAM,EACf,OAAO,EACP,KAAK,EACL,IAAI,CACL,CAAC;iBACH;aACF;YAED,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAC7B,IAAI,CAAC,aAAa,EAClB,OAAO,EACP,KAAK,EACL,IAAI,CACL,CAAC;aACH;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,MAAc,EAAE,KAAK,GAAG,SAAS;QACzD,MAAM,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;SACpD;QACD,IACE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EACzC;YACA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;YACrD,OAAO,MAAM,CAAC;SACf;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACxB,IACE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;wBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAC9C;wBACA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;wBAC1D,OAAO,IAAI,CAAC;qBACb;iBACF;YACH,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE;gBACZ,OAAO,QAAQ,CAAC,MAAM,CAAC;aACxB;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,MAAc;QACtC,MAAM,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACxB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACvC,OAAO,IAAI,CAAC;qBACb;iBACF;YACH,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,MAAc,EAAE,KAAK,GAAG,SAAS;QACvD,MAAM,GAAG,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3B;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE;YACX,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,GAAG,EAAE;oBACP,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC9B;aACF;SACF;IACH,CAAC;CACF,CAAA;AAxLC;IADC,IAAA,kBAAM,EAAC,MAAM,CAAC;;8DACiB;AAWhC;IADC,IAAA,gBAAI,GAAE;;;;sDAaN;AAzBU,0BAA0B;IAFtC,IAAA,mBAAO,GAAE;IACT,IAAA,iBAAK,EAAC,qBAAS,CAAC,SAAS,CAAC;GACd,0BAA0B,CA0LtC;AA1LY,gEAA0B;AA6LvC,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAOrB,SAAS,CAAC,OAAe,EAAE,UAA4B,EAAE;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAa,CAAC,CAAC;SACtE;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAc,EAAE,iBAAsC;QACrE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS;QAC/C,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,MAAe;;QACtC,IAAI,MAAM,EAAE;YACV,MAAA,IAAI,CAAC,GAAG,0CAAE,OAAO,CAAC,yBAAa,EAAE,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,MAAA,IAAI,CAAC,GAAG,0CAAE,OAAO,CAAC,yBAAa,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;SACzE;IACH,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,MAAc,EAAE,KAAK,GAAG,SAAS;QACzD,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAhEC;IADC,IAAA,kBAAM,GAAE;8BACuB,0BAA0B;+DAAC;AAG3D;IADC,IAAA,kBAAM,GAAE;;8CACW;AALT,iBAAiB;IAD7B,IAAA,mBAAO,GAAE;GACG,iBAAiB,CAkE7B;AAlEY,8CAAiB;AAoE9B,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACvC;SAAM;QACL,OAAO,IAAA,wBAAgB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACxC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;QACnB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACzD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;SACzB;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,CAAmB,EAAE,GAAW;IAC9C,GAAG,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACf,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;KACvB;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC","sourcesContent":["import {\n Init,\n Provide,\n Scope,\n ScopeEnum,\n Config,\n Inject,\n} from '@midwayjs/decorator';\nimport { I18N_ATTR_KEY, TranslateOptions } from './interface';\nimport * as pm from 'picomatch';\nimport { I18nOptions } from './interface';\nimport { formatLocale, formatWithArray, formatWithObject } from './utils';\nimport { IMidwayContext } from '@midwayjs/core';\n\n@Provide()\n@Scope(ScopeEnum.Singleton)\nexport class MidwayI18nServiceSingleton {\n @Config('i18n')\n private i18nConfig: I18nOptions;\n\n private localeTextMap: Map<string, Map<string, any>> = new Map();\n private defaultLocale: string;\n private fallbackMatch: Array<{\n pattern: any;\n locale: string;\n }> = [];\n private localeMatchCache = {};\n\n @Init()\n protected async init() {\n this.defaultLocale = formatLocale(this.i18nConfig.defaultLocale);\n for (const lang in this.i18nConfig.localeTable) {\n this.addLocale(lang, getES6Object(this.i18nConfig.localeTable[lang]));\n }\n // fallbacks\n for (const rule in this.i18nConfig.fallbacks) {\n this.fallbackMatch.push({\n pattern: pm(formatLocale(rule)),\n locale: formatLocale(this.i18nConfig.fallbacks[rule]),\n });\n }\n }\n\n /**\n * add a language text mapping\n * @param locale\n * @param localeTextMapping\n */\n public addLocale(locale: string, localeTextMapping: Record<string, any>) {\n const currentLangMap = getMap(this.localeTextMap, locale);\n\n for (const key in localeTextMapping) {\n if (typeof localeTextMapping[key] === 'string') {\n // set to default\n getMap(currentLangMap, 'default').set(key, localeTextMapping[key]);\n } else {\n // set to group\n for (const newKey in localeTextMapping[key]) {\n getMap(currentLangMap, key).set(\n newKey,\n localeTextMapping[key][newKey]\n );\n }\n }\n }\n }\n\n /**\n * translate a message\n * @param message\n * @param options\n */\n public translate(message: string, options: TranslateOptions = {}) {\n const useLocale = formatLocale(options.locale ?? this.defaultLocale);\n const args = options.args ?? [];\n const group = options.group ?? 'default';\n\n let msg = this.getLocaleMappingText(useLocale, message, group, args);\n if (!msg && useLocale !== this.defaultLocale) {\n if (this.fallbackMatch.length) {\n const findRule = this.fallbackMatch.find(rule => {\n if (rule.pattern(useLocale)) {\n return true;\n }\n });\n if (findRule) {\n msg = this.getLocaleMappingText(\n findRule.locale,\n message,\n group,\n args\n );\n }\n }\n\n if (!msg) {\n msg = this.getLocaleMappingText(\n this.defaultLocale,\n message,\n group,\n args\n );\n }\n }\n return msg;\n }\n\n /**\n * get locale string by find fallback and default, ignore match message\n * @param locale\n * @param group\n */\n public getAvailableLocale(locale: string, group = 'default') {\n locale = formatLocale(locale);\n if (this.localeMatchCache[locale + '_' + group]) {\n return this.localeMatchCache[locale + '_' + group];\n }\n if (\n this.localeTextMap.has(locale) &&\n this.localeTextMap.get(locale).has(group)\n ) {\n this.localeMatchCache[locale + '_' + group] = locale;\n return locale;\n }\n\n if (this.fallbackMatch.length) {\n const findRule = this.fallbackMatch.find(rule => {\n if (rule.pattern(locale)) {\n if (\n this.localeTextMap.has(rule.locale) &&\n this.localeTextMap.get(rule.locale).has(group)\n ) {\n this.localeMatchCache[locale + '_' + group] = rule.locale;\n return true;\n }\n }\n });\n if (findRule) {\n return findRule.locale;\n }\n }\n\n this.localeMatchCache[locale + '_' + group] = this.defaultLocale;\n return this.defaultLocale;\n }\n\n /**\n * get available local in locale text map, include fallbacks\n * @param locale\n */\n public hasAvailableLocale(locale: string): boolean {\n locale = formatLocale(locale);\n if (this.localeTextMap.has(locale)) {\n return true;\n }\n if (this.fallbackMatch.length) {\n const findRule = this.fallbackMatch.find(rule => {\n if (rule.pattern(locale)) {\n if (this.localeTextMap.has(rule.locale)) {\n return true;\n }\n }\n });\n if (findRule) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * get mapping by locale\n * @param locale\n * @param group\n */\n public getLocaleMapping(locale: string, group = 'default') {\n locale = formatLocale(locale);\n const langMap = this.localeTextMap.get(locale);\n if (langMap) {\n return langMap.get(group);\n }\n }\n\n /**\n * get current default language\n */\n public getDefaultLocale() {\n return this.defaultLocale;\n }\n\n private getLocaleMappingText(locale: string, message, group, args) {\n const langMap = this.localeTextMap.get(locale);\n if (langMap) {\n const textMapping = langMap.get(group);\n if (textMapping) {\n const msg = textMapping.get(message);\n if (msg) {\n return formatText(msg, args);\n }\n }\n }\n }\n}\n\n@Provide()\nexport class MidwayI18nService {\n @Inject()\n protected i18nServiceSingleton: MidwayI18nServiceSingleton;\n\n @Inject()\n ctx: IMidwayContext;\n\n public translate(message: string, options: TranslateOptions = {}) {\n if (!options.locale) {\n options.locale = this.ctx.getAttr && this.ctx.getAttr(I18N_ATTR_KEY);\n }\n return this.i18nServiceSingleton.translate(message, options);\n }\n\n /**\n * add a language text mapping\n * @param locale\n * @param localeTextMapping\n */\n public addLocale(locale: string, localeTextMapping: Record<string, any>) {\n this.i18nServiceSingleton.addLocale(locale, localeTextMapping);\n }\n\n /**\n * get mapping by lang\n * @param locale\n * @param group\n */\n public getLocaleMapping(locale, group = 'default') {\n return this.i18nServiceSingleton.getLocaleMapping(locale, group);\n }\n\n /**\n * get current default language\n */\n public getDefaultLocale() {\n return this.i18nServiceSingleton.getDefaultLocale();\n }\n\n /**\n * save current context lang to flag, middleware will be set it to cookie\n */\n public saveRequestLocale(locale?: string) {\n if (locale) {\n this.ctx?.setAttr(I18N_ATTR_KEY, formatLocale(locale));\n } else {\n this.ctx?.setAttr(I18N_ATTR_KEY, formatLocale(this.getDefaultLocale()));\n }\n }\n\n /**\n * get locale string by find fallback and default, ignore match message\n * @param locale\n * @param group\n */\n public getAvailableLocale(locale: string, group = 'default') {\n return this.i18nServiceSingleton.getAvailableLocale(locale, group);\n }\n\n /**\n * get available local in locale text map, include fallbacks\n * @param locale\n */\n public hasAvailableLocale(locale: string): boolean {\n return this.i18nServiceSingleton.hasAvailableLocale(locale);\n }\n}\n\nfunction formatText(message, args) {\n if (Array.isArray(args)) {\n return formatWithArray(message, args);\n } else {\n return formatWithObject(message, args);\n }\n}\n\nfunction getES6Object(o) {\n for (const key in o) {\n if (o[key]['default'] && Object.keys(o[key]).length === 1) {\n o[key] = o[key].default;\n }\n }\n return o;\n}\n\nfunction getMap(o: Map<string, any>, key: string) {\n key = formatLocale(key);\n if (!o.has(key)) {\n o.set(key, new Map());\n }\n return o.get(key);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iDAAqE;AAA5D,8GAAA,iBAAiB,OAAiB;AAC3C,gDAA8B;AAC9B,+CAA6B;AAC7B,8CAA4B;AAC5B,iCAAuC;AAA9B,qGAAA,YAAY,OAAA","sourcesContent":["export { I18nConfiguration as Configuration } from './configuration';\nexport * from './i18nService';\nexport * from './middleware';\nexport * from './interface';\nexport { formatLocale } from './utils';\n"]}
|
package/dist/interface.d.ts
CHANGED
package/dist/interface.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.I18N_ATTR_KEY = void 0;
|
|
4
4
|
exports.I18N_ATTR_KEY = 'i18n:locale';
|
|
5
|
-
exports.I18N_SAVE_KEY = 'i18n:need_save_locale';
|
|
6
5
|
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":";;;AAqBa,QAAA,aAAa,GAAG,aAAa,CAAC","sourcesContent":["export interface TranslateOptions {\n locale?: string;\n group?: string;\n args?: any;\n}\n\nexport interface I18nOptions {\n defaultLocale: string;\n localeTable: Record<string, Record<string, any>>;\n fallbacks: Record<string, any>;\n writeCookie: boolean;\n resolver: {\n queryField: string;\n cookieField: {\n fieldName: string;\n cookieDomain: string;\n cookieMaxAge: number;\n };\n },\n}\n\nexport const I18N_ATTR_KEY = 'i18n:locale';\n"]}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
|
|
|
2
2
|
import { I18nOptions } from './interface';
|
|
3
3
|
export declare class I18nFilter {
|
|
4
4
|
resolverConfig: I18nOptions['resolver'];
|
|
5
|
+
i18nConfig: I18nOptions;
|
|
5
6
|
match(value: any, req: any, res: any): any;
|
|
6
7
|
}
|
|
7
8
|
export declare class I18nMiddleware implements IMiddleware<any, any> {
|
package/dist/middleware.js
CHANGED
|
@@ -16,8 +16,8 @@ const i18nService_1 = require("./i18nService");
|
|
|
16
16
|
const utils_1 = require("./utils");
|
|
17
17
|
let I18nFilter = class I18nFilter {
|
|
18
18
|
match(value, req, res) {
|
|
19
|
-
const saveLocale = req.getAttr(interface_1.
|
|
20
|
-
if (saveLocale) {
|
|
19
|
+
const saveLocale = req.getAttr(interface_1.I18N_ATTR_KEY);
|
|
20
|
+
if (this.i18nConfig.writeCookie && saveLocale) {
|
|
21
21
|
const cookieOptions = {
|
|
22
22
|
// make sure browser javascript can read the cookie
|
|
23
23
|
httpOnly: false,
|
|
@@ -34,6 +34,10 @@ __decorate([
|
|
|
34
34
|
(0, decorator_1.Config)('i18n.resolver'),
|
|
35
35
|
__metadata("design:type", Object)
|
|
36
36
|
], I18nFilter.prototype, "resolverConfig", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, decorator_1.Config)('i18n'),
|
|
39
|
+
__metadata("design:type", Object)
|
|
40
|
+
], I18nFilter.prototype, "i18nConfig", void 0);
|
|
37
41
|
I18nFilter = __decorate([
|
|
38
42
|
(0, decorator_1.Match)()
|
|
39
43
|
], I18nFilter);
|
|
@@ -72,12 +76,12 @@ let I18nMiddleware = class I18nMiddleware {
|
|
|
72
76
|
}
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
|
-
|
|
76
|
-
req.setAttr(interface_1.I18N_ATTR_KEY, requestLocale);
|
|
77
|
-
// auto write locale to cookie
|
|
78
|
-
if (this.i18nConfig.writeCookie) {
|
|
79
|
+
if (requestLocale) {
|
|
79
80
|
i18nService.saveRequestLocale(requestLocale);
|
|
80
81
|
}
|
|
82
|
+
else {
|
|
83
|
+
i18nService.saveRequestLocale();
|
|
84
|
+
}
|
|
81
85
|
return next();
|
|
82
86
|
};
|
|
83
87
|
}
|
|
@@ -113,17 +117,18 @@ let I18nMiddleware = class I18nMiddleware {
|
|
|
113
117
|
}
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
// auto write locale to cookie
|
|
119
|
-
if (this.i18nConfig.writeCookie) {
|
|
120
|
+
// save current locale
|
|
121
|
+
if (requestLocale) {
|
|
120
122
|
i18nService.saveRequestLocale(requestLocale);
|
|
121
123
|
}
|
|
124
|
+
else {
|
|
125
|
+
i18nService.saveRequestLocale();
|
|
126
|
+
}
|
|
122
127
|
// run next middleware and controller
|
|
123
128
|
await next();
|
|
124
129
|
// get need save locale
|
|
125
|
-
const saveLocale = ctx.getAttr(interface_1.
|
|
126
|
-
if (saveLocale) {
|
|
130
|
+
const saveLocale = ctx.getAttr(interface_1.I18N_ATTR_KEY);
|
|
131
|
+
if (this.i18nConfig.writeCookie && saveLocale) {
|
|
127
132
|
const cookieOptions = {
|
|
128
133
|
// make sure browser javascript can read the cookie
|
|
129
134
|
httpOnly: false,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import { IMiddleware, IMidwayApplication } from '@midwayjs/core';\nimport {\n Config,\n Match,\n Middleware,\n MidwayFrameworkType,\n} from '@midwayjs/decorator';\nimport { I18N_ATTR_KEY, I18nOptions } from './interface';\nimport { MidwayI18nService } from './i18nService';\nimport { formatLocale } from './utils';\n\n@Match()\nexport class I18nFilter {\n @Config('i18n.resolver')\n resolverConfig: I18nOptions['resolver'];\n\n @Config('i18n')\n i18nConfig: I18nOptions;\n\n match(value, req, res) {\n const saveLocale = req.getAttr(I18N_ATTR_KEY);\n if (this.i18nConfig.writeCookie && saveLocale) {\n const cookieOptions = {\n // make sure browser javascript can read the cookie\n httpOnly: false,\n maxAge: this.resolverConfig.cookieField.cookieMaxAge,\n signed: false,\n domain: this.resolverConfig.cookieField.cookieDomain,\n };\n res.cookie(\n this.resolverConfig.cookieField.fieldName,\n saveLocale,\n cookieOptions\n );\n }\n return value;\n }\n}\n\n@Middleware()\nexport class I18nMiddleware implements IMiddleware<any, any> {\n @Config('i18n.resolver')\n resolverConfig: I18nOptions['resolver'];\n\n @Config('i18n')\n i18nConfig: I18nOptions;\n\n resolve(app: IMidwayApplication) {\n if (app.getFrameworkType() === MidwayFrameworkType.WEB_EXPRESS) {\n // add a filter for i18n cookie\n app.useFilter(I18nFilter);\n return async (req, res, next) => {\n // get request locale from query/header/cookie\n let requestLocale =\n req.query[this.resolverConfig.queryField] ||\n req.cookies[this.resolverConfig.cookieField.fieldName];\n\n const i18nService = await req.requestContext.getAsync(\n MidwayI18nService\n );\n\n if (!requestLocale) {\n // Accept-Language: zh-CN,zh;q=0.5\n // Accept-Language: zh-CN\n let languages = req.acceptsLanguages();\n if (languages) {\n if (Array.isArray(languages)) {\n if (languages[0] === '*') {\n languages = languages.slice(1);\n }\n if (languages.length > 0) {\n for (let i = 0; i < languages.length; i++) {\n const lang = formatLocale(languages[i]);\n if (i18nService.hasAvailableLocale(lang)) {\n requestLocale = lang;\n break;\n }\n }\n }\n } else {\n requestLocale = languages;\n }\n }\n }\n\n if (requestLocale) {\n i18nService.saveRequestLocale(requestLocale);\n } else {\n i18nService.saveRequestLocale();\n }\n\n return next();\n };\n } else {\n return async (ctx, next) => {\n // get request locale from query/header/cookie\n let requestLocale =\n ctx.query[this.resolverConfig.queryField] ||\n ctx.cookies.get(this.resolverConfig.cookieField.fieldName, {\n signed: false,\n });\n\n const i18nService = await ctx.requestContext.getAsync(\n MidwayI18nService\n );\n if (!requestLocale) {\n // Accept-Language: zh-CN,zh;q=0.5\n // Accept-Language: zh-CN\n let languages = ctx.acceptsLanguages();\n if (languages) {\n if (Array.isArray(languages)) {\n if (languages[0] === '*') {\n languages = languages.slice(1);\n }\n if (languages.length > 0) {\n for (let i = 0; i < languages.length; i++) {\n const lang = formatLocale(languages[i]);\n if (i18nService.hasAvailableLocale(lang)) {\n requestLocale = lang;\n break;\n }\n }\n }\n } else {\n requestLocale = languages;\n }\n }\n }\n\n // save current locale\n if (requestLocale) {\n i18nService.saveRequestLocale(requestLocale);\n } else {\n i18nService.saveRequestLocale();\n }\n\n // run next middleware and controller\n await next();\n\n // get need save locale\n const saveLocale = ctx.getAttr(I18N_ATTR_KEY);\n if (this.i18nConfig.writeCookie && saveLocale) {\n const cookieOptions = {\n // make sure browser javascript can read the cookie\n httpOnly: false,\n maxAge: this.resolverConfig.cookieField.cookieMaxAge,\n signed: false,\n domain: this.resolverConfig.cookieField.cookieDomain,\n overwrite: true,\n };\n ctx.cookies.set(\n this.resolverConfig.cookieField.fieldName,\n saveLocale,\n cookieOptions\n );\n }\n };\n }\n }\n\n static getName() {\n return 'i18n';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,SAAgB,eAAe,CAAC,IAAI,EAAE,MAAM;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;YACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,wCAAwC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AATD,0CASC;AAED,MAAM,eAAe,GAAG,YAAY,CAAC;AACrC,SAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,wCAAwC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AATD,4CASC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,uCAAuC;IACvC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAChD,CAAC;AAHD,oCAGC","sourcesContent":["const ARRAY_INDEX_RE = /\\{(\\d+)\\}/g;\nexport function formatWithArray(text, values) {\n return text.replace(ARRAY_INDEX_RE, (original, matched) => {\n const index = parseInt(matched);\n if (index < values.length) {\n return values[index];\n }\n // not match index, return original text\n return original;\n });\n}\n\nconst Object_INDEX_RE = /\\{(.+?)\\}/g;\nexport function formatWithObject(text, values) {\n return text.replace(Object_INDEX_RE, (original, matched) => {\n const value = values[matched];\n if (value) {\n return value;\n }\n // not match index, return original text\n return original;\n });\n}\n\nexport function formatLocale(locale: string) {\n // support zh_CN, en_US => zh-CN, en-US\n return locale.replace('_', '-').toLowerCase();\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midwayjs/i18n",
|
|
3
3
|
"description": "midway i18n component",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.2",
|
|
5
5
|
"main": "dist/index",
|
|
6
6
|
"typings": "index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist/**/*.js",
|
|
9
9
|
"dist/**/*.d.ts",
|
|
10
|
-
"index.d.ts"
|
|
10
|
+
"index.d.ts",
|
|
11
|
+
"dist/**/*.js.map"
|
|
11
12
|
],
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"picomatch": "2.3.1"
|
|
14
15
|
},
|
|
15
16
|
"devDependencies": {
|
|
16
|
-
"@midwayjs/core": "^3.0.
|
|
17
|
-
"@midwayjs/decorator": "^3.0.
|
|
18
|
-
"@midwayjs/express": "^3.0.
|
|
19
|
-
"@midwayjs/koa": "^3.0.
|
|
20
|
-
"@midwayjs/mock": "^3.0.
|
|
17
|
+
"@midwayjs/core": "^3.0.2",
|
|
18
|
+
"@midwayjs/decorator": "^3.0.2",
|
|
19
|
+
"@midwayjs/express": "^3.0.2",
|
|
20
|
+
"@midwayjs/koa": "^3.0.2",
|
|
21
|
+
"@midwayjs/mock": "^3.0.2"
|
|
21
22
|
},
|
|
22
23
|
"keywords": [
|
|
23
24
|
"midway",
|
|
@@ -39,5 +40,5 @@
|
|
|
39
40
|
"type": "git",
|
|
40
41
|
"url": "https://github.com/midwayjs/midway.git"
|
|
41
42
|
},
|
|
42
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "ca77247d229978a736e79bb208579c014ed226fc"
|
|
43
44
|
}
|