feat: add localeAlias options
parent
b5c5c2e47a
commit
ec48f1f20c
|
@ -57,6 +57,7 @@ Patch locales functions to koa app.
|
||||||
- {String} defaultLocale: default locale. Optional, default is `en-US`.
|
- {String} defaultLocale: default locale. Optional, default is `en-US`.
|
||||||
- {String} queryField: locale field name on query. Optional, default is `locale`.
|
- {String} queryField: locale field name on query. Optional, default is `locale`.
|
||||||
- {String} cookieField: locale field name on cookie. Optional, default is `locale`.
|
- {String} cookieField: locale field name on cookie. Optional, default is `locale`.
|
||||||
|
- {Object} localeAlias: locale cookie value map. Optional, default is {}.
|
||||||
- {String|Number} cookieMaxAge: set locale cookie value max age. Optional, default is `1y`, expired after one year.
|
- {String|Number} cookieMaxAge: set locale cookie value max age. Optional, default is `1y`, expired after one year.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
|
5
index.js
5
index.js
|
@ -24,6 +24,7 @@ const DEFAULT_OPTIONS = {
|
||||||
defaultLocale: 'en-US',
|
defaultLocale: 'en-US',
|
||||||
queryField: 'locale',
|
queryField: 'locale',
|
||||||
cookieField: 'locale',
|
cookieField: 'locale',
|
||||||
|
localeAlias: {},
|
||||||
cookieMaxAge: '1y',
|
cookieMaxAge: '1y',
|
||||||
dir: undefined,
|
dir: undefined,
|
||||||
dirs: [path.join(process.cwd(), 'locales')],
|
dirs: [path.join(process.cwd(), 'locales')],
|
||||||
|
@ -35,6 +36,7 @@ module.exports = function (app, options) {
|
||||||
const defaultLocale = formatLocale(options.defaultLocale);
|
const defaultLocale = formatLocale(options.defaultLocale);
|
||||||
const queryField = options.queryField;
|
const queryField = options.queryField;
|
||||||
const cookieField = options.cookieField;
|
const cookieField = options.cookieField;
|
||||||
|
const localeAlias = options.localeAlias;
|
||||||
const cookieMaxAge = ms(options.cookieMaxAge);
|
const cookieMaxAge = ms(options.cookieMaxAge);
|
||||||
const localeDir = options.dir;
|
const localeDir = options.dir;
|
||||||
const localeDirs = options.dirs;
|
const localeDirs = options.dirs;
|
||||||
|
@ -172,6 +174,9 @@ module.exports = function (app, options) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cookie alias
|
||||||
|
if (locale in localeAlias) locale = localeAlias[locale];
|
||||||
|
|
||||||
locale = formatLocale(locale);
|
locale = formatLocale(locale);
|
||||||
|
|
||||||
// validate locale
|
// validate locale
|
||||||
|
|
|
@ -66,6 +66,13 @@ describe('koa-locales.test.js', function () {
|
||||||
const app = createApp({
|
const app = createApp({
|
||||||
dirs: [__dirname + '/locales', __dirname + '/other-locales'],
|
dirs: [__dirname + '/locales', __dirname + '/other-locales'],
|
||||||
});
|
});
|
||||||
|
const cookieFieldMapApp = createApp({
|
||||||
|
dirs: [__dirname + '/locales', __dirname + '/other-locales'],
|
||||||
|
localeAlias: {
|
||||||
|
'en': 'en-US',
|
||||||
|
'de-de': 'de',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
it('should use default locale: en-US', function (done) {
|
it('should use default locale: en-US', function (done) {
|
||||||
request(app.callback())
|
request(app.callback())
|
||||||
|
@ -193,6 +200,31 @@ describe('koa-locales.test.js', function () {
|
||||||
.expect('Set-Cookie', /^locale=en\-us; path=\/; expires=\w+/)
|
.expect('Set-Cookie', /^locale=en\-us; path=\/; expires=\w+/)
|
||||||
.expect(200, done);
|
.expect(200, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should use localeAlias', function (done) {
|
||||||
|
request(cookieFieldMapApp.callback())
|
||||||
|
.get('/?locale=de-de')
|
||||||
|
.expect({
|
||||||
|
email: 'Emailde',
|
||||||
|
hello: 'Hallo fengmk2, wie geht es dir heute?',
|
||||||
|
message: 'Hallo fengmk2, wie geht es dir heute? Wie war dein 18.',
|
||||||
|
empty: '',
|
||||||
|
notexists_key: 'key not exists',
|
||||||
|
empty_string: '',
|
||||||
|
empty_value: 'emptyValue',
|
||||||
|
novalue: 'key %s ok',
|
||||||
|
arguments3: '1 2 3',
|
||||||
|
arguments4: '1 2 3 4',
|
||||||
|
arguments5: '1 2 3 4 5',
|
||||||
|
arguments6: '1 2 3 4 5. 6',
|
||||||
|
values: 'foo bar foo bar {2} {100}',
|
||||||
|
object: 'foo bar foo bar {z}',
|
||||||
|
'gender': 'model.user.fields.gender',
|
||||||
|
'name': 'model.user.fields.name',
|
||||||
|
})
|
||||||
|
.expect('Set-Cookie', /^locale=de; path=\/; expires=\w+/)
|
||||||
|
.expect(200, done);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('cookie.locale', function () {
|
describe('cookie.locale', function () {
|
||||||
|
|
Loading…
Reference in New Issue