export type StringSetValueType = string | ((...args: any[]) => string); /** * StringSet is a set of strings. * * key: identifier * * value: string or function */ export interface StringSet { [key: string]: StringSetValueType; } /** * https://learn.microsoft.com/en-us/azure/ai-services/translator/language-support * * Values ​​that are not enumerated are also supported and can be written like `fil as any`. */ export type LanguageCode = | 'en' | 'zh-Hans' | 'zh-Hant' | 'ru' | 'de' | 'fr' | 'ja' | 'ko'; /** * Create a registration callback for the language pack. After implementation, the language package collection can be returned according to the language code. * * @example * * ```tsx * export function createDefaultStringSet(type: LanguageCode): StringSet { * switch (type) { * case 'en': * return createStringSetEn(); * case 'zh-Hans': * return createStringSetCn(); * default: * return createStringSetEn(); * } * } * ``` */ export type CreateStringSet = (type: LanguageCode) => StringSet; /** * I18nInit is the initialization parameters of I18n. */ export interface I18nInit { /** * The language code of the current language. */ languageCode: LanguageCode; /** * The string set of the current language. */ assets?: CreateStringSet | StringSet; } /** * I18nTr is the interface of I18n. */ export interface I18nTr { /** * Translate the corresponding language based on the keywords. * @param key identifier. * @param args any. * * @example * * ```tsx * const { tr } = useI18nContext(); * // ... * {tr('hello')} * // ... * {tr('hello, ${0}', 'John')} * ``` */ tr(key: string, ...args: any[]): string; /** * Get the current language code. */ currentLanguage: () => LanguageCode; }