Move WebConfigGenerator to /docs in master branch

This commit is contained in:
JustArchi
2018-03-01 04:34:24 +01:00
parent adbc6809c8
commit 4d2f1b789b
88 changed files with 17265 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
const defaultLocale = 'strings';
const nameRegex = /\.\/(\S+)\.json/i;
function getLocale(validLocales) {
const language = navigator.language; // If the browser doesn't support this, it will not support other page elements as well
if (!language) return defaultLocale; // If the browser doesn't provide the language - return default locale
if (language.length !== 2) return validLocales.includes(language) ? language : defaultLocale; // If the language is in `xx-XX` format, check if it's valid
if (validLocales.includes(`${language}-${language.toUpperCase()}`)) return `${language}-${language.toUpperCase()}`; // If the language is two letter code, check if corresponding 5 letter code is a valid locale
const languageRegex = new RegExp(`${language}\-\\\S\\\S`); // Create a regex to match `xx-**` where `*` is a wildcard
for (const validLocale of validLocales) {
if (languageRegex.test(validLocale)) return validLocale; // Check if the locale matches the regex, if so, return it
}
return defaultLocale; // If no match found, return default locale
}
function loadLocales() {
const locales = {};
const defaultLanguageFile = `./${defaultLocale}.json`;
const languages = require.context('./locale/', false, /\.json/);
locales[defaultLocale] = languages(defaultLanguageFile);
for (const lang of languages.keys()) {
if (lang === defaultLanguageFile) continue; // Already loaded.
const languageName = lang.match(nameRegex)[1];
const language = languages(lang);
for (const key in language) {
if (!language.hasOwnProperty(key)) continue;
if (language[key] === '') language[key] = locales[defaultLocale][key];
}
locales[languageName] = language;
}
return locales;
}
const messages = loadLocales();
const locale = getLocale(Object.keys(messages));
export default { messages, locale };