UNPKG

react-localization

Version:

Simple module to localize the React interface using the same syntax used in the ReactNativeLocalization module

63 lines (62 loc) 2.4 kB
declare module 'react-localization' { import react from "react"; type Formatted = number | string | react.JSX.Element; type FormatObject<U extends Formatted> = { [key: string]: U; }; export interface GlobalStrings<T> { [language: string]: T; } export interface LocalizedStringsMethods { /** * Can be used from ouside the class to force a particular language * independently from the interface one * @param language */ setLanguage(language: string): void; /** * The current language displayed (could differ from the interface language * if it has been forced manually and a matching translation has been found) */ getLanguage(): string; /** * The current interface language (could differ from the language displayed) */ getInterfaceLanguage(): string; /** * Format the passed string replacing the numbered placeholders * i.e. I'd like some {0} and {1}, or just {0} * Use example: * strings.formatString(strings.question, strings.bread, strings.butter) */ formatString<T extends Formatted>(str: string, ...values: Array<T | FormatObject<T>>): Array<string | T> | string; /** * Return an array containing the available languages passed as props in the constructor */ getAvailableLanguages(): string[]; /** * Return a string with the passed key in a different language * @param key * @param language */ getString(key: string, language?: string, omitWarning?: boolean): string; /** * Replace the NamedLocalization object without reinstantiating the object * @param props */ setContent(props: any): void; } export type LocalizedStrings<T> = LocalizedStringsMethods & T; type GetInterfaceLanguageCallback = () => string; interface Options { customLanguageInterface?: GetInterfaceLanguageCallback; logsEnabled?: boolean; pseudo?: boolean; pseudoMultipleLanguages?: boolean; } interface LocalizedStringsFactory { new <T>(props: GlobalStrings<T>, options?: Options): LocalizedStrings<T>; } var LocalizedStrings: LocalizedStringsFactory; export default LocalizedStrings; }