@@ -85,7 +85,10 @@ type VTDirectiveValue = {
8585 * })
8686 * ```
8787 */
88- export type TranslationSignatureResolver = ( context : TransformContext ) => string
88+ export type TranslationSignatureResolver = (
89+ context : TransformContext ,
90+ baseResolver : ( context : TransformContext , signature : string ) => string | undefined
91+ ) => string | undefined
8992
9093/**
9194 * Transform options for `v-t` custom directive
@@ -452,24 +455,27 @@ function generateTranslationCallableSignatures(
452455 context : TransformContext ,
453456 translationSignatures : ( string | TranslationSignatureResolver ) [ ]
454457) : string {
455- const { prefixIdentifiers, bindingMetadata, inline } = context
458+ const baseResolver = ( context : TransformContext , signature : string ) => {
459+ const { prefixIdentifiers, bindingMetadata, inline } = context
460+ if ( inline && signature !== GLOBAL_TRANSLATE_SIGNATURE ) {
461+ return signature
462+ }
463+ const type = hasOwn ( bindingMetadata , signature ) && bindingMetadata [ signature ]
464+ const bindingContext = prefixIdentifiers
465+ ? ( type && type . startsWith ( 'setup' ) ) || type === BindingTypes . LITERAL_CONST
466+ ? '$setup.'
467+ : '_ctx.'
468+ : ''
469+ return `${ bindingContext } ${ signature } `
470+ }
456471 return translationSignatures
457472 . map ( signatureOrResolver => {
458473 if ( isFunction ( signatureOrResolver ) ) {
459- return signatureOrResolver ( context )
460- }
461- if ( inline && signatureOrResolver !== GLOBAL_TRANSLATE_SIGNATURE ) {
462- return signatureOrResolver
474+ return signatureOrResolver ( context , baseResolver )
463475 }
464- const type =
465- hasOwn ( bindingMetadata , signatureOrResolver ) && bindingMetadata [ signatureOrResolver ]
466- const bindingContext = prefixIdentifiers
467- ? ( type && type . startsWith ( 'setup' ) ) || type === BindingTypes . LITERAL_CONST
468- ? '$setup.'
469- : '_ctx.'
470- : ''
471- return `${ bindingContext } ${ signatureOrResolver } `
476+ return baseResolver ( context , signatureOrResolver )
472477 } )
478+ . filter ( Boolean )
473479 . join ( ' || ' )
474480}
475481
0 commit comments