feat: Support nested locale keys.
Example:
```js
{
model: {
user: {
name: 'Real Name',
createdAt: 'Joined At'
}
}
}
```
```js
ctx.__('model.user.name');
ctx.__('model.user.createdAt');
```
The before:
```js
{
'model.user.name': 'Real Name',
'model.user.createdAt', 'Joined At'
}
```
Benchmarks:
```
Deeps: 9
2 tests completed.
direct read a key x 85,993,593 ops/sec ±1.89% (96 runs sampled)
by nested x 4,203,837 ops/sec ±0.98% (93 runs sampled)
```
This commit is contained in:
@@ -45,6 +45,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -73,6 +75,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -96,6 +100,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-cn; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -118,6 +124,8 @@ describe('koa-locales.test.js', function () {
|
||||
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);
|
||||
@@ -141,6 +149,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-cn; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -163,6 +173,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -188,6 +200,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect(function (res) {
|
||||
assert(!res.headers['set-cookie']);
|
||||
@@ -217,6 +231,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-cn; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -238,6 +254,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-cn; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -259,6 +277,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性别",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-cn; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -282,6 +302,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -305,6 +327,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -330,6 +354,8 @@ describe('koa-locales.test.js', function () {
|
||||
arguments6: '1 2 3 4 5. 6',
|
||||
values: 'foo bar foo bar {2} {100}',
|
||||
object: 'foo bar foo bar {z}',
|
||||
"gender": "性別",
|
||||
"name": "姓名"
|
||||
})
|
||||
.expect('Set-Cookie', /^locale=zh\-tw; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -355,6 +381,8 @@ describe('koa-locales.test.js', function () {
|
||||
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=en\-us; path=\/; expires=\w+/)
|
||||
.expect(200, done);
|
||||
@@ -371,6 +399,8 @@ function createApp(options) {
|
||||
app.use(function* () {
|
||||
this.body = {
|
||||
email: this[fname]('Email'),
|
||||
name: this[fname]('model.user.fields.name'),
|
||||
gender: this[fname]('model.user.fields.gender'),
|
||||
hello: this[fname]('Hello %s, how are you today?', 'fengmk2'),
|
||||
message: this[fname]('Hello %s, how are you today? How was your %s.', 'fengmk2', 18),
|
||||
empty: this[fname](),
|
||||
|
||||
Reference in New Issue
Block a user