87 lines
2.2 KiB
TypeScript
87 lines
2.2 KiB
TypeScript
import * as i18next from 'i18next';
|
|
|
|
interface DetectorOptions {
|
|
/**
|
|
* only detect languages that are in the whitelist
|
|
* @default true
|
|
*/
|
|
checkWhitelist?: boolean;
|
|
|
|
/**
|
|
* fallback to a similar whitelist language
|
|
* Example 1: Browser language is 'es'
|
|
* if 'es' is not found in whitelist, first fallback to any whitelist language that starts with 'es-', then fallback to fallbackLng ('es' -> 'es-*' -> fallbackLng)
|
|
* Example 2: Browser language is 'es-MX'
|
|
* if 'es-MX' is not found in whitelist, first fallback to 'es', then fallback to 'es-*', then fallback to fallbackLng ('es-MX' -> 'es' -> 'es-*' -> fallbackLng)
|
|
* @default false
|
|
*/
|
|
checkForSimilarInWhitelist?: boolean;
|
|
|
|
/**
|
|
* order and from where user language should be detected
|
|
*/
|
|
order?: Array<
|
|
'querystring' | 'cookie' | 'sessionStorage' | 'localStorage' | 'navigator' | 'htmlTag' | string
|
|
>;
|
|
|
|
/**
|
|
* keys or params to lookup language from
|
|
*/
|
|
lookupQuerystring?: string;
|
|
lookupCookie?: string;
|
|
lookupLocalStorage?: string;
|
|
lookupFromPathIndex?: number;
|
|
lookupFromSubdomainIndex?: number;
|
|
|
|
/**
|
|
* cache user language on
|
|
*/
|
|
caches?: string[];
|
|
|
|
/**
|
|
* languages to not persist (cookie, localStorage)
|
|
*/
|
|
excludeCacheFor?: string[];
|
|
|
|
/**
|
|
* optional expire and domain for set cookie
|
|
* @default 10
|
|
*/
|
|
cookieMinutes?: number;
|
|
cookieDomain?: string;
|
|
|
|
/**
|
|
* optional htmlTag with lang attribute
|
|
* @default document.documentElement
|
|
*/
|
|
htmlTag?: HTMLElement | null;
|
|
}
|
|
|
|
interface CustomDetector {
|
|
name: string;
|
|
cacheUserLanguage?(lng: string, options: DetectorOptions): void;
|
|
lookup(options: DetectorOptions): string | undefined;
|
|
}
|
|
|
|
export default class I18nextBrowserLanguageDetector implements i18next.LanguageDetectorModule {
|
|
constructor(services?: any, options?: DetectorOptions);
|
|
/**
|
|
* Adds detector.
|
|
*/
|
|
addDetector(detector: CustomDetector): I18nextBrowserLanguageDetector;
|
|
|
|
/**
|
|
* Initializes detector.
|
|
*/
|
|
init(services?: any, options?: DetectorOptions): void;
|
|
|
|
detect(detectionOrder?: DetectorOptions['order']): string | undefined;
|
|
|
|
cacheUserLanguage(lng: string, caches?: string[]): void;
|
|
|
|
type: 'languageDetector';
|
|
detectors: { [key: string]: any };
|
|
services: any;
|
|
i18nOptions: any;
|
|
}
|