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
			| 
											3 years ago
										 | 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; |