Readable locale config format

This commit is contained in:
Vortrex
2022-04-16 21:41:01 -05:00
parent 50d2dfe4ba
commit 70f5c5e239
2 changed files with 58 additions and 16 deletions

View File

@@ -2,12 +2,54 @@
"apiEmail": "example@example.com", "apiEmail": "example@example.com",
"defaultLanguage": "en", "defaultLanguage": "en",
"locales": [ "locales": [
["English", "english", "en", "gb", ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"]], {
["Russian", "russian", "ru", "ru", ["ru", "ua"]], "englishName": "English",
["Polish", "polish", "pl", "pl", ["pl"]], "stringsFile": "english.json",
["Spanish", "spanish", "es", "es", ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"]], "isoCode": "en",
["Chinese", "chinese", "zh", "cn", ["cn", "hk", "sg", "tw"]], "flagImageFile": "gb.png",
["Arabic", "arabic", "ar", "sa", ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"]] "countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false
},
{
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru",
"countries": ["ru", "ua"],
"requiresUnicode": false
},
{
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl",
"countries": ["pl"],
"requiresUnicode": false
},
{
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"flagImageFile": "es",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false
},
{
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true
},
{
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true
}
], ],
"sendStringsToClient": [ "sendStringsToClient": [
"PropertyEnterCommandLabel", "PropertyEnterCommandLabel",

View File

@@ -70,21 +70,21 @@ function getGroupedLocaleString(client, stringName, index, ...args) {
// =========================================================================== // ===========================================================================
function getRawLocaleString(stringName, localeName) { function getRawLocaleString(stringName, localeId) {
return getLocaleStrings()[localeName][stringName]; return getLocaleStrings()[localeId][stringName];
} }
// =========================================================================== // ===========================================================================
function getRawGroupedLocaleString(stringName, localeName, index) { function getRawGroupedLocaleString(stringName, localeId, index) {
return getLocaleStrings()[localeName][stringName][index]; return getLocaleStrings()[localeId][stringName][index];
} }
// =========================================================================== // ===========================================================================
function getPlayerLocaleName(client) { function getPlayerLocaleName(client) {
let localeId = getPlayerData(client).locale; let localeId = getPlayerData(client).locale;
return getLocales()[localeId][0]; return getLocales()[localeId].englishName;
} }
// =========================================================================== // ===========================================================================
@@ -95,7 +95,7 @@ function loadAllLocaleStrings() {
let locales = getGlobalConfig().locale.locales; let locales = getGlobalConfig().locale.locales;
for(let i in locales) { for(let i in locales) {
let localeData = locales[i]; let localeData = locales[i];
let localeFile = JSON.parse(loadTextFile(`locale/${localeData[1]}.json`)); let localeFile = JSON.parse(loadTextFile(`locale/${localeData.stringsFile}`));
tempLocaleStrings[i] = localeFile; tempLocaleStrings[i] = localeFile;
} }
@@ -114,11 +114,11 @@ function getLocaleFromParams(params) {
let locales = getLocales(); let locales = getLocales();
if(isNaN(params)) { if(isNaN(params)) {
for(let i in locales) { for(let i in locales) {
if(toLowerCase(locales[i][2]).indexOf(toLowerCase(params)) != -1) { if(toLowerCase(locales[i].isoCode).indexOf(toLowerCase(params)) != -1) {
return i; return i;
} }
if(toLowerCase(locales[i][0]).indexOf(toLowerCase(params)) != -1) { if(toLowerCase(locales[i].englishName).indexOf(toLowerCase(params)) != -1) {
return i; return i;
} }
} }
@@ -203,13 +203,13 @@ async function translateMessage(messageText, translateFrom = getGlobalConfig().l
for(let i in cachedTranslations[translateFrom][translateTo]) { for(let i in cachedTranslations[translateFrom][translateTo]) {
if(cachedTranslations[translateFrom][translateTo][i][0] == messageText) { if(cachedTranslations[translateFrom][translateTo][i][0] == messageText) {
logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom][0]} to ${getGlobalConfig().locale.locales[translateTo][0]} - (${messageText}), (${cachedTranslations[translateFrom][translateTo][i][1]})`); logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom].englishName} to ${getGlobalConfig().locale.locales[translateTo].englishName} - (${messageText}), (${cachedTranslations[translateFrom][translateTo][i][1]})`);
resolve(cachedTranslations[translateFrom][translateTo][i][1]); resolve(cachedTranslations[translateFrom][translateTo][i][1]);
return true; return true;
} }
} }
let thisTranslationURL = translateURL.format(encodeURI(messageText), toUpperCase(getGlobalConfig().locale.locales[translateFrom][2]), toUpperCase(getGlobalConfig().locale.locales[translateTo][2]), getGlobalConfig().locale.apiEmail); let thisTranslationURL = translateURL.format(encodeURI(messageText), toUpperCase(getGlobalConfig().locale.locales[translateFrom].isoCode), toUpperCase(getGlobalConfig().locale.locales[translateTo].isoCode), getGlobalConfig().locale.apiEmail);
httpGet( httpGet(
thisTranslationURL, thisTranslationURL,
"", "",