Skip to content
This repository was archived by the owner on Dec 31, 2024. It is now read-only.

Commit 32eb3a7

Browse files
committed
🐛 bug(sfc): fix cannot parse custom block locale messages
Close #173
1 parent 60ba19d commit 32eb3a7

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

src/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,15 +324,15 @@ export default class VueI18n {
324324
}
325325

326326
getLocaleMessage (locale: Locale): LocaleMessageObject {
327-
return looseClone(this._vm.messages[locale])
327+
return looseClone(this._vm.messages[locale] || {})
328328
}
329329

330330
setLocaleMessage (locale: Locale, message: LocaleMessageObject): void {
331331
this._vm.messages[locale] = message
332332
}
333333

334334
mergeLocaleMessage (locale: Locale, message: LocaleMessageObject): void {
335-
this._vm.messages[locale] = Vue.util.extend(this.getLocaleMessage(locale), message)
335+
this._vm.messages[locale] = Vue.util.extend(this._vm.messages[locale] || {}, message)
336336
}
337337

338338
getDateTimeFormat (locale: Locale): DateTimeFormat {

src/mixin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default {
1919
})
2020
} catch (e) {
2121
if (process.env.NODE_ENV !== 'production') {
22-
warn(`Cannot parse locale messages via custom blocks.`)
22+
warn(`Cannot parse locale messages via custom blocks.`, e)
2323
}
2424
}
2525
}
@@ -38,7 +38,7 @@ export default {
3838
options.i18n.messages = JSON.parse(options.__i18n)
3939
} catch (e) {
4040
if (process.env.NODE_ENV !== 'production') {
41-
warn(`Cannot parse locale messages via custom blocks.`)
41+
warn(`Cannot parse locale messages via custom blocks.`, e)
4242
}
4343
}
4444
}

test/unit/issues.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,23 @@ describe('issues', () => {
113113
}).then(done)
114114
})
115115
})
116+
117+
describe('#173', () => {
118+
it('should be translated', done => {
119+
const Component = Vue.extend({
120+
__i18n: JSON.stringify({
121+
en: { custom: 'custom block!' }
122+
}),
123+
render (h) {
124+
return h('p', { ref: 'custom' }, [this.$t('custom')])
125+
}
126+
})
127+
const vm = new Component({
128+
i18n: new VueI18n({ locale: 'en' })
129+
}).$mount()
130+
nextTick(() => {
131+
assert.equal(vm.$refs.custom.textContent, 'custom block!')
132+
}).then(done)
133+
})
134+
})
116135
})

0 commit comments

Comments
 (0)