|
@@ -0,0 +1,295 @@
|
|
|
|
+export type Path = VueI18n.Path;
|
|
|
|
+export type Locale = VueI18n.Locale;
|
|
|
|
+export type FallbackLocale = VueI18n.FallbackLocale;
|
|
|
|
+export type Values = VueI18n.Values;
|
|
|
|
+export type Choice = VueI18n.Choice;
|
|
|
|
+export type MessageContext = VueI18n.MessageContext;
|
|
|
|
+export type MessageFunction = VueI18n.MessageFunction;
|
|
|
|
+export type LocaleMessage = VueI18n.LocaleMessage;
|
|
|
|
+export type LocaleMessageObject = VueI18n.LocaleMessageObject;
|
|
|
|
+export type LocaleMessageArray = VueI18n.LocaleMessageArray;
|
|
|
|
+export type LocaleMessages = VueI18n.LocaleMessages;
|
|
|
|
+export type TranslateResult = VueI18n.TranslateResult;
|
|
|
|
+export type DateTimeFormatOptions = VueI18n.DateTimeFormatOptions;
|
|
|
|
+export type DateTimeFormat = VueI18n.DateTimeFormat;
|
|
|
|
+export type DateTimeFormats = VueI18n.DateTimeFormats;
|
|
|
|
+export type DateTimeFormatResult = VueI18n.DateTimeFormatResult;
|
|
|
|
+export type NumberFormatOptions = VueI18n.NumberFormatOptions;
|
|
|
|
+export type NumberFormat = VueI18n.NumberFormat;
|
|
|
|
+export type NumberFormats = VueI18n.NumberFormats;
|
|
|
|
+export type NumberFormatResult = VueI18n.NumberFormatResult;
|
|
|
|
+export type NumberFormatToPartsResult = VueI18n.NumberFormatToPartsResult;
|
|
|
|
+export type WarnHtmlInMessageLevel = VueI18n.WarnHtmlInMessageLevel;
|
|
|
|
+export type Formatter = VueI18n.Formatter;
|
|
|
|
+export type MissingHandler = VueI18n.MissingHandler;
|
|
|
|
+export type PostTranslationHandler = VueI18n.PostTranslationHandler;
|
|
|
|
+export type IntlAvailability = VueI18n.IntlAvailability;
|
|
|
|
+export type I18nOptions = VueI18n.I18nOptions;
|
|
|
|
+export type PluignOptions = VueI18n.PluignOptions
|
|
|
|
+
|
|
|
|
+import Vue, { PluginFunction } from 'vue';
|
|
|
|
+
|
|
|
|
+declare namespace VueI18n {
|
|
|
|
+ type Path = string;
|
|
|
|
+ type Locale = string;
|
|
|
|
+ type FallbackLocale = string | string[] | false | { [locale: string]: string[] }
|
|
|
|
+ type Values = any[] | { [key: string]: any };
|
|
|
|
+ type Choice = number;
|
|
|
|
+ interface MessageContext {
|
|
|
|
+ list(index: number): unknown
|
|
|
|
+ named(key: string): unknown
|
|
|
|
+ linked(key: string): VueI18n.TranslateResult
|
|
|
|
+ values: any
|
|
|
|
+ path: string
|
|
|
|
+ formatter: Formatter
|
|
|
|
+ messages: LocaleMessages
|
|
|
|
+ locale: Locale
|
|
|
|
+ }
|
|
|
|
+ type MessageFunction = (ctx: MessageContext) => string;
|
|
|
|
+ type LocaleMessage = string | MessageFunction | LocaleMessageObject | LocaleMessageArray;
|
|
|
|
+ interface LocaleMessageObject { [key: string]: LocaleMessage; }
|
|
|
|
+ interface LocaleMessageArray { [index: number]: LocaleMessage; }
|
|
|
|
+ interface LocaleMessages { [key: string]: LocaleMessageObject; }
|
|
|
|
+ type TranslateResult = string | LocaleMessages;
|
|
|
|
+
|
|
|
|
+ type LocaleMatcher = 'lookup' | 'best fit';
|
|
|
|
+ type FormatMatcher = 'basic' | 'best fit';
|
|
|
|
+
|
|
|
|
+ type DateTimeHumanReadable = 'long' | 'short' | 'narrow';
|
|
|
|
+ type DateTimeDigital = 'numeric' | '2-digit';
|
|
|
|
+
|
|
|
|
+ interface SpecificDateTimeFormatOptions extends Intl.DateTimeFormatOptions {
|
|
|
|
+ year?: DateTimeDigital;
|
|
|
|
+ month?: DateTimeDigital | DateTimeHumanReadable;
|
|
|
|
+ day?: DateTimeDigital;
|
|
|
|
+ hour?: DateTimeDigital;
|
|
|
|
+ minute?: DateTimeDigital;
|
|
|
|
+ second?: DateTimeDigital;
|
|
|
|
+ weekday?: DateTimeHumanReadable;
|
|
|
|
+ era?: DateTimeHumanReadable;
|
|
|
|
+ timeZoneName?: 'long' | 'short';
|
|
|
|
+ localeMatcher?: LocaleMatcher;
|
|
|
|
+ formatMatcher?: FormatMatcher;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ type DateTimeFormatOptions = Intl.DateTimeFormatOptions | SpecificDateTimeFormatOptions;
|
|
|
|
+
|
|
|
|
+ interface DateTimeFormat { [key: string]: DateTimeFormatOptions; }
|
|
|
|
+ interface DateTimeFormats { [locale: string]: DateTimeFormat; }
|
|
|
|
+ type DateTimeFormatResult = string;
|
|
|
|
+
|
|
|
|
+ type CurrencyDisplay = 'symbol' | 'code' | 'name';
|
|
|
|
+
|
|
|
|
+ interface SpecificNumberFormatOptions extends Intl.NumberFormatOptions {
|
|
|
|
+ style?: 'decimal' | 'percent';
|
|
|
|
+ currency?: string;
|
|
|
|
+ currencyDisplay?: CurrencyDisplay;
|
|
|
|
+ localeMatcher?: LocaleMatcher;
|
|
|
|
+ formatMatcher?: FormatMatcher;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ interface CurrencyNumberFormatOptions extends Intl.NumberFormatOptions {
|
|
|
|
+ style: 'currency';
|
|
|
|
+ currency: string; // Obligatory if style is 'currency'
|
|
|
|
+ currencyDisplay?: CurrencyDisplay;
|
|
|
|
+ localeMatcher?: LocaleMatcher;
|
|
|
|
+ formatMatcher?: FormatMatcher;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ type NumberFormatOptions = Intl.NumberFormatOptions | SpecificNumberFormatOptions | CurrencyNumberFormatOptions;
|
|
|
|
+
|
|
|
|
+ interface NumberFormat { [key: string]: NumberFormatOptions; }
|
|
|
|
+ interface NumberFormats { [locale: string]: NumberFormat; }
|
|
|
|
+ type NumberFormatResult = string;
|
|
|
|
+ type PluralizationRulesMap = {
|
|
|
|
+ /**
|
|
|
|
+ * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
|
|
|
|
+ * @param choicesLength {number} an overall amount of available choices
|
|
|
|
+ * @returns a final choice index
|
|
|
|
+ */
|
|
|
|
+ [lang: string]: (choice: number, choicesLength: number) => number;
|
|
|
|
+ };
|
|
|
|
+ type Modifiers = { [key: string]: (str : string) => string };
|
|
|
|
+
|
|
|
|
+ type FormattedNumberPartType = 'currency' | 'decimal' | 'fraction' | 'group' | 'infinity' | 'integer' | 'literal' | 'minusSign' | 'nan' | 'plusSign' | 'percentSign';
|
|
|
|
+
|
|
|
|
+ type WarnHtmlInMessageLevel = 'off' | 'warn' | 'error';
|
|
|
|
+
|
|
|
|
+ interface FormattedNumberPart {
|
|
|
|
+ type: FormattedNumberPartType;
|
|
|
|
+ value: string;
|
|
|
|
+ }
|
|
|
|
+ interface NumberFormatToPartsResult { [index: number]: FormattedNumberPart; }
|
|
|
|
+
|
|
|
|
+ interface Formatter {
|
|
|
|
+ interpolate(message: string, values: Values | undefined, path: string): (any[] | null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ type MissingHandler = (locale: Locale, key: Path, vm: Vue | null, values: any) => string | void;
|
|
|
|
+ type PostTranslationHandler = (str: string, key?: string) => string;
|
|
|
|
+ type ComponentInstanceCreatedListener = (newVm: VueI18n & IVueI18n, rootVm: VueI18n & IVueI18n) => void;
|
|
|
|
+
|
|
|
|
+ interface IntlAvailability {
|
|
|
|
+ dateTimeFormat: boolean;
|
|
|
|
+ numberFormat: boolean;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // tslint:disable-next-line:interface-name
|
|
|
|
+ interface I18nOptions {
|
|
|
|
+ locale?: Locale;
|
|
|
|
+ fallbackLocale?: FallbackLocale;
|
|
|
|
+ messages?: LocaleMessages;
|
|
|
|
+ dateTimeFormats?: DateTimeFormats;
|
|
|
|
+ numberFormats?: NumberFormats;
|
|
|
|
+ formatter?: Formatter;
|
|
|
|
+ modifiers?: Modifiers,
|
|
|
|
+ missing?: MissingHandler;
|
|
|
|
+ fallbackRoot?: boolean;
|
|
|
|
+ fallbackRootWithEmptyString?: boolean,
|
|
|
|
+ formatFallbackMessages?: boolean;
|
|
|
|
+ sync?: boolean;
|
|
|
|
+ silentTranslationWarn?: boolean | RegExp;
|
|
|
|
+ silentFallbackWarn?: boolean | RegExp;
|
|
|
|
+ preserveDirectiveContent?: boolean;
|
|
|
|
+ pluralizationRules?: PluralizationRulesMap;
|
|
|
|
+ warnHtmlInMessage?: WarnHtmlInMessageLevel;
|
|
|
|
+ sharedMessages?: LocaleMessages;
|
|
|
|
+ postTranslation?: PostTranslationHandler;
|
|
|
|
+ componentInstanceCreatedListener?: ComponentInstanceCreatedListener;
|
|
|
|
+ escapeParameterHtml?: boolean;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ type PluignOptions = {
|
|
|
|
+ bridge?: boolean
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export declare interface IVueI18n {
|
|
|
|
+ readonly messages: VueI18n.LocaleMessages;
|
|
|
|
+ readonly dateTimeFormats: VueI18n.DateTimeFormats;
|
|
|
|
+ readonly numberFormats: VueI18n.NumberFormats;
|
|
|
|
+
|
|
|
|
+ locale: VueI18n.Locale;
|
|
|
|
+ fallbackLocale: VueI18n.FallbackLocale;
|
|
|
|
+ missing: VueI18n.MissingHandler;
|
|
|
|
+ formatter: VueI18n.Formatter;
|
|
|
|
+ formatFallbackMessages: boolean;
|
|
|
|
+ silentTranslationWarn: boolean | RegExp;
|
|
|
|
+ silentFallbackWarn: boolean | RegExp;
|
|
|
|
+ preserveDirectiveContent: boolean;
|
|
|
|
+ sync: boolean;
|
|
|
|
+ pluralizationRules: VueI18n.PluralizationRulesMap;
|
|
|
|
+ warnHtmlInMessage: VueI18n.WarnHtmlInMessageLevel;
|
|
|
|
+ postTranslation: VueI18n.PostTranslationHandler;
|
|
|
|
+ t(key: VueI18n.Path, values?: VueI18n.Values): VueI18n.TranslateResult;
|
|
|
|
+ t(key: VueI18n.Path, locale: VueI18n.Locale, values?: VueI18n.Values): VueI18n.TranslateResult;
|
|
|
|
+ tc(key: VueI18n.Path, choice?: VueI18n.Choice, values?: VueI18n.Values): string;
|
|
|
|
+ tc(
|
|
|
|
+ key: VueI18n.Path,
|
|
|
|
+ choice: VueI18n.Choice,
|
|
|
|
+ locale: VueI18n.Locale,
|
|
|
|
+ values?: VueI18n.Values,
|
|
|
|
+ ): string;
|
|
|
|
+ te(key: VueI18n.Path, locale?: VueI18n.Locale): boolean;
|
|
|
|
+ d(
|
|
|
|
+ value: number | Date,
|
|
|
|
+ key?: VueI18n.Path,
|
|
|
|
+ locale?: VueI18n.Locale,
|
|
|
|
+ ): VueI18n.DateTimeFormatResult;
|
|
|
|
+ d(value: number | Date, args?: { [key: string]: string }): VueI18n.DateTimeFormatResult;
|
|
|
|
+ d(value: number | Date, options?: VueI18n.DateTimeFormatOptions): VueI18n.DateTimeFormatResult;
|
|
|
|
+ n(value: number, key?: VueI18n.Path, locale?: VueI18n.Locale): VueI18n.NumberFormatResult;
|
|
|
|
+ n(value: number, args?: { [key: string]: string }): VueI18n.NumberFormatResult;
|
|
|
|
+ n(value: number, options?: VueI18n.NumberFormatOptions, locale?: VueI18n.Locale): VueI18n.NumberFormatResult;
|
|
|
|
+ getLocaleMessage(locale: VueI18n.Locale): VueI18n.LocaleMessageObject;
|
|
|
|
+ setLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void;
|
|
|
|
+ mergeLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void;
|
|
|
|
+ getDateTimeFormat(locale: VueI18n.Locale): VueI18n.DateTimeFormat;
|
|
|
|
+ setDateTimeFormat(locale: VueI18n.Locale, format: VueI18n.DateTimeFormat): void;
|
|
|
|
+ mergeDateTimeFormat(locale: VueI18n.Locale, format: VueI18n.DateTimeFormat): void;
|
|
|
|
+ getNumberFormat(locale: VueI18n.Locale): VueI18n.NumberFormat;
|
|
|
|
+ setNumberFormat(locale: VueI18n.Locale, format: VueI18n.NumberFormat): void;
|
|
|
|
+ mergeNumberFormat(locale: VueI18n.Locale, format: VueI18n.NumberFormat): void;
|
|
|
|
+ getChoiceIndex: (choice: number, choicesLength: number) => number;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare class VueI18n {
|
|
|
|
+ constructor(options?: VueI18n.I18nOptions)
|
|
|
|
+
|
|
|
|
+ readonly messages: VueI18n.LocaleMessages;
|
|
|
|
+ readonly dateTimeFormats: VueI18n.DateTimeFormats;
|
|
|
|
+ readonly numberFormats: VueI18n.NumberFormats;
|
|
|
|
+ readonly availableLocales: VueI18n.Locale[];
|
|
|
|
+
|
|
|
|
+ locale: VueI18n.Locale;
|
|
|
|
+ fallbackLocale: VueI18n.FallbackLocale;
|
|
|
|
+ missing: VueI18n.MissingHandler;
|
|
|
|
+ formatter: VueI18n.Formatter;
|
|
|
|
+ formatFallbackMessages: boolean;
|
|
|
|
+ silentTranslationWarn: boolean | RegExp;
|
|
|
|
+ silentFallbackWarn: boolean | RegExp;
|
|
|
|
+ preserveDirectiveContent: boolean;
|
|
|
|
+ pluralizationRules: VueI18n.PluralizationRulesMap;
|
|
|
|
+ warnHtmlInMessage: VueI18n.WarnHtmlInMessageLevel;
|
|
|
|
+ postTranslation: VueI18n.PostTranslationHandler;
|
|
|
|
+ sync: boolean;
|
|
|
|
+
|
|
|
|
+ t(key: VueI18n.Path, values?: VueI18n.Values): VueI18n.TranslateResult;
|
|
|
|
+ t(key: VueI18n.Path, locale: VueI18n.Locale, values?: VueI18n.Values): VueI18n.TranslateResult;
|
|
|
|
+ tc(key: VueI18n.Path, choice?: VueI18n.Choice, values?: VueI18n.Values): string;
|
|
|
|
+ tc(key: VueI18n.Path, choice: VueI18n.Choice, locale: VueI18n.Locale, values?: VueI18n.Values): string;
|
|
|
|
+ te(key: VueI18n.Path, locale?: VueI18n.Locale): boolean;
|
|
|
|
+ d(value: number | Date, key?: VueI18n.Path, locale?: VueI18n.Locale): VueI18n.DateTimeFormatResult;
|
|
|
|
+ d(value: number | Date, args?: { [key: string]: string }): VueI18n.DateTimeFormatResult;
|
|
|
|
+ d(value: number | Date, options?: VueI18n.DateTimeFormatOptions): VueI18n.DateTimeFormatResult;
|
|
|
|
+ n(value: number, key?: VueI18n.Path, locale?: VueI18n.Locale): VueI18n.NumberFormatResult;
|
|
|
|
+ n(value: number, args?: { [key: string]: string }): VueI18n.NumberFormatResult;
|
|
|
|
+ n(value: number, options?: VueI18n.NumberFormatOptions, locale?: VueI18n.Locale): VueI18n.NumberFormatResult;
|
|
|
|
+
|
|
|
|
+ getLocaleMessage(locale: VueI18n.Locale): VueI18n.LocaleMessageObject;
|
|
|
|
+ setLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void;
|
|
|
|
+ mergeLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void;
|
|
|
|
+
|
|
|
|
+ getDateTimeFormat(locale: VueI18n.Locale): VueI18n.DateTimeFormat;
|
|
|
|
+ setDateTimeFormat(locale: VueI18n.Locale, format: VueI18n.DateTimeFormat): void;
|
|
|
|
+ mergeDateTimeFormat(locale: VueI18n.Locale, format: VueI18n.DateTimeFormat): void;
|
|
|
|
+
|
|
|
|
+ getNumberFormat(locale: VueI18n.Locale): VueI18n.NumberFormat;
|
|
|
|
+ setNumberFormat(locale: VueI18n.Locale, format: VueI18n.NumberFormat): void;
|
|
|
|
+ mergeNumberFormat(locale: VueI18n.Locale, format: VueI18n.NumberFormat): void;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
|
|
|
|
+ * @param choicesLength {number} an overall amount of available choices
|
|
|
|
+ * @returns a final choice index
|
|
|
|
+ */
|
|
|
|
+ getChoiceIndex: (choice: number, choicesLength: number) => number;
|
|
|
|
+
|
|
|
|
+ static install: PluginFunction<VueI18n.PluignOptions>;
|
|
|
|
+ static version: string;
|
|
|
|
+ static availabilities: VueI18n.IntlAvailability;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module 'vue/types/vue' {
|
|
|
|
+ interface Vue {
|
|
|
|
+ readonly $i18n: VueI18n & IVueI18n;
|
|
|
|
+ $t: typeof VueI18n.prototype.t;
|
|
|
|
+ $tc: typeof VueI18n.prototype.tc;
|
|
|
|
+ $te: typeof VueI18n.prototype.te;
|
|
|
|
+ $d: typeof VueI18n.prototype.d;
|
|
|
|
+ $n: typeof VueI18n.prototype.n;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module 'vue/types/options' {
|
|
|
|
+ interface ComponentOptions<V extends Vue> {
|
|
|
|
+ i18n?: {
|
|
|
|
+ messages?: VueI18n.LocaleMessages;
|
|
|
|
+ dateTimeFormats?: VueI18n.DateTimeFormats;
|
|
|
|
+ numberFormats?: VueI18n.NumberFormats;
|
|
|
|
+ sharedMessages?: VueI18n.LocaleMessages;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export default VueI18n;
|