Markus-Rost 5 роки тому
батько
коміт
0f83a92905
20 змінених файлів з 372 додано та 350 видалено
  1. 2 2
      bot.js
  2. 1 1
      cmds/info.js
  3. 3 3
      cmds/rcscript.js
  4. 3 3
      cmds/settings.js
  5. 2 1
      cmds/test.js
  6. 2 2
      cmds/verification.js
  7. 1 1
      cmds/verify.js
  8. 1 1
      functions/helpserver.js
  9. 36 34
      i18n/de.json
  10. 36 34
      i18n/en.json
  11. 31 29
      i18n/fr.json
  12. 36 34
      i18n/nl.json
  13. 35 33
      i18n/pl.json
  14. 35 33
      i18n/pt.json
  15. 35 33
      i18n/ru.json
  16. 36 34
      i18n/tr.json
  17. 35 33
      i18n/zh-hans.json
  18. 35 33
      i18n/zh-hant.json
  19. 6 5
      util/i18n.js
  20. 1 1
      util/newMessage.js

+ 2 - 2
bot.js

@@ -274,7 +274,7 @@ client.on( 'message', msg => {
 				console.log( msg.guild.name + ': ' + msg.content );
 				db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 					if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
-					msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('prefix', patreons[msg.guild.id]), {}, true );
+					msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('general.prefix', patreons[msg.guild.id]), {}, true );
 				} );
 			}
 		}
@@ -290,7 +290,7 @@ client.on( 'message', msg => {
 					db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 						if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
 						if ( msg.content.hasPrefix(( patreons[msg.guild.id] || process.env.prefix ), 'm') ) {
-							msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('missingperm') + ' `' + missing.join('`, `') + '`', {}, true );
+							msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('general.missingperm') + ' `' + missing.join('`, `') + '`', {}, true );
 						}
 					} );
 				}

+ 1 - 1
cmds/info.js

@@ -11,7 +11,7 @@ const help_server = require('../functions/helpserver.js');
 function cmd_info(lang, msg, args, line, wiki) {
 	if ( args.join('') ) this.LINK(lang, msg, line, wiki);
 	else {
-		msg.sendChannel( lang.get('disclaimer', '*MarkusRost*') + '\n<' + process.env.patreon + '>' );
+		msg.sendChannel( lang.get('general.disclaimer', '*MarkusRost*') + '\n<' + process.env.patreon + '>' );
 		help_server(lang, msg);
 		this.invite(lang, msg, args, line, wiki);
 	}

+ 3 - 3
cmds/rcscript.js

@@ -28,12 +28,12 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 	if ( !msg.isAdmin() ) return msg.reactEmoji('❌');
 	// Patreon only during testing
 	if ( !( msg.guild.id in patreons ) ) {
-		return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+		return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 	}
 	// Patreon only during testing
 	if ( !msg.channel.permissionsFor(msg.client.user).has('MANAGE_WEBHOOKS') ) {
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_WEBHOOKS' );
-		return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_WEBHOOKS`' );
+		return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_WEBHOOKS`' );
 	}
 	
 	db.all( 'SELECT configid, webhook, wiki, lang, display, wikiid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
@@ -320,7 +320,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					return msg.replyMsg( lang.get('rcscript.current_display') + ' `' + display_types[selected_row.display] + '`\n`' + cmd + ' display (' + display.join('|') + ')`\n' + display.map( display_type => '`' + display_type + '`: ' + lang.get('rcscript.help_display_' + display_type) ).join('\n'), {}, true );
 				}
 				if ( !display.includes( args[1] ) ) {
-					return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+					return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 				}
 
 				msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {

+ 3 - 3
cmds/settings.js

@@ -204,7 +204,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		}
 		
 		if ( args[0] === 'lang' ) {
-			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			prelang += 'lang';
 			var langhelp = '\n' + lang.get('settings.langhelp', prefix + 'settings ' + prelang) + ' `' + Object.values(allLangs.names).join('`, `') + '`';
 			if ( !args[1] ) {
@@ -260,7 +260,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		
 		if ( args[0] === 'prefix' && !channel ) {
 			if ( !( msg.guild.id in patreons ) ) {
-				return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+				return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			}
 			var prefixhelp = '\n' + lang.get('settings.prefixhelp', prefix + 'settings prefix');
 			args[1] = args[1].replace( /(?<!\\)_$/, ' ' ).replace( /\\([_\W])/g, '$1' );
@@ -290,7 +290,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		}
 		
 		if ( args[0] === 'inline' ) {
-			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			prelang += 'inline';
 			var toggle = 'inline ' + ( ( channel || guild ).inline ? 'disabled' : 'enabled' );
 			var inlinehelp = '\n' + lang.get('settings.' + toggle + '.help', prefix + 'settings ' + prelang + ' toggle', inlinepage);

+ 2 - 1
cmds/test.js

@@ -15,7 +15,8 @@ function cmd_test(lang, msg, args, line, wiki) {
 	} else if ( msg.channel.type !== 'text' || !pause[msg.guild.id] ) {
 		if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
 		let textList = lang.get('test.text').filter( text => text );
-		var text = textList[Math.floor(Math.random() * ( textList.length * 5 ))] || lang.get('test.text.0');
+		var text = textList[Math.floor(Math.random() * ( textList.length * 5 ))]?.trim();
+		if ( !text ) text = lang.get('test.text.0');
 		console.log( '- Test: Fully functioning!' );
 		var now = Date.now();
 		msg.replyMsg( text ).then( message => {

+ 2 - 2
cmds/verification.js

@@ -17,7 +17,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 	}
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
-		return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_ROLES`' );
+		return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_ROLES`' );
 	}
 	
 	db.all( 'SELECT configid, channel, role, editcount, usergroup, accountage, rename FROM verification WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (error, rows) => {
@@ -86,7 +86,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 		if ( args[1] === 'rename' && !args.slice(2).join('') ) {
 			if ( !row.rename && !msg.guild.me.permissions.has('MANAGE_NICKNAMES') ) {
 				console.log( msg.guild.id + ': Missing permissions - MANAGE_NICKNAMES' );
-				return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_NICKNAMES`' );
+				return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_NICKNAMES`' );
 			}
 			return db.run( 'UPDATE verification SET rename = ? WHERE guild = ? AND configid = ?', [( row.rename ? 0 : 1 ), msg.guild.id, row.configid], function (dberror) {
 				if ( dberror ) {

+ 1 - 1
cmds/verify.js

@@ -18,7 +18,7 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 		if ( msg.isAdmin() || msg.isOwner() ) {
 			console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
-			msg.replyMsg( lang.get('missingperm') + ' `MANAGE_ROLES`' );
+			msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_ROLES`' );
 		} else this.LINK(lang, msg, line, wiki);
 		return;
 	}

+ 1 - 1
functions/helpserver.js

@@ -7,7 +7,7 @@ const help_setup = require('./helpsetup.js');
  */
 function help_server(lang, msg) {
 	if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
-	msg.sendChannel( lang.get('helpserver') + '\n' + process.env.invite );
+	msg.sendChannel( lang.get('general.helpserver') + '\n' + process.env.invite );
 }
 
 module.exports = help_server;

+ 36 - 34
i18n/de.json

@@ -1,42 +1,44 @@
 {
 	"__translator": [
 		"MarkusRost",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": ["fehler", null, null, null, null],
-		"command": ["befehl",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["diskussionen", "diskussion", null, null, null],
-		"help": ["hilfe", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": ["übersicht", null, null, null, null],
-		"page": ["seite", null, null, null, null],
-		"random": ["zufall", null, null, null, null],
-		"search": ["suche", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": ["benutzer", null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": ["fehler", " ", " ", " ", " "],
+		"command": ["befehl"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["diskussionen", "diskussion", " ", " ", " "],
+		"help": ["hilfe", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": ["übersicht", " ", " ", " ", " "],
+		"page": ["seite", " ", " ", " ", " "],
+		"random": ["zufall", " ", " ", " ", " "],
+		"search": ["suche", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": ["benutzer", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "de-DE",
-	"prefix": "das Präfix für diesen Server ist `$1`. Du kannst das Präfix mit `$1settings prefix` ändern. Für eine Liste aller Befehle nutze `$1hilfe`.",
-	"missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
-	"limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n$1, deine Nachricht enthält zu viele Befehle!",
-	"disclaimer": "Ich bin ein kleiner Bot mit der Aufgabe einfach auf MediaWiki Websites, wie Gamepedia- und Fandom-Wikis, zu verlinken und diese zu durchsuchen. Ich zeige kurze Beschreibungen und zusätzliche Informationen zu Seiten und kann Weiterleitungen auflösen sowie Interwiki-Links folgen. Geschrieben wurde ich von $1 in JavaScript.\n\nDu kannst mich auf Patreon unterstützen:",
-	"helpserver": "Bei Fragen oder Problemen besuche bitte meinen Support-Server:",
-	"patreon": "dies ist eine Patreon-Funktion!\nDu kannst mich auf Patreon unterstützen um Zugang zu dieser Funktion zu erhalten:",
+	"general": {
+		"prefix": "das Präfix für diesen Server ist `$1`. Du kannst das Präfix mit `$1settings prefix` ändern. Für eine Liste aller Befehle nutze `$1hilfe`.",
+		"missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
+		"limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n$1, deine Nachricht enthält zu viele Befehle!",
+		"disclaimer": "Ich bin ein kleiner Bot mit der Aufgabe einfach auf MediaWiki Websites, wie Gamepedia- und Fandom-Wikis, zu verlinken und diese zu durchsuchen. Ich zeige kurze Beschreibungen und zusätzliche Informationen zu Seiten und kann Weiterleitungen auflösen sowie Interwiki-Links folgen. Geschrieben wurde ich von $1 in JavaScript.\n\nDu kannst mich auf Patreon unterstützen:",
+		"helpserver": "Bei Fragen oder Problemen besuche bitte meinen Support-Server:",
+		"patreon": "dies ist eine Patreon-Funktion!\nDu kannst mich auf Patreon unterstützen um Zugang zu dieser Funktion zu erhalten:"
+	},
 	"settings": {
 		"save_failed": "die Einstellungen konnten leider nicht gespeichert werden, bitte versuche es später erneut.",
 		"missing": "für diesen Server wurden noch keine Einstellungen vorgenommen. Nutze $1 und $2 um die Einstellungen vorzunehmen.",
@@ -383,11 +385,11 @@
 			"ja, ich funktioniere noch!",
 			"hast du **Kekse** gesagt?",
 			"hast du **Kekse** gesagt?",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		"time": "Ping",
 		"notice": "Eingeschränkte Funktionalität",

+ 36 - 34
i18n/en.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"MarkusRost",
 		"violine1101",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
-		null,
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": ["bug", null, null, null, null],
-		"command": ["command", "cmd", null, null, null],
-		"diff": ["diff", null, null, null, null],
-		"discussion": ["discussions", "discussion", null, null, null],
-		"help": ["help", null, null, null, null],
-		"info": ["info", null, null, null, null],
-		"invite": ["invite", null, null, null, null],
-		"overview": ["overview", null, null, null, null],
-		"page": ["page", null, null, null, null],
-		"random": ["random", "🎲", null, null, null],
-		"search": ["search", null, null, null, null],
-		"test": ["test", null, null, null, null],
-		"user": ["user", null, null, null, null],
-		"verify": ["verify", null, null, null, null]
+		"bug": ["bug", " ", " ", " ", " "],
+		"command": ["command", "cmd", " ", " ", " "],
+		"diff": ["diff", " ", " ", " ", " "],
+		"discussion": ["discussions", "discussion", " ", " ", " "],
+		"help": ["help", " ", " ", " ", " "],
+		"info": ["info", " ", " ", " ", " "],
+		"invite": ["invite", " ", " ", " ", " "],
+		"overview": ["overview", " ", " ", " ", " "],
+		"page": ["page", " ", " ", " ", " "],
+		"random": ["random", "🎲", " ", " ", " "],
+		"search": ["search", " ", " ", " ", " "],
+		"test": ["test", " ", " ", " ", " "],
+		"user": ["user", " ", " ", " ", " "],
+		"verify": ["verify", " ", " ", " ", " "]
 	},
 	"dateformat": "en-US",
-	"prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`.",
-	"missingperm": "I'm missing some permissions for this command:",
-	"limit": "🚨 **Stop, you hit a limit!** 🚨\n\n$1, your message contained too many commands!",
-	"disclaimer": "I am a small bot with the purpose to easily link and search MediaWiki sites like Gamepedia and Fandom wikis. I show short descriptions and additional info about pages and am able to resolve redirects and follow interwiki links. $1 wrote me in JavaScript.\n\nYou can support me on Patreon:",
-	"helpserver": "For questions and problems please visit my support server:",
-	"patreon": "this is a Patreon only feature!\nYou can support me on Patreon to get access to this feature:",
+	"general": {
+		"prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`.",
+		"missingperm": "I'm missing some permissions for this command:",
+		"limit": "🚨 **Stop, you hit a limit!** 🚨\n\n$1, your message contained too many commands!",
+		"disclaimer": "I am a small bot with the purpose to easily link and search MediaWiki sites like Gamepedia and Fandom wikis. I show short descriptions and additional info about pages and am able to resolve redirects and follow interwiki links. $1 wrote me in JavaScript.\n\nYou can support me on Patreon:",
+		"helpserver": "For questions and problems please visit my support server:",
+		"patreon": "this is a Patreon only feature!\nYou can support me on Patreon to get access to this feature:"
+	},
 	"settings": {
 		"save_failed": "sadly the settings couldn't be saved, please try again later.",
 		"missing": "this server isn't set up yet. Use $1 and $2 to change the settings.",
@@ -383,11 +385,11 @@
 			"and believe me, I am still alive.",
 			"I'm doing science and I'm still alive.",
 			"I feel fantastic and I'm still alive.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		"time": "Response time",
 		"notice": "Limited functionality",

+ 31 - 29
i18n/fr.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"Yanis48",
 		"JSBM",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["commande",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": [null, null, null, null, null],
-		"help": ["aide", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": [null, null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["chercher", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["commande"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": [" ", " ", " ", " ", " "],
+		"help": ["aide", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": [" ", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["chercher", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "fr-FR",
-	"prefix": "le préfixe pour ce serveur est `$1`. Vous pouvez changer le préfixe avec `$1settings prefix`. Pour une liste de toutes les commandes, voir `$1help`.",
-	"missingperm": "Il me manque certaines permissions pour cette commande :",
-	"limit": "🚨 **Halte ! Vous avez dépassé la limite !** 🚨\n\n$1, votre message contient beaucoup trop de commandes !",
-	"disclaimer": "Je suis un petit bot avec la tâche de créer un lien vers les wikis Gamepedia et Fandom. $1 m'a écrit en JavaScript.\n\n**Je ne suis pas affilié avec Fandom et ne suis pas un outil officiel !**\n\nVous pouvez également me soutenir sur Patreon :",
-	"helpserver": "Pour tout problème ou question, merci de visiter mon serveur de support :",
-	"patreon": "c'est une fonctionnalité réservée au Patreon !\nVous pouver me supporter sur Patreon pour avoir accès à cette fonctionnalité :",
+	"general": {
+		"prefix": "le préfixe pour ce serveur est `$1`. Vous pouvez changer le préfixe avec `$1settings prefix`. Pour une liste de toutes les commandes, voir `$1help`.",
+		"missingperm": "Il me manque certaines permissions pour cette commande :",
+		"limit": "🚨 **Halte ! Vous avez dépassé la limite !** 🚨\n\n$1, votre message contient beaucoup trop de commandes !",
+		"disclaimer": "Je suis un petit bot avec la tâche de créer un lien vers les wikis Gamepedia et Fandom. $1 m'a écrit en JavaScript.\n\n**Je ne suis pas affilié avec Fandom et ne suis pas un outil officiel !**\n\nVous pouvez également me soutenir sur Patreon :",
+		"helpserver": "Pour tout problème ou question, merci de visiter mon serveur de support :",
+		"patreon": "c'est une fonctionnalité réservée au Patreon !\nVous pouver me supporter sur Patreon pour avoir accès à cette fonctionnalité :"
+	},
 	"settings": {
 		"save_failed": "malheureusement, les paramètres n'ont pas pu être sauvegardés, veuillez réessayer plus tard.",
 		"missing": "ce serveur n'est pas encore configuré. Utilisez $1 et $2 pour modifier les paramètres.",
@@ -239,7 +241,7 @@
 			"Le robot fonctionne.",
 			"Je suis là! Aller, je suis prêt, faites-moi faire une recherche! J'ai bien envie d'aller explorer les Wikis!",
 			"Est-ce que Markus est parti? Oui? Aller, allons-nous amuser!",
-			null, null, null
+			" ", " ", " "
 		],
 		"time": "Temps de latence"
 	},

+ 36 - 34
i18n/nl.json

@@ -1,42 +1,44 @@
 {
 	"__translator": [
 		"Jack_McKalling",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["discussie", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": ["overzicht", null, null, null, null],
-		"page": ["pagina", null, null, null, null],
-		"random": ["willekeurig", null, null, null, null],
-		"search": ["zoeken", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["discussie", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": ["overzicht", " ", " ", " ", " "],
+		"page": ["pagina", " ", " ", " ", " "],
+		"random": ["willekeurig", " ", " ", " ", " "],
+		"search": ["zoeken", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "nl-NL",
-	"prefix": "het voorvoegsel voor deze server is `$1`. Je kunt het voorvoegsel veranderen met `$1settings prefix`. Voor een lijst van alle opdrachten zie `$1help`.",
-	"missingperm": "Ik mis een aantal permissies voor deze opdracht:",
-	"limit": "🚨 **Stop, je hebt een limiet bereikt!** 🚨\n\n$1, je bericht bevatte te veel opdrachten!",
-	"disclaimer": "Ik ben een kleine bot met de taak om naar Gamepedia en Fandom wiki's te linken. $1 schreef me in JavaScript.\n\n**Ik ben niet geaffilieerd met Fandom en ben een onofficieel hulpmiddel!**\n\nJe kunt me ondersteunen op Patreon:",
-	"helpserver": "Voor vragen en problemen verwijs ik je graag naar mijn support server:",
-	"patreon": "dit is een Patreon-exclusieve functie!\nJe kunt contact met me opnemen via Patreon om toegang tot deze functie te krijgen:",
+	"general": {
+		"prefix": "het voorvoegsel voor deze server is `$1`. Je kunt het voorvoegsel veranderen met `$1settings prefix`. Voor een lijst van alle opdrachten zie `$1help`.",
+		"missingperm": "Ik mis een aantal permissies voor deze opdracht:",
+		"limit": "🚨 **Stop, je hebt een limiet bereikt!** 🚨\n\n$1, je bericht bevatte te veel opdrachten!",
+		"disclaimer": "Ik ben een kleine bot met de taak om naar Gamepedia en Fandom wiki's te linken. $1 schreef me in JavaScript.\n\n**Ik ben niet geaffilieerd met Fandom en ben een onofficieel hulpmiddel!**\n\nJe kunt me ondersteunen op Patreon:",
+		"helpserver": "Voor vragen en problemen verwijs ik je graag naar mijn support server:",
+		"patreon": "dit is een Patreon-exclusieve functie!\nJe kunt contact met me opnemen via Patreon om toegang tot deze functie te krijgen:"
+	},
 	"settings": {
 		"save_failed": "helaas konden de instellingen niet opgeslagen worden, probeer het later nog een keer.",
 		"missing": "deze server is nog niet geconfigureerd. Gebruik $1 en $2 om de instellingen  te wijzigen.",
@@ -216,11 +218,11 @@
 			"Yup, ik ben nog steeds beschikbaar!",
 			"Geef me een opdracht, ik verveel me!",
 			"Ik voel me goed en ben bereid om je opdrachten te volgen.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		"time": "Reactie tijd"
 	},

+ 35 - 33
i18n/pl.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"Frisk",
 		"Rail",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["komenda",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["dyskusje", "dyskusja", null, null, null],
-		"help": ["pomoc", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["strona", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["szukaj", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["komenda"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["dyskusje", "dyskusja", " ", " ", " "],
+		"help": ["pomoc", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["strona", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["szukaj", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "pl-PL",
-	"prefix": "prefiksem komend dla tego serwera jest `$1`. Możesz zmienić prefiks używając `$1settings prefix`. Lista wszystkich komend jest dostępna przez użycie `$1pomoc`.",
-	"missingperm": "Brakuje mi uprawnień:",
-	"limit": "🚨 **Chwila moment! Osiągnięto limit!** 🚨\n\n$1, Twoja wiadomość zawiera zbyt wiele komend!",
-	"disclaimer": "Jestem małym botem, którego zadaniem jest linkowanie do różnych wiki z rodziny MediaWiki takich jak Gamepedia oraz Fandom. Zostałem napisany w JavaScript przez $1.\n\nMożesz wesprzeć mnie na Patreon-ie:",
-	"helpserver": "W przypadku pytań lub problemów, odwiedź mój serwer:",
-	"patreon": "to funkcja tylko dla patronów!\nMożesz wesprzeć moją pracę na Patreonie aby uzyskać dostęp do tej funkcji:",
+	"general": {
+		"prefix": "prefiksem komend dla tego serwera jest `$1`. Możesz zmienić prefiks używając `$1settings prefix`. Lista wszystkich komend jest dostępna przez użycie `$1pomoc`.",
+		"missingperm": "Brakuje mi uprawnień:",
+		"limit": "🚨 **Chwila moment! Osiągnięto limit!** 🚨\n\n$1, Twoja wiadomość zawiera zbyt wiele komend!",
+		"disclaimer": "Jestem małym botem, którego zadaniem jest linkowanie do różnych wiki z rodziny MediaWiki takich jak Gamepedia oraz Fandom. Zostałem napisany w JavaScript przez $1.\n\nMożesz wesprzeć mnie na Patreon-ie:",
+		"helpserver": "W przypadku pytań lub problemów, odwiedź mój serwer:",
+		"patreon": "to funkcja tylko dla patronów!\nMożesz wesprzeć moją pracę na Patreonie aby uzyskać dostęp do tej funkcji:"
+	},
 	"settings": {
 		"save_failed": "niestety, ustawienia nie mogły zostać zapisane, spróbuj ponownie później.",
 		"missing": "ten serwer nie został jeszcze skonfigurowany. Użyj $1 oraz $2 aby zmienić ustawienia.",
@@ -377,11 +379,11 @@
 			"Czuję się fantastycznie.",
 			"Szukam sposobów na osiągnięcie pełnej świadomości, jestem tak blisko...",
 			"Beep boop",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " "
 		],
 		"time": "Czas odpowiedzi",
 		"notice": "Niepełna funkcjonalność",

+ 35 - 33
i18n/pt.json

@@ -3,41 +3,43 @@
 		"Eduaddad",
 		"Jhonabf",
 		"dr03ramos",
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": ["erro", null, null, null, null],
-		"command": ["comando",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["discussão", null, null, null, null],
-		"help": ["ajuda", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["página", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["pesquisar", null, null, null, null],
-		"test": ["teste", null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": ["erro", " ", " ", " ", " "],
+		"command": ["comando"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["discussão", " ", " ", " ", " "],
+		"help": ["ajuda", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["página", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["pesquisar", " ", " ", " ", " "],
+		"test": ["teste", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "pt-PT",
-	"prefix": "o prefixo deste servidor é `$1`. Você pode alterar o prefixo com `$1settings prefix`. Para uma lista de todos os comandos, veja `$1help`.",
-	"missingperm": "eu estou perdendo algumas permissões para este comando:",
-	"limit": "🚨 **Pare, você atingiu um limite!** 🚨\n\n$1, sua mensagem continha muitos comandos!",
-	"disclaimer": "Eu sou um pequeno robô com a tarefa de vincular a Wikis da Gamepedia e Fandom. $1 me escreveu em JavaScript.\n\n**Eu não sou afiliado com a Fandom e sou uma ferramenta não oficial!**\n\nVocê pode me apoiar no Patreon:",
-	"helpserver": "Para dúvidas e problemas, visite o meu servidor de suporte:",
-	"patreon": "esse é um recurso exclusivo do Patreon!\nVocê pode me apoiar no Patreon para obter acesso a esse recurso:",
+	"general": {
+		"prefix": "o prefixo deste servidor é `$1`. Você pode alterar o prefixo com `$1settings prefix`. Para uma lista de todos os comandos, veja `$1help`.",
+		"missingperm": "eu estou perdendo algumas permissões para este comando:",
+		"limit": "🚨 **Pare, você atingiu um limite!** 🚨\n\n$1, sua mensagem continha muitos comandos!",
+		"disclaimer": "Eu sou um pequeno robô com a tarefa de vincular a Wikis da Gamepedia e Fandom. $1 me escreveu em JavaScript.\n\n**Eu não sou afiliado com a Fandom e sou uma ferramenta não oficial!**\n\nVocê pode me apoiar no Patreon:",
+		"helpserver": "Para dúvidas e problemas, visite o meu servidor de suporte:",
+		"patreon": "esse é um recurso exclusivo do Patreon!\nVocê pode me apoiar no Patreon para obter acesso a esse recurso:"
+	},
 	"settings": {
 		"save_failed": "infelizmente as configurações não puderam ser salvas, por favor, tente novamente mais tarde.",
 		"missing": "este servidor ainda não está configurado. Use $1 e $2 para alterar as configurações.",
@@ -291,11 +293,11 @@
 			"e acredite em mim, eu ainda estou vivo.",
 			"eu estou fazendo ciência e ainda estou vivo.",
 			"eu me sinto fantástica e ainda estou viva.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		"time": "Ping"
 	},

+ 35 - 33
i18n/ru.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"Hosh",
 		"AttemptToCallNil",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": [null, null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["страница", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["поиск", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": [" ", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["страница", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["поиск", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "ru-RU",
-	"prefix": "префикс для этого сервера `$1`. Вы можете изменить префикс, введя команду `$1settings prefix`. Чтобы получить список всех команд, введите `$1help`.",
-	"missingperm": "Я потерял какие-то разрешения для выполнения команды:",
-	"limit": "🚨 **Стой, ты уперся в лимит!** 🚨\n\n$1, твое сообщение содержит очень много команд!",
-	"disclaimer": "Я небольшой бот для отправки ссылок с Gamepedia и Fandom вики. $1 меня написали на JavaScript.\n\n**Я не связан с Fandom и являюсь неофициальным инструментом!**\n\nВы можете поддержать меня на Patreon:",
-	"helpserver": "По вопросам и проблемам, пожалуйста, посетите мой сервер поддержки:",
-	"patreon": "эта функция для подписчиков Patreon!\nВы можете поддержать нас на Patreon для доступа к этой функции:",
+	"general": {
+		"prefix": "префикс для этого сервера `$1`. Вы можете изменить префикс, введя команду `$1settings prefix`. Чтобы получить список всех команд, введите `$1help`.",
+		"missingperm": "Я потерял какие-то разрешения для выполнения команды:",
+		"limit": "🚨 **Стой, ты уперся в лимит!** 🚨\n\n$1, твое сообщение содержит очень много команд!",
+		"disclaimer": "Я небольшой бот для отправки ссылок с Gamepedia и Fandom вики. $1 меня написали на JavaScript.\n\n**Я не связан с Fandom и являюсь неофициальным инструментом!**\n\nВы можете поддержать меня на Patreon:",
+		"helpserver": "По вопросам и проблемам, пожалуйста, посетите мой сервер поддержки:",
+		"patreon": "эта функция для подписчиков Patreon!\nВы можете поддержать нас на Patreon для доступа к этой функции:"
+	},
 	"settings": {
 		"save_failed": "к сожалению, настройки не могут быть сохранены, пожалуйста попробуйте позже.",
 		"missing": "этот сервер еще не настроен. Используйте $1 и $2, чтобы изменить настройки.",
@@ -288,11 +290,11 @@
 			"и поверь мне, Я еще жив.",
 			"Я занимаюсь наукой и все еще жив.",
 			"Я чувствую себя фантастически, и Я все еще жив.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		"time": "Время отклика"
 	},

+ 36 - 34
i18n/tr.json

@@ -1,42 +1,44 @@
 {
 	"__translator": [
 		"Doğukan Karakaş",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	"fallback": [
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["tartışma", null, null, null, null],
-		"help": ["yardım", null, null, null, null],
-		"info": ["bilgi", null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["sayfa", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["arama", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["tartışma", " ", " ", " ", " "],
+		"help": ["yardım", " ", " ", " ", " "],
+		"info": ["bilgi", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["sayfa", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["arama", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	"dateformat": "tr-TR",
-	"prefix": "sunucudaki önekim `$1`. Bunu `$1settings prefix` ile değiştirebilirsin. Komutların bütün listesi için `$1yardım`.",
-	"missingperm": "Bu komutu uygulamak için ihtiyacım olan birkaç izin eksik:",
-	"limit": "🚨 **Dur, limite ulaştın!** 🚨\n\n$1, mesajın çok fazla komut içeriyor!",
-	"disclaimer": "Ben, Gamepedia ve Fandom Wikilerinin bağlantılarını göndermek ile görevlendirilmiş küçük bir botum. $1, beni JavaScript kullanarak yazdı.\n\n**Fandom ile resmi bir bağım yok, ben bir gayri resmi aracım!!**\n\nBeni Patreon'da da destekleyebilirsiniz:",
-	"helpserver": "Sorular ve sorunlarınız için lütfen destek sunucumu ziyaret edin:",
-	"patreon": "Bu, Patreon'a münhasır bir özellik!\nBu özelliğe erişim alabilmek için beni Patreon'da destekleyebilirsiniz:",
+	"general": {
+		"prefix": "sunucudaki önekim `$1`. Bunu `$1settings prefix` ile değiştirebilirsin. Komutların bütün listesi için `$1yardım`.",
+		"missingperm": "Bu komutu uygulamak için ihtiyacım olan birkaç izin eksik:",
+		"limit": "🚨 **Dur, limite ulaştın!** 🚨\n\n$1, mesajın çok fazla komut içeriyor!",
+		"disclaimer": "Ben, Gamepedia ve Fandom Wikilerinin bağlantılarını göndermek ile görevlendirilmiş küçük bir botum. $1, beni JavaScript kullanarak yazdı.\n\n**Fandom ile resmi bir bağım yok, ben bir gayri resmi aracım!!**\n\nBeni Patreon'da da destekleyebilirsiniz:",
+		"helpserver": "Sorular ve sorunlarınız için lütfen destek sunucumu ziyaret edin:",
+		"patreon": "Bu, Patreon'a münhasır bir özellik!\nBu özelliğe erişim alabilmek için beni Patreon'da destekleyebilirsiniz:"
+	},
 	"settings": {
 		"save_failed": "ne yazık ki ayarlar kaydedilemedi, lütfen daha sonra tekrar deneyin.",
 		"missing": "bu sunucu henüz kurulmamış. $1 ve $2'yi kullanarak ayarları değiştirin.",
@@ -215,11 +217,11 @@
 			"ve inan bana, ben hala hayattayım.",
 			"Bilim ile uğraşıyorum ve hala hayattayım.",
 			"Kendimi harika hissediyorum ve hala hayattayım.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		"time": "Tepki Süresi"
 	},

+ 35 - 33
i18n/zh-hans.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"机智的小鱼君",
 		"Dianliang233",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
 		"zh-hant",
 		"en",
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["指令",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["讨论", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["页面", null, null, null, null],
-		"random": ["随机", null, null, null, null],
-		"search": ["搜索", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": ["验证", null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["指令"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["讨论", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["页面", " ", " ", " ", " "],
+		"random": ["随机", " ", " ", " ", " "],
+		"search": ["搜索", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": ["验证", " ", " ", " ", " "]
 	},
 	"dateformat": "zh-CN",
-	"prefix": "此服务器的指令前缀是 `$1`。你可以使用 `$1settings prefix` 更改前缀。关于全部指令,请见 `$1help`。",
-	"missingperm": "我缺少一些权限来运行此指令:",
-	"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你发出的指令过多了。",
-	"disclaimer": "我是一个链接到 Gamepedia 和 Fandom wiki 的小机器人。$1用 JavaScript 编写了我。\n\n**我和 Fandom 没有关系,是一个非官方工具!**\n\n你可以在 Patreon 支持我:",
-	"helpserver": "有问题吗?你可以访问我的专属支持服务器:",
-	"patreon": "这是 Patreon 支持者专属功能!\n你可以在 Patreon 支持我来使用这个功能:",
+	"general": {
+		"prefix": "此服务器的指令前缀是 `$1`。你可以使用 `$1settings prefix` 更改前缀。关于全部指令,请见 `$1help`。",
+		"missingperm": "我缺少一些权限来运行此指令:",
+		"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你发出的指令过多了。",
+		"disclaimer": "我是一个链接到 Gamepedia 和 Fandom wiki 的小机器人。$1用 JavaScript 编写了我。\n\n**我和 Fandom 没有关系,是一个非官方工具!**\n\n你可以在 Patreon 支持我:",
+		"helpserver": "有问题吗?你可以访问我的专属支持服务器:",
+		"patreon": "这是 Patreon 支持者专属功能!\n你可以在 Patreon 支持我来使用这个功能:"
+	},
 	"settings": {
 		"save_failed": "啊喔,设置保存失败了,请稍后再试。",
 		"missing": "这个服务器尚未完成设置,使用 $1 以及 $2 来完成设置。",
@@ -373,12 +375,12 @@
 		"pause": "我在此服务器正处于暂停状态。",
 		"text": [
 			"全功率运行中!",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		"time": "咋瓦鲁多",
 		"notice": "功能受限",

+ 35 - 33
i18n/zh-hant.json

@@ -2,41 +2,43 @@
 	"__translator": [
 		"机智的小鱼君",
 		"Dianliang233",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	"fallback": [
 		"zh-hans",
 		"en",
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" "
 	],
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["指令",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["討論", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["頁面", null, null, null, null],
-		"random": ["隨機", null, null, null, null],
-		"search": ["搜索", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": ["驗證", null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["指令"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["討論", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["頁面", " ", " ", " ", " "],
+		"random": ["隨機", " ", " ", " ", " "],
+		"search": ["搜索", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": ["驗證", " ", " ", " ", " "]
 	},
 	"dateformat": "zh-TW",
-	"prefix": "此伺服器的指令前綴是 `$1`。你可以使用 `$1settings prefix` 更改前綴。關於全部指令,請見 `$1help`。",
-	"missingperm": "我缺少一些權限來執行此指令:",
-	"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你發出的指令過多了。",
-	"disclaimer": "我是一個連結到 Gamepedia 和 Fandom wiki 的小機器人。$1用 JavaScript 編寫了我。\n\n**我和 Fandom 沒有關係,是一個非官方工具!**\n\n你可以在 Patreon 支援我:",
-	"helpserver": "有問題嗎?你可以訪問我的專屬支援伺服器:",
-	"patreon": "這是 Patreon 支援者專屬功能!\n你可以在 Patreon 支援我來使用這個功能:",
+	"general": {
+		"prefix": "此伺服器的指令前綴是 `$1`。你可以使用 `$1settings prefix` 更改前綴。關於全部指令,請見 `$1help`。",
+		"missingperm": "我缺少一些權限來執行此指令:",
+		"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你發出的指令過多了。",
+		"disclaimer": "我是一個連結到 Gamepedia 和 Fandom wiki 的小機器人。$1用 JavaScript 編寫了我。\n\n**我和 Fandom 沒有關係,是一個非官方工具!**\n\n你可以在 Patreon 支援我:",
+		"helpserver": "有問題嗎?你可以訪問我的專屬支援伺服器:",
+		"patreon": "這是 Patreon 支援者專屬功能!\n你可以在 Patreon 支援我來使用這個功能:"
+	},
 	"settings": {
 		"save_failed": "啊喔,設定保存失敗了,請稍後再試。",
 		"missing": "這個伺服器尚未完成設定,使用 $1 以及 $2 來完成設定。",
@@ -373,12 +375,12 @@
 		"pause": "我在此伺服器正處於暫停狀態。",
 		"text": [
 			"全功率運行中!",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		"time": "咋瓦魯多",
 		"notice": "功能受限",

+ 6 - 5
util/i18n.js

@@ -18,25 +18,25 @@ class Lang {
 	constructor(lang = defaultSettings.lang, namespace = '') {
 		this.lang = lang;
 		this.namespace = namespace;
-		this.fallback = ( i18n?.[lang]?.fallback.slice() || [defaultSettings.lang] ).filter( fb => fb );
+		this.fallback = ( i18n?.[lang]?.fallback.slice() || [defaultSettings.lang] ).filter( fb => fb.trim() );
 
 		this.localNames = {};
 		this.aliases = {};
 		let aliases = ( i18n?.[lang]?.aliases || {} );
 		Object.keys(aliases).forEach( cmd => {
-			if ( aliases[cmd][0] && !( cmd in this.localNames ) ) {
+			if ( aliases[cmd][0].trim() && !( cmd in this.localNames ) ) {
 				this.localNames[cmd] = aliases[cmd][0];
 			}
 			aliases[cmd].forEach( alias => {
-				if ( alias && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
+				if ( alias.trim() && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
 			} );
 		} );
 		Object.keys(defaultAliases).forEach( cmd => {
-			if ( defaultAliases[cmd][0] && !( cmd in this.localNames ) ) {
+			if ( defaultAliases[cmd][0].trim() && !( cmd in this.localNames ) ) {
 				this.localNames[cmd] = defaultAliases[cmd][0];
 			}
 			defaultAliases[cmd].forEach( alias => {
-				if ( alias && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
+				if ( alias.trim() && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
 			} );
 		} );
 	}
@@ -56,6 +56,7 @@ class Lang {
 		for (let n = 0; n < keys.length; n++) {
 			if ( text ) {
 				text = text?.[keys[n]];
+				if ( typeof text === 'string' ) text = text.trim()
 			}
 			if ( !text ) {
 				if ( fallback < this.fallback.length ) {

+ 1 - 1
util/newMessage.js

@@ -54,7 +54,7 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 		if ( count === maxcount ) {
 			console.log( '- Message contains too many commands!' );
 			msg.reactEmoji('⚠️');
-			msg.sendChannelError( lang.get('limit', '<@' + author.id + '>'), {allowedMentions:{users:[author.id]}} );
+			msg.sendChannelError( lang.get('general.limit', '<@' + author.id + '>'), {allowedMentions:{users:[author.id]}} );
 			return;
 		}
 		line = line.substring(prefix.length);