Skip to content

Commit ee68af0

Browse files
committed
refactor: move methods to abstract class
1 parent 1f4baed commit ee68af0

1 file changed

Lines changed: 26 additions & 26 deletions

File tree

packages/runtime-core/src/i18n.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,6 @@ export abstract class BaseTranslator<T extends { [key: string]: unknown } = { [k
4949
this.isInitialized = false;
5050
this.translations = translations;
5151
}
52-
}
53-
54-
/** @public */
55-
export class Translator<T extends { [key: string]: unknown }> extends BaseTranslator<T> {
56-
constructor(options: TranslatorOptions<T>) {
57-
super(options);
58-
}
5952

6053
@InitializedOnly
6154
set onLanguageChange(handler: LanguageChangeHandler) {
@@ -67,6 +60,32 @@ export class Translator<T extends { [key: string]: unknown }> extends BaseTransl
6760
return this.currentDocumentLanguage ?? this.fallbackLanguage;
6861
}
6962

63+
@InitializedOnly
64+
protected extractLanguageProperty(element: Element) {
65+
const lang = element.getAttribute('lang');
66+
if (lang === 'en' || lang === 'fr') {
67+
return lang;
68+
}
69+
console.error(`Unexpected value for 'lang' attribute: '${lang}'`);
70+
return null;
71+
}
72+
73+
@InitializedOnly
74+
t(key: TranslationKey<T>) {
75+
const value = get(this.translations, key) as { [key: string]: string } | string | undefined;
76+
if (typeof value === 'string') {
77+
return value;
78+
}
79+
return value?.[this.resolvedLanguage] ?? value?.[this.fallbackLanguage] ?? key;
80+
}
81+
}
82+
83+
/** @public */
84+
export class Translator<T extends { [key: string]: unknown }> extends BaseTranslator<T> {
85+
constructor(options: TranslatorOptions<T>) {
86+
super(options);
87+
}
88+
7089
@InitializedOnly
7190
changeLanguage(language: Language) {
7291
window.top!.document.dispatchEvent(new CustomEvent('changeLanguage', { detail: language }));
@@ -97,23 +116,4 @@ export class Translator<T extends { [key: string]: unknown }> extends BaseTransl
97116

98117
languageAttributeObserver.observe(window.frameElement, { attributes: true });
99118
}
100-
101-
@InitializedOnly
102-
t(key: TranslationKey<T>) {
103-
const value = get(this.translations, key) as { [key: string]: string } | string | undefined;
104-
if (typeof value === 'string') {
105-
return value;
106-
}
107-
return value?.[this.resolvedLanguage] ?? value?.[this.fallbackLanguage] ?? key;
108-
}
109-
110-
@InitializedOnly
111-
private extractLanguageProperty(element: Element) {
112-
const lang = element.getAttribute('lang');
113-
if (lang === 'en' || lang === 'fr') {
114-
return lang;
115-
}
116-
console.error(`Unexpected value for 'lang' attribute: '${lang}'`);
117-
return null;
118-
}
119119
}

0 commit comments

Comments
 (0)