@@ -84,6 +84,7 @@ export const DatetimePartsSymbol = makeSymbol('__datetimeParts')
84
84
export const NumberPartsSymbol = makeSymbol ( '__numberParts' )
85
85
export const EnableEmitter = makeSymbol ( '__enableEmitter' )
86
86
export const DisableEmitter = makeSymbol ( '__disableEmitter' )
87
+ export const SetPluralRulesSymbol = makeSymbol ( '__setPluralRules' )
87
88
88
89
/** @VueI 18nComposition */
89
90
export type VueMessageType = string | VNode
@@ -910,6 +911,7 @@ export interface ComposerInternal {
910
911
__datetimeParts ( ...args : unknown [ ] ) : string | Intl . DateTimeFormatPart [ ]
911
912
__enableEmitter ?: ( emitter : DevToolsEmitter ) => void
912
913
__disableEmitter ?: ( ) => void
914
+ __setPluralRules ( rules : PluralizationRules ) : void
913
915
}
914
916
915
917
type ComposerWarnType = 'translate' | 'number format' | 'datetime format'
@@ -1119,7 +1121,7 @@ export function createComposer<
1119
1121
: { } as LinkedModifiers < Message >
1120
1122
1121
1123
// pluralRules
1122
- const _pluralRules = options . pluralRules || ( __root && __root . pluralRules )
1124
+ let _pluralRules = options . pluralRules || ( __root && __root . pluralRules )
1123
1125
1124
1126
// runtime context
1125
1127
// eslint-disable-next-line prefer-const
@@ -1385,6 +1387,11 @@ export function createComposer<
1385
1387
)
1386
1388
}
1387
1389
1390
+ function __setPluralRules ( rules : PluralizationRules ) : void {
1391
+ _pluralRules = rules
1392
+ _context . pluralRules = _pluralRules
1393
+ }
1394
+
1388
1395
// te
1389
1396
function te ( key : Path , locale ?: Locale ) : boolean {
1390
1397
const targetLocale = isString ( locale ) ? locale : _locale . value
@@ -1597,7 +1604,8 @@ export function createComposer<
1597
1604
setMissingHandler,
1598
1605
[ TransrateVNodeSymbol ] : __transrateVNode ,
1599
1606
[ NumberPartsSymbol ] : __numberParts ,
1600
- [ DatetimePartsSymbol ] : __datetimeParts
1607
+ [ DatetimePartsSymbol ] : __datetimeParts ,
1608
+ [ SetPluralRulesSymbol ] : __setPluralRules
1601
1609
}
1602
1610
1603
1611
// for vue-devtools timeline event
0 commit comments