Skip to content

Commit

Permalink
feat: add te for composition API (#200)
Browse files Browse the repository at this point in the history
  • Loading branch information
kazupon committed Nov 30, 2020
1 parent fab6b75 commit e59f756
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 9 deletions.
2 changes: 1 addition & 1 deletion docs/advanced/composition.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ Below is the mapping table:
| `preserveDirectiveContent` | N/A |
| `t` | `t` |
| `tc` | `t` |
| `te` | N/A |
| `te` | `te` |
| `tm` | `tm` |
| `getLocaleMessage` | `getLocaleMessage` |
| `setLocaleMessage` | `setLocaleMessage`|
Expand Down
22 changes: 22 additions & 0 deletions src/composer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,20 @@ export interface Composer<
n(value: number, options: NumberOptions): string
/** @internal */
n(...args: unknown[]): string
/**
* Translation locale message exist
*
* @remarks
* whether do exist locale message on Composer instance [messages](composition#messages).
*
* If you specified `locale`, check the locale messages of `locale`.
*
* @param key - A target locale message key
* @param locale - A locale, it will be used over than global scope or local scope
*
* @returns If found locale message, `true`, else `false`
*/
te(key: Path, locale?: Locale): boolean
/**
* Locale messages getter
*
Expand Down Expand Up @@ -1413,6 +1427,13 @@ export function createComposer<
)
}

// te
function te(key: Path, locale?: Locale): boolean {
const targetLocale = isString(locale) ? locale : _locale.value
const message = getLocaleMessage(targetLocale)
return resolveValue(message, key) !== null
}

// tm
function tm(key: Path): LocaleMessageValue<Message> | {} {
const messages = _messages.value[_locale.value] || {}
Expand Down Expand Up @@ -1605,6 +1626,7 @@ export function createComposer<
t,
d,
n,
te,
tm,
getLocaleMessage,
setLocaleMessage,
Expand Down
12 changes: 4 additions & 8 deletions src/legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -643,17 +643,15 @@ export interface VueI18n<
/** @internal */
tc(...args: unknown[]): TranslateResult // for $tc
/**
* Translation message exist
* Translation locale message exist
*
* @remarks
* Check whether key exists.
*
* In Vue instance, If not specified locale messages on i18n component options component locale messages, check with global scope locale messages.
* whether do exist locale message on VueI18n instance [messages](legacy#messages).
*
* If you specified `locale`, check the locale messages of `locale`.
*
* @param key - A target locale message key
* @param locale - A locale, it will be used over than global scope or local scope.
* @param locale - A target locale
*
* @returns If found locale message, `true`, else `false`
*/
Expand Down Expand Up @@ -1255,9 +1253,7 @@ export function createVueI18n<

// te
te(key: Path, locale?: Locale): boolean {
const targetLocale = isString(locale) ? locale : composer.locale.value
const message = composer.getLocaleMessage(targetLocale)
return resolveValue(message, key) !== null
return composer.te(key, locale)
},

// tm
Expand Down
17 changes: 17 additions & 0 deletions test/composer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,23 @@ test('tm', async () => {
expect(messages2).toEqual({})
})

test('te', async () => {
const { te } = createComposer({
locale: 'en',
messages: {
en: {
message: {
hello: 'Hello!'
}
}
}
})

expect(te('message.hello')).toEqual(true)
expect(te('message.hallo')).toEqual(false)
expect(te('message.hallo', 'ja')).toEqual(false)
})

describe('getLocaleMessage / setLocaleMessage / mergeLocaleMessage', () => {
test('basic', () => {
const {
Expand Down

0 comments on commit e59f756

Please sign in to comment.