UNPKG

@singleton-i18n/angular-client

Version:

Singleton client code for Angular 10.

66 lines (65 loc) 2.54 kB
import { Subject } from 'rxjs'; import { I18nContext } from './i18n.context'; export interface VLocale { readonly languageCode: string; readonly languageName: string; readonly regionCode: string; readonly regionName: string; } export declare class LocaleService { protected i18nContext: I18nContext; /** * Fired when user changed current locale. * Return the combination of language and region. */ userLocaleChanged: Subject<string>; defaultLocale: VLocale; private currentLanguage; private currentRegion; /** * by default, the initial locale is en-US. */ constructor(i18nContext: I18nContext); /** * initialize language and region combination at app bootstrap. * @param language language code for translation and plural rule. * @param region region code for the l2 formatting patterns. */ init(language: string, region?: string): void; /** * set default locale and initialize current language and current region. * this should be executed when the application start. * @param defaultLocale will be used as fallback locale. */ setDefaultLocale(defaultLocale: VLocale): void; private setLocale; getCurrentLanguage(): string; setCurrentLanguage(currentLang: string): void; getCurrentRegion(): string; setCurrentRegion(currentRegion: string): void; getCurrentLocale(): string; /** * set current language and region combination at runtime. * and notify VIP service to load corresponding i18n resource. * @param language language code for translation and plural rule. * @param region region code for the l2 formatting patterns. */ setCurrentLocale(language: string, region?: string): void; /** * compose the sample locale structure based on the current usage scenarios. * @param language language code for translation and plural rule. * @param region region code for the l2 formatting patterns. */ composeLocale(language: string, region: string): string; private sendUserLocaleEvent; get isSourceLocale(): boolean; shouldSourceLocale(language: string, region?: string): boolean; private resolveLanguageTag; get isSourceLanguage(): boolean; shouldSourceLanguage(language: string): boolean; /** * Reserve interface for language tag normalization in bundle mode. * @param language language code for translation and plural rule. */ normalizeLanguageCode(language: string): string; }