@ngx-i18nsupport/ngx-i18nsupport-lib
Version:
A Typescript library to work with Angular generated i18n files (xliff, xmb)
62 lines (61 loc) • 2.12 kB
TypeScript
import { INormalizedMessage } from './i-normalized-message';
/**
* Created by martin on 02.06.2017.
* Interfaces for handling of ICU Messages.
*/
/**
* A message category, which is a part of an ICU message.
* E.g. the ICU message {wolves, plural, =0 {no wolves} =1 {one wolf} =2 {two wolves} other {a wolf pack}}
* has 4 category objects with the categories =0, =1, =2, other.
*/
export interface IICUMessageCategory {
/**
* Fix part.
* For plural mesages the category is "=0" or "=1" or "few" or "other"...
* For select messages it is the matching key.
*/
getCategory(): string;
/**
* Translatable part.
*/
getMessageNormalized(): INormalizedMessage;
}
/**
* An ICU message.
*/
export interface IICUMessage {
/**
* Is it a plural message?
*/
isPluralMessage(): boolean;
/**
* Is it a select message?
*/
isSelectMessage(): boolean;
/**
* All the parts of the message.
* E.g. the ICU message {wolves, plural, =0 {no wolves} =1 {one wolf} =2 {two wolves} other {a wolf pack}}
* has 4 category objects with the categories =0, =1, =2, other.
*/
getCategories(): IICUMessageCategory[];
/**
* Returns the icu message content as format dependent native string.
* This is, how it is stored, something like '{x, plural, =0 {..}'
*/
asNativeString(): string;
/**
* Translate message and return a new, translated message
* @param translation the translation (hashmap of categories and translations).
* @return new message wit translated content.
*/
translate(translation: IICUMessageTranslation): IICUMessage;
}
/**
* A translation of an ICU message.
* Contains the translation for every category.
* The translation can be a string, which is the normalized form of the translation.
* Or it can be a complex translation, which is for the case of ICU messages embedded in ICU messages.
*/
export declare type IICUMessageTranslation = {
[category: string]: string | IICUMessageTranslation;
};