diff --git a/core/src/main/java/com/sekwah/advancedportals/core/AdvancedPortalsCore.java b/core/src/main/java/com/sekwah/advancedportals/core/AdvancedPortalsCore.java index 209f8c95..e6ebea9e 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/AdvancedPortalsCore.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/AdvancedPortalsCore.java @@ -88,6 +88,7 @@ public class AdvancedPortalsCore { this.portalCommand.registerSubCommand("endgatewayblock", new EndGatewayBlockSubCommand()); this.portalCommand.registerSubCommand("create", new CreatePortalSubCommand()); this.portalCommand.registerSubCommand("remove", new RemoveSubCommand()); + this.portalCommand.registerSubCommand("list", new ListSubCommand()); commandRegister.registerCommand("portal", this.portalCommand); } diff --git a/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java b/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java index c1a128c6..497875e5 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/CoreListeners.java @@ -23,14 +23,6 @@ public class CoreListeners { public void playerJoin(PlayerContainer player) { this.portalTempDataServices.activateCooldown(player); - if(player.isOp()) { - if(!Lang.translate("translatedata.lastchange").equals(AdvancedPortalsCore.lastTranslationUpdate)) { - player.sendMessage(Lang.translate("messageprefix.negative") - + Lang.translateInsertVariables("translatedata.translationsoutdated", configRepository.getTranslation())); - player.sendMessage(Lang.translate("messageprefix.negative") - + Lang.translate("translatedata.replacecommand")); - } - } } public void teleportEvent(PlayerContainer player) { diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java index 2d031291..7a5c1c89 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/LangUpdateSubCommand.java @@ -4,14 +4,24 @@ import com.google.inject.Inject; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.util.Lang; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; public class LangUpdateSubCommand implements SubCommand { @Inject private AdvancedPortalsCore portalsCore; + @Inject + private ConfigRepository configRepository; public LangUpdateSubCommand() { } @@ -19,11 +29,44 @@ public class LangUpdateSubCommand implements SubCommand { @Override public void onCommand(CommandSenderContainer sender, String[] args) { if(args.length > 1 && args[1].equalsIgnoreCase("overwrite")) { - this.portalsCore.getDataStorage().copyDefaultFile("lang/en_GB.lang", true); + this.portalsCore.getDataStorage().copyDefaultFile("lang/" + configRepository.getTranslation() + ".lang", true); sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("translatedata.replaced")); + Lang.loadLanguage(configRepository.getTranslation()); } else { - this.portalsCore.getDataStorage().copyDefaultFile("lang/en_GB.lang", "lang/en_GB-new.lang", true); - sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("translatedata.replaced") + Lang.translate("translatedata.overwrite")); + // TODO check what keys are missing and append them to the end of the file, check the translation first then GB + Lang lang = Lang.instance; + Map internalTranslation = lang.getInternalLanguageMap(Lang.DEFAULT_LANG); + internalTranslation.putAll(lang.getInternalLanguageMap(configRepository.getTranslation())); + + Map currentTranslation = lang.getLanguageMap(configRepository.getTranslation()); + // Remove everything to leave just the missing keys + for(Map.Entry entry : currentTranslation.entrySet()) { + internalTranslation.remove(entry.getKey()); + } + + List newTranslations = new ArrayList<>(); + for(Map.Entry entry : internalTranslation.entrySet()) { + newTranslations.add(entry.getKey() + "=" + entry.getValue()); + } + + String appendText = String.join("\n", newTranslations); + + InputStream translationFile = this.portalsCore.getDataStorage().loadResource("lang/" + configRepository.getTranslation() + ".lang"); + String result = new BufferedReader(new InputStreamReader(translationFile)) + .lines().collect(Collectors.joining("\n")); + InputStream withExtras = new ByteArrayInputStream(result.concat("\n").concat(appendText).getBytes()); + this.portalsCore.getDataStorage().writeResource(withExtras, "lang/" + configRepository.getTranslation() + ".lang"); + + Lang.loadLanguage(configRepository.getTranslation()); + + sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translateInsertVariables("translatedata.updated", newTranslations.size())); + + /*if(!configRepository.getTranslation().equals("en_GB")) { + // Copy this just to allow people to check the new translations. + this.portalsCore.getDataStorage().copyDefaultFile("lang/en_GB.lang", "lang/en_GB-new.lang", true); + } + this.portalsCore.getDataStorage().copyDefaultFile("lang/" + configRepository.getTranslation() + ".lang", "lang/" + configRepository.getTranslation() + "-new.lang", true); + sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("translatedata.replaced") + Lang.translate("translatedata.overwrite"));*/ } } diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ListSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ListSubCommand.java new file mode 100644 index 00000000..635480b3 --- /dev/null +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ListSubCommand.java @@ -0,0 +1,40 @@ +package com.sekwah.advancedportals.core.commands.subcommands.portal; + +import com.google.inject.Inject; +import com.sekwah.advancedportals.core.commands.SubCommand; +import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.services.PortalServices; +import com.sekwah.advancedportals.core.util.Lang; + +import java.util.List; + +public class ListSubCommand implements SubCommand { + + @Inject + PortalServices portalServices; + + @Override + public void onCommand(CommandSenderContainer sender, String[] args) { + sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("command.list")); + } + + @Override + public boolean hasPermission(CommandSenderContainer sender) { + return true; + } + + @Override + public List onTabComplete(CommandSenderContainer sender, String[] args) { + return null; + } + + @Override + public String getBasicHelpText() { + return Lang.translate("command.list.help"); + } + + @Override + public String getDetailedHelpText() { + return Lang.translate("command.list.help"); + } +} diff --git a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java index a9dcafe5..61a090fd 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/commands/subcommands/portal/ReloadSubCommand.java @@ -4,6 +4,7 @@ import com.google.inject.Inject; import com.sekwah.advancedportals.core.AdvancedPortalsCore; import com.sekwah.advancedportals.core.commands.SubCommand; import com.sekwah.advancedportals.core.connector.containers.CommandSenderContainer; +import com.sekwah.advancedportals.core.repository.ConfigRepository; import com.sekwah.advancedportals.core.services.DestinationServices; import com.sekwah.advancedportals.core.services.PortalServices; import com.sekwah.advancedportals.core.util.Lang; @@ -21,11 +22,15 @@ public class ReloadSubCommand implements SubCommand { @Inject DestinationServices destinationServices; + @Inject + ConfigRepository configRepository; + @Override public void onCommand(CommandSenderContainer sender, String[] args) { portalsCore.loadPortalConfig(); portalServices.loadPortals(); destinationServices.loadDestinations(); + Lang.loadLanguage(configRepository.getTranslation()); sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("command.reload.reloaded")); } diff --git a/core/src/main/java/com/sekwah/advancedportals/core/data/DataStorage.java b/core/src/main/java/com/sekwah/advancedportals/core/data/DataStorage.java index 356b3294..02f074b3 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/data/DataStorage.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/data/DataStorage.java @@ -105,15 +105,7 @@ public class DataStorage { return false; } - FileOutputStream outStream = new FileOutputStream(outFile); - - byte[] buf = new byte[1024]; - int len; - while ((len = inputStream.read(buf)) > 0) { - outStream.write(buf, 0, len); - } - inputStream.close(); - outStream.close(); + writeToFile(inputStream, outFile); } catch (NullPointerException e) { e.printStackTrace(); this.infoLogger.logWarning("Could not load " + sourceLoc + ". The file does" + @@ -157,4 +149,24 @@ public class DataStorage { } } } + + public void writeResource(InputStream inputStream, String location) { + File outFile = new File(dataFolder, location); + try { + writeToFile(inputStream, outFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void writeToFile(InputStream inputStream, File outFile) throws IOException { + FileOutputStream outStream = new FileOutputStream(outFile); + byte[] buf = new byte[1024]; + int len; + while ((len = inputStream.read(buf)) > 0) { + outStream.write(buf, 0, len); + } + inputStream.close(); + outStream.close(); + } } diff --git a/core/src/main/java/com/sekwah/advancedportals/core/util/Lang.java b/core/src/main/java/com/sekwah/advancedportals/core/util/Lang.java index 062d6ed1..2bd1e55e 100644 --- a/core/src/main/java/com/sekwah/advancedportals/core/util/Lang.java +++ b/core/src/main/java/com/sekwah/advancedportals/core/util/Lang.java @@ -6,6 +6,8 @@ import com.sekwah.advancedportals.core.data.DataStorage; import java.io.IOException; import java.io.InputStream; +import java.net.URL; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Scanner; @@ -34,20 +36,19 @@ public class Lang { @Inject private InfoLogger infoLogger; - //private final String DEFAULT_LANG = "en_GB"; - - /*public Lang() { - injectTranslations(this, DEFAULT_LANG); - }*/ + public static final String DEFAULT_LANG = "en_GB"; public static void loadLanguage(String fileName) { + if(!DEFAULT_LANG.equals(fileName)) { + instance.injectTranslations(instance, DEFAULT_LANG); + } instance.injectTranslations(instance, fileName); } public static String translate(String s) { if (instance.languageMap.containsKey(s)) { String translation = instance.languageMap.get(s); - translation = translation.replaceAll("\\\\u00A7", "\u00A7"); + translation = translation.replaceAll("&([0-9a-frk-o])", "\u00A7$1"); return translation; } else { return s; @@ -62,35 +63,50 @@ public class Lang { return translation; } - private void injectTranslations(Lang lang, String fileName) { - try { - //URL url = lang.getClass().getClassLoader().getResource("lang/" + fileName + ".lang"); - //System.out.println(url); - //Map newLangMap = lang.parseLang(url.openStream()); - InputStream stream = this.dataStorage.loadResource("lang/" + fileName + ".lang"); - if (stream != null) { - Map newLangMap = lang.parseLang(stream); - if (newLangMap != null) { - lang.languageMap.putAll(newLangMap); - } - } - } catch (NullPointerException e) { - e.printStackTrace(); - this.infoLogger.logWarning("Could not load " + fileName + ".lang The file does" + - "not exist or there has been an error reading the file. Canceled loading language file."); + public Map getLanguageMap(String fileName) { + InputStream stream = this.dataStorage.loadResource("lang/" + fileName + ".lang"); + if (stream != null) { + return Lang.parseLang(stream); } + return Collections.emptyMap(); } - private Map parseLang(InputStream inputStream) { + public Map getInternalLanguageMap(String fileName) { + InputStream stream = this.getClass().getClassLoader().getResourceAsStream("lang/" + fileName + ".lang"); + if (stream != null) { + return Lang.parseLang(stream); + } + return Collections.emptyMap(); + } + + private void injectTranslations(Lang lang, String fileName) { + try { + URL url = lang.getClass().getClassLoader().getResource("lang/" + fileName + ".lang"); + if (url != null) { + Map initialMap = Lang.parseLang(url.openStream()); + lang.languageMap.putAll(initialMap); + } else { + this.infoLogger.logWarning("Could not load " + fileName + ".lang from within Advanced Portals as it doesn't exist."); + } + } catch (IOException e) { + e.printStackTrace(); + this.infoLogger.logWarning("Could not load " + fileName + ".lang from within Advanced Portals."); + } + + Map newLangMap = this.getLanguageMap("lang/" + fileName + ".lang"); + lang.languageMap.putAll(newLangMap); + } + + public static Map parseLang(InputStream inputStream) { Scanner scanner = new Scanner(inputStream, "UTF-8"); String line = getNextLine(scanner); HashMap newMap = new HashMap<>(); - while (scanner != null && line != null) { + while (line != null) { //System.out.println(line); if (!line.startsWith("#") && line.indexOf('=') > -1) { int split = line.indexOf('='); String key = line.substring(0, split); - String value = line.substring(split + 1, line.length()); + String value = line.substring(split + 1); newMap.put(key, value); } line = getNextLine(scanner); @@ -103,7 +119,7 @@ public class Lang { return newMap; } - private String getNextLine(Scanner scanner) { + private static String getNextLine(Scanner scanner) { if (scanner.hasNextLine()) { return scanner.nextLine(); } diff --git a/lang/src/main/resources/lang/de_DE.lang b/lang/src/main/resources/lang/de_DE.lang index c2ab0188..cd3ec989 100644 --- a/lang/src/main/resources/lang/de_DE.lang +++ b/lang/src/main/resources/lang/de_DE.lang @@ -6,32 +6,52 @@ # The format of included strings is %(number of argument)$s (starts at 1 not 0) # So the order of variables being inserted into the string is not a set order. Just like minecraft # -# For colors use \u00A7 or § (can be entered by holding alt and pressing 2 then 1 on the numpad) -# http://minecraft.gamepedia.com/Formatting_codes +# For colors use & or § +# &0 Black +# &1 Dark Blue +# &2 Dark Green +# &3 Dark Aqua +# &4 Dark Red +# &5 Dark Purple +# &6 Gold +# &7 Gray +# &8 Dark Gray +# &9 Blue +# &a Green +# &b Aqua +# &c Red +# &d Light Purple +# &e Yellow +# &f White +# &k Obfuscated +# &l Bold +# &m Strikethrough +# &n Underline +# &o Italic +# &r Reset # # Also note that some debug messages may not be listed here for translation. # # German - Translation by enterih from Minecityelan.net # Falls ihr ein Fehler oder Unschönheit findet meldet es auf Github und markiert mich mit @Sprungente -# -translatedata.lastchange=1.0.0 -translatedata.translationsoutdated= Einige Übersetzungen von \u00A7e%1$s\u00A7c sind nicht aktuell. -translatedata.replacecommand= Verwende \u00A7e/portal transupdate\u00A7c um eine standard \u00A7ede_DE\u00A7c Datei zu erstellen. -translatedata.replaced= Eine neue \u00A7ede_DE\u00A7a wurde in den ordner kopiert. -messageprefix.positive=\u00A7a[\u00A7eAdvancedPortals\u00A7a] -messageprefix.negative=\u00A7c[\u00A77AdvancedPortals\u00A7c] +translatedata.translationsoutdated= Einige Übersetzungen von &e%1$s&c sind nicht aktuell. +translatedata.replacecommand= Verwende &e/portal transupdate&c um eine standard &ede_DE&c Datei zu erstellen. +translatedata.replaced= Eine neue &ede_DE&a wurde in den ordner kopiert. + +messageprefix.positive=&a[&eAdvancedPortals&a] +messageprefix.negative=&c[&7AdvancedPortals&c] logger.pluginenable=Advanced Portals wurde erfolgreich aktiviert! logger.plugindisable=Advanced portals wurde deaktiviert! logger.plugincrafterror=Diese Version von Craftbukkit/Spigot wird derzeit nicht unterstützt oder etwas ist schief gelaufen. Bitte melde die diese Nachricht mit der Versionnummer mit dem Log in unserem Github (auf Englisch) v:%1$s -command.noargs= Du musst einen Sub-Command angeben. Bitte benutze \u00A7e/%1$s help \u00A7c. Falls du eine Liste von möglichen Sub_Command willst. +command.noargs= Du musst einen Sub-Command angeben. Bitte benutze &e/%1$s help &c. Falls du eine Liste von möglichen Sub_Command willst. command.subcommand.invalid= Das ist ein ungültiger Sub-Command. -command.help.header=\u00A7e--------------- \u00A7a%1$s Hilfe - Seite %2$s of %3$s\u00A7e --------------- -command.help.subcommandheader=\u00A7e--------- \u00A7a%1$s Hilfe - %2$s\u00A7e --------- -command.help.invalidhelp= \u00A7e%1$s\u00A7c ist keine gültige Seitennummer oder Sub-Command. +command.help.header=&e--------------- &a%1$s Hilfe - Seite %2$s of %3$s&e --------------- +command.help.subcommandheader=&e--------- &a%1$s Hilfe - %2$s&e --------- +command.help.invalidhelp= &e%1$s&c ist keine gültige Seitennummer oder Sub-Command. command.reload.help=Ladet die Portal-Dateien neu command.reload.detailedhelp=Lade alle Portal-Dateien von den Dateien im Dateiordner neu. @@ -49,7 +69,7 @@ command.createdesti.console= Du kannst keine Destination erstellen. Überprüfe command.createdesti.detailedhelp= Das Format ist /desti create (name) [tag:tagvalue] .Liste die einzelnen Tags nach Create im Format tag:Wert. Wenn dein Wert Leerzeichen benötigt, dann verwende tag:"Wert mit Leerzeichen command.createdesti.complete= Die Destination wurde erfolgreich erstellt. -command.create.tags=\u00A7aTags: +command.create.tags=&aTags: command.playeronly= Dieser Befehl muss von einem Spieler ausgeführt werden. @@ -64,17 +84,17 @@ command.selector= Du hast den Portal-Selektor bekommen. command.selector.help= Gibt dir eine Portal-Selektor command.selector.detailedhelp= Gibt dir einen Portal-Selektor um Portalregionen auszuwählen. -command.portalblock= Du hast dir einen \u00A7ePortal Block\u00A7a gegeben! +command.portalblock= Du hast dir einen &ePortal Block&a gegeben! -command.endportalblock= Du hast dir einen \u00A78End Portal Block Placer\u00A7a gegeben! +command.endportalblock= Du hast dir einen &8End Portal Block Placer&a gegeben! -command.gatewayblock= Du hast dir einen \u00A78Gateway Block Placer\u00A7a gegeben! +command.gatewayblock= Du hast dir einen &8Gateway Block Placer&a gegeben! portal.error.invalidselection=Du beide pos1 und pos2 ausgewählt haben. Ansonsten kannst kein Portal erstellen. portal.error.takenname=Ein anderes Portal trägt bereits diesen Namen. portal.error.selection.differentworlds= Die ausgewählten Positionen müssen in der gleichen Welt sein. -desti.info.noargs=\u00A7cEs wurde kein tag angegeben +desti.info.noargs=&cEs wurde kein tag angegeben command.error.noname= Es wurde kein Name angegeben. @@ -82,10 +102,10 @@ desti.error.takenname= Der Namen, den du dem Portal geben möchtes, ist bereits error.notplayer=Nur Spieler können das machen. -portal.selector.poschange=\u00A7eDu hast pos%1$s X:%2$s Y:%3$s Z:%4$s ausgewählt +portal.selector.poschange=&eDu hast pos%1$s X:%2$s Y:%3$s Z:%4$s ausgewählt command.trans.help=Kopiere die Übersetzung, um die Standardeinstellungen wiederherzustellen command.version.help=Sagt dir die aktuelle Version von Advanced Portals -command.subcommand.nopermission= Du hast dafür keine Berechigung. Verwende \u00A7e/%1$s help \u00A7c wenn du eine Liste von möglichen Befehlen sehen möchtest. +command.subcommand.nopermission= Du hast dafür keine Berechigung. Verwende &e/%1$s help &c wenn du eine Liste von möglichen Befehlen sehen möchtest. diff --git a/lang/src/main/resources/lang/en_GB.lang b/lang/src/main/resources/lang/en_GB.lang index f80ef543..14a26747 100644 --- a/lang/src/main/resources/lang/en_GB.lang +++ b/lang/src/main/resources/lang/en_GB.lang @@ -6,30 +6,51 @@ # The format of included strings is %(number of argument)$s (starts at 1 not 0) # So the order of variables being inserted into the string is not a set order. Just like minecraft # -# For colors use \u00A7 or § (can be entered by holding alt and pressing 2 then 1 on the numpad) -# http://minecraft.gamepedia.com/Formatting_codes +# For colors use & or § +# &0 Black +# &1 Dark Blue +# &2 Dark Green +# &3 Dark Aqua +# &4 Dark Red +# &5 Dark Purple +# &6 Gold +# &7 Gray +# &8 Dark Gray +# &9 Blue +# &a Green +# &b Aqua +# &c Red +# &d Light Purple +# &e Yellow +# &f White +# &k Obfuscated +# &l Bold +# &m Strikethrough +# &n Underline +# &o Italic +# &r Reset # -# Also note that some debug messages may not be listed here for translation. -# -translatedata.lastchange=1.0.0 -translatedata.translationsoutdated= Some of the translations from the current translation file \u00A7e%1$s\u00A7c are out of date. -translatedata.replacecommand= Use \u00A7e/portal langupdate\u00A7c to copy out a new default \u00A7een_GB\u00A7c file. -translatedata.replaced= A new \u00A7een_GB\u00A7a file has been copied to the data folder. -translatedata.overwrite= Please use "\u00A7elangupdate overwrite\u00A7a" to replace the original file. +# Some debug messages may not be listed here for translation. -messageprefix.positive=\u00A7a[\u00A7eAdvancedPortals\u00A7a] -messageprefix.negative=\u00A7c[\u00A77AdvancedPortals\u00A7c] +translatedata.translationsoutdated= Some of the translations from the current translation file &e%1$s&c are out of date. +translatedata.replacecommand= Use &e/portal langupdate&c to copy out a new default &een_GB&c file. +translatedata.replaced= A new &een_GB&a file has been copied to the data folder. +translatedata.overwrite= Please use "&elangupdate overwrite&a" to replace the original file. +translatedata.updated= &e%1$s &atranslations have been added to the lang file. + +messageprefix.positive=&a[&eAdvancedPortals&a] +messageprefix.negative=&c[&7AdvancedPortals&c] logger.pluginenable=Advanced portals have been enabled! logger.plugindisable=Advanced portals are being disabled! logger.plugincrafterror=This version of craftbukkit is not yet supported or something went wrong, please post this message with the version number and the above stacktrace in an issue on GitHub v:%1$s -command.noargs= Sorry but you need to specify a sub command, please use \u00A7e/%1$s help \u00A7cif you would like a list of possible subcommands. +command.noargs= Sorry but you need to specify a sub command, please use &e/%1$s help &cif you would like a list of possible subcommands. command.subcommand.invalid= Sorry but that is not a valid sub command. -command.help.header=\u00A7e--------------- \u00A7a%1$s Help - Page %2$s of %3$s\u00A7e --------------- -command.help.subcommandheader=\u00A7e--------- \u00A7a%1$s Help - %2$s\u00A7e --------- -command.help.invalidhelp= Sorry but \u00A7e%1$s\u00A7c is not a valid page number or sub command. +command.help.header=&e--------------- &a%1$s Help - Page %2$s of %3$s&e --------------- +command.help.subcommandheader=&e--------- &a%1$s Help - %2$s&e --------- +command.help.invalidhelp= Sorry but &e%1$s&c is not a valid page number or sub command. command.reload.help=Reloads portal data command.reload.detailedhelp=Reloads all portal data from files in the data folder @@ -51,7 +72,7 @@ value needs spaces use the format tag:"value with spaces" command.createdesti.complete= The destination has been successfully created. -command.create.tags=\u00A7aTags: +command.create.tags=&aTags: command.playeronly= Sorry but that command can only be run by a player. @@ -62,21 +83,24 @@ command.remove.invalidselection=The portal selection you had is no longer valid command.remove.noselection=You don't have a portal selected command.remove.complete= The portal has been successfully removed. +command.list.help=Lists portals +command.list=&7 Portals&e: + command.selector= You have been given a portal selector. command.selector.help=Gives you a portal region selector command.selector.detailedhelp=Gives you a portal selector to select the regions for making portals. -command.portalblock= You have been given a \u00A7ePortal Block\u00A7a! +command.portalblock= You have been given a &ePortal Block&a! -command.endportalblock= You have been given a \u00A78End Portal Block Placer\u00A7a! +command.endportalblock= You have been given a &8End Portal Block Placer&a! -command.gatewayblock= You have been given a \u00A78Gateway Block Placer\u00A7a! +command.gatewayblock= You have been given a &8Gateway Block Placer&a! portal.error.invalidselection=You must have both pos1 and pos2 selected to create a portal. portal.error.takenname=The name given for the portal is already taken. portal.error.selection.differentworlds=Both the selected points need to be in the same world. -desti.info.noargs=\u00A7cNo tags were given +desti.info.noargs=&cNo tags were given command.error.noname= No name has been given. @@ -84,11 +108,10 @@ desti.error.takenname=The name given for the portal is already taken. error.notplayer=Only players can do that. -portal.selector.poschange=\u00A7eYou have selected pos%1$s X:%2$s Y:%3$s Z:%4$s +portal.selector.poschange=&eYou have selected pos%1$s X:%2$s Y:%3$s Z:%4$s command.trans.help=Copy translation new default translation file command.version.help=Returns the current version of the plugin -command.subcommand.nopermission= Sorry but you don't have permission for that, please use \u00A7e/%1$s help \u00A7cif you would like a list of possible sub commands. - +command.subcommand.nopermission= Sorry but you don't have permission for that, please use &e/%1$s help &cif you would like a list of possible sub commands. diff --git a/lang/src/main/resources/lang/fr_FR.lang b/lang/src/main/resources/lang/fr_FR.lang index 7adb176d..7557be1b 100644 --- a/lang/src/main/resources/lang/fr_FR.lang +++ b/lang/src/main/resources/lang/fr_FR.lang @@ -6,29 +6,49 @@ # The format of included strings is %(number of argument)$s (starts at 1 not 0) # So the order of variables being inserted into the string is not a set order. Just like minecraft # -# For colors use \u00A7 or § (can be entered by holding alt and pressing 2 then 1 on the numpad) -# http://minecraft.gamepedia.com/Formatting_codes +# For colors use & or § +# &0 Black +# &1 Dark Blue +# &2 Dark Green +# &3 Dark Aqua +# &4 Dark Red +# &5 Dark Purple +# &6 Gold +# &7 Gray +# &8 Dark Gray +# &9 Blue +# &a Green +# &b Aqua +# &c Red +# &d Light Purple +# &e Yellow +# &f White +# &k Obfuscated +# &l Bold +# &m Strikethrough +# &n Underline +# &o Italic +# &r Reset # -# Also note that some debug messages may not be listed here for translation. -# -translatedata.lastchange=1.0.0 -translatedata.translationsoutdated=Certaines des traductions du fichier de traduction actuel \u00A7e%1$s\u00A7c sont dépassées. -translatedata.replacecommand= Utilisez \u00A7e/portal transupdate\u00A7c pour copier un nouveau fichier par défaut de traduction \u00A7een_GB\u00A7c. -translatedata.replaced= Un nouveau fichier \u00A7een_GB\u00A7a a bien été enregistré. +# Some debug messages may not be listed here for translation. -messageprefix.positive=\u00A7c[\u00A77AdvancedPortals\u00A7c] -messageprefix.negative=\u00A7c[\u00A77AdvancedPortals\u00A7c] +translatedata.translationsoutdated=Certaines des traductions du fichier de traduction actuel &e%1$s&c sont dépassées. +translatedata.replacecommand= Utilisez &e/portal transupdate&c pour copier un nouveau fichier par défaut de traduction &een_GB&c. +translatedata.replaced= Un nouveau fichier &een_GB&a a bien été enregistré. + +messageprefix.positive=&c[&7AdvancedPortals&c] +messageprefix.negative=&c[&7AdvancedPortals&c] logger.pluginenable=Advanced portals have been enabled! logger.plugindisable=Advanced portals are being disabled! logger.plugincrafterror=This version of craftbukkit is not yet supported or something went wrong, please post this message with the version number and the above stacktrace in an issue on GitHub v:%1$s -command.noargs= Vous devez spécifier une sous commande, utilisez \u00A7e/%1$s help \u00A7cpour avoir la liste des commandes possibles. +command.noargs= Vous devez spécifier une sous commande, utilisez &e/%1$s help &cpour avoir la liste des commandes possibles. command.subcommand.invalid= Ce n'est pas une sous commande. -command.help.header=\u00A7e--------------- \u00A7a%1$s Aide - Page %2$s sur %3$s\u00A7e --------------- -command.help.subcommandheader=\u00A7e--------- \u00A7a%1$s Aide - %2$s\u00A7e --------- -command.help.invalidhelp= Désolé mais \u00A7e%1$s\u00A7c n'est pas une page ou sous commande valide. +command.help.header=&e--------------- &a%1$s Aide - Page %2$s sur %3$s&e --------------- +command.help.subcommandheader=&e--------- &a%1$s Aide - %2$s&e --------- +command.help.invalidhelp= Désolé mais &e%1$s&c n'est pas une page ou sous commande valide. command.reload.help=Recharge les fichiers command.reload.detailedhelp=Recharge toutes les données du portail à partir des fichiers du dossier de données. @@ -46,7 +66,7 @@ command.createdesti.console= You cannot create a destination using the console. command.createdesti.detailedhelp=Format is /desti create (name) [tag:tagvalue] List tags after create in the format tag:value, if your value needs spaces use the format tag:"value with spaces" command.createdesti.complete= The destination has been successfully created. -command.create.tags=\u00A7aTags: +command.create.tags=&aTags: command.playeronly= Seul un joueur peut effectuer cette commande. @@ -61,17 +81,17 @@ command.selector= Vous avez bien reçu un sélecteur. command.selector.help= Vous donne le sélecteur. command.selector.detailedhelp= Vous donne l'outil de sélection pour créer un portail. -command.portalblock= Vous avez bien reçu un \u00A7ePortal Block\u00A7a! +command.portalblock= Vous avez bien reçu un &ePortal Block&a! -command.endportalblock= Vous avez bien reçu un \u00A78End Portal Block Placer\u00A7a! +command.endportalblock= Vous avez bien reçu un &8End Portal Block Placer&a! -command.gatewayblock= Vous avez bien reçu un \u00A78Gateway Block Placer\u00A7a! +command.gatewayblock= Vous avez bien reçu un &8Gateway Block Placer&a! portal.error.invalidselection=Vous devez avoir sélectionné deux positions pour créer un portail. portal.error.takenname=Un portail du même nom existe déjà. portal.error.selection.differentworlds=Les deux sélections doivent être dans le même monde. -desti.info.noargs=\u00A7cAucune variable n'a été précisée. +desti.info.noargs=&cAucune variable n'a été précisée. command.error.noname= Aucun nom n'a été précisé. @@ -79,7 +99,7 @@ desti.error.takenname=Une destination du même nom existe déjà. error.notplayer=Seuls les joueurs peuvent faire cela. -portal.selector.poschange=\u00A7eVous avez sélectionné pos%1$s X:%2$s Y:%3$s Z:%4$s +portal.selector.poschange=&eVous avez sélectionné pos%1$s X:%2$s Y:%3$s Z:%4$s command.trans.help=Copy translation new default translation file diff --git a/lang/src/main/resources/lang/hu_HU.lang b/lang/src/main/resources/lang/hu_HU.lang index 3e6d0b79..f87df5d5 100644 --- a/lang/src/main/resources/lang/hu_HU.lang +++ b/lang/src/main/resources/lang/hu_HU.lang @@ -6,29 +6,49 @@ # A mellékelt karakterek formátuma %(argumentum száma)$s (kezdődik 1 nem 0) # Tehát a változók sorrendje a stringbe nem egy sorrend. Csakúgy, mint a minecraft # -# A színek használata \u00A7 vagy § (az alt megtartásával írható be, majd a számbillentyű lenyomásával 2 majd 1) -# http://minecraft.gamepedia.com/Formatting_codes +# For colors use & or § +# &0 Black +# &1 Dark Blue +# &2 Dark Green +# &3 Dark Aqua +# &4 Dark Red +# &5 Dark Purple +# &6 Gold +# &7 Gray +# &8 Dark Gray +# &9 Blue +# &a Green +# &b Aqua +# &c Red +# &d Light Purple +# &e Yellow +# &f White +# &k Obfuscated +# &l Bold +# &m Strikethrough +# &n Underline +# &o Italic +# &r Reset # # Vegye figyelembe, hogy néhány hibaelhárító üzenet itt nem szerepel a fordításban. # -translatedata.lastchange=1.0.0 -translatedata.translationsoutdated= Néhány fordítás a jelenlegi fordítási fájlból \u00A7e%1$s\u00A7c elavultak. -translatedata.replacecommand= Használat \u00A7e/portal transupdate\u00A7c hogy új alapértelmezést másoljon ki az \u00A7een_GB\u00A7c fájlból. -translatedata.replaced= Az új \u00A7een_GB\u00A7a fájlt másolva az adatmappába. +translatedata.translationsoutdated= Néhány fordítás a jelenlegi fordítási fájlból &e%1$s&c elavultak. +translatedata.replacecommand= Használat &e/portal transupdate&c hogy új alapértelmezést másoljon ki az &een_GB&c fájlból. +translatedata.replaced= Az új &een_GB&a fájlt másolva az adatmappába. -messageprefix.positive=\u00A7a[\u00A7eAdvancedPortals\u00A7a] -messageprefix.negative=\u00A7c[\u00A77AdvancedPortals\u00A7c] +messageprefix.positive=&a[&eAdvancedPortals&a] +messageprefix.negative=&c[&7AdvancedPortals&c] logger.pluginenable=Advanced portals sikeresen engedélyezve! logger.plugindisable=Advanced portals letiltva! logger.plugincrafterror=A craftbukkit ezen verziója még nem támogatott, vagy valami hibás, kérlek, írd be ezt az üzenetet a verziószámmal és a fenti stacktrace-szal a GitHub kiadásában v:%1$s -command.noargs= Sajnálom, de meg kell adni egy al parancsot, kérlek, használd \u00A7e/%1$s help \u00A7cha a lehetséges al parancsok listáját szeretnéd látni. +command.noargs= Sajnálom, de meg kell adni egy al parancsot, kérlek, használd &e/%1$s help &cha a lehetséges al parancsok listáját szeretnéd látni. command.subcommand.invalid= Sajnáljuk, de ez nem érvényes al parancs. -command.help.header=\u00A7e--------------- \u00A7a%1$s Segítség - Oldal %2$s %3$s\u00A7e-ból/-ből --------------- -command.help.subcommandheader=\u00A7e--------- \u00A7a%1$s Segítség - %2$s\u00A7e --------- -command.help.invalidhelp= Sajnálom, de \u00A7e%1$s\u00A7c nem érvényes oldalszám vagy al parancs. +command.help.header=&e--------------- &a%1$s Segítség - Oldal %2$s %3$s&e-ból/-ből --------------- +command.help.subcommandheader=&e--------- &a%1$s Segítség - %2$s&e --------- +command.help.invalidhelp= Sajnálom, de &e%1$s&c nem érvényes oldalszám vagy al parancs. command.reload.help=Portál adat újratöltése command.reload.detailedhelp=Újratölt minden portáladatot az adatmappában található fájlokból @@ -46,7 +66,7 @@ command.createdesti.console= Nem hozhatsz létre célállomást a konzol segíts command.createdesti.detailedhelp=A formátum /desti create (név) [tag:tagvalue] Megadja a címkéket a létrehozás után a formátum tag:calue, ha az értéknek szóközre van szüksége, használja a formátum tag:"érték a szóközökkel" command.createdesti.complete= A célállomás sikeresen létrehozva. -command.create.tags=\u00A7aCímkék: +command.create.tags=&aCímkék: command.playeronly= Sajnáljuk, de ezt a parancsot csak egy játékos futtathatja. @@ -61,17 +81,17 @@ command.selector= Kaptál egy portálválasztót. command.selector.help=Ad egy portál régió kiválasztót command.selector.detailedhelp=Portál választót ad a portálok létrehozásának régiói számára. -command.portalblock= Kaptál egy \u00A7ePortál blokk\u00A7aot! +command.portalblock= Kaptál egy &ePortál blokk&aot! -command.endportalblock= Kaptál egy \u00A78Végzet portál blokk helyező\u00A7at! +command.endportalblock= Kaptál egy &8Végzet portál blokk helyező&at! -command.gatewayblock= Kaptál egy \u00A78Kapubejáró blokk helyező\u00A7at! +command.gatewayblock= Kaptál egy &8Kapubejáró blokk helyező&at! portal.error.invalidselection=A portál létrehozásához mind a pos1, mind a pos2 szükséges. portal.error.takenname=A portálra megadott név már megtörtént. portal.error.selection.differentworlds=Mindkét kiválasztott pontnak ugyanabban a világban kell lennie. -desti.info.noargs=\u00A7cNincsenek címkék megadva +desti.info.noargs=&cNincsenek címkék megadva command.error.noname= Nincs név megadva. @@ -79,10 +99,10 @@ desti.error.takenname=A portálra megadott név már megtörtént. error.notplayer=Csak a játékosok tehetik ezt. -portal.selector.poschange=\u00A7eKiválasztottad a pos%1$s X:%2$s Y:%3$s Z:%4$s +portal.selector.poschange=&eKiválasztottad a pos%1$s X:%2$s Y:%3$s Z:%4$s command.trans.help=Fordítás másolása fordítás új alapértelmezett fordítási fájl command.version.help=Visszaadja a plugin jelenlegi verzióját -command.subcommand.nopermission= Sajnálom, de erre nincs jogod, kérlek, használd \u00A7e/%1$s help \u00A7cha a lehetséges al parancsok listáját szeretnéd látni. +command.subcommand.nopermission= Sajnálom, de erre nincs jogod, kérlek, használd &e/%1$s help &cha a lehetséges al parancsok listáját szeretnéd látni.