Files
open-ticket/.tools/mergeTranslations.js
T

649 lines
32 KiB
JavaScript

//@ts-check
const fjs = require("formatted-json-stringify")
const fs = require("fs")
const formatter = new fjs.ObjectFormatter(null,true,[
new fjs.ObjectFormatter("_TRANSLATION",true,[
new fjs.PropertyFormatter("otversion"),
new fjs.ArrayFormatter("translators",false,new fjs.PropertyFormatter(null)),
new fjs.PropertyFormatter("lastedited"),
new fjs.PropertyFormatter("language"),
new fjs.PropertyFormatter("automated"),
]),
new fjs.ObjectFormatter("checker",true,[
new fjs.ObjectFormatter("system",true,[
new fjs.PropertyFormatter("typeError"),
new fjs.PropertyFormatter("headerOpenTicket"),
new fjs.PropertyFormatter("typeWarning"),
new fjs.PropertyFormatter("typeInfo"),
new fjs.PropertyFormatter("headerConfigChecker"),
new fjs.PropertyFormatter("headerDescription"),
new fjs.PropertyFormatter("footerError"),
new fjs.PropertyFormatter("footerWarning"),
new fjs.PropertyFormatter("footerSupport"),
new fjs.PropertyFormatter("compactInformation"),
new fjs.PropertyFormatter("dataPath"),
new fjs.PropertyFormatter("dataDocs"),
new fjs.PropertyFormatter("dataMessages"),
]),
new fjs.ObjectFormatter("messages",true,[
new fjs.PropertyFormatter("stringTooShort"),
new fjs.PropertyFormatter("stringTooLong"),
new fjs.PropertyFormatter("stringLengthInvalid"),
new fjs.PropertyFormatter("stringStartsWith"),
new fjs.PropertyFormatter("stringEndsWith"),
new fjs.PropertyFormatter("stringContains"),
new fjs.PropertyFormatter("stringChoices"),
new fjs.PropertyFormatter("stringRegex"),
new fjs.PropertyFormatter("stringInvertedContains"),
new fjs.PropertyFormatter("stringLowercase"),
new fjs.PropertyFormatter("stringUppercase"),
new fjs.PropertyFormatter("stringSpecialCharacters"),
new fjs.PropertyFormatter("stringNoSpaces"),
new fjs.PropertyFormatter("stringCapitalWord"),
new fjs.PropertyFormatter("stringCapitalSentence"),
new fjs.PropertyFormatter("stringPunctuation"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("numberTooShort"),
new fjs.PropertyFormatter("numberTooLong"),
new fjs.PropertyFormatter("numberLengthInvalid"),
new fjs.PropertyFormatter("numberTooSmall"),
new fjs.PropertyFormatter("numberTooLarge"),
new fjs.PropertyFormatter("numberNotEqual"),
new fjs.PropertyFormatter("numberStep"),
new fjs.PropertyFormatter("numberStepOffset"),
new fjs.PropertyFormatter("numberStartsWith"),
new fjs.PropertyFormatter("numberEndsWith"),
new fjs.PropertyFormatter("numberContains"),
new fjs.PropertyFormatter("numberChoices"),
new fjs.PropertyFormatter("numberFloat"),
new fjs.PropertyFormatter("numberNegative"),
new fjs.PropertyFormatter("numberPositive"),
new fjs.PropertyFormatter("numberZero"),
new fjs.PropertyFormatter("numberNan"),
new fjs.PropertyFormatter("numberInvertedContains"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("booleanTrue"),
new fjs.PropertyFormatter("booleanFalse"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("arrayEmptyDisabled"),
new fjs.PropertyFormatter("arrayEmptyRequired"),
new fjs.PropertyFormatter("arrayTooShort"),
new fjs.PropertyFormatter("arrayTooLong"),
new fjs.PropertyFormatter("arrayLengthInvalid"),
new fjs.PropertyFormatter("arrayInvalidTypes"),
new fjs.PropertyFormatter("arrayDouble"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("discordInvalidId"),
new fjs.PropertyFormatter("discordInvalidIdOptions"),
new fjs.PropertyFormatter("discordInvalidToken"),
new fjs.PropertyFormatter("colorInvalid"),
new fjs.PropertyFormatter("emojiTooShort"),
new fjs.PropertyFormatter("emojiTooLong"),
new fjs.PropertyFormatter("emojiCustom"),
new fjs.PropertyFormatter("emojiInvalid"),
new fjs.PropertyFormatter("urlInvalid"),
new fjs.PropertyFormatter("urlInvalidHttp"),
new fjs.PropertyFormatter("urlInvalidProtocol"),
new fjs.PropertyFormatter("urlInvalidHostname"),
new fjs.PropertyFormatter("urlInvalidExtension"),
new fjs.PropertyFormatter("urlInvalidPath"),
new fjs.PropertyFormatter("idNotUnique"),
new fjs.PropertyFormatter("idNonExistent"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("invalidType"),
new fjs.PropertyFormatter("propertyMissing"),
new fjs.PropertyFormatter("propertyOptional"),
new fjs.PropertyFormatter("objectDisabled"),
new fjs.PropertyFormatter("nullInvalid"),
new fjs.PropertyFormatter("switchInvalidType"),
new fjs.PropertyFormatter("objectSwitchInvalid"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("invalidLanguage"),
new fjs.PropertyFormatter("invalidButton"),
new fjs.PropertyFormatter("unusedOption"),
new fjs.PropertyFormatter("unusedQuestion"),
new fjs.PropertyFormatter("dropdownOption"),
new fjs.PropertyFormatter("customInvalidVersion"),
]),
]),
new fjs.ObjectFormatter("actions",true,[
new fjs.ObjectFormatter("buttons",true,[
new fjs.PropertyFormatter("create"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("helpSwitchSlash"),
new fjs.PropertyFormatter("helpSwitchText"),
new fjs.PropertyFormatter("helpPage"),
new fjs.PropertyFormatter("withReason"),
new fjs.PropertyFormatter("withoutTranscript"),
]),
new fjs.ObjectFormatter("titles",true,[
new fjs.PropertyFormatter("created"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAddDm"),
new fjs.PropertyFormatter("blacklistRemoveDm"),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("clearTickets"),
new fjs.PropertyFormatter("roles"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autocloseEnabled"),
new fjs.PropertyFormatter("autocloseDisabled"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("autodeleteEnabled"),
new fjs.PropertyFormatter("autodeleteDisabled"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("transfer"),
]),
new fjs.ObjectFormatter("descriptions",true,[
new fjs.PropertyFormatter("create"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("helpExplanation"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("statsError"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGetSuccess"),
new fjs.PropertyFormatter("blacklistGetEmpty"),
new fjs.PropertyFormatter("blacklistViewEmpty"),
new fjs.PropertyFormatter("blacklistViewTip"),
new fjs.PropertyFormatter("clearVerify"),
new fjs.PropertyFormatter("clearReady"),
new fjs.PropertyFormatter("rolesEmpty"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autocloseLeave"),
new fjs.PropertyFormatter("autocloseTimeout"),
new fjs.PropertyFormatter("autodeleteLeave"),
new fjs.PropertyFormatter("autodeleteTimeout"),
new fjs.PropertyFormatter("autocloseEnabled"),
new fjs.PropertyFormatter("autocloseDisabled"),
new fjs.PropertyFormatter("autodeleteEnabled"),
new fjs.PropertyFormatter("autodeleteDisabled"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("ticketMessageLimit"),
new fjs.PropertyFormatter("ticketMessageAutoclose"),
new fjs.PropertyFormatter("ticketMessageAutodelete"),
new fjs.PropertyFormatter("panelReady"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("transfer"),
]),
new fjs.ObjectFormatter("modal",true,[
new fjs.PropertyFormatter("closePlaceholder"),
new fjs.PropertyFormatter("deletePlaceholder"),
new fjs.PropertyFormatter("reopenPlaceholder"),
new fjs.PropertyFormatter("claimPlaceholder"),
new fjs.PropertyFormatter("unclaimPlaceholder"),
new fjs.PropertyFormatter("pinPlaceholder"),
new fjs.PropertyFormatter("unpinPlaceholder"),
]),
new fjs.ObjectFormatter("logs",true,[
new fjs.PropertyFormatter("createLog"),
new fjs.PropertyFormatter("closeLog"),
new fjs.PropertyFormatter("closeDm"),
new fjs.PropertyFormatter("deleteLog"),
new fjs.PropertyFormatter("deleteDm"),
new fjs.PropertyFormatter("reopenLog"),
new fjs.PropertyFormatter("reopenDm"),
new fjs.PropertyFormatter("claimLog"),
new fjs.PropertyFormatter("claimDm"),
new fjs.PropertyFormatter("unclaimLog"),
new fjs.PropertyFormatter("unclaimDm"),
new fjs.PropertyFormatter("pinLog"),
new fjs.PropertyFormatter("pinDm"),
new fjs.PropertyFormatter("unpinLog"),
new fjs.PropertyFormatter("unpinDm"),
new fjs.PropertyFormatter("renameLog"),
new fjs.PropertyFormatter("renameDm"),
new fjs.PropertyFormatter("moveLog"),
new fjs.PropertyFormatter("moveDm"),
new fjs.PropertyFormatter("addLog"),
new fjs.PropertyFormatter("addDm"),
new fjs.PropertyFormatter("removeLog"),
new fjs.PropertyFormatter("removeDm"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("blacklistAddLog"),
new fjs.PropertyFormatter("blacklistRemoveLog"),
new fjs.PropertyFormatter("blacklistAddDm"),
new fjs.PropertyFormatter("blacklistRemoveDm"),
new fjs.PropertyFormatter("clearLog"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("transferLog"),
new fjs.PropertyFormatter("transferDm"),
new fjs.PropertyFormatter("prioritySetLog"),
new fjs.PropertyFormatter("prioritySetDm"),
new fjs.PropertyFormatter("roleUpdateLog"),
new fjs.PropertyFormatter("roleUpdateDm"),
]),
]),
new fjs.ObjectFormatter("transcripts",true,[
new fjs.ObjectFormatter("success",true,[
new fjs.PropertyFormatter("visit"),
new fjs.PropertyFormatter("ready"),
new fjs.PropertyFormatter("textFileDescription"),
new fjs.PropertyFormatter("htmlProgress"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("createdChannel"),
new fjs.PropertyFormatter("createdCreator"),
new fjs.PropertyFormatter("createdParticipant"),
new fjs.PropertyFormatter("createdActiveAdmin"),
new fjs.PropertyFormatter("createdEveryAdmin"),
new fjs.PropertyFormatter("createdOther"),
]),
new fjs.ObjectFormatter("errors",true,[
new fjs.PropertyFormatter("retry"),
new fjs.PropertyFormatter("continue"),
new fjs.PropertyFormatter("backup"),
new fjs.PropertyFormatter("error"),
new fjs.PropertyFormatter("title"),
]),
new fjs.ObjectFormatter("text",true,[
new fjs.PropertyFormatter("messagesTitle"),
new fjs.PropertyFormatter("embedTitle"),
new fjs.PropertyFormatter("fileTitle"),
new fjs.PropertyFormatter("fieldsTitle"),
new fjs.PropertyFormatter("reactionsTitle"),
new fjs.PropertyFormatter("statsTitle"),
new fjs.PropertyFormatter("emptyContent"),
new fjs.PropertyFormatter("noTitle"),
new fjs.PropertyFormatter("noDesc"),
]),
]),
new fjs.ObjectFormatter("errors",true,[
new fjs.ObjectFormatter("titles",true,[
new fjs.PropertyFormatter("internalError"),
new fjs.PropertyFormatter("optionMissing"),
new fjs.PropertyFormatter("optionInvalid"),
new fjs.PropertyFormatter("unknownCommand"),
new fjs.PropertyFormatter("noPermissions"),
new fjs.PropertyFormatter("unknownTicket"),
new fjs.PropertyFormatter("deprecatedTicket"),
new fjs.PropertyFormatter("unknownOption"),
new fjs.PropertyFormatter("unknownPanel"),
new fjs.PropertyFormatter("notInGuild"),
new fjs.PropertyFormatter("channelRename"),
new fjs.PropertyFormatter("busy"),
new fjs.PropertyFormatter("permissionError"),
]),
new fjs.ObjectFormatter("descriptions",true,[
new fjs.PropertyFormatter("askForInfo"),
new fjs.PropertyFormatter("askForInfoResolve"),
new fjs.PropertyFormatter("internalError"),
new fjs.PropertyFormatter("optionMissing"),
new fjs.PropertyFormatter("optionInvalid"),
new fjs.PropertyFormatter("optionInvalidChoose"),
new fjs.PropertyFormatter("unknownCommand"),
new fjs.PropertyFormatter("noPermissions"),
new fjs.PropertyFormatter("noPermissionsList"),
new fjs.PropertyFormatter("noPermissionsCooldown"),
new fjs.PropertyFormatter("noPermissionsBlacklist"),
new fjs.PropertyFormatter("noPermissionsLimitGlobal"),
new fjs.PropertyFormatter("noPermissionsLimitGlobalUser"),
new fjs.PropertyFormatter("noPermissionsLimitOption"),
new fjs.PropertyFormatter("noPermissionsLimitOptionUser"),
new fjs.PropertyFormatter("unknownTicket"),
new fjs.PropertyFormatter("deprecatedTicket"),
new fjs.PropertyFormatter("notInGuild"),
new fjs.PropertyFormatter("channelRename"),
new fjs.PropertyFormatter("channelRenameSource"),
new fjs.PropertyFormatter("busy"),
new fjs.PropertyFormatter("closeBeforeMessage"),
new fjs.PropertyFormatter("closeBeforeAdminMessage"),
new fjs.PropertyFormatter("unableToCreateTicket"),
]),
new fjs.ObjectFormatter("optionInvalidReasons",true,[
new fjs.PropertyFormatter("stringRegex"),
new fjs.PropertyFormatter("stringMinLength"),
new fjs.PropertyFormatter("stringMaxLength"),
new fjs.PropertyFormatter("numberInvalid"),
new fjs.PropertyFormatter("numberMin"),
new fjs.PropertyFormatter("numberMax"),
new fjs.PropertyFormatter("numberDecimal"),
new fjs.PropertyFormatter("numberNegative"),
new fjs.PropertyFormatter("numberPositive"),
new fjs.PropertyFormatter("numberZero"),
new fjs.PropertyFormatter("channelNotFound"),
new fjs.PropertyFormatter("userNotFound"),
new fjs.PropertyFormatter("roleNotFound"),
new fjs.PropertyFormatter("memberNotFound"),
new fjs.PropertyFormatter("mentionableNotFound"),
new fjs.PropertyFormatter("channelType"),
new fjs.PropertyFormatter("notInGuild"),
]),
new fjs.ObjectFormatter("permissions",true,[
new fjs.PropertyFormatter("developer"),
new fjs.PropertyFormatter("owner"),
new fjs.PropertyFormatter("admin"),
new fjs.PropertyFormatter("moderator"),
new fjs.PropertyFormatter("support"),
new fjs.PropertyFormatter("member"),
new fjs.PropertyFormatter("discord-administrator"),
]),
new fjs.ObjectFormatter("actionInvalid",true,[
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
]),
]),
new fjs.ObjectFormatter("params",true,[
new fjs.ObjectFormatter("uppercase",true,[
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("tickets"),
new fjs.PropertyFormatter("reason"),
new fjs.PropertyFormatter("creator"),
new fjs.PropertyFormatter("remaining"),
new fjs.PropertyFormatter("added"),
new fjs.PropertyFormatter("removed"),
new fjs.PropertyFormatter("filter"),
new fjs.PropertyFormatter("method"),
new fjs.PropertyFormatter("type"),
new fjs.PropertyFormatter("blacklisted"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("command"),
new fjs.PropertyFormatter("system"),
new fjs.PropertyFormatter("true"),
new fjs.PropertyFormatter("false"),
new fjs.PropertyFormatter("syntax"),
new fjs.PropertyFormatter("originalName"),
new fjs.PropertyFormatter("newName"),
new fjs.PropertyFormatter("until"),
new fjs.PropertyFormatter("validOptions"),
new fjs.PropertyFormatter("validPanels"),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("startupDate"),
new fjs.PropertyFormatter("version"),
new fjs.PropertyFormatter("name"),
new fjs.PropertyFormatter("role"),
new fjs.PropertyFormatter("status"),
new fjs.PropertyFormatter("claimed"),
new fjs.PropertyFormatter("pinned"),
new fjs.PropertyFormatter("creationDate"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("noone"),
new fjs.PropertyFormatter("open"),
new fjs.PropertyFormatter("closed"),
new fjs.PropertyFormatter("priority"),
new fjs.PropertyFormatter("participants"),
new fjs.PropertyFormatter("yes"),
new fjs.PropertyFormatter("no"),
new fjs.PropertyFormatter("option"),
new fjs.PropertyFormatter("topic"),
new fjs.PropertyFormatter("uptime"),
new fjs.PropertyFormatter("messages"),
new fjs.PropertyFormatter("embeds"),
new fjs.PropertyFormatter("files"),
new fjs.PropertyFormatter("components"),
new fjs.PropertyFormatter("cooldown"),
new fjs.PropertyFormatter("maxTickets"),
new fjs.PropertyFormatter("admins"),
new fjs.PropertyFormatter("roles"),
new fjs.PropertyFormatter("size"),
]),
new fjs.ObjectFormatter("lowercase",true,[
new fjs.PropertyFormatter("text"),
new fjs.PropertyFormatter("html"),
new fjs.PropertyFormatter("command"),
new fjs.PropertyFormatter("modal"),
new fjs.PropertyFormatter("button"),
new fjs.PropertyFormatter("dropdown"),
new fjs.PropertyFormatter("method"),
]),
]),
new fjs.ObjectFormatter("commands",true,[
new fjs.PropertyFormatter("reason"),
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("panelId"),
new fjs.PropertyFormatter("panelAutoUpdate"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("ticketId"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("deleteNoTranscript"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("claimUser"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("moveId"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("renameName"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("addUser"),
new fjs.PropertyFormatter("remove"),
new fjs.PropertyFormatter("removeUser"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("blacklist"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("blacklistGetUser"),
new fjs.PropertyFormatter("stats"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("statsGlobal"),
new fjs.PropertyFormatter("statsUser"),
new fjs.PropertyFormatter("statsUserUser"),
new fjs.PropertyFormatter("statsTicket"),
new fjs.PropertyFormatter("statsTicketTicket"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("clear"),
new fjs.PropertyFormatter("clearFilter"),
new fjs.ObjectFormatter("clearFilters",true,[
new fjs.PropertyFormatter("all"),
new fjs.PropertyFormatter("open"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("autoclose"),
]),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("autoclose"),
new fjs.PropertyFormatter("autocloseDisable"),
new fjs.PropertyFormatter("autocloseEnable"),
new fjs.PropertyFormatter("autocloseEnableTime"),
new fjs.PropertyFormatter("autodelete"),
new fjs.PropertyFormatter("autodeleteDisable"),
new fjs.PropertyFormatter("autodeleteEnable"),
new fjs.PropertyFormatter("autodeleteEnableTime"),
new fjs.TextFormatter(""),
new fjs.PropertyFormatter("topic"),
new fjs.PropertyFormatter("topicSet"),
new fjs.PropertyFormatter("topicValue"),
new fjs.PropertyFormatter("topicList"),
new fjs.PropertyFormatter("priority"),
new fjs.PropertyFormatter("prioritySet"),
new fjs.PropertyFormatter("priorityValue"),
new fjs.PropertyFormatter("priorityGet"),
new fjs.PropertyFormatter("priorityList"),
new fjs.PropertyFormatter("transfer"),
new fjs.PropertyFormatter("transferUser"),
]),
new fjs.ObjectFormatter("helpMenu",true,[
new fjs.PropertyFormatter("help"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("close"),
new fjs.PropertyFormatter("delete"),
new fjs.PropertyFormatter("reopen"),
new fjs.PropertyFormatter("pin"),
new fjs.PropertyFormatter("unpin"),
new fjs.PropertyFormatter("move"),
new fjs.PropertyFormatter("rename"),
new fjs.PropertyFormatter("claim"),
new fjs.PropertyFormatter("unclaim"),
new fjs.PropertyFormatter("add"),
new fjs.PropertyFormatter("remove"),
new fjs.PropertyFormatter("panel"),
new fjs.PropertyFormatter("blacklistView"),
new fjs.PropertyFormatter("blacklistAdd"),
new fjs.PropertyFormatter("blacklistRemove"),
new fjs.PropertyFormatter("blacklistGet"),
new fjs.PropertyFormatter("statsGlobal"),
new fjs.PropertyFormatter("statsTicket"),
new fjs.PropertyFormatter("statsUser"),
new fjs.PropertyFormatter("statsReset"),
new fjs.PropertyFormatter("autocloseDisable"),
new fjs.PropertyFormatter("autocloseEnable"),
new fjs.PropertyFormatter("autodeleteDisable"),
new fjs.PropertyFormatter("autodeleteEnable"),
new fjs.ObjectFormatter("categories",true,[
new fjs.PropertyFormatter("general"),
new fjs.PropertyFormatter("basicTicket"),
new fjs.PropertyFormatter("advancedTicket"),
new fjs.PropertyFormatter("userTicket"),
new fjs.PropertyFormatter("admin"),
new fjs.PropertyFormatter("advanced"),
new fjs.PropertyFormatter("extra"),
])
]),
new fjs.ObjectFormatter("stats",true,[
new fjs.ObjectFormatter("scopes",true,[
new fjs.PropertyFormatter("global"),
new fjs.PropertyFormatter("system"),
new fjs.PropertyFormatter("user"),
new fjs.PropertyFormatter("ticket"),
new fjs.PropertyFormatter("participants"),
new fjs.PropertyFormatter("messages"),
]),
new fjs.ObjectFormatter("properties",true,[
new fjs.PropertyFormatter("ticketsCreated"),
new fjs.PropertyFormatter("ticketsClosed"),
new fjs.PropertyFormatter("ticketsDeleted"),
new fjs.PropertyFormatter("ticketsReopened"),
new fjs.PropertyFormatter("ticketsAutoclosed"),
new fjs.PropertyFormatter("ticketsClaimed"),
new fjs.PropertyFormatter("ticketsPinned"),
new fjs.PropertyFormatter("ticketsMoved"),
new fjs.PropertyFormatter("usersBlacklisted"),
new fjs.PropertyFormatter("transcriptsCreated"),
new fjs.PropertyFormatter("ticketsAutodeleted"),
new fjs.PropertyFormatter("ticketsTransferred"),
new fjs.PropertyFormatter("ticketVolume"),
new fjs.PropertyFormatter("averageTickets"),
new fjs.PropertyFormatter("currentTickets"),
new fjs.PropertyFormatter("age"),
new fjs.PropertyFormatter("responseTime"),
new fjs.PropertyFormatter("resolutionTime"),
new fjs.PropertyFormatter("createdOn"),
new fjs.PropertyFormatter("createdBy"),
new fjs.PropertyFormatter("closedOn"),
new fjs.PropertyFormatter("closedBy"),
new fjs.PropertyFormatter("claimedOn"),
new fjs.PropertyFormatter("claimedBy"),
new fjs.PropertyFormatter("pinnedOn"),
new fjs.PropertyFormatter("pinnedBy"),
new fjs.PropertyFormatter("deletedOn"),
new fjs.PropertyFormatter("deletedBy"),
]),
new fjs.ObjectFormatter("roles",true,[
new fjs.PropertyFormatter("developer"),
new fjs.PropertyFormatter("serverOwner"),
new fjs.PropertyFormatter("serverAdmin"),
new fjs.PropertyFormatter("moderator"),
new fjs.PropertyFormatter("support"),
new fjs.PropertyFormatter("member"),
])
]),
new fjs.ObjectFormatter("panel",true,[
new fjs.PropertyFormatter("selectTicket"),
new fjs.PropertyFormatter("selectRole"),
new fjs.PropertyFormatter("selectOption"),
]),
new fjs.ObjectFormatter("priorities",true,[
new fjs.PropertyFormatter("urgent"),
new fjs.PropertyFormatter("veryHigh"),
new fjs.PropertyFormatter("high"),
new fjs.PropertyFormatter("normal"),
new fjs.PropertyFormatter("low"),
new fjs.PropertyFormatter("veryLow"),
new fjs.PropertyFormatter("none"),
]),
])
for (const language of fs.readdirSync(".docs/languages/")){
if (!fs.existsSync("./languages/"+language)){
console.log("language:",language,"does not exist yet in the primary ./languages/ folder. Unable to merge!")
continue
}
console.log("merging "+language+"...")
const original = JSON.parse(fs.readFileSync("./languages/"+language).toString())
const newSentences = JSON.parse(fs.readFileSync(".docs/languages/"+language).toString())
for (const key of Object.keys(newSentences)){
if (key.startsWith("_")) continue
try{
const splitted = key.split(".")
let currentObject = original
splitted.forEach((property,index) => {
let shouldBeObject = (splitted.length-1 !== index)
if (shouldBeObject && typeof currentObject[property] == "object"){
currentObject = currentObject[property]
}else if (shouldBeObject && typeof currentObject[property] == "undefined"){
currentObject[property] = {}
currentObject = currentObject[property]
}else if (typeof currentObject[property] == "string" || typeof currentObject[property] == "undefined"){
currentObject[property] = newSentences[key]
}else{
console.log("Failed to merge key:",key,"in file:",language,"--> Invalid type:",typeof currentObject[property])
}
})
}catch(err){
console.log("Failed to merge key:",key,"in file:",language)
}
}
original["_TRANSLATION"]["lastedited"] = new Date().toLocaleDateString("nl-BE",{day:"2-digit",month:"2-digit",year:"numeric"})
original["_TRANSLATION"]["otversion"] = "v4.1.3"
const finalText = formatter.stringify(original)
fs.writeFileSync("./languages/"+language,finalText)
}