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