@singleton-i18n/angular-client
Version:
Singleton client code for Angular 10.
66 lines (65 loc) • 2.54 kB
TypeScript
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;
}