Skip to content

Commit 4ba1a86

Browse files
fix for function mergeLocaleMessage, and modify some tests (#334)
1 parent c7d5bbf commit 4ba1a86

File tree

4 files changed

+35
-18
lines changed

4 files changed

+35
-18
lines changed

packages/vue-i18n/src/composer.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1423,10 +1423,8 @@ export function createComposer<
14231423
locale: Locale,
14241424
message: LocaleMessageDictionary<Message>
14251425
): void {
1426-
_messages.value[locale] = Object.assign(
1427-
_messages.value[locale] || {},
1428-
message
1429-
)
1426+
_messages.value[locale] = _messages.value[locale] || {}
1427+
deepCopy(message, _messages.value[locale])
14301428
_context.messages = _messages.value as typeof _context.messages
14311429
}
14321430

packages/vue-i18n/test/composer.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -875,13 +875,15 @@ describe('getLocaleMessage / setLocaleMessage / mergeLocaleMessage', () => {
875875
})
876876
expect(getLocaleMessage('en')).toEqual({ hello: 'Hello!' })
877877

878-
setLocaleMessage('en', { hi: 'Hi!' })
879-
expect(getLocaleMessage('en')).toEqual({ hi: 'Hi!' })
878+
setLocaleMessage('en', { hi: { hi: 'Hi!' } })
879+
expect(getLocaleMessage('en')).toEqual({ hi: { hi: 'Hi!' } })
880880

881-
mergeLocaleMessage('en', { hello: 'Hello!' })
881+
mergeLocaleMessage('en', { hi: { hello: 'Hello!' } })
882882
expect(getLocaleMessage('en')).toEqual({
883-
hello: 'Hello!',
884-
hi: 'Hi!'
883+
hi: {
884+
hi: 'Hi!',
885+
hello: 'Hello!'
886+
}
885887
})
886888
})
887889
})

packages/vue-i18n/test/i18n.test.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ test('merge useI18n resources to global scope', async () => {
554554
locale: 'ja',
555555
messages: {
556556
en: {
557-
hello: 'hello!'
557+
hi: { hello: 'hello!' }
558558
}
559559
}
560560
})
@@ -564,6 +564,9 @@ test('merge useI18n resources to global scope', async () => {
564564
useI18n({
565565
useScope: 'global',
566566
messages: {
567+
en: {
568+
hi: { hi: 'hi!' }
569+
},
567570
ja: {
568571
hello: 'こんにちは!'
569572
}
@@ -595,6 +598,12 @@ test('merge useI18n resources to global scope', async () => {
595598
})
596599
await mount(App, i18n)
597600

601+
expect(i18n.global.getLocaleMessage('en')).toEqual({
602+
hi: {
603+
hi: 'hi!',
604+
hello: 'hello!'
605+
}
606+
})
598607
expect(i18n.global.getLocaleMessage('ja')).toEqual({ hello: 'こんにちは!' })
599608
expect(i18n.global.getDateTimeFormat('en-US')).toEqual({
600609
short: {
@@ -620,7 +629,7 @@ test('merge i18n custom blocks to global scope', async () => {
620629
locale: 'ja',
621630
messages: {
622631
en: {
623-
hello: 'hello!'
632+
hi: { hello: 'hello!' }
624633
}
625634
}
626635
})
@@ -635,7 +644,10 @@ test('merge i18n custom blocks to global scope', async () => {
635644
options.__i18nGlobal = [
636645
{
637646
locale: 'en',
638-
resource: { foo: 'foo!' }
647+
resource: {
648+
hi: { hi: 'hi!' },
649+
foo: 'foo!'
650+
}
639651
},
640652
{
641653
locale: 'ja',
@@ -657,7 +669,10 @@ test('merge i18n custom blocks to global scope', async () => {
657669
await mount(App, i18n)
658670

659671
expect(i18n.global.getLocaleMessage('en')).toEqual({
660-
hello: 'hello!',
672+
hi: {
673+
hi: 'hi!',
674+
hello: 'hello!'
675+
},
661676
foo: 'foo!'
662677
})
663678
expect(i18n.global.getLocaleMessage('ja')).toEqual({

packages/vue-i18n/test/legacy.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,13 +298,15 @@ test('getLocaleMessage / setLocaleMessage / mergeLocaleMessage', () => {
298298
})
299299
expect(i18n.getLocaleMessage('en')).toEqual({ hello: 'Hello!' })
300300

301-
i18n.setLocaleMessage('en', { hi: 'Hi!' })
302-
expect(i18n.getLocaleMessage('en')).toEqual({ hi: 'Hi!' })
301+
i18n.setLocaleMessage('en', { hi: { hi: 'hi!' } })
302+
expect(i18n.getLocaleMessage('en')).toEqual({ hi: { hi: 'hi!' } })
303303

304-
i18n.mergeLocaleMessage('en', { hello: 'Hello!' })
304+
i18n.mergeLocaleMessage('en', { hi: { hello: 'hello!' } })
305305
expect(i18n.getLocaleMessage('en')).toEqual({
306-
hello: 'Hello!',
307-
hi: 'Hi!'
306+
hi: {
307+
hi: 'hi!',
308+
hello: 'hello!'
309+
}
308310
})
309311
})
310312

0 commit comments

Comments
 (0)