You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.6 KiB
129 lines
3.6 KiB
import type { |
|
i18n, |
|
ApplyTarget, |
|
ConstrainTarget, |
|
GetSource, |
|
ParseKeys, |
|
Namespace, |
|
SelectorFn, |
|
TypeOptions, |
|
TOptions, |
|
TFunction, |
|
} from 'i18next'; |
|
import * as React from 'react'; |
|
|
|
type _DefaultNamespace = TypeOptions['defaultNS']; |
|
type _EnableSelector = TypeOptions['enableSelector']; |
|
|
|
type TransChild = React.ReactNode | Record<string, unknown>; |
|
type $NoInfer<T> = [T][T extends T ? 0 : never]; |
|
|
|
export type TransProps< |
|
Key extends ParseKeys<Ns, TOpt, KPrefix>, |
|
Ns extends Namespace = _DefaultNamespace, |
|
KPrefix = undefined, |
|
TContext extends string | undefined = undefined, |
|
TOpt extends TOptions & { context?: TContext } = { context: TContext }, |
|
E = React.HTMLProps<HTMLDivElement>, |
|
> = E & { |
|
children?: TransChild | readonly TransChild[]; |
|
components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement }; |
|
count?: number; |
|
context?: TContext; |
|
defaults?: string; |
|
i18n?: i18n; |
|
i18nKey?: Key | Key[]; |
|
ns?: Ns; |
|
parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null |
|
tOptions?: TOpt; |
|
values?: {}; |
|
shouldUnescape?: boolean; |
|
t?: TFunction<Ns, KPrefix>; |
|
}; |
|
|
|
export interface TransLegacy { |
|
< |
|
Key extends ParseKeys<Ns, TOpt, KPrefix>, |
|
Ns extends Namespace = _DefaultNamespace, |
|
KPrefix = undefined, |
|
TContext extends string | undefined = undefined, |
|
TOpt extends TOptions & { context?: TContext } = { context: TContext }, |
|
E = React.HTMLProps<HTMLDivElement>, |
|
>( |
|
props: TransProps<Key, Ns, KPrefix, TContext, TOpt, E>, |
|
): React.ReactElement; |
|
} |
|
|
|
export interface TransSelectorProps< |
|
Key, |
|
Ns extends Namespace = _DefaultNamespace, |
|
KPrefix = undefined, |
|
TContext extends string | undefined = undefined, |
|
TOpt extends TOptions & { context?: TContext } = { context: TContext }, |
|
> { |
|
children?: TransChild | readonly TransChild[]; |
|
components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement }; |
|
count?: number; |
|
context?: TContext; |
|
defaults?: string; |
|
i18n?: i18n; |
|
i18nKey?: Key; |
|
ns?: Ns; |
|
parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null |
|
tOptions?: TOpt; |
|
values?: {}; |
|
shouldUnescape?: boolean; |
|
t?: TFunction<Ns, KPrefix>; |
|
} |
|
|
|
export interface TransSelector { |
|
< |
|
Target extends ConstrainTarget<TOpt>, |
|
Key extends SelectorFn<GetSource<$NoInfer<Ns>, KPrefix>, ApplyTarget<Target, TOpt>, TOpt>, |
|
const Ns extends Namespace = _DefaultNamespace, |
|
KPrefix = undefined, |
|
TContext extends string | undefined = undefined, |
|
TOpt extends TOptions & { context?: TContext } = { context: TContext }, |
|
E = React.HTMLProps<HTMLDivElement>, |
|
>( |
|
props: TransSelectorProps<Key, Ns, KPrefix, TContext, TOpt> & E, |
|
): React.ReactElement; |
|
} |
|
|
|
export const Trans: _EnableSelector extends true | 'optimize' ? TransSelector : TransLegacy; |
|
|
|
export type ErrorCode = |
|
| 'NO_I18NEXT_INSTANCE' |
|
| 'NO_LANGUAGES' |
|
| 'DEPRECATED_OPTION' |
|
| 'TRANS_NULL_VALUE' |
|
| 'TRANS_INVALID_OBJ' |
|
| 'TRANS_INVALID_VAR' |
|
| 'TRANS_INVALID_COMPONENTS'; |
|
|
|
export type ErrorMeta = { |
|
code: ErrorCode; |
|
i18nKey?: string; |
|
[x: string]: any; |
|
}; |
|
|
|
/** |
|
* Use to type the logger arguments |
|
* @example |
|
* ``` |
|
* import type { ErrorArgs } from 'react-i18next'; |
|
* |
|
* const logger = { |
|
* // .... |
|
* warn: function (...args: ErrorArgs) { |
|
* if (args[1]?.code === 'TRANS_INVALID_OBJ') { |
|
* const [msg, { i18nKey, ...rest }] = args; |
|
* return log(i18nKey, msg, rest); |
|
* } |
|
* log(...args); |
|
* } |
|
* } |
|
* i18n.use(logger).use(i18nReactPlugin).init({...}); |
|
* ``` |
|
*/ |
|
export type ErrorArgs = readonly [string, ErrorMeta | undefined, ...any[]];
|
|
|