Added language merge utility tool
This commit is contained in:
@@ -0,0 +1,649 @@
|
||||
//@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.0"
|
||||
const finalText = formatter.stringify(original)
|
||||
fs.writeFileSync("./languages/"+language,finalText)
|
||||
}
|
||||
@@ -19,4 +19,5 @@ otdebug.txt
|
||||
|
||||
.docs/*
|
||||
!.docs/createDocs.js
|
||||
!.docs/mergeTranslations.js
|
||||
!.docs/typedoc-config.json
|
||||
+2
-1
@@ -19,7 +19,8 @@
|
||||
"test": "node index.js --dev-config --dev-database --soft-plugins",
|
||||
"testsetup": "node index.js --cli --dev-config --dev-database --soft-plugins",
|
||||
"testnc": "node index.js --no-compile --dev-config --dev-database --soft-plugins",
|
||||
"docs": "npx typedoc --options .docs/typedoc-config.json && node .docs/createDocs.js"
|
||||
"docs": "npx typedoc --options .docs/typedoc-config.json && node .docs/createDocs.js",
|
||||
"mergelang": "node .docs/mergeTranslations.js"
|
||||
},
|
||||
"type": "commonjs",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
Reference in New Issue
Block a user