chore: refactor I18n types outside of window object

to keep ts/localization folder self contained
pull/3281/head
Audric Ackermann 3 months ago
parent ce734f1e1c
commit 42d54abb91
No known key found for this signature in database

@ -0,0 +1,28 @@
import type { CrowdinLocale } from './constants';
import type {
MergedLocalizerTokens,
GetMessageArgs,
LocalizerComponentProps,
SimpleLocalizerTokens,
ArgsFromToken,
} from './localeTools';
export type I18nMethods = {
/** @see {@link window.i18n.stripped} */
stripped: <T extends MergedLocalizerTokens>(...[token, args]: GetMessageArgs<T>) => string | T;
strippedWithObj: <T extends MergedLocalizerTokens>(
opts: LocalizerComponentProps<T>
) => string | T;
/** @see {@link window.i18n.inEnglish} */
inEnglish: <T extends SimpleLocalizerTokens>(token: T) => string | T;
/** @see {@link window.i18n.formatMessageWithArgs */
getRawMessage: <T extends MergedLocalizerTokens>(
crowdinLocale: CrowdinLocale,
...[token, args]: GetMessageArgs<T>
) => string | T;
/** @see {@link window.i18n.formatMessageWithArgs} */
formatMessageWithArgs: <T extends MergedLocalizerTokens>(
rawMessage: string,
args?: ArgsFromToken<T>
) => string | T;
};

@ -1,6 +1,5 @@
// eslint-disable-next-line no-restricted-imports
import type { I18nMethods } from '../types/localizer';
import { CrowdinLocale } from './constants'; import { CrowdinLocale } from './constants';
import type { I18nMethods } from './I18nMethods';
import { pluralsDictionary, simpleDictionary } from './locales'; import { pluralsDictionary, simpleDictionary } from './locales';
type SimpleDictionary = typeof simpleDictionary; type SimpleDictionary = typeof simpleDictionary;

@ -1,31 +1,5 @@
import type { import type { MergedLocalizerTokens, GetMessageArgs } from '../localization/localeTools';
ArgsFromToken, import type { I18nMethods } from './I18nMethods';
MergedLocalizerTokens,
GetMessageArgs,
LocalizerComponentProps,
SimpleLocalizerTokens,
} from '../localization/localeTools';
import { CrowdinLocale } from '../localization/constants';
export type I18nMethods = {
/** @see {@link window.i18n.stripped} */
stripped: <T extends MergedLocalizerTokens>(...[token, args]: GetMessageArgs<T>) => string | T;
strippedWithObj: <T extends MergedLocalizerTokens>(
opts: LocalizerComponentProps<T>
) => string | T;
/** @see {@link window.i18n.inEnglish} */
inEnglish: <T extends SimpleLocalizerTokens>(token: T) => string | T;
/** @see {@link window.i18n.formatMessageWithArgs */
getRawMessage: <T extends MergedLocalizerTokens>(
crowdinLocale: CrowdinLocale,
...[token, args]: GetMessageArgs<T>
) => string | T;
/** @see {@link window.i18n.formatMessageWithArgs} */
formatMessageWithArgs: <T extends MergedLocalizerTokens>(
rawMessage: string,
args?: ArgsFromToken<T>
) => string | T;
};
export type SetupI18nReturnType = I18nMethods & export type SetupI18nReturnType = I18nMethods &
(<T extends MergedLocalizerTokens>(...[token, args]: GetMessageArgs<T>) => string); (<T extends MergedLocalizerTokens>(...[token, args]: GetMessageArgs<T>) => string);

3
ts/window.d.ts vendored

@ -5,7 +5,8 @@ import { Store } from '@reduxjs/toolkit';
import { Persistor } from 'redux-persist/es/types'; import { Persistor } from 'redux-persist/es/types';
import { PrimaryColorStateType, ThemeStateType } from './themes/constants/colors'; import { PrimaryColorStateType, ThemeStateType } from './themes/constants/colors';
import type { GetMessageArgs, I18nMethods } from './types/localizer'; import type { GetMessageArgs } from './types/localizer';
import type { I18nMethods } from './types/I18nMethods';
import type { MergedLocalizerTokens } from './localization/localeTools'; import type { MergedLocalizerTokens } from './localization/localeTools';
export interface LibTextsecure { export interface LibTextsecure {

Loading…
Cancel
Save