Locale system fixes + auto translate chat
This commit is contained in:
@@ -7,9 +7,22 @@
|
|||||||
// TYPE: Server (JavaScript)
|
// TYPE: Server (JavaScript)
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
|
let translateURL = "http://api.mymemory.translated.net/get?de={3}&q={0}&langpair={1}|{2}";
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
function initLocaleScript() {
|
function initLocaleScript() {
|
||||||
logToConsole(LOG_INFO, "[VRR.Locale]: Initializing locale script ...");
|
logToConsole(LOG_INFO, "[VRR.Locale]: Initializing locale script ...");
|
||||||
getServerData().localeStrings = loadAllLocaleStrings();
|
getServerData().localeStrings = loadAllLocaleStrings();
|
||||||
|
|
||||||
|
// Translation Cache
|
||||||
|
getServerData().cachedTranslations = new Array(getGlobalConfig().locale.locales.length);
|
||||||
|
getServerData().cachedTranslationFrom = new Array(getGlobalConfig().locale.locales.length);
|
||||||
|
getServerData().cachedTranslationFrom.fill([]);
|
||||||
|
getServerData().cachedTranslations.fill(getServerData().cachedTranslationFrom);
|
||||||
|
|
||||||
|
getGlobalConfig().locale.defaultLanguageId = getLocaleFromParams(getGlobalConfig().locale.defaultLanguageId);
|
||||||
|
|
||||||
logToConsole(LOG_INFO, "[VRR.Locale]: Locale script initialized!");
|
logToConsole(LOG_INFO, "[VRR.Locale]: Locale script initialized!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +80,7 @@ function getPlayerLocaleName(client) {
|
|||||||
function loadAllLocaleStrings() {
|
function loadAllLocaleStrings() {
|
||||||
let tempLocaleStrings = {};
|
let tempLocaleStrings = {};
|
||||||
|
|
||||||
let locales = getGlobalConfig().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[1]}.json`));
|
||||||
@@ -105,7 +118,7 @@ function getLocaleFromParams(params) {
|
|||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
||||||
function getLocales() {
|
function getLocales() {
|
||||||
return getGlobalConfig().locales;
|
return getGlobalConfig().locale.locales;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@@ -150,4 +163,52 @@ function getLocaleData(localeId) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
function reloadLocaleConfigurationCommand(command, params, client) {
|
||||||
|
getGlobalConfig().locale = loadLocaleConfig();
|
||||||
|
getServerData().localeStrings = loadAllLocaleStrings();
|
||||||
|
|
||||||
|
// Translation Cache
|
||||||
|
getServerData().cachedTranslations = new Array(getGlobalConfig().locale.locales.length);
|
||||||
|
getServerData().cachedTranslationFrom = new Array(getGlobalConfig().locale.locales.length);
|
||||||
|
getServerData().cachedTranslationFrom.fill([]);
|
||||||
|
getServerData().cachedTranslations.fill(getServerData().cachedTranslationFrom);
|
||||||
|
|
||||||
|
getGlobalConfig().locale.defaultLanguageId = getLocaleFromParams(getGlobalConfig().locale.defaultLanguage);
|
||||||
|
|
||||||
|
messageAdmins(`${client.name}{MAINCOLOUR} has reloaded the locale settings and texts`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
|
||||||
|
async function translateMessage(messageText, translateFrom = getGlobalConfig().locale.defaultLanguageId, translateTo = getGlobalConfig().locale.defaultLanguageId) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
if(translateFrom == translateTo) {
|
||||||
|
resolve(messageText);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(let i in cachedTranslations[translateFrom][translateTo]) {
|
||||||
|
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]})`);
|
||||||
|
resolve(cachedTranslations[translateFrom][translateTo][i][1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let thisTranslationURL = translateURL.format(encodeURI(messageText), toUpperCase(getGlobalConfig().locale.locales[translateFrom][2]), toUpperCase(getGlobalConfig().locale.locales[translateTo][2]), getGlobalConfig().locale.apiEmail);
|
||||||
|
httpGet(
|
||||||
|
thisTranslationURL,
|
||||||
|
"",
|
||||||
|
function(data) {
|
||||||
|
data = ArrayBufferToString(data);
|
||||||
|
let translationData = JSON.parse(data);
|
||||||
|
cachedTranslations[translateFrom][translateTo].push([messageText, translationData.responseData.translatedText]);
|
||||||
|
resolve(translationData.responseData.translatedText);
|
||||||
|
},
|
||||||
|
function(data) {
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
Reference in New Issue
Block a user