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;
							 |