@@ -5,8 +5,10 @@ import { VueTemplateCompiler } from '@vue/component-compiler-utils/dist/types'
5
5
import {
6
6
SFCFileInfo ,
7
7
Locale ,
8
- MetaExternalLocaleMessages ,
8
+ LocaleMessageDictionary ,
9
+ LocaleMessage ,
9
10
LocaleMessages ,
11
+ MetaExternalLocaleMessages ,
10
12
FormatOptions ,
11
13
ProviderFactory ,
12
14
ProviderConfiguration ,
@@ -60,6 +62,10 @@ export function resolve (...paths: string[]): string {
60
62
return path . resolve ( ...paths )
61
63
}
62
64
65
+ export function isLocaleMessageDictionary ( message : LocaleMessage ) : message is LocaleMessageDictionary {
66
+ return typeof message !== 'string' && ! Array . isArray ( message )
67
+ }
68
+
63
69
export function reflectSFCDescriptor ( basePath : string , components : SFCFileInfo [ ] ) : SFCDescriptor [ ] {
64
70
return components . map ( target => {
65
71
const { template, script, styles, customBlocks } = parse ( {
@@ -402,13 +408,13 @@ export function splitLocaleMessages (
402
408
// eslint-disable-next-line @typescript-eslint/no-explicit-any
403
409
const stack = [ ] as { key : string , ref : any } [ ]
404
410
// eslint-disable-next-line @typescript-eslint/no-explicit-any
405
- let targetLocaleMessage = messages [ locale ] as any
406
- if ( namespace && targetLocaleMessage [ namespace ] ) {
411
+ let targetLocaleMessage = messages [ locale ]
412
+ if ( namespace && isLocaleMessageDictionary ( targetLocaleMessage ) ) {
407
413
const ref1 = targetLocaleMessage
408
414
targetLocaleMessage = targetLocaleMessage [ namespace ]
409
415
stack . push ( { key : namespace , ref : ref1 } )
410
416
}
411
- if ( filename && targetLocaleMessage [ filename ] ) {
417
+ if ( filename && isLocaleMessageDictionary ( targetLocaleMessage ) ) {
412
418
const ref2 = targetLocaleMessage
413
419
targetLocaleMessage = targetLocaleMessage [ filename ]
414
420
stack . push ( { key : filename , ref : ref2 } )
0 commit comments