import translationTargetLanguages from '../data/lingva-target-languages'; import localeMatch from './locale-match'; import mem from './mem'; import states from './states'; const locales = mem(() => [ new Intl.DateTimeFormat().resolvedOptions().locale, ...navigator.languages, ]); const localeTargetLanguages = () => localeMatch( locales(), translationTargetLanguages.map((l) => l.code.replace('_', '-')), // The underscore will fail Intl.Locale inside `match` 'en', ); function getTranslateTargetLanguage(fromSettings = false) { if (fromSettings) { const { contentTranslationTargetLanguage } = states.settings; if (contentTranslationTargetLanguage) { return contentTranslationTargetLanguage; } } return localeTargetLanguages(); } export default getTranslateTargetLanguage;