From df920ef046e262f00d9a3d99af33ddebf2ed1fdb Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Tue, 16 Nov 2021 02:02:18 -0600 Subject: [PATCH] Add locales/translations (unfinished) --- scripts/server/accent.js | 5 +-- scripts/server/animation.js | 10 +++--- scripts/server/ban.js | 8 ++--- scripts/server/locale.js | 49 +++++++++++++++++++++++++++++- scripts/server/locale/english.json | 10 ++++++ 5 files changed, 70 insertions(+), 12 deletions(-) diff --git a/scripts/server/accent.js b/scripts/server/accent.js index db508d0e..b68ee521 100644 --- a/scripts/server/accent.js +++ b/scripts/server/accent.js @@ -45,14 +45,15 @@ function setAccentCommand(command, params, client) { let accentId = getAccentFromParams(params); if(!accentId) { - messagePlayerError(client, "Accent not found!"); + messagePlayerError(client, getLocaleString("AccentNotFound")); return false; } let accentString = getGlobalConfig().accents[accentId]; getPlayerCurrentSubAccount(client).accent = accentString; - messagePlayerSuccess(client, `You set your accent to ${getInlineChatColourByName("lightGrey")}${accentString}`); + + messagePlayerSuccess(client, getLocaleString(client, "AccentSet", accentString)); } // =========================================================================== diff --git a/scripts/server/animation.js b/scripts/server/animation.js index e4b8cad6..0caca402 100644 --- a/scripts/server/animation.js +++ b/scripts/server/animation.js @@ -25,13 +25,13 @@ function playPlayerAnimationCommand(command, params, client) { let animationPositionOffset = getAnimationFromParams(splitParams[1]) || 1; if(!animationSlot) { - messagePlayerError(client, "That animation doesn't exist!"); - messagePlayerInfo(client, "Use /animlist to see a list of valid animations"); + messagePlayerError(client, getLocaleString("AnimationNotFound")); + messagePlayerInfo(client, getLocaleString("AnimationHelpTip")); return false; } if(toInteger(animationPositionOffset) < 0 || toInteger(animationPositionOffset) > 3) { - messagePlayerError(client, "The offset must be between 0 and 3!") + messagePlayerError(client, getLocaleString("AnimationInvalidDistance")); return false; } @@ -40,11 +40,11 @@ function playPlayerAnimationCommand(command, params, client) { getPlayerData(client).currentAnimationPositionReturnTo = getPlayerPosition(client); getPlayerData(client).animationStart = getCurrentUnixTimestamp(); //setEntityData(getPlayerData(client).ped, "vrr.animation", animationSlot, true); - messagePlayerTip(client, `${getInlineChatColourByName("white")}Use ${getInlineChatColourByName("lightGrey")}/stopanim ${getInlineChatColourByName("white")}to stop your animation`); + messagePlayerTip(client, ``); makePedPlayAnimation(getPlayerData(client).ped, animationSlot, animationPositionOffset); if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) { - if(getGame() < GAME_GTA_SA) { + if(getGame() < VRR_GAME_GTA_SA) { setPlayerMouseCameraState(client, true); } } diff --git a/scripts/server/ban.js b/scripts/server/ban.js index 15e08e41..129bb163 100644 --- a/scripts/server/ban.js +++ b/scripts/server/ban.js @@ -24,7 +24,7 @@ function accountBanCommand(command, params, client) { // Prevent banning admins with really high permissions if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { - messagePlayerError(client, "You cannot ban this person!"); + messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } @@ -49,7 +49,7 @@ function subAccountBanCommand(command, params, client, fromDiscord) { // Prevent banning admins with really high permissions if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { - messagePlayerError(client, "You cannot ban this person!"); + messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } @@ -74,7 +74,7 @@ function ipBanCommand(command, params, client, fromDiscord) { // Prevent banning admins with really high permissions if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { - messagePlayerError(client, "You cannot ban this person!"); + messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } @@ -98,7 +98,7 @@ function subNetBanCommand(command, params, client, fromDiscord) { // Prevent banning admins with really high permissions if(doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) { - messagePlayerError(client, "You cannot ban this person!"); + messagePlayerError(client, getLocaleString(client, "CantBanPlayer")); return false; } diff --git a/scripts/server/locale.js b/scripts/server/locale.js index b7c6d89e..a0939cbc 100644 --- a/scripts/server/locale.js +++ b/scripts/server/locale.js @@ -7,4 +7,51 @@ // TYPE: Server (JavaScript) // =========================================================================== -// (V) This may be obsolete with the new translation tool! \ No newline at end of file +let localeStrings = {}; + +// =========================================================================== + +function initLocaleScript() { + localeStrings = loadAllLocaleStrings(); +} + +// =========================================================================== + +function getLocaleString(client, stringName, ...args) { + let tempString = getRawLocaleString(stringName, getPlayerLocaleName(client)); + + tempString = replaceColoursInLocaleString(tempString); + + for(let i in args) { + tempString = tempString.replace(`{${i}}`, args[i]); + } +} + +// =========================================================================== + +function getRawLocaleString(stringName, localeName) { + return localeStrings[localeName][stringName]; +} + +// =========================================================================== + +function getPlayerLocaleName(client) { + if(client == null) { + return getLocaleNameFromParams(`English`); + } + + return getPlayerData(client).accountData.locale; +} + +// =========================================================================== + +function loadAllLocaleStrings() { + let locales = getGlobalConfig().locales; + for(let i in locales) { + let localeData = locales[i]; + let localeFile = JSON.parse(loadTextFile(`locale/${localeData[1]}.json`)); + localeStrings[localeData[1]] = localeFile; + } +} + +// =========================================================================== \ No newline at end of file diff --git a/scripts/server/locale/english.json b/scripts/server/locale/english.json index e69de29b..47d89847 100644 --- a/scripts/server/locale/english.json +++ b/scripts/server/locale/english.json @@ -0,0 +1,10 @@ +{ + "AccentNotFound": "Accent not found!", + "AccentSet": "You set your accent to {ALTCOLOUR}{%1}", + "AnimationNotFound": "That animation doesn't exist!", + "AnimationCommandTip": "Use /animlist to see a list of valid animations", + "AnimationInvalidDistance": "The distance must be between 0 and 3!", + "AnimationStopCommandTip": "Use {ALTCOLOUR}/stopanim {RESETCOLOUR}to stop your animation", + "CantBanClient": "You cannot ban this person!", + "PlayerAccountBanned": "{1} has been account banned" +} \ No newline at end of file