Skip to content

Commit a1cd110

Browse files
authored
fix cannot resolve computed property name (#255)
1 parent 0a46ea8 commit a1cd110

File tree

4 files changed

+58
-25
lines changed

4 files changed

+58
-25
lines changed

packages/core-base/src/translate.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -148,73 +148,73 @@ export interface TranslateOptions {
148148
// `translate` function overloads
149149
export function translate<Messages, Message = string>(
150150
context: CoreTranslationContext<Messages, Message>,
151-
key: Path
151+
key: Path | number
152152
): MessageType<Message> | number
153153
export function translate<Messages, Message = string>(
154154
context: CoreTranslationContext<Messages, Message>,
155-
key: Path,
155+
key: Path | number,
156156
plural: number
157157
): MessageType<Message> | number
158158
export function translate<Messages, Message = string>(
159159
context: CoreTranslationContext<Messages, Message>,
160-
key: Path,
160+
key: Path | number,
161161
plural: number,
162162
options: TranslateOptions
163163
): MessageType<Message> | number
164164
export function translate<Messages, Message = string>(
165165
context: CoreTranslationContext<Messages, Message>,
166-
key: Path,
166+
key: Path | number,
167167
defaultMsg: string
168168
): MessageType<Message> | number
169169
export function translate<Messages, Message = string>(
170170
context: CoreTranslationContext<Messages, Message>,
171-
key: Path,
171+
key: Path | number,
172172
defaultMsg: string,
173173
options: TranslateOptions
174174
): MessageType<Message> | number
175175
export function translate<Messages, Message = string>(
176176
context: CoreTranslationContext<Messages, Message>,
177-
key: Path,
177+
key: Path | number,
178178
list: unknown[]
179179
): MessageType<Message> | number
180180
export function translate<Messages, Message = string>(
181181
context: CoreTranslationContext<Messages, Message>,
182-
key: Path,
182+
key: Path | number,
183183
list: unknown[],
184184
plural: number
185185
): MessageType<Message> | number
186186
export function translate<Messages, Message = string>(
187187
context: CoreTranslationContext<Messages, Message>,
188-
key: Path,
188+
key: Path | number,
189189
list: unknown[],
190190
defaultMsg: string
191191
): MessageType<Message> | number
192192
export function translate<Messages, Message = string>(
193193
context: CoreTranslationContext<Messages, Message>,
194-
key: Path,
194+
key: Path | number,
195195
list: unknown[],
196196
options: TranslateOptions
197197
): MessageType<Message> | number
198198
export function translate<Messages, Message = string>(
199199
context: CoreTranslationContext<Messages, Message>,
200-
key: Path,
200+
key: Path | number,
201201
named: NamedValue
202202
): MessageType<Message> | number
203203
export function translate<Messages, Message = string>(
204204
context: CoreTranslationContext<Messages, Message>,
205-
key: Path,
205+
key: Path | number,
206206
named: NamedValue,
207207
plural: number
208208
): MessageType<Message> | number
209209
export function translate<Messages, Message = string>(
210210
context: CoreTranslationContext<Messages, Message>,
211-
key: Path,
211+
key: Path | number,
212212
named: NamedValue,
213213
defaultMsg: string
214214
): MessageType<Message> | number
215215
export function translate<Messages, Message = string>(
216216
context: CoreTranslationContext<Messages, Message>,
217-
key: Path,
217+
key: Path | number,
218218
named: NamedValue,
219219
options: TranslateOptions
220220
): MessageType<Message> | number
@@ -564,10 +564,10 @@ export function parseTranslateArgs(
564564
const [arg1, arg2, arg3] = args
565565
const options = {} as TranslateOptions
566566

567-
if (!isString(arg1)) {
567+
if (!isString(arg1) && !isNumber(arg1)) {
568568
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT)
569569
}
570-
const key = arg1
570+
const key = isNumber(arg1) ? String(arg1) : arg1
571571

572572
if (isNumber(arg2)) {
573573
options.plural = arg2

packages/core-base/test/translate.test.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -660,11 +660,15 @@ describe('error', () => {
660660
}
661661
})
662662
expect(() => {
663-
translate(ctx, 1)
663+
translate(ctx, {})
664664
}).toThrowError(errorMessages[CoreErrorCodes.INVALID_ARGUMENT])
665665
})
666666
})
667667

668+
const enum ErrorCodes {
669+
CODE1 = 1
670+
}
671+
668672
describe('edge cases', () => {
669673
test('multi bytes key', () => {
670674
const ctx = context({
@@ -689,6 +693,18 @@ describe('edge cases', () => {
689693
})
690694
expect(translate(ctx, 'side.left')).toEqual('Left')
691695
})
696+
697+
test('computed property name', () => {
698+
const ctx = context({
699+
locale: 'en',
700+
messages: {
701+
en: {
702+
[ErrorCodes.CODE1]: 'error code1'
703+
}
704+
}
705+
})
706+
expect(translate(ctx, ErrorCodes.CODE1)).toEqual('error code1')
707+
})
692708
})
693709

694710
/* eslint-enable @typescript-eslint/no-empty-function */

packages/vue-i18n/src/composer.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ export interface Composer<
460460
*
461461
* @VueI18nSee [Scope and Locale Changing](../essentials/scope)
462462
*/
463-
t(key: Path): string
463+
t(key: Path | number): string
464464
/**
465465
* Locale message translation for plurals
466466
*
@@ -481,7 +481,7 @@ export interface Composer<
481481
*
482482
* @VueI18nSee [Pluralization](../essentials/pluralization)
483483
*/
484-
t(key: Path, plural: number, options?: TranslateOptions): string
484+
t(key: Path | number, plural: number, options?: TranslateOptions): string
485485
/**
486486
* Locale message translation for missing default mssage
487487
*
@@ -500,7 +500,7 @@ export interface Composer<
500500
*
501501
* @returns Translated message
502502
*/
503-
t(key: Path, defaultMsg: string, options?: TranslateOptions): string
503+
t(key: Path | number, defaultMsg: string, options?: TranslateOptions): string
504504
/**
505505
* Locale message translation for list interpolations
506506
*
@@ -521,7 +521,7 @@ export interface Composer<
521521
*
522522
* @VueI18nSee [List interpolation](../essentials/syntax#list-interpolation)
523523
*/
524-
t(key: Path, list: unknown[], options?: TranslateOptions): string
524+
t(key: Path | number, list: unknown[], options?: TranslateOptions): string
525525
/**
526526
* Locale message translation for list interpolations and plurals
527527
*
@@ -539,7 +539,7 @@ export interface Composer<
539539
* @VueI18nSee [Pluralization](../essentials/pluralization)
540540
* @VueI18nSee [List interpolation](../essentials/syntax#list-interpolation)
541541
*/
542-
t(key: Path, list: unknown[], plural: number): string
542+
t(key: Path | number, list: unknown[], plural: number): string
543543
/**
544544
* Locale message translation for list interpolations and missing default mssage
545545
*
@@ -556,7 +556,7 @@ export interface Composer<
556556
*
557557
* @VueI18nSee [List interpolation](../essentials/syntax#list-interpolation)
558558
*/
559-
t(key: Path, list: unknown[], defaultMsg: string): string
559+
t(key: Path | number, list: unknown[], defaultMsg: string): string
560560
/**
561561
* Locale message translation for named interpolations
562562
*
@@ -577,7 +577,7 @@ export interface Composer<
577577
*
578578
* @VueI18nSee [Named interpolation](../essentials/syntax#named-interpolation)
579579
*/
580-
t(key: Path, named: NamedValue, options?: TranslateOptions): string
580+
t(key: Path | number, named: NamedValue, options?: TranslateOptions): string
581581
/**
582582
* Locale message translation for named interpolations and plurals
583583
*
@@ -595,7 +595,7 @@ export interface Composer<
595595
* @VueI18nSee [Pluralization](../essentials/pluralization)
596596
* @VueI18nSee [Named interpolation](../essentials/syntax#named-interpolation)
597597
*/
598-
t(key: Path, named: NamedValue, plural: number): string
598+
t(key: Path | number, named: NamedValue, plural: number): string
599599
/**
600600
* Locale message translation for named interpolations and plurals
601601
*
@@ -612,7 +612,7 @@ export interface Composer<
612612
*
613613
* @VueI18nSee [Named interpolation](../essentials/syntax#named-interpolation)
614614
*/
615-
t(key: Path, named: NamedValue, defaultMsg: string): string
615+
t(key: Path | number, named: NamedValue, defaultMsg: string): string
616616
/** @internal */
617617
t(...args: unknown[]): string
618618
/**

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,10 @@ describe('getMissingHandler / setMissingHandler', () => {
467467
})
468468
})
469469

470+
const enum ErrorCodes {
471+
Code1 = 1
472+
}
473+
470474
describe('t', () => {
471475
test('basic', () => {
472476
const { t } = createComposer({
@@ -578,6 +582,19 @@ describe('t', () => {
578582
})
579583
expect(t('foo.bar.buz')).toEqual('FOO.BAR.BUZ')
580584
})
585+
586+
test('computed property name', () => {
587+
const { t } = createComposer({
588+
locale: 'en',
589+
messages: {
590+
en: {
591+
[ErrorCodes.Code1]: 'computed property name'
592+
}
593+
}
594+
})
595+
596+
expect(t(ErrorCodes.Code1)).toEqual('computed property name')
597+
})
581598
})
582599

583600
describe('d', () => {

0 commit comments

Comments
 (0)