diff --git a/src/composables/use-translate.ts b/src/composables/use-translate.ts new file mode 100644 index 000000000..38556f3e4 --- /dev/null +++ b/src/composables/use-translate.ts @@ -0,0 +1,8 @@ +import { getCurrentInstance } from 'vue'; +import { noop } from '../utils'; +import { createTranslate } from '../utils/create/translate'; + +export function useTranslate() { + const { name } = getCurrentInstance()!.type; + return name ? createTranslate(name) : noop; +} diff --git a/src/utils/create/index.ts b/src/utils/create/index.ts index 1e4a8a50f..c2c00c6d8 100644 --- a/src/utils/create/index.ts +++ b/src/utils/create/index.ts @@ -1,8 +1,12 @@ import { createBEM } from './bem'; import { createComponent } from './component'; -import { createI18N } from './i18n'; +import { createTranslate } from './translate'; export function createNamespace(name: string) { name = 'van-' + name; - return [createComponent(name), createBEM(name), createI18N(name)] as const; + return [ + createComponent(name), + createBEM(name), + createTranslate(name), + ] as const; } diff --git a/src/utils/create/i18n.ts b/src/utils/create/translate.ts similarity index 78% rename from src/utils/create/i18n.ts rename to src/utils/create/translate.ts index 456289551..cd9c6d06a 100644 --- a/src/utils/create/i18n.ts +++ b/src/utils/create/translate.ts @@ -2,7 +2,7 @@ import { get, isFunction } from '../base'; import { camelize } from '../format/string'; import locale from '../../locale'; -export function createI18N(name: string) { +export function createTranslate(name: string) { const prefix = camelize(name) + '.'; return function (path: string, ...args: any[]): string { @@ -13,4 +13,4 @@ export function createI18N(name: string) { }; } -export type Translate = ReturnType; +export type Translate = ReturnType;