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.
		
		
		
		
		
			
		
			
				
					
					
						
							137 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							137 lines
						
					
					
						
							3.6 KiB
						
					
					
				| import i18next, { ReactOptions, i18n, ThirdPartyModule, WithT, TFunction, Resource } from 'i18next';
 | |
| import * as React from 'react';
 | |
| 
 | |
| type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
 | |
| type Subtract<T extends K, K> = Omit<T, keyof K>;
 | |
| 
 | |
| export type Namespace = string | string[];
 | |
| 
 | |
| export function setDefaults(options: ReactOptions): void;
 | |
| export function getDefaults(): ReactOptions;
 | |
| export function setI18n(instance: i18n): void;
 | |
| export function getI18n(): i18n;
 | |
| export const initReactI18next: ThirdPartyModule;
 | |
| export function composeInitialProps(ForComponent: any): (ctx: unknown) => Promise<any>;
 | |
| export function getInitialProps(): {
 | |
|   initialI18nStore: {
 | |
|     [ns: string]: {};
 | |
|   };
 | |
|   initialLanguage: string;
 | |
| };
 | |
| 
 | |
| export interface ReportNamespaces {
 | |
|   addUsedNamespaces(namespaces: Namespace[]): void;
 | |
|   getUsedNamespaces(): string[];
 | |
| }
 | |
| 
 | |
| declare module 'i18next' {
 | |
|   interface i18n {
 | |
|     reportNamespaces: ReportNamespaces;
 | |
|   }
 | |
| }
 | |
| 
 | |
| export interface TransProps<E extends Element = HTMLDivElement>
 | |
|   extends React.HTMLProps<E>,
 | |
|     Partial<WithT> {
 | |
|   children?: React.ReactNode;
 | |
|   components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement };
 | |
|   count?: number;
 | |
|   context?: string;
 | |
|   defaults?: string;
 | |
|   i18n?: i18n;
 | |
|   i18nKey?: string;
 | |
|   ns?: Namespace;
 | |
|   parent?: string | React.ComponentType<any> | null; // used in React.createElement if not null
 | |
|   tOptions?: {};
 | |
|   values?: {};
 | |
|   shouldUnescape?: boolean;
 | |
|   t?: TFunction;
 | |
| }
 | |
| export function Trans<E extends Element = HTMLDivElement>(props: TransProps<E>): React.ReactElement;
 | |
| 
 | |
| export function useSSR(initialI18nStore: Resource, initialLanguage: string): void;
 | |
| 
 | |
| export interface UseTranslationOptions {
 | |
|   i18n?: i18n;
 | |
|   useSuspense?: boolean;
 | |
|   keyPrefix?: string;
 | |
|   bindI18n?: string | false;
 | |
|   nsMode?: 'fallback' | 'default';
 | |
|   // other of these options might also work: https://github.com/i18next/i18next/blob/master/index.d.ts#L127
 | |
| }
 | |
| export type UseTranslationResponse = [TFunction, i18n, boolean] & {
 | |
|   t: TFunction;
 | |
|   i18n: i18n;
 | |
|   ready: boolean;
 | |
| };
 | |
| export function useTranslation(
 | |
|   ns?: Namespace,
 | |
|   options?: UseTranslationOptions,
 | |
| ): UseTranslationResponse;
 | |
| 
 | |
| // Need to see usage to improve this
 | |
| export function withSSR(): <Props>(
 | |
|   WrappedComponent: React.ComponentType<Props>,
 | |
| ) => {
 | |
|   ({
 | |
|     initialI18nStore,
 | |
|     initialLanguage,
 | |
|     ...rest
 | |
|   }: {
 | |
|     initialI18nStore: Resource;
 | |
|     initialLanguage: string;
 | |
|   } & Props): React.FunctionComponentElement<Props>;
 | |
|   getInitialProps: (ctx: unknown) => Promise<any>;
 | |
| };
 | |
| 
 | |
| export interface WithTranslation extends WithT {
 | |
|   i18n: i18n;
 | |
|   tReady: boolean;
 | |
| }
 | |
| 
 | |
| export interface WithTranslationProps {
 | |
|   i18n?: i18n;
 | |
|   useSuspense?: boolean;
 | |
| }
 | |
| 
 | |
| export function withTranslation(
 | |
|   ns?: Namespace,
 | |
|   options?: {
 | |
|     withRef?: boolean;
 | |
|   },
 | |
| ): <
 | |
|   C extends React.ComponentType<React.ComponentProps<C> & WithTranslationProps>,
 | |
|   ResolvedProps = JSX.LibraryManagedAttributes<
 | |
|     C,
 | |
|     Subtract<React.ComponentProps<C>, WithTranslationProps>
 | |
|   >
 | |
| >(
 | |
|   component: C,
 | |
| ) => React.ComponentType<Omit<ResolvedProps, keyof WithTranslation> & WithTranslationProps>;
 | |
| 
 | |
| export interface I18nextProviderProps {
 | |
|   children?: React.ReactNode;
 | |
|   i18n: i18n;
 | |
|   defaultNS?: string;
 | |
| }
 | |
| 
 | |
| export const I18nextProvider: React.FunctionComponent<I18nextProviderProps>;
 | |
| export const I18nContext: React.Context<{ i18n: i18n }>;
 | |
| 
 | |
| export interface TranslationProps {
 | |
|   children: (
 | |
|     t: TFunction,
 | |
|     options: {
 | |
|       i18n: i18n;
 | |
|       lng: string;
 | |
|     },
 | |
|     ready: boolean,
 | |
|   ) => React.ReactNode;
 | |
|   ns?: Namespace;
 | |
|   i18n?: i18n;
 | |
|   useSuspense?: boolean;
 | |
|   nsMode?: 'fallback' | 'default';
 | |
| }
 | |
| 
 | |
| export function Translation(props: TranslationProps): any;
 |