UNPKG

remix-i18next

Version:

The easiest way to translate your Full Stack React Router apps

114 lines (113 loc) 3.77 kB
import type { Cookie, SessionStorage } from "react-router"; import type { MiddlewareFunction } from "react-router"; type MiddlewareArgs = Parameters<MiddlewareFunction<Response>>[0]; export interface LanguageDetectorArgs extends MiddlewareArgs { } export interface LanguageDetectorOption { /** * Define the list of supported languages, this is used to determine if one of * the languages requested by the user is supported by the application. * This should be be same as the supportedLngs in the i18next options. */ supportedLanguages: string[]; /** * Define the fallback language that it's going to be used in the case user * expected language is not supported. * This should be be same as the fallbackLng in the i18next options. */ fallbackLanguage: string; /** * If you want to use a cookie to store the user preferred language, you can * pass the Cookie object here. */ cookie?: Cookie; /** * If you want to use a session to store the user preferred language, you can * pass the SessionStorage object here. * When this is not defined, getting the locale will ignore the session. */ sessionStorage?: SessionStorage; /** * If defined a sessionStorage and want to change the default key used to * store the user preferred language, you can pass the key here. * @default "lng" */ sessionKey?: string; /** * If you want to use search parameters for language detection and want to * change the default key used to for the parameter name, * you can pass the key here. * @default "lng" */ searchParamKey?: string; /** * The order the library will use to detect the user preferred language. * By default the order is * - searchParams * - cookie * - session * - header * If customized, a an extra `custom` option can be added to the order. * And finally the fallback language. */ order?: Array<"searchParams" | "cookie" | "session" | "header" | "custom">; /** * A function that can be used to find the locale using the full route args. * This can be useful to get the locale from the URL pathname, or to query it * from the database or fetch it from an API. */ findLocale?(args: LanguageDetectorArgs): Promise<string | Array<string> | null>; } /** * The LanguageDetector contains the logic to detect the user preferred language * fully server-side by using a SessionStorage, Cookie, URLSearchParams, or * Headers. */ export declare class LanguageDetector { private options; /** * Create a language detector with the provided detection options. */ constructor(options: LanguageDetectorOption); /** * Ensure session-only mode has a session storage configured. */ private isSessionOnly; /** * Ensure cookie-only mode has a cookie configured. */ private isCookieOnly; /** * Detect the best language for the current request. */ detect(args: LanguageDetectorArgs): Promise<string>; /** * Build the default detection order. */ private get defaultOrder(); /** * Read the locale from the URL search params. */ private fromSearchParams; /** * Read the locale from a cookie. */ private fromCookie; /** * Read the locale from session storage. */ private fromSessionStorage; /** * Read the locale from the `Accept-Language` header. */ private fromHeader; /** * Read the locale from the custom locale finder. */ private fromCustom; /** * Match a locale against the configured supported languages. */ private fromSupported; } export {};