UNPKG

@nuxtjs/i18n

Version:

Internationalization for Nuxt

33 lines (32 loc) 1.24 kB
function matchBrowserLocale(locales, browserLocales) { const matchedLocales = []; for (const [index, browserCode] of browserLocales.entries()) { const matchedLocale = locales.find((l) => l.language?.toLowerCase() === browserCode.toLowerCase()); if (matchedLocale) { matchedLocales.push({ code: matchedLocale.code, score: 1 - index / browserLocales.length }); break; } } for (const [index, browserCode] of browserLocales.entries()) { const languageCode = browserCode.split("-")[0].toLowerCase(); const matchedLocale = locales.find((l) => l.language?.split("-")[0].toLowerCase() === languageCode); if (matchedLocale) { matchedLocales.push({ code: matchedLocale.code, score: 0.999 - index / browserLocales.length }); break; } } return matchedLocales; } function compareBrowserLocale(a, b) { if (a.score === b.score) { return b.code.length - a.code.length; } return b.score - a.score; } export function findBrowserLocale(locales, browserLocales) { const matchedLocales = matchBrowserLocale( locales.map((l) => ({ code: l.code, language: l.language || l.code })), browserLocales ); return matchedLocales.sort(compareBrowserLocale).at(0)?.code ?? ""; }