@@ -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 */
3843export 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