@midwayjs/i18n 3.0.3 → 3.0.4-beta.1
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/package.json
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midwayjs/i18n",
|
|
3
3
|
"description": "midway i18n component",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.4-beta.1",
|
|
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"
|
|
11
|
-
"dist/**/*.js.map"
|
|
10
|
+
"index.d.ts"
|
|
12
11
|
],
|
|
13
12
|
"dependencies": {
|
|
14
13
|
"picomatch": "2.3.1"
|
|
15
14
|
},
|
|
16
15
|
"devDependencies": {
|
|
17
|
-
"@midwayjs/core": "^3.0.
|
|
18
|
-
"@midwayjs/decorator": "^3.0.
|
|
19
|
-
"@midwayjs/express": "^3.0.
|
|
20
|
-
"@midwayjs/koa": "^3.0.
|
|
21
|
-
"@midwayjs/mock": "^3.0.
|
|
16
|
+
"@midwayjs/core": "^3.0.4-beta.1",
|
|
17
|
+
"@midwayjs/decorator": "^3.0.4-beta.1",
|
|
18
|
+
"@midwayjs/express": "^3.0.4-beta.1",
|
|
19
|
+
"@midwayjs/koa": "^3.0.4-beta.1",
|
|
20
|
+
"@midwayjs/mock": "^3.0.4-beta.1"
|
|
22
21
|
},
|
|
23
22
|
"keywords": [
|
|
24
23
|
"midway",
|
|
@@ -40,5 +39,5 @@
|
|
|
40
39
|
"type": "git",
|
|
41
40
|
"url": "https://github.com/midwayjs/midway.git"
|
|
42
41
|
},
|
|
43
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "52bc37e7a570806c121b33a0e8ac1cd084445f5d"
|
|
44
43
|
}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1 +0,0 @@
|
|
|
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.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18nService.js","sourceRoot":"","sources":["../src/i18nService.ts"],"names":[],"mappings":"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","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"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|