@intl-t/next
Version:
A Fully-Typed Object-Based i18n Translation Library for Next.js
62 lines (61 loc) • 2.41 kB
JavaScript
import { resolveHref, resolveLocale, resolvePath } from "@intl-t/tools/resolvers";
import { redirect as r, permanentRedirect as pr } from "next/navigation";
import { Link } from "./link";
import { createMiddleware } from "./middleware";
import { createStaticParams } from "./params";
import { useRouter, useLocale, usePathname } from "./router";
import { getLocale, getPathname, setLocale } from "./state";
export * from "@intl-t/tools/match";
export * from "@intl-t/tools/negotiator";
export * from "@intl-t/tools/resolvers";
export * from "./link";
export * from "./middleware";
export * from "./params";
export * from "./router";
export * from "./state";
export function resolvedRedirect(href, type) {
// @ts-ignore
return r(resolveHref.bind(this || {})(href), type);
}
export function resolvedPermanentRedirect(href, type) {
// @ts-ignore
return pr(resolveHref.bind(this || {})(href), type);
}
export const redirect = resolvedRedirect;
export const permanentRedirect = resolvedPermanentRedirect;
export function createNavigation(
// @ts-ignore
config = this || {}) {
const { allowedLocales } = config;
if (!allowedLocales && Array.isArray(config.locales))
config.allowedLocales = config.locales;
config.locales ||= allowedLocales;
config.param ||= "locale";
config.pathPrefix ||= config.strategy == "domain" ? "hidden" : "default";
config.pathBase ||= config.pathPrefix == "hidden" ? "detect-latest" : "detect-default";
config.defaultLocale ||= allowedLocales?.[0];
config.redirectPath ||= "r";
return {
config,
useRouter: useRouter.bind(config),
Link: (Link.bind(config)),
redirect: redirect.bind(config),
permanentRedirect: permanentRedirect.bind(config),
getLocale: (getLocale.bind(config)),
setLocale: (setLocale.bind(config)),
resolvePath: resolvePath.bind(config),
resolveHref: (resolveHref.bind(config)),
resolveLocale: (resolveLocale.bind(config)),
match: config.match,
middleware: createMiddleware(config),
withMiddleware: config.withMiddleware,
generateStaticParams: createStaticParams(config),
useLocale: (useLocale),
usePathname,
getPathname,
settings: Object.assign(config, config.settings),
allowedLocales,
locales: allowedLocales,
locale: allowedLocales[0],
};
}