Skip to content

Commit 0ed6ece

Browse files
committed
refactor: implement abstract methods
1 parent ee68af0 commit 0ed6ece

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

packages/runtime-core/src/i18n.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ export type TranslatorOptions<T extends { [key: string]: unknown }> = {
3434
translations: T;
3535
};
3636

37+
/** @public */
38+
export type TranslatorInitOptions = {
39+
onLanguageChange?: LanguageChangeHandler | null;
40+
};
41+
3742
/** @public */
3843
export abstract class BaseTranslator<T extends { [key: string]: unknown } = { [key: string]: unknown }> {
3944
protected currentDocumentLanguage: Language | null;
@@ -60,6 +65,8 @@ export abstract class BaseTranslator<T extends { [key: string]: unknown } = { [k
6065
return this.currentDocumentLanguage ?? this.fallbackLanguage;
6166
}
6267

68+
abstract changeLanguage(language: Language): void;
69+
6370
@InitializedOnly
6471
protected extractLanguageProperty(element: Element) {
6572
const lang = element.getAttribute('lang');
@@ -70,6 +77,8 @@ export abstract class BaseTranslator<T extends { [key: string]: unknown } = { [k
7077
return null;
7178
}
7279

80+
abstract init(options?: TranslatorInitOptions): void;
81+
7382
@InitializedOnly
7483
t(key: TranslationKey<T>) {
7584
const value = get(this.translations, key) as { [key: string]: string } | string | undefined;
@@ -91,7 +100,7 @@ export class Translator<T extends { [key: string]: unknown }> extends BaseTransl
91100
window.top!.document.dispatchEvent(new CustomEvent('changeLanguage', { detail: language }));
92101
}
93102

94-
init(options?: { onLanguageChange?: LanguageChangeHandler | null }) {
103+
init(options?: TranslatorInitOptions) {
95104
if (typeof window === 'undefined') {
96105
throw new Error('Cannot initialize Translator outside of browser');
97106
} else if (!window.frameElement) {

0 commit comments

Comments
 (0)