intl-t
Version:
A Fully-Typed Node-Based i18n Translation Library
160 lines (159 loc) • 7.5 kB
TypeScript
import { MiddlewareConfig } from "./middleware";
import { redirect as r, permanentRedirect as pr, RedirectType } from "next/navigation";
import { ResolveConfig, resolvePath } from "../tools/resolvers";
import { RouterConfig } from "./router";
import type { Locale, TranslationSettings } from "../types";
import { LinkConfig, NL } from "./link";
import { StaticParamsConfig } from "./params";
import type { FC } from "react";
export * from "../tools/match";
export * from "../tools/negotiator";
export * from "../tools/resolvers";
export * from "./link";
export * from "./middleware";
export * from "./params";
export * from "./router";
export * from "./state";
export declare function resolvedRedirect(href?: string, type?: RedirectType): never;
export declare function resolvedPermanentRedirect(href?: string, type?: RedirectType): never;
export declare const redirect: typeof r;
export declare const permanentRedirect: typeof pr;
export interface IntlConfig<L extends Locale = Locale, T extends FC<any> = NL> extends ResolveConfig<L>, StaticParamsConfig<L>, MiddlewareConfig<L>, RouterConfig<L>, LinkConfig<T> {
settings?: Partial<TranslationSettings<L>>;
}
export declare function createNavigation<L extends Locale, LC extends FC<any>>(config?: IntlConfig<L, LC>): {
config: IntlConfig<L, LC>;
useRouter: typeof import("next/navigation").useRouter;
Link: ({ href, locale, currentLocale, config, Link, preventDynamic, ...props }: import("./link").LinkProps<L, import("react").ForwardRefExoticComponent<Omit<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, keyof {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
}> & {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
} & {
children?: React.ReactNode | undefined;
} & import("react").RefAttributes<HTMLAnchorElement>>> & Omit<Omit<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, keyof {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
}> & {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
} & {
children?: React.ReactNode | undefined;
} & import("react").RefAttributes<HTMLAnchorElement>, keyof import("./link").LinkProps<Locale, import("react").ForwardRefExoticComponent<Omit<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, keyof {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
}> & {
href: string | import("url").UrlObject;
as?: string | import("url").UrlObject;
replace?: boolean;
scroll?: boolean;
shallow?: boolean;
passHref?: boolean;
prefetch?: boolean | null;
locale?: string | false;
legacyBehavior?: boolean;
onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
onNavigate?: (event: {
preventDefault: () => void;
}) => void;
} & {
children?: React.ReactNode | undefined;
} & import("react").RefAttributes<HTMLAnchorElement>>>>) => Promise<import("react/jsx-runtime").JSX.Element>;
redirect: typeof r;
permanentRedirect: typeof pr;
getLocale: {
(preventDynamic: true, defaultLocale?: L | undefined): L | undefined;
(preventDynamic?: boolean, defaultLocale?: L | undefined): L | Promise<L> | undefined;
};
setLocale: (locale: L) => string | undefined;
resolvePath: typeof resolvePath;
resolveHref: (href?: string, { locale, currentLocale, redirectPath, config, allowedLocales, pathPrefix, defaultLocale, getLocale, }?: import("./navigation").LocalizedHref<L>) => import("../types").Awaitable<`/${string}` | `/${L}${string}`>;
resolveLocale: (path?: string, locales?: L[]) => L | undefined;
match: typeof import("./navigation").match;
middleware: import("./middleware").Middleware & MiddlewareConfig<L> & import("next/server").MiddlewareConfig;
withMiddleware: import("./middleware").MiddlewareFactory;
generateStaticParams: () => Promise<{
[x: string]: Locale;
}[]>;
useLocale: (defaultLocale?: L | null | undefined, { hydration, path, }?: {
hydration?: boolean;
path?: string;
}) => import("../types").ReactState<Locale> | (L & import("../types").ReactState<L> & {
locale: L;
setLocale: import("../types").ReactSetState<L>;
});
usePathname: typeof import("next/navigation").usePathname;
getPathname: typeof import("next/navigation").usePathname | typeof import("./headers").getHeadersRequestPathname;
settings: IntlConfig<L, LC> & Partial<TranslationSettings<L, L, unknown, import("../types").Values, string, import("../types").Node>>;
allowedLocales: L[] | readonly L[] | undefined;
locales: L[] | readonly L[];
locale: L;
};