@selfage/closest_locale_finder
v1.0.2
Published
Find the closest matching locale.
Downloads
76
Maintainers
Readme
@selfage/closest_locale_finder
Install
npm install @selfage/closest_locale_finder
Overview
Written in TypeScript and compiled to ES6 with inline source map & source. See @selfage/tsconfig for full compiler options. Provides helper functions to find the closest locale out of a list of locales you want to support.
Lookup algorithm is based on lookup-closest-locale.
E.g., given a list of supported locales, ['en', 'en-US']
, if you look for en-GB
, the closest matching locale is en
.
Find from a map of localized texts
type Delimiter = "-" | "_";
function findClosestLocalizedText<T>(targetLocales: Array<string> /* From most preferred to least preferred. */, localizedTexts: Map<string, T>, defaultText: T, delimiter: Delimiter = '-'): T;
import { findClosestLocalizedText } from '@selfage/closest_locale_finder';
let text = findClosestLocalizedText(
[navigator.language],
new Map([
['en-US', {'welcome': 'Hello'}],
['zh-CN', {'welcome': '欢迎'}]
]),
{'welcome': 'Hello'});
console.log(text.welcome);
Find from a set of available locales
type Delimiter = "-" | "_";
function findClosestLocale(targetLocales: Array<string> /* From most preferred to least preferred. */, availableLocales: Set<string>, defaultLocale: string, delimiter: Delimiter = '-'): string;
import { findClosestLocale } from '@selfage/closest_locale_finder';
let locale = findClosestLocale(
[navigator.language],
new Set(['en-US', 'zh-CN']),
'en-US');
console.log(locale);
Customize finding
type Delimiter = "-" | "_";
function forEachLocaleCandidate<T>(targetLocales: Array<string> /* From most preferred to least preferred. */, tryMatch: (localeCandidate: string) => {
matched: boolean;
res: T;
}, defaultValue: T, delimiter: Delimiter = '-'): T;
forEachLocaleCandidate
is used internally by both findClosestLocalizedText
and findClosestLocale
, which match localeCandidate
from the map and set respectively.