import { IICUMessage, IICUMessageCategory, IICUMessageTranslation, INormalizedMessage } from '../api/index'; import { IMessageParser } from './i-message-parser'; /** * Implementation of an ICU Message. * Created by martin on 05.06.2017. */ export declare class ICUMessage implements IICUMessage { private _parser; private _isPluralMessage; private _categories; constructor(_parser: IMessageParser, isPluralMessage: boolean); addCategory(category: string, message: INormalizedMessage): void; /** * ICU message as native string. * This is, how it is stored, something like '{x, plural, =0 {..}' * @return ICU message as native string. */ asNativeString(): string; /** * 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[]; /** * Translate message and return a new, translated message * @param translation the translation (hashmap of categories and translations). * @return new message wit translated content. * @throws an error if translation does not match the message. * This is the case, if there are categories not contained in the original message. */ translate(translation: IICUMessageTranslation): IICUMessage; /** * Check, wether category is valid plural category. * Allowed are =n, 'zero', 'one', 'two', 'few', 'many' and 'other' * @param categoryName category * @throws an error, if it is not a valid category name */ private checkValidPluralCategory; }