From b46bbf0d17f3102c2f56f2457aef60cd0f0e7baf Mon Sep 17 00:00:00 2001 From: KingOfSquares Date: Sun, 14 Jun 2020 20:02:13 +0200 Subject: [PATCH 01/11] Fix mapmaker group removing other permissions Signed-off-by: KingOfSquares --- .../java/tc/oc/pgm/modules/MapmakerMatchModule.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/modules/MapmakerMatchModule.java b/core/src/main/java/tc/oc/pgm/modules/MapmakerMatchModule.java index 742ebe2f56..6b1a4961bd 100644 --- a/core/src/main/java/tc/oc/pgm/modules/MapmakerMatchModule.java +++ b/core/src/main/java/tc/oc/pgm/modules/MapmakerMatchModule.java @@ -24,12 +24,12 @@ public MapmakerMatchModule(Match match) { @EventHandler(ignoreCancelled = true) public void onPlayerAddEvent(final MatchPlayerAddEvent event) { MatchPlayer player = event.getPlayer(); - player - .getBukkit() - .addAttachment( - PGM.get(), - Permissions.MAPMAKER, - authors.stream().anyMatch(c -> c.isPlayer(player.getId()))); + if (authors.stream().anyMatch(c -> c.isPlayer(player.getId()))) { + player.getBukkit().addAttachment(PGM.get(), Permissions.MAPMAKER, true); + } else { + player.getBukkit().removeAttachments(Permissions.MAPMAKER); + } + PGM.get().getPrefixRegistry().removePlayer(player.getId()); // Refresh prefixes for the player } } From f3045fddcab043b43439a73515d4dba2393e2a81 Mon Sep 17 00:00:00 2001 From: Pugzy Date: Fri, 12 Jun 2020 18:53:01 +0100 Subject: [PATCH 02/11] Prevent stats display flicker on multiple events Signed-off-by: Pugzy --- .../java/tc/oc/pgm/modules/StatsMatchModule.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/modules/StatsMatchModule.java b/core/src/main/java/tc/oc/pgm/modules/StatsMatchModule.java index 3605d8e433..01cb88e29e 100644 --- a/core/src/main/java/tc/oc/pgm/modules/StatsMatchModule.java +++ b/core/src/main/java/tc/oc/pgm/modules/StatsMatchModule.java @@ -52,6 +52,7 @@ public static class PlayerStats { private int killstreak; private int killstreakMax; private int longestBowKill; + private Future task; private void onMurder() { kills++; @@ -105,7 +106,7 @@ public void onPlayerDeath(MatchPlayerDeathEvent event) { victimStats.onDeath(); - sendLongHotbarMessage(victim, victimStats.getBasicStatsMessage()); + sendPlayerStats(victim, victimStats); } if (murderer != null @@ -127,7 +128,7 @@ public void onPlayerDeath(MatchPlayerDeathEvent event) { murdererStats.onMurder(); - sendLongHotbarMessage(murderer, murdererStats.getBasicStatsMessage()); + sendPlayerStats(murderer, murdererStats); } } @@ -202,13 +203,22 @@ private Map.Entry sortStats(Map map) { return map.entrySet().stream().max(Comparator.comparingInt(Map.Entry::getValue)).orElse(null); } - private void sendLongHotbarMessage(MatchPlayer player, Component message) { + private void sendPlayerStats(MatchPlayer player, PlayerStats stats) { + if (stats.task != null && !stats.task.isDone()) { + stats.task.cancel(true); + } + stats.task = sendLongHotbarMessage(player, stats.getBasicStatsMessage()); + } + + private Future sendLongHotbarMessage(MatchPlayer player, Component message) { Future task = match .getExecutor(MatchScope.LOADED) .scheduleWithFixedDelay(() -> player.showHotbar(message), 0, 1, TimeUnit.SECONDS); match.getExecutor(MatchScope.LOADED).schedule(() -> task.cancel(true), 4, TimeUnit.SECONDS); + + return task; } Component getMessage(String messageKey, Map.Entry mapEntry, TextColor color) { From a8eca42f9f8b0b5e5cd03bd1469d024ab1b455e7 Mon Sep 17 00:00:00 2001 From: applenick Date: Sun, 14 Jun 2020 11:07:53 -0700 Subject: [PATCH 03/11] Improvements to /setpool and /mute Signed-off-by: applenick --- .../tc/oc/pgm/command/MapPoolCommand.java | 11 +++++--- .../community/command/ModerationCommand.java | 2 +- .../tc/oc/pgm/events/MapPoolAdjustEvent.java | 9 ++++++- .../tc/oc/pgm/listeners/ChatDispatcher.java | 20 ++++++++------ .../java/tc/oc/pgm/listeners/PGMListener.java | 27 ++++++++++++++++++- .../tc/oc/pgm/rotation/MapPoolManager.java | 27 +++++++++++++++---- util/src/main/i18n/templates/map.properties | 5 ++-- util/src/main/i18n/templates/match.properties | 4 +++ util/src/main/i18n/templates/misc.properties | 5 ++++ .../main/i18n/templates/moderation.properties | 3 ++- 10 files changed, 90 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java b/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java index d30b43e3b1..16322bdf6a 100644 --- a/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java +++ b/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java @@ -199,8 +199,8 @@ public Component format(MapPool mapPool, int index) { @Command( aliases = {"setpool", "setrot"}, desc = "Change the map pool", - usage = "[pool name] -r (revert to dynamic) -t (time limit for map pool)", - flags = "r", + usage = "[pool name] -r (revert to dynamic) -t (time limit for map pool) -m (match # limit)", + flags = "rtm", perms = Permissions.SETNEXT) public void setPool( Audience sender, @@ -209,7 +209,8 @@ public void setPool( MapOrder mapOrder, @Nullable String poolName, @Switch('r') boolean reset, - @Switch('t') Duration timeLimit) + @Switch('t') Duration timeLimit, + @Switch('m') Integer matchLimit) throws CommandException { if (!match.getCountdown().getAll(CycleCountdown.class).isEmpty()) { sender.sendMessage(TranslatableComponent.of("admin.setPool.activeCycle", TextColor.RED)); @@ -232,7 +233,9 @@ public void setPool( TextComponent.of(newPool.getName(), TextColor.LIGHT_PURPLE))); return; } - mapPoolManager.updateActiveMapPool(newPool, match, true, source, timeLimit); + + mapPoolManager.updateActiveMapPool( + newPool, match, true, source, timeLimit, matchLimit != null ? matchLimit : 0); } } diff --git a/core/src/main/java/tc/oc/pgm/community/command/ModerationCommand.java b/core/src/main/java/tc/oc/pgm/community/command/ModerationCommand.java index bf123b0905..9e5d6f08b2 100644 --- a/core/src/main/java/tc/oc/pgm/community/command/ModerationCommand.java +++ b/core/src/main/java/tc/oc/pgm/community/command/ModerationCommand.java @@ -203,7 +203,7 @@ public void mute( warn(sender, target, match, reason); if (punish(PunishmentType.MUTE, targetMatchPlayer, sender, reason, true)) { - chat.addMuted(targetMatchPlayer); + chat.addMuted(targetMatchPlayer, reason); } } diff --git a/core/src/main/java/tc/oc/pgm/events/MapPoolAdjustEvent.java b/core/src/main/java/tc/oc/pgm/events/MapPoolAdjustEvent.java index d6551760cc..4e178381c8 100644 --- a/core/src/main/java/tc/oc/pgm/events/MapPoolAdjustEvent.java +++ b/core/src/main/java/tc/oc/pgm/events/MapPoolAdjustEvent.java @@ -18,6 +18,7 @@ public class MapPoolAdjustEvent extends Event { private final boolean forced; private final @Nullable CommandSender sender; private final @Nullable Duration timeLimit; + private final int matchLimit; public MapPoolAdjustEvent( MapPool oldMapPool, @@ -25,13 +26,15 @@ public MapPoolAdjustEvent( Match match, boolean forced, @Nullable CommandSender sender, - @Nullable Duration timeLimit) { + @Nullable Duration timeLimit, + int matchLimit) { this.oldPool = oldMapPool; this.newPool = newMapPool; this.match = match; this.forced = forced; this.sender = sender; this.timeLimit = timeLimit; + this.matchLimit = matchLimit; } public MapPool getOldPool() { @@ -58,6 +61,10 @@ public Duration getTimeLimit() { return timeLimit; } + public int getMatchLimit() { + return matchLimit; + } + private static final HandlerList handlers = new HandlerList(); @Override diff --git a/core/src/main/java/tc/oc/pgm/listeners/ChatDispatcher.java b/core/src/main/java/tc/oc/pgm/listeners/ChatDispatcher.java index 4ce2170f3a..413aa041c5 100644 --- a/core/src/main/java/tc/oc/pgm/listeners/ChatDispatcher.java +++ b/core/src/main/java/tc/oc/pgm/listeners/ChatDispatcher.java @@ -4,7 +4,8 @@ import app.ashcon.intake.parametric.annotation.Text; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.google.common.collect.Sets; +import com.google.common.collect.Maps; +import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -57,7 +58,7 @@ public static ChatDispatcher get() { private final VanishManager vanish; private final OnlinePlayerMapAdapter lastMessagedBy; - private final Set muted; + private final Map muted; public static final TextComponent ADMIN_CHAT_PREFIX = TextComponent.builder() @@ -85,12 +86,12 @@ public ChatDispatcher() { this.manager = PGM.get().getMatchManager(); this.vanish = PGM.get().getVanishManager(); this.lastMessagedBy = new OnlinePlayerMapAdapter<>(PGM.get()); - this.muted = Sets.newHashSet(); + this.muted = Maps.newHashMap(); PGM.get().getServer().getPluginManager().registerEvents(this, PGM.get()); } - public void addMuted(MatchPlayer player) { - this.muted.add(player.getId()); + public void addMuted(MatchPlayer player, String reason) { + this.muted.put(player.getId(), reason); } public void removeMuted(MatchPlayer player) { @@ -98,11 +99,11 @@ public void removeMuted(MatchPlayer player) { } public boolean isMuted(MatchPlayer player) { - return player != null ? muted.contains(player.getId()) : false; + return player != null ? muted.containsKey(player.getId()) : false; } public Set getMutedUUIDs() { - return muted; + return muted.keySet(); } @Command( @@ -399,7 +400,10 @@ private MatchPlayer getApproximatePlayer(Match match, String query, CommandSende } private void sendMutedMessage(MatchPlayer player) { - Component warning = TranslatableComponent.of("moderation.mute.message"); + Component warning = + TranslatableComponent.of( + "moderation.mute.message", + TextComponent.of(muted.getOrDefault(player.getId(), ""), TextColor.AQUA)); player.sendWarning(warning); } diff --git a/core/src/main/java/tc/oc/pgm/listeners/PGMListener.java b/core/src/main/java/tc/oc/pgm/listeners/PGMListener.java index 9ca19eb1bc..31ac2f5b33 100644 --- a/core/src/main/java/tc/oc/pgm/listeners/PGMListener.java +++ b/core/src/main/java/tc/oc/pgm/listeners/PGMListener.java @@ -337,12 +337,37 @@ public void announceDynamicMapPoolChange(MapPoolAdjustEvent event) { Component poolName = TextComponent.of(event.getNewPool().getName(), TextColor.LIGHT_PURPLE); Component staffName = UsernameFormatUtils.formatStaffName(event.getSender(), event.getMatch()); + Component matchLimit = + TextComponent.builder() + .append(Integer.toString(event.getMatchLimit()), TextColor.GREEN) + .append(" ") + .append( + TranslatableComponent.of( + "match.name" + (event.getMatchLimit() != 1 ? ".plural" : ""), TextColor.GRAY)) + .build(); + + // No limit Component forced = TranslatableComponent.of("pool.change.force", poolName, staffName); if (event.getTimeLimit() != null) { Component time = PeriodFormats.briefNaturalApproximate(event.getTimeLimit()).color(TextColor.GREEN); - forced = TranslatableComponent.of("pool.change.forceTimed", poolName, time, staffName); + + // If time & match limit are present, display both + if (event.getMatchLimit() != 0) { + Component timeAndLimit = + TranslatableComponent.of("misc.or", TextColor.GRAY, time, matchLimit); + forced = + TranslatableComponent.of("pool.change.forceTimed", poolName, timeAndLimit, staffName); + } else { + // Just time limit + forced = TranslatableComponent.of("pool.change.forceTimed", poolName, time, staffName); + } + } else if (event.getMatchLimit() != 0) { + // Just match limit + forced = + TranslatableComponent.of("pool.change.forceTimed", poolName, matchLimit, staffName); } + ChatDispatcher.broadcastAdminChatMessage(forced.color(TextColor.GRAY), event.getMatch()); } diff --git a/core/src/main/java/tc/oc/pgm/rotation/MapPoolManager.java b/core/src/main/java/tc/oc/pgm/rotation/MapPoolManager.java index 5f07b1487e..8403426d84 100644 --- a/core/src/main/java/tc/oc/pgm/rotation/MapPoolManager.java +++ b/core/src/main/java/tc/oc/pgm/rotation/MapPoolManager.java @@ -45,6 +45,9 @@ public class MapPoolManager implements MapOrder { private Duration poolTimeLimit = null; private Instant poolStartTime = null; + private int matchCountLimit = 0; // The limit for when to revert to dynamic pools + private int matchCount = 0; // # of completed matches since start of pool + /** When a {@link MapInfo} is manually set next, it overrides the rotation order * */ private MapInfo overriderMap; @@ -153,7 +156,7 @@ public List getMapPools() { } private void updateActiveMapPool(MapPool mapPool, Match match) { - updateActiveMapPool(mapPool, match, false, null, null); + updateActiveMapPool(mapPool, match, false, null, null, 0); } public void updateActiveMapPool( @@ -161,7 +164,8 @@ public void updateActiveMapPool( Match match, boolean force, @Nullable CommandSender sender, - @Nullable Duration timeLimit) { + @Nullable Duration timeLimit, + int matchLimit) { saveMapPools(); if (mapPool == activeMapPool) return; @@ -170,20 +174,24 @@ public void updateActiveMapPool( // Set new active pool activeMapPool = mapPool; + matchCount = 0; if (!activeMapPool.isDynamic()) { poolStartTime = Instant.now(); if (timeLimit != null) { poolTimeLimit = timeLimit; } + matchCountLimit = Math.max(0, matchLimit); } else { poolStartTime = null; poolTimeLimit = null; + matchCountLimit = 0; } // Call a MapPoolAdjustEvent so plugins can listen when map pool has changed match.callEvent( - new MapPoolAdjustEvent(activeMapPool, mapPool, match, force, sender, poolTimeLimit)); + new MapPoolAdjustEvent( + activeMapPool, mapPool, match, force, sender, poolTimeLimit, matchCountLimit)); } /** @@ -253,9 +261,14 @@ public Optional getAppropriateDynamicPool(Match match) { @Override public void matchEnded(Match match) { + if (hasMatchCountLimit()) { + matchCount++; + } + if (activeMapPool.isDynamic() || shouldRevert(match)) { getAppropriateDynamicPool(match).ifPresent(pool -> updateActiveMapPool(pool, match)); } + activeMapPool.matchEnded(match); } @@ -266,7 +279,11 @@ private boolean shouldRevert(Match match) { .isPresent() || !activeMapPool.isDynamic() && poolTimeLimit != null - && TimeUtils.isLongerThan( - Duration.between(poolStartTime, Instant.now()), poolTimeLimit); + && TimeUtils.isLongerThan(Duration.between(poolStartTime, Instant.now()), poolTimeLimit) + || hasMatchCountLimit() && (matchCount > matchCountLimit); + } + + private boolean hasMatchCountLimit() { + return !activeMapPool.isDynamic() && (matchCountLimit > 0); } } diff --git a/util/src/main/i18n/templates/map.properties b/util/src/main/i18n/templates/map.properties index 015335e057..e8dbd115a8 100644 --- a/util/src/main/i18n/templates/map.properties +++ b/util/src/main/i18n/templates/map.properties @@ -73,14 +73,15 @@ map.protectPortal = You may not obstruct this area # {0} = map pool name (e.g. "Mega") pool.change = Map pool has been set to {0} in order to better adjust to the current player count. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = The map pool has been set to {0} by {1} +pool.change.force = {1} set the map pool to {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = The map pool has been set to {0} for {1} by {2} +pool.change.forceTimed = {2} set the map pool to {0} for {1} # {0} = number of positions pool.skip = Skipped a total of {0} positions. diff --git a/util/src/main/i18n/templates/match.properties b/util/src/main/i18n/templates/match.properties index 18993e2597..0581dfee38 100644 --- a/util/src/main/i18n/templates/match.properties +++ b/util/src/main/i18n/templates/match.properties @@ -1,5 +1,9 @@ match.title = Match +match.name = match + +match.name.plural = matches + match.info.time = Time match.info.goals = Goals diff --git a/util/src/main/i18n/templates/misc.properties b/util/src/main/i18n/templates/misc.properties index 71e912ebef..ed035dde9b 100644 --- a/util/src/main/i18n/templates/misc.properties +++ b/util/src/main/i18n/templates/misc.properties @@ -89,6 +89,11 @@ misc.blocks = {0} blocks # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Team +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} or {1} + # do not translate, keep as-is misc.snowman = ☃ diff --git a/util/src/main/i18n/templates/moderation.properties b/util/src/main/i18n/templates/moderation.properties index 2505fe402d..c0e781099f 100644 --- a/util/src/main/i18n/templates/moderation.properties +++ b/util/src/main/i18n/templates/moderation.properties @@ -37,7 +37,8 @@ moderation.screen.signoff = Issued by {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expires in {0} -moderation.mute.message = You have been muted and are unable to send chat messages +# {0} = mute reason +moderation.mute.message = You have been muted for {0} moderation.mute.list = Muted Players From 6fe5878d53a56150dea3885b16b029413a6363dc Mon Sep 17 00:00:00 2001 From: applenick Date: Tue, 16 Jun 2020 08:02:04 -0700 Subject: [PATCH 04/11] Fix a few text-related bugs Signed-off-by: applenick --- .../java/tc/oc/pgm/tablist/MapTabEntry.java | 6 +- core/src/main/java/tc/oc/pgm/teams/Team.java | 3 +- pom.xml | 9 - .../java/tc/oc/pgm/util/named/NameStyle.java | 30 +-- .../tc/oc/pgm/util/text/TextFormatter.java | 8 +- .../pgm/util/text/types/PlayerComponent.java | 173 ++++++++++++++---- 6 files changed, 155 insertions(+), 74 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/tablist/MapTabEntry.java b/core/src/main/java/tc/oc/pgm/tablist/MapTabEntry.java index 8df4616d65..23c6b4ebe4 100644 --- a/core/src/main/java/tc/oc/pgm/tablist/MapTabEntry.java +++ b/core/src/main/java/tc/oc/pgm/tablist/MapTabEntry.java @@ -5,7 +5,6 @@ import net.kyori.text.TranslatableComponent; import net.kyori.text.format.TextColor; import net.kyori.text.format.TextDecoration; -import net.kyori.text.serializer.legacy.LegacyComponentSerializer; import net.md_5.bungee.api.chat.BaseComponent; import tc.oc.pgm.api.map.MapInfo; import tc.oc.pgm.api.match.Match; @@ -32,9 +31,6 @@ public BaseComponent getContent(TabView view) { TextComponent.of(map.getName(), TextColor.AQUA, TextDecoration.BOLD), TextFormatter.nameList(map.getAuthors(), NameStyle.FANCY, TextColor.GRAY)); - return net.md_5.bungee.api.chat.TextComponent.fromLegacyToComponent( - LegacyComponentSerializer.legacy() - .serialize(TextTranslations.translate(text, view.getViewer().getLocale())), - false); + return TextTranslations.toBaseComponent(text, view.getViewer()); } } diff --git a/core/src/main/java/tc/oc/pgm/teams/Team.java b/core/src/main/java/tc/oc/pgm/teams/Team.java index b428688e17..574c5b48a5 100644 --- a/core/src/main/java/tc/oc/pgm/teams/Team.java +++ b/core/src/main/java/tc/oc/pgm/teams/Team.java @@ -38,7 +38,7 @@ public class Team extends SimpleParty implements Competitor, Featuretrue - - - - org.projectlombok - lombok - 1.18.12 - provided - - org.jdom diff --git a/util/src/main/java/tc/oc/pgm/util/named/NameStyle.java b/util/src/main/java/tc/oc/pgm/util/named/NameStyle.java index e0009fa538..6a3e75494a 100644 --- a/util/src/main/java/tc/oc/pgm/util/named/NameStyle.java +++ b/util/src/main/java/tc/oc/pgm/util/named/NameStyle.java @@ -5,43 +5,27 @@ * only by context, and is independent of the viewer. */ public enum NameStyle { - PLAIN(false, false, false, false, false, false, false, false, false), // No formatting - COLOR(true, false, false, false, false, false, false, true, false), // Color only - FANCY( - true, true, true, true, true, false, false, true, - false), // Color, flair, friend status, nick status, vanish status - TAB( - true, true, true, true, true, false, true, true, - true), // Color, flair, friend status, nick status, death status, and vanish status - VERBOSE(true, true, true, true, true, true, false, true, true), // Fancy plus nickname - CONCISE(true, true, true, true, true, true, false, false, true); // Verbose, but removes teleport + PLAIN(false, false, false, false, false), // No formatting + COLOR(true, false, false, true, false), // Color and teleport + FANCY(true, true, false, true, false), // Color, flair, and teleport + TAB(true, true, true, false, true), // Color, flair, death status, and vanish + VERBOSE(true, true, false, true, true), // Color, flair, teleport, and vanish + CONCISE(true, true, false, false, true); // Color, flair, and vanish public final boolean isColor; public final boolean showPrefix; - public final boolean showSelf; // Bold if self - public final boolean showFriend; // Italic if friend - public final boolean showDisguise; // Strikethrough if disguised - public final boolean showNickname; // Show nickname after real name public final boolean showDeath; // Grey out name if dead public final boolean teleport; // Click name to teleport - public final boolean showVanish; // Italic if vanished + public final boolean showVanish; // Whether to render name as online or not NameStyle( boolean isColor, boolean showPrefix, - boolean showSelf, - boolean showFriend, - boolean showDisguise, - boolean showNickname, boolean showDeath, boolean teleport, boolean showVanish) { this.isColor = isColor; this.showPrefix = showPrefix; - this.showSelf = showSelf; - this.showFriend = showFriend; - this.showDisguise = showDisguise; - this.showNickname = showNickname; this.showDeath = showDeath; this.teleport = teleport; this.showVanish = showVanish; diff --git a/util/src/main/java/tc/oc/pgm/util/text/TextFormatter.java b/util/src/main/java/tc/oc/pgm/util/text/TextFormatter.java index edc882dd5b..2de0701299 100644 --- a/util/src/main/java/tc/oc/pgm/util/text/TextFormatter.java +++ b/util/src/main/java/tc/oc/pgm/util/text/TextFormatter.java @@ -127,6 +127,12 @@ public static Component horizontalLineHeading( * Convert ChatColor -> TextColor */ public static TextColor convert(Enum color) { - return TextColor.valueOf(color.name()); + TextColor textColor = TextColor.WHITE; + try { + textColor = TextColor.valueOf(color.name()); + } catch (IllegalArgumentException e) { + // If not found use default + } + return textColor; } } diff --git a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java index 45ccf75f38..7d55505b4f 100644 --- a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java +++ b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java @@ -15,7 +15,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import tc.oc.pgm.util.named.NameStyle; -import tc.oc.pgm.util.text.TextParser; +import tc.oc.pgm.util.text.TextFormatter; /** PlayerComponent is used to format player names in a consistent manner with optional styling */ public interface PlayerComponent { @@ -23,64 +23,167 @@ public interface PlayerComponent { static Component UNKNOWN = TranslatableComponent.of("misc.unknown", TextColor.DARK_AQUA, TextDecoration.ITALIC); + static Component of(UUID playerId, NameStyle style) { + Player player = Bukkit.getPlayer(playerId); + return player != null ? of(player, style) : UNKNOWN; + } + + static Component of(CommandSender sender, NameStyle style) { + return sender instanceof Player + ? of((Player) sender, style) + : TranslatableComponent.of("misc.console", TextColor.DARK_AQUA); + } + static Component of(Player player, NameStyle style) { return of(player, "", style); } static Component of(@Nullable Player player, String defName, NameStyle style) { - TextComponent.Builder component = TextComponent.builder(); - - // Offline player - if (player == null || !player.isOnline()) { - TextComponent name = TextComponent.of(defName); - if (style != NameStyle.PLAIN) name = name.color(TextColor.DARK_AQUA); - component.append(name); - return component.build(); + // Offline player or not visible + if ((player == null || !player.isOnline())) { + return formatOffline(defName, style == NameStyle.PLAIN).build(); } - Component usernameComponent; - String realName = player.getName(); + // For name styles that don't allow vanished, make vanished appear offline + if (!style.showVanish && isVanished(player)) { + return formatOffline(player.getName(), style == NameStyle.PLAIN).build(); + } + + TextComponent.Builder builder = TextComponent.builder(); + + switch (style) { + case COLOR: + builder = formatTeleport(formatColor(player), player.getName()); + break; + case CONCISE: + builder = formatConcise(player); + break; + case FANCY: + builder = formatFancy(player); + break; + case TAB: + builder = formatTab(player); + break; + case VERBOSE: + builder = formatVerbose(player); + break; + default: + builder = formatPlain(player); + break; + } + + return builder.build(); + } + + // What an offline or vanished username renders as + static TextComponent.Builder formatOffline(String name, boolean plain) { + TextComponent.Builder component = TextComponent.builder().append(name); + if (!plain) component.color(TextColor.DARK_AQUA); + return component; + } + + // No color or formatting, simply the name + static TextComponent.Builder formatPlain(Player player) { + return TextComponent.builder().append(player.getName()); + } + + // Color only + static TextComponent.Builder formatColor(Player player) { String displayName = player.getDisplayName(); + char colorChar = displayName.charAt((displayName.indexOf(player.getName()) - 1)); + TextColor color = TextFormatter.convert(ChatColor.getByChar(colorChar)); + return TextComponent.builder().append(player.getName(), color); + } + + // Color, flair & teleport + static TextComponent.Builder formatFancy(Player player) { + TextComponent.Builder prefix = getPrefixComponent(player); + TextComponent.Builder colorName = formatColor(player); + + return formatTeleport(prefix.append(colorName), player.getName()); + } + + // Color, flair, death status, and vanish + static TextComponent.Builder formatTab(Player player) { + TextComponent.Builder prefix = getPrefixComponent(player); + TextComponent.Builder colorName = formatColor(player); - if (!style.showPrefix) { - displayName = displayName.substring(displayName.indexOf(realName) - 2); + if (isDead(player)) { + colorName.color(TextColor.DARK_GRAY); } - if (style.showDeath && isDead(player)) { - displayName = - displayName.replaceFirst(realName, ChatColor.DARK_GRAY + realName + ChatColor.RESET); + if (isVanished(player)) { + colorName = formatVanished(colorName); } - if (style.showVanish && isVanished(player)) { - displayName = - displayName.replaceFirst(realName, ChatColor.STRIKETHROUGH + realName + ChatColor.RESET); + return prefix.append(colorName); + } + + // Color, flair, and vanish status + static TextComponent.Builder formatConcise(Player player) { + TextComponent.Builder prefix = getPrefixComponent(player); + TextComponent.Builder colorName = formatColor(player); + + if (isVanished(player)) { + colorName = formatVanished(colorName); } - usernameComponent = TextParser.parseComponent(displayName); - component.append(usernameComponent); + return prefix.append(colorName); + } - if (style.teleport) { - component.hoverEvent( - HoverEvent.of( - Action.SHOW_TEXT, - TranslatableComponent.of("misc.teleportTo", TextColor.GRAY).args(usernameComponent))); - component.clickEvent(ClickEvent.runCommand("/tp " + player.getName())); + // Color, flair, vanished, and teleport + static TextComponent.Builder formatVerbose(Player player) { + return formatTeleport(formatConcise(player), player.getName()); + } + + /** + * Get the player's prefix as a {@link Component} + * + * @param player The player + * @return a component with a player's prefix + */ + static TextComponent.Builder getPrefixComponent(Player player) { + String realName = player.getName(); + String displayName = player.getDisplayName(); + String prefix = displayName.substring(0, displayName.indexOf(realName) - 2); + + TextComponent.Builder prefixComponent = TextComponent.builder(); + boolean isColor = false; + TextColor color = null; + for (int i = 0; i < prefix.length(); i++) { + if (prefix.charAt(i) == ChatColor.COLOR_CHAR) { + isColor = true; + continue; + } + + if (isColor) { + color = TextFormatter.convert(ChatColor.getByChar(prefix.charAt(i))); + isColor = false; + } else { + prefixComponent.append( + String.valueOf(prefix.charAt(i)), color != null ? color : TextColor.WHITE); + } } - return component.build(); + return prefixComponent; } - static Component of(UUID playerId, NameStyle style) { - Player player = Bukkit.getPlayer(playerId); - return player != null ? of(player, style) : UNKNOWN; + // Format component to have teleport click/hover + static TextComponent.Builder formatTeleport(TextComponent.Builder username, String name) { + return username + .hoverEvent( + HoverEvent.of( + Action.SHOW_TEXT, + TranslatableComponent.of("misc.teleportTo", TextColor.GRAY, username.build()))) + .clickEvent(ClickEvent.runCommand("/tp " + name)); } - static Component of(CommandSender sender, NameStyle style) { - return sender instanceof Player - ? of((Player) sender, style) - : TranslatableComponent.of("misc.console", TextColor.DARK_AQUA); + // Format for visible vanished players + static TextComponent.Builder formatVanished(TextComponent.Builder builder) { + return builder.decoration(TextDecoration.STRIKETHROUGH, true); } + // Player state checks static boolean isVanished(Player player) { return player.hasMetadata("isVanished"); } From b848717403acda1618f8544a3ec8533c79e02504 Mon Sep 17 00:00:00 2001 From: Pugzy Date: Mon, 11 May 2020 18:09:48 +0100 Subject: [PATCH 05/11] Allow voting book to be forced open Signed-off-by: Pugzy --- core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java | 8 ++++++-- core/src/main/java/tc/oc/pgm/rotation/MapPoll.java | 6 +++--- core/src/main/java/tc/oc/pgm/rotation/VotingPool.java | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java b/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java index 16322bdf6a..127e748fd5 100644 --- a/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java +++ b/core/src/main/java/tc/oc/pgm/command/MapPoolCommand.java @@ -278,7 +278,11 @@ public static void skip( @Command(aliases = "votenext", desc = "Vote for the next map", usage = "map") public static void voteNext( - MatchPlayer player, CommandSender sender, MapOrder mapOrder, @Text MapInfo map) + MatchPlayer player, + CommandSender sender, + MapOrder mapOrder, + @Switch('o') boolean forceOpen, + @Text MapInfo map) throws CommandException { MapPool pool = getMapPoolManager(sender, mapOrder).getActiveMapPool(); MapPoll poll = pool instanceof VotingPool ? ((VotingPool) pool).getCurrentPoll() : null; @@ -294,7 +298,7 @@ public static void voteNext( voteResult ? TextColor.GREEN : TextColor.RED, map.getStyledName(MapNameStyle.COLOR)); player.sendMessage(voteAction); - poll.sendBook(player); + poll.sendBook(player, forceOpen); } public static MapPoolManager getMapPoolManager(CommandSender sender, MapOrder mapOrder) diff --git a/core/src/main/java/tc/oc/pgm/rotation/MapPoll.java b/core/src/main/java/tc/oc/pgm/rotation/MapPoll.java index 92b6ee0d49..144ce0603d 100644 --- a/core/src/main/java/tc/oc/pgm/rotation/MapPoll.java +++ b/core/src/main/java/tc/oc/pgm/rotation/MapPoll.java @@ -136,7 +136,7 @@ private Component getMapChatComponent(MatchPlayer viewer, MapInfo map, boolean w .build(); } - public void sendBook(MatchPlayer viewer) { + public void sendBook(MatchPlayer viewer, boolean forceOpen) { String title = ChatColor.GOLD + "" + ChatColor.BOLD; title += TextTranslations.translate("vote.title.map", viewer.getBukkit()); @@ -162,7 +162,7 @@ public void sendBook(MatchPlayer viewer) { } viewer.getInventory().setItemInHand(is); - if (viewer.getSettings().getValue(SettingKey.VOTE) == SettingValue.VOTE_ON) + if (forceOpen || viewer.getSettings().getValue(SettingKey.VOTE) == SettingValue.VOTE_ON) NMSHacks.openBook(is, viewer.getBukkit()); } @@ -180,7 +180,7 @@ private Component getMapBookComponent(MatchPlayer viewer, MapInfo map) { TextComponent.of( map.getTags().stream().map(MapTag::toString).collect(Collectors.joining(" ")), TextColor.YELLOW))) - .clickEvent(ClickEvent.runCommand("/votenext " + map.getName())) + .clickEvent(ClickEvent.runCommand("/votenext -o " + map.getName())) .build(); } diff --git a/core/src/main/java/tc/oc/pgm/rotation/VotingPool.java b/core/src/main/java/tc/oc/pgm/rotation/VotingPool.java index fc690da591..c28e0d98f9 100644 --- a/core/src/main/java/tc/oc/pgm/rotation/VotingPool.java +++ b/core/src/main/java/tc/oc/pgm/rotation/VotingPool.java @@ -89,7 +89,7 @@ public void matchEnded(Match match) { // If there is a restart queued, don't start a vote if (RestartManager.isQueued()) return; currentPoll = new MapPoll(match, mapScores, VOTE_SIZE); - match.getPlayers().forEach(currentPoll::sendBook); + match.getPlayers().forEach(viewer -> currentPoll.sendBook(viewer, false)); }, 5, TimeUnit.SECONDS); From b14ef1ea29408944796788f207ddf9c393fbda27 Mon Sep 17 00:00:00 2001 From: applenick Date: Fri, 19 Jun 2020 17:00:58 -0700 Subject: [PATCH 06/11] Reintroduce bold names on the tab list Signed-off-by: applenick --- .../oc/pgm/util/tablist/PlayerTabEntry.java | 2 +- .../pgm/util/text/types/PlayerComponent.java | 23 +++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/util/src/main/java/tc/oc/pgm/util/tablist/PlayerTabEntry.java b/util/src/main/java/tc/oc/pgm/util/tablist/PlayerTabEntry.java index dc2aa666e1..936d494577 100644 --- a/util/src/main/java/tc/oc/pgm/util/tablist/PlayerTabEntry.java +++ b/util/src/main/java/tc/oc/pgm/util/tablist/PlayerTabEntry.java @@ -47,7 +47,7 @@ public PlayerTabEntry(Player player) { @Override public BaseComponent getContent(TabView view) { return TextTranslations.toBaseComponent( - PlayerComponent.of(player, NameStyle.TAB), view.getViewer()); + PlayerComponent.of(player, NameStyle.TAB, view.getViewer()), view.getViewer()); } @Override diff --git a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java index 7d55505b4f..5db09953bc 100644 --- a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java +++ b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java @@ -35,10 +35,19 @@ static Component of(CommandSender sender, NameStyle style) { } static Component of(Player player, NameStyle style) { - return of(player, "", style); + return of(player, style, null); } - static Component of(@Nullable Player player, String defName, NameStyle style) { + static Component of(Player player, String defName, NameStyle style) { + return of(player, defName, style, null); + } + + static Component of(Player player, NameStyle style, @Nullable Player viewer) { + return of(player, "", style, viewer); + } + + static Component of( + @Nullable Player player, String defName, NameStyle style, @Nullable Player viewer) { // Offline player or not visible if ((player == null || !player.isOnline())) { return formatOffline(defName, style == NameStyle.PLAIN).build(); @@ -62,7 +71,7 @@ static Component of(@Nullable Player player, String defName, NameStyle style) { builder = formatFancy(player); break; case TAB: - builder = formatTab(player); + builder = formatTab(player, viewer); break; case VERBOSE: builder = formatVerbose(player); @@ -92,7 +101,7 @@ static TextComponent.Builder formatColor(Player player) { String displayName = player.getDisplayName(); char colorChar = displayName.charAt((displayName.indexOf(player.getName()) - 1)); TextColor color = TextFormatter.convert(ChatColor.getByChar(colorChar)); - return TextComponent.builder().append(player.getName(), color); + return TextComponent.builder().append(player.getName()).color(color); } // Color, flair & teleport @@ -104,7 +113,7 @@ static TextComponent.Builder formatFancy(Player player) { } // Color, flair, death status, and vanish - static TextComponent.Builder formatTab(Player player) { + static TextComponent.Builder formatTab(Player player, @Nullable Player viewer) { TextComponent.Builder prefix = getPrefixComponent(player); TextComponent.Builder colorName = formatColor(player); @@ -116,6 +125,10 @@ static TextComponent.Builder formatTab(Player player) { colorName = formatVanished(colorName); } + if (viewer != null && player.equals(viewer)) { + colorName.decoration(TextDecoration.BOLD, true); + } + return prefix.append(colorName); } From 54e23536813f4bc2115d3a3f8254d4c94fbe7d0f Mon Sep 17 00:00:00 2001 From: KingOfSquares Date: Tue, 23 Jun 2020 01:19:37 +0200 Subject: [PATCH 07/11] Add missing condition to the VictoryCondition parser Signed-off-by: KingSimon --- core/src/main/java/tc/oc/pgm/result/VictoryConditions.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/java/tc/oc/pgm/result/VictoryConditions.java b/core/src/main/java/tc/oc/pgm/result/VictoryConditions.java index c4e1a5f14d..c51a4ab136 100644 --- a/core/src/main/java/tc/oc/pgm/result/VictoryConditions.java +++ b/core/src/main/java/tc/oc/pgm/result/VictoryConditions.java @@ -5,6 +5,7 @@ import tc.oc.pgm.api.match.Match; import tc.oc.pgm.api.party.VictoryCondition; import tc.oc.pgm.goals.GoalsVictoryCondition; +import tc.oc.pgm.score.ScoreVictoryCondition; import tc.oc.pgm.teams.Team; import tc.oc.pgm.teams.TeamFactory; import tc.oc.pgm.teams.TeamVictoryCondition; @@ -33,6 +34,8 @@ private VictoryConditions() {} return new TieVictoryCondition(); case "objectives": return new GoalsVictoryCondition(); + case "score": + return new ScoreVictoryCondition(); default: if (match != null) { TeamFactory winner = Teams.getTeam(raw, match); From d7f0f8becd417045c2fa0b1376a0805391fd9e14 Mon Sep 17 00:00:00 2001 From: Ian <46601096+iangbb@users.noreply.github.com> Date: Thu, 25 Jun 2020 17:40:52 +0100 Subject: [PATCH 08/11] Fix flag post duplication when using sequential posts Signed-off-by: Ian <46601096+iangbb@users.noreply.github.com> Co-authored-by: Pablo Herrera --- core/src/main/java/tc/oc/pgm/flag/Flag.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/flag/Flag.java b/core/src/main/java/tc/oc/pgm/flag/Flag.java index 838acefe95..3e86bf2d5d 100644 --- a/core/src/main/java/tc/oc/pgm/flag/Flag.java +++ b/core/src/main/java/tc/oc/pgm/flag/Flag.java @@ -234,7 +234,7 @@ public boolean canDropAt(Location location) { } } - private int sequentialPostCounter = 0; + private int sequentialPostCounter = 1; private Post returnPost; public Post getReturnPost(Post post) { @@ -242,11 +242,8 @@ public Post getReturnPost(Post post) { return post; } if (definition.isSequential()) { - Post returnPost = definition.getPosts().get(sequentialPostCounter++); - if (sequentialPostCounter == definition.getPosts().size()) { - sequentialPostCounter = 0; - } - return returnPost; + sequentialPostCounter %= definition.getPosts().size(); + return definition.getPosts().get(sequentialPostCounter++); } Random random = match.getRandom(); return definition.getPosts().get(random.nextInt(definition.getPosts().size())); From 6a7b4b28c18756466c09c8e85f0c3ccfb2ef3865 Mon Sep 17 00:00:00 2001 From: applenick Date: Tue, 23 Jun 2020 18:10:10 -0700 Subject: [PATCH 09/11] Fix vanished name rendering Signed-off-by: applenick --- .../tc/oc/pgm/community/modules/FreezeMatchModule.java | 4 ++-- .../main/java/tc/oc/pgm/util/UsernameFormatUtils.java | 2 +- .../tc/oc/pgm/util/text/types/PlayerComponent.java | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/community/modules/FreezeMatchModule.java b/core/src/main/java/tc/oc/pgm/community/modules/FreezeMatchModule.java index a658cef5fe..f15b84cc3d 100644 --- a/core/src/main/java/tc/oc/pgm/community/modules/FreezeMatchModule.java +++ b/core/src/main/java/tc/oc/pgm/community/modules/FreezeMatchModule.java @@ -346,7 +346,7 @@ private void freeze(MatchPlayer freezee, Component senderName, boolean silent) { "moderation.freeze.broadcast.frozen", TextColor.GRAY, senderName, - freezee.getName(NameStyle.FANCY)), + freezee.getName(NameStyle.CONCISE)), match); } @@ -370,7 +370,7 @@ private void thaw(MatchPlayer freezee, Component senderName, boolean silent) { "moderation.freeze.broadcast.thaw", TextColor.GRAY, senderName, - freezee.getName(NameStyle.FANCY)), + freezee.getName(NameStyle.CONCISE)), match); } diff --git a/core/src/main/java/tc/oc/pgm/util/UsernameFormatUtils.java b/core/src/main/java/tc/oc/pgm/util/UsernameFormatUtils.java index 1adda9146d..be981bbd69 100644 --- a/core/src/main/java/tc/oc/pgm/util/UsernameFormatUtils.java +++ b/core/src/main/java/tc/oc/pgm/util/UsernameFormatUtils.java @@ -24,7 +24,7 @@ public class UsernameFormatUtils { public static Component formatStaffName(CommandSender sender, Match match) { if (sender != null && sender instanceof Player) { MatchPlayer matchPlayer = match.getPlayer((Player) sender); - if (matchPlayer != null) return matchPlayer.getName(NameStyle.FANCY); + if (matchPlayer != null) return matchPlayer.getName(NameStyle.CONCISE); } return CONSOLE_NAME; } diff --git a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java index 5db09953bc..97079cf227 100644 --- a/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java +++ b/util/src/main/java/tc/oc/pgm/util/text/types/PlayerComponent.java @@ -65,7 +65,7 @@ static Component of( builder = formatTeleport(formatColor(player), player.getName()); break; case CONCISE: - builder = formatConcise(player); + builder = formatConcise(player, false); break; case FANCY: builder = formatFancy(player); @@ -132,12 +132,12 @@ static TextComponent.Builder formatTab(Player player, @Nullable Player viewer) { return prefix.append(colorName); } - // Color, flair, and vanish status - static TextComponent.Builder formatConcise(Player player) { + // Color and flair with optional vanish + static TextComponent.Builder formatConcise(Player player, boolean vanish) { TextComponent.Builder prefix = getPrefixComponent(player); TextComponent.Builder colorName = formatColor(player); - if (isVanished(player)) { + if (isVanished(player) && vanish) { colorName = formatVanished(colorName); } @@ -146,7 +146,7 @@ static TextComponent.Builder formatConcise(Player player) { // Color, flair, vanished, and teleport static TextComponent.Builder formatVerbose(Player player) { - return formatTeleport(formatConcise(player), player.getName()); + return formatTeleport(formatConcise(player, true), player.getName()); } /** From b641c224c623fa89764ed83c18a974a472549362 Mon Sep 17 00:00:00 2001 From: mrcookieunderscore13 Date: Sun, 5 Jul 2020 21:51:07 -0400 Subject: [PATCH 10/11] Add next respawn flag option Signed-off-by: mrcookie --- core/src/main/java/tc/oc/pgm/flag/Flag.java | 14 ++++++++++++-- .../main/java/tc/oc/pgm/flag/FlagDefinition.java | 15 ++++++++++++++- core/src/main/java/tc/oc/pgm/flag/FlagParser.java | 13 ++++++++++++- .../main/java/tc/oc/pgm/flag/state/Carried.java | 12 ++++++++++++ util/src/main/i18n/templates/gamemode.properties | 4 ++++ 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/tc/oc/pgm/flag/Flag.java b/core/src/main/java/tc/oc/pgm/flag/Flag.java index 3e86bf2d5d..572ce3173d 100644 --- a/core/src/main/java/tc/oc/pgm/flag/Flag.java +++ b/core/src/main/java/tc/oc/pgm/flag/Flag.java @@ -88,6 +88,7 @@ public class Flag extends TouchableGoal implements Listener { private final Set completers; private BaseState state; private boolean transitioning; + private @Nullable Post predeterminedPost; protected Flag(Match match, FlagDefinition definition, ImmutableSet nets) throws ModuleLoadException { @@ -235,12 +236,16 @@ public boolean canDropAt(Location location) { } private int sequentialPostCounter = 1; - private Post returnPost; public Post getReturnPost(Post post) { if (post.isSpecifiedPost()) { return post; } + if (predeterminedPost != null) { + Post returnPost = predeterminedPost; + predeterminedPost = null; + return returnPost; + } if (definition.isSequential()) { sequentialPostCounter %= definition.getPosts().size(); return definition.getPosts().get(sequentialPostCounter++); @@ -250,10 +255,15 @@ public Post getReturnPost(Post post) { } public Location getReturnPoint(Post post) { - returnPost = getReturnPost(post); + Post returnPost = getReturnPost(post); return returnPost.getReturnPoint(this, this.bannerYawProvider).clone(); } + public String predeterminePost(Post post) { + predeterminedPost = getReturnPost(post); + return predeterminedPost.getPostName(); + } + public AngleProvider getBannerYawProvider() { return bannerYawProvider; } diff --git a/core/src/main/java/tc/oc/pgm/flag/FlagDefinition.java b/core/src/main/java/tc/oc/pgm/flag/FlagDefinition.java index 2ea4da10a3..6d33dd4d35 100644 --- a/core/src/main/java/tc/oc/pgm/flag/FlagDefinition.java +++ b/core/src/main/java/tc/oc/pgm/flag/FlagDefinition.java @@ -46,6 +46,9 @@ private static String makeName(@Nullable String name, @Nullable DyeColor color) private final boolean dropOnWater; // Flag can freeze water to drop on it private final boolean showBeam; private final boolean sequential; + private boolean + showRespawnOnPickup; // When a flag is picked up, if true, it will display where it will + // respawn. Will be set to false if a net defines a different respawn post. public FlagDefinition( @Nullable String id, @@ -69,7 +72,8 @@ public FlagDefinition( boolean showBeam, ProximityMetric flagProximityMetric, ProximityMetric netProximityMetric, - boolean sequential) { + boolean sequential, + boolean showRespawnOnPickup) { // We can't use the owner field in OwnedGoal because our owner // is a reference that can't be resolved until after parsing. @@ -98,6 +102,7 @@ public FlagDefinition( this.dropOnWater = dropOnWater; this.showBeam = showBeam; this.sequential = sequential; + this.showRespawnOnPickup = showRespawnOnPickup; } public @Nullable DyeColor getColor() { @@ -181,6 +186,14 @@ public boolean isSequential() { return sequential; } + public boolean willShowRespawnOnPickup() { + return showRespawnOnPickup; + } + + public void setShowRespawnOnPickup(boolean value) { + this.showRespawnOnPickup = value; + } + @SuppressWarnings("unchecked") @Override public Flag getGoal(Match match) { diff --git a/core/src/main/java/tc/oc/pgm/flag/FlagParser.java b/core/src/main/java/tc/oc/pgm/flag/FlagParser.java index ca1c15c943..f67765b251 100644 --- a/core/src/main/java/tc/oc/pgm/flag/FlagParser.java +++ b/core/src/main/java/tc/oc/pgm/flag/FlagParser.java @@ -158,6 +158,14 @@ public Net parseNet(Element el, @Nullable FlagDefinition parentFlag) throws Inva capturableFlags = ImmutableSet.copyOf(this.flags); } + if (capturableFlags.size() != 0 && returnPost != null) { + for (FlagDefinition flagDef : flags) { + if (capturableFlags.contains(flagDef)) { + flagDef.setShowRespawnOnPickup(false); + } + } + } + ImmutableSet returnableFlags; Node returnableNode = Node.fromAttr(el, "rescue", "return"); if (returnableNode != null) { @@ -211,6 +219,8 @@ public FlagDefinition parseFlag(Element el) throws InvalidXMLException { boolean multiCarrier = XMLUtils.parseBoolean(el.getAttribute("shared"), false); boolean sequential = XMLUtils.parseBoolean(el.getAttribute("sequential"), false); Component carryMessage = XMLUtils.parseFormattedText(el, "carry-message"); + boolean showRespawnOnPickup = + XMLUtils.parseBoolean(el.getAttribute("show-respawn-on-pickup"), true); boolean dropOnWater = XMLUtils.parseBoolean(el.getAttribute("drop-on-water"), true); boolean showBeam = XMLUtils.parseBoolean(el.getAttribute("beam"), true); ProximityMetric flagProximityMetric = @@ -260,7 +270,8 @@ public FlagDefinition parseFlag(Element el) throws InvalidXMLException { showBeam, flagProximityMetric, netProximityMetric, - sequential); + sequential, + showRespawnOnPickup); flags.add(flag); factory.getFeatures().addFeature(el, flag); diff --git a/core/src/main/java/tc/oc/pgm/flag/state/Carried.java b/core/src/main/java/tc/oc/pgm/flag/state/Carried.java index ccaab5d4df..28a5cfd6aa 100644 --- a/core/src/main/java/tc/oc/pgm/flag/state/Carried.java +++ b/core/src/main/java/tc/oc/pgm/flag/state/Carried.java @@ -59,6 +59,18 @@ public Carried(Flag flag, Post post, MatchPlayer carrier, Location dropLocation) this.carrier = carrier; this.dropLocations.add( dropLocation); // Need an initial dropLocation in case the carrier never generates ones + if (this.flag.getDefinition().willShowRespawnOnPickup()) { + String postName = this.flag.predeterminePost(this.post); + if (postName != null) { // The post needs a name in order to display the message. + this.flag + .getMatch() + .sendMessage( + TranslatableComponent.of( + "flag.willRespawn.next", + this.flag.getComponentName(), + TextComponent.of(postName, TextColor.AQUA))); + } + } } @Override diff --git a/util/src/main/i18n/templates/gamemode.properties b/util/src/main/i18n/templates/gamemode.properties index 31bc3e0906..cc66ce36b5 100644 --- a/util/src/main/i18n/templates/gamemode.properties +++ b/util/src/main/i18n/templates/gamemode.properties @@ -216,6 +216,10 @@ flag.willRespawn = {0} will respawn in {1} # {2} = duration flag.willRespawn.named = {0} will respawn at {1} in {2} +# {0} = flag name +# {1} = post name +flag.willRespawn.next = {0} will respawn next at {1} + # {0} = flag name flag.respawn = {0} has respawned From 6b380de70d25cd70ee151e9a1dd0eafb30507c15 Mon Sep 17 00:00:00 2001 From: Ashcon Partovi Date: Sun, 5 Jul 2020 19:28:38 -0700 Subject: [PATCH 11/11] Update translations Signed-off-by: Ashcon Partovi --- .../translations/command_de_DE.properties | 17 +- .../translations/command_en_GB.properties | 3 + .../translations/command_es_CL.properties | 4 + .../translations/command_es_ES.properties | 4 + .../translations/command_es_MX.properties | 4 + .../translations/command_fr_FR.properties | 2 + .../translations/command_ko_KR.properties | 5 +- .../translations/command_lol_US.properties | 3 + .../translations/command_no_NO.properties | 2 + .../translations/command_ro_RO.properties | 3 + .../translations/command_ru_RU.properties | 3 + .../translations/command_sv_SE.properties | 3 + .../i18n/translations/death_de_DE.properties | 34 +-- .../i18n/translations/death_ko_KR.properties | 212 +++++++++--------- .../i18n/translations/error_de_DE.properties | 14 +- .../i18n/translations/error_en_GB.properties | 12 +- .../i18n/translations/error_es_CL.properties | 12 +- .../i18n/translations/error_es_ES.properties | 12 +- .../i18n/translations/error_es_MX.properties | 12 +- .../i18n/translations/error_fr_FR.properties | 12 +- .../i18n/translations/error_ko_KR.properties | 14 +- .../i18n/translations/error_lol_US.properties | 12 +- .../i18n/translations/error_no_NO.properties | 10 +- .../i18n/translations/error_ro_RO.properties | 12 +- .../i18n/translations/error_ru_RU.properties | 12 +- .../i18n/translations/error_sv_SE.properties | 12 +- .../translations/gamemode_de_DE.properties | 48 +++- .../translations/gamemode_en_GB.properties | 16 ++ .../translations/gamemode_es_CL.properties | 32 +++ .../translations/gamemode_es_ES.properties | 32 +++ .../translations/gamemode_es_MX.properties | 32 +++ .../translations/gamemode_fr_FR.properties | 11 + .../translations/gamemode_ko_KR.properties | 29 +++ .../translations/gamemode_lol_US.properties | 16 ++ .../translations/gamemode_no_NO.properties | 11 + .../translations/gamemode_ro_RO.properties | 16 ++ .../translations/gamemode_ru_RU.properties | 16 ++ .../translations/gamemode_sv_SE.properties | 15 ++ .../i18n/translations/join_de_DE.properties | 8 +- .../i18n/translations/join_es_CL.properties | 3 + .../i18n/translations/join_es_ES.properties | 3 + .../i18n/translations/join_es_MX.properties | 3 + .../i18n/translations/join_ko_KR.properties | 4 +- .../i18n/translations/join_lol_US.properties | 2 +- .../i18n/translations/map_de_DE.properties | 30 +-- .../i18n/translations/map_en_GB.properties | 5 +- .../i18n/translations/map_es_CL.properties | 28 +++ .../i18n/translations/map_es_ES.properties | 28 +++ .../i18n/translations/map_es_MX.properties | 28 +++ .../i18n/translations/map_fr_FR.properties | 3 +- .../i18n/translations/map_ko_KR.properties | 18 +- .../i18n/translations/map_lol_US.properties | 5 +- .../i18n/translations/map_no_NO.properties | 1 + .../i18n/translations/map_ro_RO.properties | 9 +- .../i18n/translations/map_ru_RU.properties | 5 +- .../i18n/translations/map_sv_SE.properties | 4 +- .../i18n/translations/match_de_DE.properties | 53 +++-- .../i18n/translations/match_en_GB.properties | 12 + .../i18n/translations/match_es_CL.properties | 24 ++ .../i18n/translations/match_es_ES.properties | 24 ++ .../i18n/translations/match_es_MX.properties | 24 ++ .../i18n/translations/match_fr_FR.properties | 10 + .../i18n/translations/match_ko_KR.properties | 26 ++- .../i18n/translations/match_lol_US.properties | 12 + .../i18n/translations/match_no_NO.properties | 8 + .../i18n/translations/match_ro_RO.properties | 12 + .../i18n/translations/match_ru_RU.properties | 12 + .../i18n/translations/match_sv_SE.properties | 10 + .../i18n/translations/misc_de_DE.properties | 44 +++- .../i18n/translations/misc_en_GB.properties | 11 +- .../i18n/translations/misc_es_CL.properties | 46 +++- .../i18n/translations/misc_es_ES.properties | 46 +++- .../i18n/translations/misc_es_MX.properties | 42 ++++ .../i18n/translations/misc_fr_FR.properties | 10 +- .../i18n/translations/misc_ko_KR.properties | 12 +- .../i18n/translations/misc_lol_US.properties | 11 +- .../i18n/translations/misc_no_NO.properties | 6 + .../i18n/translations/misc_ro_RO.properties | 13 +- .../i18n/translations/misc_ru_RU.properties | 11 +- .../i18n/translations/misc_sv_SE.properties | 10 +- .../translations/moderation_de_DE.properties | 57 ++++- .../translations/moderation_en_GB.properties | 3 +- .../translations/moderation_es_CL.properties | 44 ++++ .../translations/moderation_es_ES.properties | 44 ++++ .../translations/moderation_es_MX.properties | 44 ++++ .../translations/moderation_fr_FR.properties | 2 +- .../translations/moderation_ko_KR.properties | 22 +- .../translations/moderation_lol_US.properties | 3 +- .../translations/moderation_no_NO.properties | 2 +- .../translations/moderation_ro_RO.properties | 3 +- .../translations/moderation_ru_RU.properties | 3 +- .../translations/moderation_sv_SE.properties | 2 +- .../i18n/translations/ui_de_DE.properties | 23 +- .../i18n/translations/ui_es_CL.properties | 8 +- .../i18n/translations/ui_es_ES.properties | 8 +- .../i18n/translations/ui_es_MX.properties | 4 + .../i18n/translations/ui_ko_KR.properties | 1 + .../i18n/translations/ui_no_NO.properties | 2 + .../i18n/translations/ui_ro_RO.properties | 2 +- 99 files changed, 1376 insertions(+), 296 deletions(-) diff --git a/util/src/main/i18n/translations/command_de_DE.properties b/util/src/main/i18n/translations/command_de_DE.properties index b13eb4ef8d..ba42ea2b7e 100644 --- a/util/src/main/i18n/translations/command_de_DE.properties +++ b/util/src/main/i18n/translations/command_de_DE.properties @@ -17,12 +17,12 @@ command.incorrectUsage = Verwendung\: {0} command.unknownError.user = Ein unbekannter Fehler ist aufgetreten. Bitte benachrichtige einen Administrator. -command.unknownError.staff = Ein unbekannter Fehler ist aufgetreten. Bitte ziehe die Serverkonsole zu Rate. +command.unknownError.staff = Ein unbekannter Fehler ist aufgetreten. Bitte sieh in die Server-Konsole. -command.onlyPlayers = Du musst ein Spieler sein, um diesen Befehl zu nutzen. +command.onlyPlayers = Du musst ein Spieler sein, um diesen Befehl zu benutzen. # {0} = module name (proper noun) -command.moduleNotFound = Das Modul "{0}" wird in diesem Spiel nicht benutzt +command.moduleNotFound = Das {0}-Modul wird in diesem Spiel nicht benutzt command.noTeams = Teams werden in diesem Spiel nicht benutzt @@ -36,14 +36,14 @@ command.rotationNotFound = Keine Rotationen stimmten mit der Abfrage überein. command.playerNotFound = Keine Spieler stimmten mit der Abfrage überein. -command.multiplePlayersFound = Mehrere Spieler wurden gefunden\! Benutze @ für einen genauen Treffer. +command.multiplePlayersFound = Mehrere Spieler gefunden\! Benutze @ für einen genauen Treffer. # {0} = duration (e.g. "10 seconds") -command.cooldown = Bitte warte {0} bevor du diesen Befehl wieder benutzt +command.cooldown = Bitte warte {0}, bevor du diesen Befehl wieder benutzt command.specifyPlayer = Bitte gib einen Spieler an -command.multipleOnlinePlayersFound = Mehrere Spieler wurden gefunden\! Benutze @ für einen genauen Treffer. +command.multipleOnlinePlayersFound = Mehrere Spieler gefunden\! Benutze @ für einen genauen Treffer. # {0} = player name command.playerNotOnline = {0} ist momentan nicht online @@ -74,7 +74,10 @@ command.list.teams = Teams\: command.list.participants = Teilnehmer # {0} = command name -command.message.noReply = Keine Nachricht zum Antworten gefunden, verwende {0} +command.message.noReply = Keine Nachricht zum Antworten gefunden, benutze {0} # {0} = player name command.message.blocked = {0} akzeptiert momentan keine Nachrichten. + +# {0} = map name +command.maps.hover = Klick, um {0} anzusehen diff --git a/util/src/main/i18n/translations/command_en_GB.properties b/util/src/main/i18n/translations/command_en_GB.properties index a99c1ddab1..b12a3d1575 100644 --- a/util/src/main/i18n/translations/command_en_GB.properties +++ b/util/src/main/i18n/translations/command_en_GB.properties @@ -78,3 +78,6 @@ command.message.noReply = Did not find a message to reply to, use {0} # {0} = player name command.message.blocked = {0} is not accepting messages at this time. + +# {0} = map name +command.maps.hover = Click to view {0} diff --git a/util/src/main/i18n/translations/command_es_CL.properties b/util/src/main/i18n/translations/command_es_CL.properties index 4c00ea204b..5751f65a48 100644 --- a/util/src/main/i18n/translations/command_es_CL.properties +++ b/util/src/main/i18n/translations/command_es_CL.properties @@ -74,6 +74,10 @@ command.list.teams = Equipos\: command.list.participants = Participantes # {0} = command name +command.message.noReply = No se ha encontrado un mensaje para responder, utiliza {0} # {0} = player name command.message.blocked = {0} no acepta mensajes en este momento. + +# {0} = map name +command.maps.hover = Clic para más info. de {0} diff --git a/util/src/main/i18n/translations/command_es_ES.properties b/util/src/main/i18n/translations/command_es_ES.properties index 4c00ea204b..5751f65a48 100644 --- a/util/src/main/i18n/translations/command_es_ES.properties +++ b/util/src/main/i18n/translations/command_es_ES.properties @@ -74,6 +74,10 @@ command.list.teams = Equipos\: command.list.participants = Participantes # {0} = command name +command.message.noReply = No se ha encontrado un mensaje para responder, utiliza {0} # {0} = player name command.message.blocked = {0} no acepta mensajes en este momento. + +# {0} = map name +command.maps.hover = Clic para más info. de {0} diff --git a/util/src/main/i18n/translations/command_es_MX.properties b/util/src/main/i18n/translations/command_es_MX.properties index f09cbae13f..dad94ca077 100644 --- a/util/src/main/i18n/translations/command_es_MX.properties +++ b/util/src/main/i18n/translations/command_es_MX.properties @@ -74,6 +74,10 @@ command.list.teams = Equipos\: command.list.participants = Participantes # {0} = command name +command.message.noReply = No se ha encontrado un mensaje para responder, utiliza {0} # {0} = player name command.message.blocked = {0} no acepta mensajes en este momento. + +# {0} = map name +command.maps.hover = Clic para más info. de {0} diff --git a/util/src/main/i18n/translations/command_fr_FR.properties b/util/src/main/i18n/translations/command_fr_FR.properties index 4fdb09d7fb..4daf7038a4 100644 --- a/util/src/main/i18n/translations/command_fr_FR.properties +++ b/util/src/main/i18n/translations/command_fr_FR.properties @@ -78,3 +78,5 @@ command.message.noReply = Aucun message auquel répondre n''a été trouvé, uti # {0} = player name command.message.blocked = {0} n''accepte actuellement pas de messages. + +# {0} = map name diff --git a/util/src/main/i18n/translations/command_ko_KR.properties b/util/src/main/i18n/translations/command_ko_KR.properties index 9e09ee7b01..66f139c4ff 100644 --- a/util/src/main/i18n/translations/command_ko_KR.properties +++ b/util/src/main/i18n/translations/command_ko_KR.properties @@ -1,5 +1,5 @@ # {0} = Invalid target input -command.notJoinedServer = {0}은(는) 아직 서버에 접속하지 않았습니다. +command.notJoinedServer = {0}은(는) 아직 서버에 접속한 적이 없습니다. # {0} = command argument (could be any string) command.numberExpected = ''{0}''에는 숫자만 입력하실 수 있습니다. @@ -78,3 +78,6 @@ command.message.noReply = 회신할 메시지를 찾지 못했습니다, {0}을( # {0} = player name command.message.blocked = {0}이(가) 현재 메시지를 수락 받고 있지 않습니다. + +# {0} = map name +command.maps.hover = {0}을(를) 클릭하여 보기 diff --git a/util/src/main/i18n/translations/command_lol_US.properties b/util/src/main/i18n/translations/command_lol_US.properties index 4572635b33..7719bdf2dd 100644 --- a/util/src/main/i18n/translations/command_lol_US.properties +++ b/util/src/main/i18n/translations/command_lol_US.properties @@ -78,3 +78,6 @@ command.message.noReply = Nu kat haz setn u meszagz so u cant really reply lol. # {0} = player name command.message.blocked = {0} doesnt wnna chat naw. + +# {0} = map name +command.maps.hover = punch 2 veiw {0} diff --git a/util/src/main/i18n/translations/command_no_NO.properties b/util/src/main/i18n/translations/command_no_NO.properties index 65db24fe40..94601d8d18 100644 --- a/util/src/main/i18n/translations/command_no_NO.properties +++ b/util/src/main/i18n/translations/command_no_NO.properties @@ -78,3 +78,5 @@ command.message.noReply = Fant ikke en melding å svare på, bruk {0} # {0} = player name command.message.blocked = {0} tar ikke imot meldinger for øyeblikket. + +# {0} = map name diff --git a/util/src/main/i18n/translations/command_ro_RO.properties b/util/src/main/i18n/translations/command_ro_RO.properties index 6d5b206a01..f6397ef613 100644 --- a/util/src/main/i18n/translations/command_ro_RO.properties +++ b/util/src/main/i18n/translations/command_ro_RO.properties @@ -78,3 +78,6 @@ command.message.noReply = Nu s-a găsit mesaj la care să răspunzi, folosește # {0} = player name command.message.blocked = {0} nu acceptă mesaje momentan. + +# {0} = map name +command.maps.hover = Fă clic pentru a vedea {0} diff --git a/util/src/main/i18n/translations/command_ru_RU.properties b/util/src/main/i18n/translations/command_ru_RU.properties index 8de1b689b1..39bacc8951 100644 --- a/util/src/main/i18n/translations/command_ru_RU.properties +++ b/util/src/main/i18n/translations/command_ru_RU.properties @@ -78,3 +78,6 @@ command.message.noReply = Не найдено сообщение для отве # {0} = player name command.message.blocked = У игрока {0} отключены личные сообщения. + +# {0} = map name +command.maps.hover = Нажмите для просмотра {0} diff --git a/util/src/main/i18n/translations/command_sv_SE.properties b/util/src/main/i18n/translations/command_sv_SE.properties index 6146c70927..ea92f4c0e3 100644 --- a/util/src/main/i18n/translations/command_sv_SE.properties +++ b/util/src/main/i18n/translations/command_sv_SE.properties @@ -78,3 +78,6 @@ command.message.noReply = Hittade inte ett meddelande att svara på, använd {0} # {0} = player name command.message.blocked = {0} accepterar inte meddelanden just nu. + +# {0} = map name +command.maps.hover = Klicka för att visa {0} diff --git a/util/src/main/i18n/translations/death_de_DE.properties b/util/src/main/i18n/translations/death_de_DE.properties index 97324a0dd8..e17d8ba71a 100644 --- a/util/src/main/i18n/translations/death_de_DE.properties +++ b/util/src/main/i18n/translations/death_de_DE.properties @@ -191,46 +191,46 @@ death.projectile.player.mob = {0} wurde durch {1}s {3} erschossen death.projectile.player.mob.entity = {0} wurde durch ein/e/en {2} von {1}s {3} erschossen # {0} = victim player name -death.explosive = {0} ist explodiert +death.explosive = {0} wurde in die Luft gesprengt # {0} = victim player name # {2} = entity name (e.g. "TNT Minecart") -death.explosive.entity = {0} ist durch ein/e/en {2} explodiert +death.explosive.entity = {0} wurde durch ein/e/en {2} in die Luft gesprengt # {0} = victim player name -death.explosive.entity.PrimedTnt = {0} ist durch TNT explodiert +death.explosive.entity.PrimedTnt = {0} wurde durch TNT in die Luft gesprengt # {0} = victim player name # {3} = mob name (e.g. "Wither") -death.explosive.mob = {0} ist durch ein/e/en {3} explodiert +death.explosive.mob = {0} wurde durch ein/e/en {3} in die Luft gesprengt # {0} = victim player name death.explosive.mob.Creeper = {0} hat versucht, einen Creeper zu umarmen # {0} = victim player name # {1} = killer player name -death.explosive.player = {0} wurde von {1} explodiert +death.explosive.player = {0} wurde von {1} in die Luft gesprengt # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.explosive.player.distance = {0} wurde von {1} aus {4} Blöcken explodiert +death.explosive.player.distance = {0} wurde von {1} aus {4} Blöcken in die Luft gesprengt # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Fireball") -death.explosive.player.entity = {0} ist durch {1}s {2} explodiert +death.explosive.player.entity = {0} wurde durch {1}s {2} in die Luft gesprengt # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Fireball") # {4} = distance in blocks -death.explosive.player.entity.distance = {0} ist durch {1}s {2} aus {4} Blöcken explodiert +death.explosive.player.entity.distance = {0} wurde durch {1}s {2} aus {4} Blöcken in die Luft gesprengt # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Creeper") -death.explosive.player.mob = {0} ist durch {1}s {3} explodiert +death.explosive.player.mob = {0} wurde durch {1}s {3} in die Luft gesprengt # {0} = victim player name # {1} = killer player name @@ -518,7 +518,7 @@ death.fall.ground.explosive = {0} wurde von einem hohen Ort heruntergesprengt death.fall.lava.explosive = {0} wurde in Lava hineingesprengt # {0} = victim player name -death.fall.void.explosive = {0} wurde aus der Welt hinausgesprengt +death.fall.void.explosive = {0} wurde aus der Welt gesprengt # {0} = victim player name # {1} = killer player name @@ -530,7 +530,7 @@ death.fall.lava.explosive.player = {0} wurde von {1} in Lava hineingesprengt # {0} = victim player name # {1} = killer player name -death.fall.void.explosive.player = {0} wurde von {1} aus der Welt hinausgesprengt +death.fall.void.explosive.player = {0} wurde von {1} aus der Welt gesprengt # {0} = victim player name # {1} = killer player name @@ -545,7 +545,7 @@ death.fall.lava.explosive.player.entity = {0} wurde durch {1}s {2} in Lava hinei # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT Minecart") -death.fall.void.explosive.player.entity = {0} wurde durch {1}s {2} aus der Welt hinausgesprengt +death.fall.void.explosive.player.entity = {0} wurde durch {1}s {2} aus der Welt gesprengt # {0} = victim player name # {1} = killer player name @@ -563,7 +563,7 @@ death.fall.lava.explosive.player.entity.distance = {0} wurde durch {1}s {2} aus # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.void.explosive.player.entity.distance = {0} wurde durch {1}s {2} aus {4} Blöcken aus der Welt hinausgesprengt +death.fall.void.explosive.player.entity.distance = {0} wurde durch {1}s {2} aus {4} Blöcken aus der Welt gesprengt # {0} = victim player name # {1} = killer player name @@ -578,7 +578,7 @@ death.fall.lava.explosive.player.mob = {0} wurde durch {1}s {3} in Lava hineinge # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Creeper") -death.fall.void.explosive.player.mob = {0} wurde durch {1}s {3} aus der Welt hinausgesprengt +death.fall.void.explosive.player.mob = {0} wurde durch {1}s {3} aus der Welt gesprengt # {0} = victim player name # {1} = killer player name @@ -652,13 +652,13 @@ death.fall.lava.spleef.explosive.player.mob = {0} wurde durch den/die/das {3} vo # {3} = mob name (e.g. "Creeper") death.fall.void.spleef.explosive.player.mob = {0} wurde durch {1}s {3} aus der Welt gespleeft -death.respawn.unconfirmed = Linksklick zum Wiederbeleben +death.respawn.unconfirmed = Linksklick, um wiederbelebt zu werden # {0} = number of seconds (e.g. "1.23" or "1") -death.respawn.unconfirmed.time = Linksklicke, um in {0}s wiederbelebt zu werden +death.respawn.unconfirmed.time = Linksklick, um in {0}s wiederbelebt zu werden # {0} = number of seconds (e.g. "1.23" or "1") -death.respawn.confirmed.time = Wiederbelebung in {0}s +death.respawn.confirmed.time = Wiederbeleben in {0}s death.respawn.confirmed.waiting = Du wirst so bald wie möglich wiederbelebt... diff --git a/util/src/main/i18n/translations/death_ko_KR.properties b/util/src/main/i18n/translations/death_ko_KR.properties index b0bd73efe1..d570f46e6a 100644 --- a/util/src/main/i18n/translations/death_ko_KR.properties +++ b/util/src/main/i18n/translations/death_ko_KR.properties @@ -6,10 +6,10 @@ death.predictedSuffix = (예측됨) death.cactus = {0}이(가) 선인장을 안으려 했습니다 # {0} = victim player name -death.drown = {0}이(가) 숨 쉬는 걸 깜박했습니다. +death.drown = {0}이(가) 숨 쉬는 걸 깜박했습니다 # {0} = victim player name -death.lightning = {0}이(가) 번개에 맞아 죽었습니다 +death.lightning = {0}이(가) 번개에 맞았습니다 # {0} = victim player name death.starve = {0}이(가) 아사했습니다 @@ -18,7 +18,7 @@ death.starve = {0}이(가) 아사했습니다 death.suffocate = {0}이(가) 질식했습니다 # {0} = victim player name -death.poison = {0}이(가) 독으로 사망하셨습니다 +death.poison = {0}이(가) 독으로 사망했습니다 # {0} = victim player name death.wither = {0}이(가) 사그라졌습니다 @@ -35,37 +35,37 @@ death.block = {0}이(가) {2} 블록으로 죽었습니다 # {0} = victim player name # {2} = entity name (e.g. "Skeleton") -death.entity = {0}이(가) {2}에 의해 죽었습니다 +death.entity = {0}이(가) {2}에게 죽었습니다 # {0} = victim player name # {3} = mob name (e.g. "Creeper") -death.mob = {0}이(가) {3}에 의해 죽었습니다 +death.mob = {0}이(가) {3}에게 죽었습니다 # {0} = victim player name # {1} = killer player name -death.player = {0}이(가) {1}에 의해 죽었습니다 +death.player = {0}이(가) {1}에게 죽었습니다 # {0} = victim player name # {1} = killer player name # {2} = block name (e.g. "Dispenser") -death.player.block = {0}이(가) {1}에게 {2} 블록으로 죽었습니다 +death.player.block = {0}이(가) {1}의 {2} 블록으로 죽었습니다 # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Skeleton") -death.player.entity = {0}이(가) {1}에게 {2}에 의해 죽었습니다 +death.player.entity = {0}이(가) {1}의 {2}에게 죽었습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Creeper") -death.player.mob = {0}이(가) {1}에게 {3}에 의해 죽었습니다 +death.player.mob = {0}이(가) {1}의 {3}에 의해 죽었습니다 # {0} = victim player name death.magic = {0}이(가) 마법으로 죽었습니다 # {0} = victim player name # {2} = potion name (e.g. "Instant Damage") -death.magic.potion = {0}이(가) {2}에게 독에 죽었습니다 +death.magic.potion = {0}이(가) {2}의 물약으로 죽었습니다 # {0} = victim player name # {3} = mob name (e.g. "Witch") @@ -83,7 +83,7 @@ death.magic.player = {0}이(가) {1}에게 마법으로 죽었습니다 # {0} = victim player name # {1} = killer player name # {2} = potion name (e.g. "Instant Damage") -death.magic.player.potion = {0}이(가) {1}에게 {2} 포션으로 죽었습니다 +death.magic.player.potion = {0}이(가) {1}에게 {2}의 물약으로 죽었습니다 # {0} = victim player name # {1} = killer player name @@ -119,7 +119,7 @@ death.melee.player = {0}이(가) {1}에게 주먹의 공포를 느꼈습니다. # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Stone Sword") -death.melee.player.item = {0}이(가) {1}에게 {2}에 의해 살해당했습니다 +death.melee.player.item = {0}이(가) {1}의 {2}에 의해 살해당했습니다 # {0} = victim player name # {3} = mob name (e.g. "Spider") @@ -133,7 +133,7 @@ death.melee.mob.item = {0}이(가) {3}의 {2}에 의해 죽었습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Creeper") -death.melee.player.mob = {0}이(가) {1}에게 {3}에 의해 죽었습니다 +death.melee.player.mob = {0}이(가) {1}의 {3}에 의해 죽었습니다 # {0} = victim player name # {1} = killer player name @@ -142,67 +142,67 @@ death.melee.player.mob = {0}이(가) {1}에게 {3}에 의해 죽었습니다 death.melee.player.mob.item = {0}이(가) {1}의 {3}의 {2}에 의해 죽었습니다 # {0} = victim player name -death.projectile = {0}이(가) 갈곳을 잃은 활에 맞아 죽었습니다 +death.projectile = {0}이(가) 갈곳을 잃은 화살에 맞았습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") -death.projectile.entity = {0}이(가) 갈 곳을 잃은 {2}에 맞아 죽었습니다 +death.projectile.entity = {0}이(가) 갈 곳을 잃은 {2}에 맞았습니다 # {0} = victim player name # {3} = mob name (e.g. "Skeleton") -death.projectile.mob = {0}이(가) {3}에 맞아 죽었습니다 +death.projectile.mob = {0}이(가) {3}에게 저격당했습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") # {3} = mob name (e.g. "Skeleton") -death.projectile.mob.entity = {0}이(가) {3}에게 {2}에 맞아 죽었습니다 +death.projectile.mob.entity = {0}이(가) {3}의 {2}에 저격당했습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.projectile.player.distance = {0}이(가) {4} 블록 떨어진 곳에서 {1}이(가) 쏜 화살에 맞아 죽었습니다 +death.projectile.player.distance = {0}이(가) {4} 블록 떨어진 곳에서 {1}에게 저격당했습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.projectile.player.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}에게 저격당했습니다 +death.projectile.player.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}에게 장거리 저격을 당했습니다 # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Wither") # {4} = distance in blocks -death.projectile.player.entity.distance = {0}이(가) {4}블록 떨어진 곳에서 {1}의 {2}에 맞아 죽었습니다 +death.projectile.player.entity.distance = {0}이(가) {4} 블록 떨어진 곳에서 {1}의 {2}에게 저격당했습니다 # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Wither") # {4} = distance in blocks -death.projectile.player.entity.distance.snipe = {0}이(가) {4}블록 떨어진 곳에서 {1}의 {2}에 맞아 죽었습니다 +death.projectile.player.entity.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}의 {2}에게 장거리 저격을 당했습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Skeleton") -death.projectile.player.mob = {0}이(가) {1}의 {3}에 맞아 죽었습니다 +death.projectile.player.mob = {0}이(가) {1}의 {3}에게 저격당했습니다 # {0} = victim player name # {1} = killer player name # {2} = projectile name (e.g. "Snowball") # {3} = mob name (e.g. "Skeleton") -death.projectile.player.mob.entity = {0}이(가) {1}에게 {3}가 쏜 {2}에 맞아 죽었습니다 +death.projectile.player.mob.entity = {0}이(가) {1}의 {3}이(가) 쏜 {2}에 저격당했습니다 # {0} = victim player name death.explosive = {0}이(가) 폭사했습니다 # {0} = victim player name # {2} = entity name (e.g. "TNT Minecart") -death.explosive.entity = {0}이(가) {2}에 의해 터졌습니다 +death.explosive.entity = {0}이(가) {2}에게 폭파당했습니다 # {0} = victim player name -death.explosive.entity.PrimedTnt = {0}이(가) TNT에 의해 폭사했습니다 +death.explosive.entity.PrimedTnt = {0}이(가) TNT에 폭파당했습니다 # {0} = victim player name # {3} = mob name (e.g. "Wither") -death.explosive.mob = {0}이(가) {3}에 의해 폭발하였습니다 +death.explosive.mob = {0}이(가) {3}에게 폭파당했습니다 # {0} = victim player name death.explosive.mob.Creeper = {0}이(가) 크리퍼를 안으려고 했습니다 @@ -214,7 +214,7 @@ death.explosive.player = {0}이(가) {1}에 의해 터졌습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.explosive.player.distance = {0}이(가) {4}블록 떨어진 곳에서 {1}에 의해 터졌습니다 +death.explosive.player.distance = {0}이(가) {4} 블록 떨어진 곳에서 {1}에게 폭파당했습니다 # {0} = victim player name # {1} = killer player name @@ -225,7 +225,7 @@ death.explosive.player.entity = {0}이(가) {1}의 {2}에 의해 폭발하였습 # {1} = killer player name # {2} = entity name (e.g. "Fireball") # {4} = distance in blocks -death.explosive.player.entity.distance = {0}이(가) {4}블록 떨어진 곳에서 {1}의 {2}에 의해 폭발하였습니다 +death.explosive.player.entity.distance = {0}이(가) {4} 블록 떨어진 곳에서 {1}의 {2}(으)로 폭파당했습니다 # {0} = victim player name # {1} = killer player name @@ -237,41 +237,41 @@ death.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 폭발하였습니 death.explosive.player.mob.Creeper = {0}이 {1}의 크리퍼를 안으려고 했습니다. # {0} = victim player name -death.fire = {0}이(가) 불에 타서 죽었습니다 +death.fire = {0}이(가) 화염에 휩싸였습니다 # {0} = victim player name # {2} = entity name (e.g. "Arrow") -death.fire.entity = {0}이(가) {2}에게 불꽃으로 바삭하게 구어졌습니다 +death.fire.entity = {0}이(가) {2}에게 불꽃으로 바삭하게 구워졌습니다 # {0} = victim player name # {2} = block name (e.g. "Lava") -death.fire.block = {0}이(가) {2}에 의해 바삭하게 구어졌습니다 +death.fire.block = {0}이(가) {2}에 의해 바삭하게 구워졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Blaze") -death.fire.mob = {0}이(가) 불타는 {3}에 의해 바삭하게 구어졌습니다 +death.fire.mob = {0}이(가) 불타는 {3}에 의해 바삭하게 구워졌습니다 # {0} = victim player name # {1} = killer player name -death.fire.player = {0}이(가) {1}에 의해 바삭하게 구어졌습니다 +death.fire.player = {0}이(가) {1}에 의해 바삭하게 구워졌습니다 # {0} = victim player name # {1} = killer player name # {2} = entity name (e.g. "Blaze") -death.fire.player.entity = {0}이(가) {1}에게 {2}에 의해 바삭하게 구어졌습니다 +death.fire.player.entity = {0}이(가) {1}에게 {2}에 의해 바삭하게 구워졌습니다 # {0} = victim player name # {1} = killer player name # {2} = block name (e.g. "Lava") -death.fire.player.block = {0}이(가) {1}에게 {2}에 의해 바삭하게 구어졌습니다 +death.fire.player.block = {0}이(가) {1}의 {2}에 의해 바삭하게 구워졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Blaze") -death.fire.player.mob = {0}이(가) {1}에게 불타는 {3}에 의해 바삭하게 구어졌습니다 +death.fire.player.mob = {0}이(가) {1}의 불타는 {3}에 의해 바삭하게 구워졌습니다 # {0} = victim player name -death.fall.ground.0 = {0}이(가) 땅에 떨어져 죽었습니다 +death.fall.ground.0 = {0}이(가) 철퍼덕 떨어졌습니다 # {0} = victim player name death.fall.ground.1 = {0}이(가) 낙사하였습니다. @@ -298,114 +298,114 @@ death.fall.ground.rare.0 = {0}이(가) 나는 방법을 잊어버렸습니다 death.fall.ground.rare.1 = {0}이(가) 막 중력을 배웠습니다. # {0} = victim player name -death.fall.ground.tripped = {0}이(가) 발을 헛디뎌 추락했습니다. +death.fall.ground.tripped = {0}이(가) 발을 헛디뎌 떨어졌습니다 # {0} = victim player name # {4} = distance in blocks death.fall.ground.orbit.distance = {0}이(가) {4} 블록 궤도로부터 떨어졌습니다 # {0} = victim player name -death.fall.lava = {0}이(가) 용암에 빠져 죽었습니다 +death.fall.lava = {0}이(가) 용암에 빠졌습니다 # {0} = victim player name death.fall.void = {0}이(가) 세계 밖으로 떨어졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Skeleton") -death.fall.ground.melee.mob = {0}이(가) {3}에 의해 의해 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.melee.mob = {0}이(가) {3}에 의해 의해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Skeleton") -death.fall.lava.melee.mob = {0}이(가) {3}에 의해 용암에 빠져 죽었습니다 +death.fall.lava.melee.mob = {0}이(가) {3}에 의해 용암에 빠졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Skeleton") -death.fall.void.melee.mob = {0}이(가) {3}에 의해 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.melee.mob = {0}이(가) {3}에 의해 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {1} = killer player name -death.fall.ground.melee.player = {0}이(가) {1}에 의해 높은 곳에서 밀쳐저 죽었습니다 +death.fall.ground.melee.player = {0}이(가) {1}의 주먹으로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name -death.fall.lava.melee.player = {0}이(가) {1}에 의해 용암에 빠져 죽었습니다 +death.fall.lava.melee.player = {0}이(가) {1}의 주먹으로 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name -death.fall.void.melee.player = {0}이(가) {1}에 의해 월드 밖으로 튕겨나가 죽었습니다 +death.fall.void.melee.player = {0}이(가) {1}에 주먹으로 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Stone Sword") -death.fall.ground.melee.player.item = {0}이(가) {1}에게 {2}에 의해 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.melee.player.item = {0}이(가) {1}의 {2}에 의해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Stone Sword") -death.fall.lava.melee.player.item = {0}이(가) {1}에게 {2}에 의해 용암에 빠져 죽었습니다 +death.fall.lava.melee.player.item = {0}이(가) {1}의 {2}에 의해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Stone Sword") -death.fall.void.melee.player.item = {0}이(가) {1}에게 {2}에 의해 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.melee.player.item = {0}이(가) {1}의 {2}에 의해 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Zombie") -death.fall.ground.melee.player.mob = {0}이(가) {1}에게 {3}에 의해 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.melee.player.mob = {0}이(가) {1}의 {3}에 의해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Zombie") -death.fall.lava.melee.player.mob = {0}이(가) {1}에게 {3}에 의해 용암에 빠져 죽었습니다 +death.fall.lava.melee.player.mob = {0}이(가) {1}의 {3}에 의해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Zombie") -death.fall.void.melee.player.mob = {0}이(가) {1}에게 {3}에 의해 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.melee.player.mob = {0}이(가) {1}의 {3}에 의해 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name -death.fall.ground.projectile = {0}이(가) 갈 곳 잃은 활에 맞아 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.projectile = {0}이(가) 갈 곳 잃은 화살에 맞아 높은 곳에서 떨어졌습니다 # {0} = victim player name -death.fall.lava.projectile = {0}이(가) 갈 곳 잃은 활에 맞아 용암에 빠져 죽었습니다 +death.fall.lava.projectile = {0}이(가) 갈 곳 잃은 화살에 맞아 용암에 빠졌습니다 # {0} = victim player name -death.fall.void.projectile = {0}이(가) 갈 곳 잃은 활에 맞아 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.projectile = {0}이(가) 갈 곳 잃은 화살에 맞아 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") -death.fall.ground.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 높은 곳에서 떨어졌습니다 # {0} = victim player name # {2} = projectile name (e.g. "Fireball") -death.fall.lava.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 용암에 빠져 죽었습니다 +death.fall.lava.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 용암에 빠졌습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") -death.fall.void.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.projectile.entity = {0}이(가) 갈 곳 잃은 {2}에 맞아 세계 밖으로 떨어졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Blaze") -death.fall.ground.projectile.mob = {0}이(가) {3}에 맞아 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.projectile.mob = {0}이(가) {3}에게 저격당해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Wither Skeleton") -death.fall.lava.projectile.mob = {0}이(가) {3}에 맞아 용암에 빠져 죽었습니다 +death.fall.lava.projectile.mob = {0}이(가) {3}에게 저격당해 용암에 빠졌습니다 # {0} = victim player name # {3} = mob name (e.g. "Skeleton") -death.fall.void.projectile.mob = {0}이(가) {3}에 맞아 세계 밖으로 떨어졌습니다 +death.fall.void.projectile.mob = {0}이(가) {3}에게 저격당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") # {3} = mob name (e.g. "Snowman") -death.fall.ground.projectile.mob.entity = {0}이(가) {3}에서 {2}에 맞아 낙사했습니다 +death.fall.ground.projectile.mob.entity = {0}이(가) {3}의 {2}에 저격당해 낙사했습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") # {3} = mob name (e.g. "Snowman") -death.fall.lava.projectile.mob.entity = {0}이(가) {2}에게 {3}에 맞아 용암으로 떨어졌습니다 +death.fall.lava.projectile.mob.entity = {0}이(가) {2}의 {3}에게 맞아 용암으로 떨어졌습니다 # {0} = victim player name # {2} = projectile name (e.g. "Snowball") @@ -415,118 +415,118 @@ death.fall.void.projectile.mob.entity = {0}이(가) {2}의 {3}에 맞아 세계 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.ground.projectile.player.distance = {0}이(가) {4}블록 거리에서 {1}에게 맞아 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.projectile.player.distance = {0}이(가) {4} 블록 거리에서 {1}에게 맞아 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.lava.projectile.player.distance = {0}이(가) {4}블록 거리에서 {1}에게 맞아 용암에 빠져 죽었습니다 +death.fall.lava.projectile.player.distance = {0}이(가) {4} 블록 거리에서 {1}에게 맞아 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.void.projectile.player.distance = {0}이(가) {4}블록 거리에서 {1}에게 맞아 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.projectile.player.distance = {0}이(가) {4} 블록 거리에서 {1}에게 저격당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.ground.projectile.player.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 화살에 저격당해 죽었습니다 +death.fall.ground.projectile.player.distance.snipe = {0}이(가) {4} 블럭 떨어진 곳에서 {1}에게 장거리 저격을 당해 낙사했습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.lava.projectile.player.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 화살에 저격당해 용암에 빠져 죽었습니다 +death.fall.lava.projectile.player.distance.snipe = {0}이(가) {4} 블럭 떨어진 곳에서 {1}에게 장거리 저격을 당해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {4} = distance in blocks -death.fall.void.projectile.player.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 화살에 저격당해 월드 밖으로 튕겨져나가 죽었습니다 +death.fall.void.projectile.player.distance.snipe = {0}이(가) {4} 블럭 떨어진 곳에서 {1}에게 장거리 저격을 당해 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.ground.projectile.player.entity.distance = {0}이(가) {4}블록 거리에서 {1}와 {2}에 맞아 높은 곳에서 떨어져 죽었습니다 +death.fall.ground.projectile.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 저격당해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.lava.projectile.player.entity.distance = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 {2}에 맞아 용암으로 떨어졌습니다 +death.fall.lava.projectile.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 저격당해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.void.projectile.player.entity.distance = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 {2}에 맞아 세계 밖으로 떨어졌습니다 +death.fall.void.projectile.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 저격당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.ground.projectile.player.entity.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 {2}에 저격당해 낙사했습니다 +death.fall.ground.projectile.player.entity.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}이(가) 쓴 {2}에 장거리 저격을 당해 세계 밖으로 튕겨져나갔습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.lava.projectile.player.entity.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 {2}에 저격당해 용암으로 떨어졌습니다 +death.fall.lava.projectile.player.entity.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}이(가) 쓴 {2}에 장거리 저격을 당해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = item name (e.g. "Bow") # {4} = distance in blocks -death.fall.void.projectile.player.entity.distance.snipe = {0}이(가) {1}이(가) {4}블록 거리에서 쏜 {2}에 저격당해 세계 밖으로 떨어졌습니다 +death.fall.void.projectile.player.entity.distance.snipe = {0}이(가) {4} 블록 떨어진 곳에서 {1}이(가) 쓴 {2}에 장거리 저격을 당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Skeleton") -death.fall.ground.projectile.player.mob = {0}이(가) {1}에게 {3}에 맞아 낙사했습니다 +death.fall.ground.projectile.player.mob = {0}이(가) {1}의 {3}에게 저격당해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Wither Skeleton") -death.fall.lava.projectile.player.mob = {0}이(가) {1}에게의 {3}에 맞아 용암으로 떨어졌습니다 +death.fall.lava.projectile.player.mob = {0}이(가) {1}의 {3}에게 저격당해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Skeleton") -death.fall.void.projectile.player.mob = {0}이(가) {1}에게 {3}에 맞아 세계 밖으로 떨어졌습니다 +death.fall.void.projectile.player.mob = {0}이(가) {1}의 {3}에게 저격당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = projectile name (e.g. "Fireball") # {3} = mob name (e.g. "Blaze") -death.fall.ground.projectile.player.mob.entity = {0}이(가) {1}에게 {3}이(가) 쏜 {2}에 맞아 낙사하였습니다. +death.fall.ground.projectile.player.mob.entity = {0}이(가) {1}의 {3}에게 {2}(으)로 저격당해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = projectile name (e.g. "Egg") # {3} = mob name (e.g. "Skeleton") -death.fall.lava.projectile.player.mob.entity = {0}이(가) {1}의 {3}이(가) 쏜 {2}에 맞아 용암에 빠져 죽었습니다 +death.fall.lava.projectile.player.mob.entity = {0}이(가) {1}의 {3}에게 {2}(으)로 저격당해 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = projectile name (e.g. "Fireball") # {3} = mob name (e.g. "Blaze") -death.fall.void.projectile.player.mob.entity = {0}이(가) {1}의 {3}이(가) 쏜 {2}에 맞아 세계 밖으로 추락하였습니다 +death.fall.void.projectile.player.mob.entity = {0}이(가) {1}의 {3}에게 {2}(으)로 저격당해 세계 밖으로 떨어졌습니다 # {0} = victim player name death.fall.ground.explosive = {0}이(가) 폭발에 의해 추락하였습니다. # {0} = victim player name -death.fall.lava.explosive = {0}이(가) 폭발으로 용암에 빠져 죽었습니다. +death.fall.lava.explosive = {0}이(가) 폭발으로 용암에 빠졌습니다. # {0} = victim player name death.fall.void.explosive = {0}이(가) 폭발으로 세계 밖으로 추락하였습니다. # {0} = victim player name # {1} = killer player name -death.fall.ground.explosive.player = {0}이(가) {1}에게 {2}에 의해 날라가 추락하였습니다. +death.fall.ground.explosive.player = {0}이(가) {2}에 의해 날아가 추락하였습니다 # {0} = victim player name # {1} = killer player name -death.fall.lava.explosive.player = {0}이(가) {1}에게 {2}에 의해 날라가 용암에 빠져 죽었습니다 +death.fall.lava.explosive.player = {0}이(가) {1}에 의해 날아가 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name @@ -535,12 +535,12 @@ death.fall.void.explosive.player = {0}이(가) {1}에 의해 폭발하여 세계 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT Minecart") -death.fall.ground.explosive.player.entity = {0}이(가) {1}에게 {2}에 의해 날라가 추락하였습니다 +death.fall.ground.explosive.player.entity = {0}이(가) {1}의 {2}에 의해 날아가 추락하였습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") -death.fall.lava.explosive.player.entity = {0}이(가) {1}에게 {2}에 의해 날라가 용암에 빠져 죽었습니다 +death.fall.lava.explosive.player.entity = {0}이(가) {1}의 {2}에 의해 날아가 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name @@ -551,19 +551,19 @@ death.fall.void.explosive.player.entity = {0}이(가) {1}의 {2}에 의해 폭 # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.ground.explosive.player.entity.distance = {0}이(가) {4}블록에서 {1}의 {2}에 의해 폭발하여 높은 곳에서 떨어졌습니다 +death.fall.ground.explosive.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 폭파당해 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "Grenade") # {4} = distance in blocks -death.fall.lava.explosive.player.entity.distance = {0}이(가) {4}블록에서 {1}의 {2}에 의해 폭팔하여 용암에 빠졌습니다 +death.fall.lava.explosive.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 폭파당해 용암으로 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.void.explosive.player.entity.distance = {0}이(가) {4}블록에서 {1}의 {2}에 의해 세계 밖으로 떨어졌습니다 +death.fall.void.explosive.player.entity.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 폭파당해 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name @@ -582,83 +582,83 @@ death.fall.void.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 폭팔 # {0} = victim player name # {1} = killer player name -death.fall.ground.spleef.player = {0}이(가) {1}에 의해 높은 곳에서 추락했습니다. +death.fall.ground.spleef.player = {0}이(가) {1}에 의해 강제로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name -death.fall.lava.spleef.player = {0}이(가) {1}에 의해 용암 속으로 추락했습니다. +death.fall.lava.spleef.player = {0}이(가) {1}에 의해 강제로 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name -death.fall.void.spleef.player = {0}이(가) {1}에 의해 세상 밖으로 추락했습니다. +death.fall.void.spleef.player = {0}이(가) {1}에 의해 강제로 세계 밖으로 떨어졌습니다 # {0} = victim player name # {2} = weapon -death.fall.ground.spleef.explosive = {0}이(가) {2}에 의해 높은 곳에서 추락했습니다 +death.fall.ground.spleef.explosive = {0}이(가) {2}(으)로 인해 강제로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {2} = weapon -death.fall.lava.spleef.explosive = {0}이(가) {2}에 의해 용암 속으로 추락했습니다 +death.fall.lava.spleef.explosive = {0}이(가) {2}(으)로 인해 강제로 용암에 빠졌습니다 # {0} = victim player name # {2} = weapon -death.fall.void.spleef.explosive = {0}이(가) {2}에 의해 세상 밖으로 추락했습니다 +death.fall.void.spleef.explosive = {0}이(가) {2}(으)로 인해 강제로 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") -death.fall.ground.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 높은 곳에서 추락했습니다 +death.fall.ground.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 강제로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") -death.fall.lava.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 용암 속으로 추락했습니다 +death.fall.lava.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 강제로 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") -death.fall.void.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 세상 밖으로 추락했습니다 +death.fall.void.spleef.explosive.player = {0}이(가) {1}의 {2}에 의해 강제로 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.ground.spleef.explosive.player.distance = {0}이(가) {1}에게 {4}블록 거리에서 날라온 {2}에 맞아 떨어져 죽었습니다 +death.fall.ground.spleef.explosive.player.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 의해 강제로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.lava.spleef.explosive.player.distance = {0}이(가) {1}에게 {4}블록 거리에서 날라온 {2}에 맞아 용암에 빠져 죽었습니다 +death.fall.lava.spleef.explosive.player.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 의해 강제로 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") # {4} = distance in blocks -death.fall.void.spleef.explosive.player.distance = {0}이(가) {1}에게 {4}블록 거리에서 날라온 {2}에 맞아 월드 밖으로 튕겨났습니다 +death.fall.void.spleef.explosive.player.distance = {0}이(가) {4} 블록 거리에서 {1}의 {2}에 의해 강제로 세계 밖으로 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {2} = explosive name (e.g. "TNT") -death.fall.ground.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 높은 곳에서 추락했습니다 +death.fall.ground.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 강제로 높은 곳에서 떨어졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Zombie") -death.fall.lava.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 용암 속으로 추락했습니다 +death.fall.lava.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 강제로 용암에 빠졌습니다 # {0} = victim player name # {1} = killer player name # {3} = mob name (e.g. "Creeper") -death.fall.void.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 세상 밖으로 추락했습니다 +death.fall.void.spleef.explosive.player.mob = {0}이(가) {1}의 {3}에 의해 강제로 세계 밖으로 떨어졌습니다 -death.respawn.unconfirmed = 왼쪽 클릭으로 리스폰 +death.respawn.unconfirmed = 좌클릭으로 리스폰 # {0} = number of seconds (e.g. "1.23" or "1") -death.respawn.unconfirmed.time = 왼쪽 클릭시 {0}초 뒤에 리스폰됩니다. +death.respawn.unconfirmed.time = 좌클릭시 {0}초 뒤에 리스폰됩니다 # {0} = number of seconds (e.g. "1.23" or "1") -death.respawn.confirmed.time = {0}초 뒤에 리스폰됩니다. +death.respawn.confirmed.time = {0}초 뒤에 리스폰됩니다 death.respawn.confirmed.waiting = 당신은 가능한 빨리 리스폰 될 것 입니다. diff --git a/util/src/main/i18n/translations/error_de_DE.properties b/util/src/main/i18n/translations/error_de_DE.properties index 52a435e280..a444350234 100644 --- a/util/src/main/i18n/translations/error_de_DE.properties +++ b/util/src/main/i18n/translations/error_de_DE.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") -error.invalidFormat = Ungültiges Format\: ''{0}'' ist keine {1} +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") +error.invalidFormat = Ungültiges Format\: ''{0}'' ist kein/e {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Ungültiger Wert\: {0} ist nicht zwischen {1} + +# {0} = arbitrary user input error.suggestionSuffix = (meintest du ''{0}''?) -error.unknown = Ein unbekannter Fehler ist aufgetreten, bitte sieh in die Konsole für Details. +error.unknown = Ein unbekannter Fehler ist aufgetreten, bitte sieh in die Konsole für Details diff --git a/util/src/main/i18n/translations/error_en_GB.properties b/util/src/main/i18n/translations/error_en_GB.properties index db86d6e260..da62dfa906 100644 --- a/util/src/main/i18n/translations/error_en_GB.properties +++ b/util/src/main/i18n/translations/error_en_GB.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Invalid format\: ''{0}'' is not a {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Invalid value\: {0} is not between {1} + +# {0} = arbitrary user input error.suggestionSuffix = (did you mean ''{0}''?) -error.unknown = An unknown error has occurred, please see console for details. +error.unknown = An unknown error has occurred, please see console for details diff --git a/util/src/main/i18n/translations/error_es_CL.properties b/util/src/main/i18n/translations/error_es_CL.properties index ff46b6b8cf..8e8134d5f2 100644 --- a/util/src/main/i18n/translations/error_es_CL.properties +++ b/util/src/main/i18n/translations/error_es_CL.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Formato inválido\: ''{0}'' no es un {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Valor inválido\: {0} no está entre {1} + +# {0} = arbitrary user input error.suggestionSuffix = (¿Quisiste decir ''{0}''?) -error.unknown = Ha ocurrido un error inesperado, por favor lea la consola para más detalles. +error.unknown = Se ha producido un error desconocido. Por favor, revisa la consola para más detalles diff --git a/util/src/main/i18n/translations/error_es_ES.properties b/util/src/main/i18n/translations/error_es_ES.properties index ff46b6b8cf..8e8134d5f2 100644 --- a/util/src/main/i18n/translations/error_es_ES.properties +++ b/util/src/main/i18n/translations/error_es_ES.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Formato inválido\: ''{0}'' no es un {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Valor inválido\: {0} no está entre {1} + +# {0} = arbitrary user input error.suggestionSuffix = (¿Quisiste decir ''{0}''?) -error.unknown = Ha ocurrido un error inesperado, por favor lea la consola para más detalles. +error.unknown = Se ha producido un error desconocido. Por favor, revisa la consola para más detalles diff --git a/util/src/main/i18n/translations/error_es_MX.properties b/util/src/main/i18n/translations/error_es_MX.properties index ff46b6b8cf..8e8134d5f2 100644 --- a/util/src/main/i18n/translations/error_es_MX.properties +++ b/util/src/main/i18n/translations/error_es_MX.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Formato inválido\: ''{0}'' no es un {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Valor inválido\: {0} no está entre {1} + +# {0} = arbitrary user input error.suggestionSuffix = (¿Quisiste decir ''{0}''?) -error.unknown = Ha ocurrido un error inesperado, por favor lea la consola para más detalles. +error.unknown = Se ha producido un error desconocido. Por favor, revisa la consola para más detalles diff --git a/util/src/main/i18n/translations/error_fr_FR.properties b/util/src/main/i18n/translations/error_fr_FR.properties index 44a30ed380..4bb324115d 100644 --- a/util/src/main/i18n/translations/error_fr_FR.properties +++ b/util/src/main/i18n/translations/error_fr_FR.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Format non valide \: ''{0}'' n''est pas un(e) {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Valeur non valide \: {0} n''est pas entre {1} + +# {0} = arbitrary user input error.suggestionSuffix = (voulez-vous dire ''{0}'' ?) -error.unknown = Une erreur inconnue s'est produite, veuillez consulter la console pour plus de détails. +error.unknown = Une erreur inconnue est survenue, veuillez consulter la console pour plus de détails diff --git a/util/src/main/i18n/translations/error_ko_KR.properties b/util/src/main/i18n/translations/error_ko_KR.properties index 6480b07529..2bcac75d31 100644 --- a/util/src/main/i18n/translations/error_ko_KR.properties +++ b/util/src/main/i18n/translations/error_ko_KR.properties @@ -1,8 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") +error.invalidFormat = 잘못된 포맷\: ''{0}''은(는) {1}이(가) 아닙니다 -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") +error.outOfRange = 잘못된 값\: {0}이(가) {1} 사이에 있지 않습니다 + +# {0} = arbitrary user input error.suggestionSuffix = (''{0}''을(를) 입력하실려고 했습니까?) -error.unknown = 알 수 없는 오류가 발생했습니다. 자세한 내용은 콘솔을 참고하세요. +error.unknown = 알 수 없는 오류가 발생했습니다. 자세한 내용은 콘솔을 참고하세요 diff --git a/util/src/main/i18n/translations/error_lol_US.properties b/util/src/main/i18n/translations/error_lol_US.properties index 800148ef31..41599fa813 100644 --- a/util/src/main/i18n/translations/error_lol_US.properties +++ b/util/src/main/i18n/translations/error_lol_US.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Ivwalid formwat\: ''{0}'' ain''t a {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = not valwid\: {0} nawt in da middle ov {1} + +# {0} = arbitrary user input error.suggestionSuffix = (u mean ''{0}'', aight?) -error.unknown = Smth has xploded, plz chek your catnsole 4 moar detail. +error.unknown = a UNKNOWN errar haz occurd, pls chek the conswol 4 detialz diff --git a/util/src/main/i18n/translations/error_no_NO.properties b/util/src/main/i18n/translations/error_no_NO.properties index 9aa8ca0ca7..cc1e294fa1 100644 --- a/util/src/main/i18n/translations/error_no_NO.properties +++ b/util/src/main/i18n/translations/error_no_NO.properties @@ -1,6 +1,8 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") + +# {0} = arbitrary user input diff --git a/util/src/main/i18n/translations/error_ro_RO.properties b/util/src/main/i18n/translations/error_ro_RO.properties index 027bfe05e0..5116970c59 100644 --- a/util/src/main/i18n/translations/error_ro_RO.properties +++ b/util/src/main/i18n/translations/error_ro_RO.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Format nevalid\: ''{0}'' nu este {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Valoare nevalidă\: {0} nu este între {1} + +# {0} = arbitrary user input error.suggestionSuffix = (ai vrut să scrii ''{0}''?) -error.unknown = A apărut o eroare necunoscută, vă rugăm să consultaţi consola pentru detalii. +error.unknown = A apărut o eroare necunoscută, te rugăm să consulți consola pentru detalii diff --git a/util/src/main/i18n/translations/error_ru_RU.properties b/util/src/main/i18n/translations/error_ru_RU.properties index 7dc4a15898..c95d33577c 100644 --- a/util/src/main/i18n/translations/error_ru_RU.properties +++ b/util/src/main/i18n/translations/error_ru_RU.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Неверное форматирование\: ''{0}'' не является {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Неверное значение\: {0} не входит в промежуток чисел {1} + +# {0} = arbitrary user input error.suggestionSuffix = (возможно, вы имели в виду ''{0}''?) -error.unknown = Произошла неизвестная ошибка, проверьте консоль. +error.unknown = Произошла неизвестная ошибка, проверьте консоль diff --git a/util/src/main/i18n/translations/error_sv_SE.properties b/util/src/main/i18n/translations/error_sv_SE.properties index 3ebbe2fd08..0495d564d9 100644 --- a/util/src/main/i18n/translations/error_sv_SE.properties +++ b/util/src/main/i18n/translations/error_sv_SE.properties @@ -1,10 +1,12 @@ -# {0} - arbitrary user input -# {1} - a value type (see translations "type.*", e.g. "duration", "whole number") +# {0} = arbitrary user input +# {1} = a value type (see translations "type.*", e.g. "duration", "whole number") error.invalidFormat = Ogiltigt format\: ''{0}'' är inte en {1} -# {0} - numeric value -# {1} - numeric range (e.g. "[1, 5)") +# {0} = numeric value +# {1} = numeric range (e.g. "[1, 5)") error.outOfRange = Ogiltigt värde\: {0} är inte mellan {1} + +# {0} = arbitrary user input error.suggestionSuffix = (menade du ''{0}''?) -error.unknown = Ett okänt fel uppstod, se konsolen för detaljer. +error.unknown = Ett okänt fel uppstod, se konsolen för detaljer diff --git a/util/src/main/i18n/translations/gamemode_de_DE.properties b/util/src/main/i18n/translations/gamemode_de_DE.properties index aacc0bd4da..8c79b7a88e 100644 --- a/util/src/main/i18n/translations/gamemode_de_DE.properties +++ b/util/src/main/i18n/translations/gamemode_de_DE.properties @@ -18,6 +18,7 @@ gamemode.blitz.name = Blitz gamemode.rage.name = Rage +gamemode.scorebox.name = Scorebox gamemode.arcade.name = Arcade @@ -45,6 +46,7 @@ gamemode.blitz.acronym = Blitz gamemode.rage.acronym = Rage +gamemode.scorebox.acronym = Scorebox gamemode.arcade.acronym = Arcade @@ -56,10 +58,13 @@ objective.name.monument = Monument objective.name.antenna = Antenne +objective.name.orb = Sphäre +objective.name.inhibitor = Hemmer objective.name.tower = Turm +objective.name.base = Basis objective.name.ship = Schiff @@ -83,33 +88,39 @@ objective.credit.many = viele, viele Spieler objective.credit.unknown = unbekannte Kräfte # {0} = objective name +objective.credit.future = Du wirst erwähnt, wenn {0} abgeschlossen ist # TODO: Replace with objective.damageOwn, etc. destroyable.damageOwn = Du kannst dein eigenes Zielobjekt nicht beschädigen. -destroyable.repairOther = Du kannst das Zielobjekt der Gegner nicht reparieren. +destroyable.repairOther = Du kannst ein gegnerisches Zielobjekt nicht reparieren. destroyable.repairDisabled = Dieses Zielobjekt kann nicht repariert werden. core.damageOwn = Du kannst deinen eigenen Core nicht beschädigen. # {0} = objective name (e.g. "Left Core") +objective.damageOwn = Du kannst dein/e/en eigene/s/n {0} nicht beschädigen # {0} = objective name +objective.repairOther = Du kannst den/die/das gegnerische/n {0} nicht reparieren # {0} = objective name +objective.repairDisabled = Du darfst dein/e/en eigene/s/n {0} nicht reparieren # {0} = player name # {1} = monument name (e.g. "Monument A") # {2} = team name +destroyable.complete.owned = {1} von {2} wurde von {0} zerstört # {0} = player name # {1} = monument name +destroyable.complete = {1} wurde von {0} zerstört # {0} = player name # {1} = monument name # {2} = team name -destroyable.touch.owned.player = {1} von {2} durch {0} beschädigt +destroyable.touch.owned.player = {1} von {2} von {0} beschädigt # {1} = monument name # {2} = team name @@ -121,18 +132,22 @@ destroyable.touch.owned = {1} von {2} wurde beschädigt # {0} = player name # {1} = monument name -destroyable.touch.player = {1} durch {0} beschädigt +destroyable.touch.player = {1} von {0} beschädigt # {1} = monument name +destroyable.touch.you = Du hast {1} beschädigt # {1} = monument name +destroyable.touch = {1} wurde beschädigt # {0} = player name # {1} = core name (e.g. "Right Core") # {2} = team name +core.complete.owned = {1} von {2} wurde von {0} zum Auslaufen gebracht # {0} = player name # {1} = core name +core.complete = {1} wurde von {0} zum Auslaufen gebracht # {0} = player name # {1} = wool name (e.g "Red Wool") @@ -146,23 +161,25 @@ wool.complete = {0} hat {1} platziert # {0} = player name # {1} = wool name # {2} = team name +wool.touch.owned.player = {1} wurde von {0} für {2} aufgehoben # {0} = player name # {1} = wool name +wool.touch.player = {1} wurde von {0} aufgehoben # {1} = wool name # {2} = team name -wool.touch.owned.you = Du hast {1} für {2} aufgenommen +wool.touch.owned.you = Du hast {1} für {2} aufgehoben # {1} = wool name wool.touch.you = Du hast {1} aufgehoben # {0} = team name # {1} = wool name -wool.wrongTeam = Nur ein Spieler von {0} kann {1} hier platzieren +wool.wrongTeam = Nur ein Spieler von {0} darf {1} hier platzieren # {0} = wool name -wool.wrongWool = Nur {0} kann hier platziert werden +wool.wrongWool = Nur {0} darf hier platziert werden # {0} = wool name wool.craftingDisabled = Du darfst {0} nicht herstellen @@ -192,6 +209,15 @@ flag.return = {0} wurde zurückgebracht # {0} = flag name # {1} = duration (e.g. "5 seconds") +flag.willRespawn = {0} wird in {1} wieder auftauchen + +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} wird in {2} bei {1} wieder auftauchen + +# {0} = flag name +# {1} = post name # {0} = flag name flag.respawn = {0} ist wieder aufgetaucht @@ -213,10 +239,18 @@ flag.cannotBreakBlockUnder = Der Block unter der Flagge kann nicht zerstört wer # {0} = player name # {1} = number of points (e.g. "3 points") # {2} = team name -scorebox.scored = {0} erzielte {1} für das {2} +scorebox.scored = {0} erzielte {1} für {2} # {0} = number of player lives left (e.g. "2 lives") blitz.livesRemaining = Du hast noch {0} übrig. # {0} = "Blitz" blitz.joinDenied = Du kannst einem laufenden {0}-Spiel nicht beitreten. + +victoryCondition.blitz = meiste Überlebende + +victoryCondition.goals = meiste Zielobjekte + +victoryCondition.tie = niemand gewinnt + +victoryCondition.score = höchste Punktzahl diff --git a/util/src/main/i18n/translations/gamemode_en_GB.properties b/util/src/main/i18n/translations/gamemode_en_GB.properties index b59392c084..7f58dfe9f9 100644 --- a/util/src/main/i18n/translations/gamemode_en_GB.properties +++ b/util/src/main/i18n/translations/gamemode_en_GB.properties @@ -211,6 +211,14 @@ flag.return = {0} has been returned # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} will respawn in {1} +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} will respawn at {1} in {2} + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} has respawned @@ -238,3 +246,11 @@ blitz.livesRemaining = You have {0} remaining. # {0} = "Blitz" blitz.joinDenied = You may not join during a {0} match. + +victoryCondition.blitz = most survivors + +victoryCondition.goals = most objectives + +victoryCondition.tie = nobody wins + +victoryCondition.score = highest score diff --git a/util/src/main/i18n/translations/gamemode_es_CL.properties b/util/src/main/i18n/translations/gamemode_es_CL.properties index f4cada2334..2520d75f49 100644 --- a/util/src/main/i18n/translations/gamemode_es_CL.properties +++ b/util/src/main/i18n/translations/gamemode_es_CL.properties @@ -1,22 +1,28 @@ gamemode.generic.name = Partida +gamemode.dtc.name = Destruye el Core +gamemode.dtm.name = Destruye el Monumento gamemode.ctw.name = Captura la Lana gamemode.ctf.name = Captura la Bandera +gamemode.tdm.name = Deathmatch por equipos gamemode.ad.name = Atacar/Defender +gamemode.koth.name = King of the Hill gamemode.blitz.name = Blitz gamemode.rage.name = Rage +gamemode.scorebox.name = Scorebox gamemode.arcade.name = Arcade +gamemode.ffa.name = Todos-contra-todos gamemode.mixed.name = Mixto @@ -40,6 +46,7 @@ gamemode.blitz.acronym = Blitz gamemode.rage.acronym = Rage +gamemode.scorebox.acronym = Scorebox gamemode.arcade.acronym = Arcade @@ -61,15 +68,18 @@ objective.name.base = Base objective.name.ship = Nave +objective.name.core = Core objective.name.reactor = Reactor +objective.name.engine = Motor # {0} = objective mode (e.g. "Gold Core Mode") # {1} = time remaining (e.g. "30 seconds") objective.modeCountdown = {0} en {1} # Don't translate, keep as-is +objective.credit.percentage = {0} ({1}%) objective.credit.etc = otros @@ -133,9 +143,11 @@ destroyable.touch = El {1} ha sido dañado # {0} = player name # {1} = core name (e.g. "Right Core") # {2} = team name +core.complete.owned = El {1} de {2} fue leakeado por {0} # {0} = player name # {1} = core name +core.complete = El {1} fue leakeado por {0} # {0} = player name # {1} = wool name (e.g "Red Wool") @@ -153,6 +165,7 @@ wool.touch.owned.player = {1} fue recogido por {0} para {2} # {0} = player name # {1} = wool name +wool.touch.player = {1} fue recogida por {0} # {1} = wool name # {2} = team name @@ -163,6 +176,7 @@ wool.touch.you = Has recogido {1} # {0} = team name # {1} = wool name +wool.wrongTeam = Sólo un miembro de {0} puede colocar {1} allí # {0} = wool name wool.wrongWool = Sólo está permitido colocar {0} aquí @@ -195,6 +209,15 @@ flag.return = {0} ha sido devuelta # {0} = flag name # {1} = duration (e.g. "5 seconds") +flag.willRespawn = {0} reaparecerá en {1} + +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} reaparecerá en {1} en {2} + +# {0} = flag name +# {1} = post name # {0} = flag name flag.respawn = {0} ha reaparecido @@ -216,9 +239,18 @@ flag.cannotBreakBlockUnder = El bloque debajo de la bandera no puede romperse # {0} = player name # {1} = number of points (e.g. "3 points") # {2} = team name +scorebox.scored = {0} anotó {1} para {2} # {0} = number of player lives left (e.g. "2 lives") blitz.livesRemaining = Tienes {0} restante(s). # {0} = "Blitz" blitz.joinDenied = No puedes unirte durante una partida de {0}. + +victoryCondition.blitz = mayor cantidad de sobrevivientes + +victoryCondition.goals = mayor cantidad de objetivos + +victoryCondition.tie = nadie gana + +victoryCondition.score = mayor puntuación diff --git a/util/src/main/i18n/translations/gamemode_es_ES.properties b/util/src/main/i18n/translations/gamemode_es_ES.properties index f4cada2334..2520d75f49 100644 --- a/util/src/main/i18n/translations/gamemode_es_ES.properties +++ b/util/src/main/i18n/translations/gamemode_es_ES.properties @@ -1,22 +1,28 @@ gamemode.generic.name = Partida +gamemode.dtc.name = Destruye el Core +gamemode.dtm.name = Destruye el Monumento gamemode.ctw.name = Captura la Lana gamemode.ctf.name = Captura la Bandera +gamemode.tdm.name = Deathmatch por equipos gamemode.ad.name = Atacar/Defender +gamemode.koth.name = King of the Hill gamemode.blitz.name = Blitz gamemode.rage.name = Rage +gamemode.scorebox.name = Scorebox gamemode.arcade.name = Arcade +gamemode.ffa.name = Todos-contra-todos gamemode.mixed.name = Mixto @@ -40,6 +46,7 @@ gamemode.blitz.acronym = Blitz gamemode.rage.acronym = Rage +gamemode.scorebox.acronym = Scorebox gamemode.arcade.acronym = Arcade @@ -61,15 +68,18 @@ objective.name.base = Base objective.name.ship = Nave +objective.name.core = Core objective.name.reactor = Reactor +objective.name.engine = Motor # {0} = objective mode (e.g. "Gold Core Mode") # {1} = time remaining (e.g. "30 seconds") objective.modeCountdown = {0} en {1} # Don't translate, keep as-is +objective.credit.percentage = {0} ({1}%) objective.credit.etc = otros @@ -133,9 +143,11 @@ destroyable.touch = El {1} ha sido dañado # {0} = player name # {1} = core name (e.g. "Right Core") # {2} = team name +core.complete.owned = El {1} de {2} fue leakeado por {0} # {0} = player name # {1} = core name +core.complete = El {1} fue leakeado por {0} # {0} = player name # {1} = wool name (e.g "Red Wool") @@ -153,6 +165,7 @@ wool.touch.owned.player = {1} fue recogido por {0} para {2} # {0} = player name # {1} = wool name +wool.touch.player = {1} fue recogida por {0} # {1} = wool name # {2} = team name @@ -163,6 +176,7 @@ wool.touch.you = Has recogido {1} # {0} = team name # {1} = wool name +wool.wrongTeam = Sólo un miembro de {0} puede colocar {1} allí # {0} = wool name wool.wrongWool = Sólo está permitido colocar {0} aquí @@ -195,6 +209,15 @@ flag.return = {0} ha sido devuelta # {0} = flag name # {1} = duration (e.g. "5 seconds") +flag.willRespawn = {0} reaparecerá en {1} + +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} reaparecerá en {1} en {2} + +# {0} = flag name +# {1} = post name # {0} = flag name flag.respawn = {0} ha reaparecido @@ -216,9 +239,18 @@ flag.cannotBreakBlockUnder = El bloque debajo de la bandera no puede romperse # {0} = player name # {1} = number of points (e.g. "3 points") # {2} = team name +scorebox.scored = {0} anotó {1} para {2} # {0} = number of player lives left (e.g. "2 lives") blitz.livesRemaining = Tienes {0} restante(s). # {0} = "Blitz" blitz.joinDenied = No puedes unirte durante una partida de {0}. + +victoryCondition.blitz = mayor cantidad de sobrevivientes + +victoryCondition.goals = mayor cantidad de objetivos + +victoryCondition.tie = nadie gana + +victoryCondition.score = mayor puntuación diff --git a/util/src/main/i18n/translations/gamemode_es_MX.properties b/util/src/main/i18n/translations/gamemode_es_MX.properties index f4cada2334..2520d75f49 100644 --- a/util/src/main/i18n/translations/gamemode_es_MX.properties +++ b/util/src/main/i18n/translations/gamemode_es_MX.properties @@ -1,22 +1,28 @@ gamemode.generic.name = Partida +gamemode.dtc.name = Destruye el Core +gamemode.dtm.name = Destruye el Monumento gamemode.ctw.name = Captura la Lana gamemode.ctf.name = Captura la Bandera +gamemode.tdm.name = Deathmatch por equipos gamemode.ad.name = Atacar/Defender +gamemode.koth.name = King of the Hill gamemode.blitz.name = Blitz gamemode.rage.name = Rage +gamemode.scorebox.name = Scorebox gamemode.arcade.name = Arcade +gamemode.ffa.name = Todos-contra-todos gamemode.mixed.name = Mixto @@ -40,6 +46,7 @@ gamemode.blitz.acronym = Blitz gamemode.rage.acronym = Rage +gamemode.scorebox.acronym = Scorebox gamemode.arcade.acronym = Arcade @@ -61,15 +68,18 @@ objective.name.base = Base objective.name.ship = Nave +objective.name.core = Core objective.name.reactor = Reactor +objective.name.engine = Motor # {0} = objective mode (e.g. "Gold Core Mode") # {1} = time remaining (e.g. "30 seconds") objective.modeCountdown = {0} en {1} # Don't translate, keep as-is +objective.credit.percentage = {0} ({1}%) objective.credit.etc = otros @@ -133,9 +143,11 @@ destroyable.touch = El {1} ha sido dañado # {0} = player name # {1} = core name (e.g. "Right Core") # {2} = team name +core.complete.owned = El {1} de {2} fue leakeado por {0} # {0} = player name # {1} = core name +core.complete = El {1} fue leakeado por {0} # {0} = player name # {1} = wool name (e.g "Red Wool") @@ -153,6 +165,7 @@ wool.touch.owned.player = {1} fue recogido por {0} para {2} # {0} = player name # {1} = wool name +wool.touch.player = {1} fue recogida por {0} # {1} = wool name # {2} = team name @@ -163,6 +176,7 @@ wool.touch.you = Has recogido {1} # {0} = team name # {1} = wool name +wool.wrongTeam = Sólo un miembro de {0} puede colocar {1} allí # {0} = wool name wool.wrongWool = Sólo está permitido colocar {0} aquí @@ -195,6 +209,15 @@ flag.return = {0} ha sido devuelta # {0} = flag name # {1} = duration (e.g. "5 seconds") +flag.willRespawn = {0} reaparecerá en {1} + +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} reaparecerá en {1} en {2} + +# {0} = flag name +# {1} = post name # {0} = flag name flag.respawn = {0} ha reaparecido @@ -216,9 +239,18 @@ flag.cannotBreakBlockUnder = El bloque debajo de la bandera no puede romperse # {0} = player name # {1} = number of points (e.g. "3 points") # {2} = team name +scorebox.scored = {0} anotó {1} para {2} # {0} = number of player lives left (e.g. "2 lives") blitz.livesRemaining = Tienes {0} restante(s). # {0} = "Blitz" blitz.joinDenied = No puedes unirte durante una partida de {0}. + +victoryCondition.blitz = mayor cantidad de sobrevivientes + +victoryCondition.goals = mayor cantidad de objetivos + +victoryCondition.tie = nadie gana + +victoryCondition.score = mayor puntuación diff --git a/util/src/main/i18n/translations/gamemode_fr_FR.properties b/util/src/main/i18n/translations/gamemode_fr_FR.properties index b783590eb1..53487b91fa 100644 --- a/util/src/main/i18n/translations/gamemode_fr_FR.properties +++ b/util/src/main/i18n/translations/gamemode_fr_FR.properties @@ -211,6 +211,13 @@ flag.return = {0} a été récupéré # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} réapparaîtra dans {1} +# {0} = flag name +# {1} = post name +# {2} = duration + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} est réapparu @@ -238,3 +245,7 @@ blitz.livesRemaining = Vous avez {0} restante(s). # {0} = "Blitz" blitz.joinDenied = Vous ne pouvez pas rejoindre lorsque une partie de {0} est en cours. + + + + diff --git a/util/src/main/i18n/translations/gamemode_ko_KR.properties b/util/src/main/i18n/translations/gamemode_ko_KR.properties index 927a4e7e91..eee25bdac7 100644 --- a/util/src/main/i18n/translations/gamemode_ko_KR.properties +++ b/util/src/main/i18n/translations/gamemode_ko_KR.properties @@ -100,17 +100,22 @@ destroyable.repairDisabled = 이 목표물은 복구될 수 없습니다. core.damageOwn = 같은 팀의 코어는 부술 수 없습니다. # {0} = objective name (e.g. "Left Core") +objective.damageOwn = 같은 팀의 {0}은(는) 부술 수 없습니다 # {0} = objective name +objective.repairOther = 상대 팀의 {0}을(를) 복구할 수는 없습니다 # {0} = objective name +objective.repairDisabled = 같은 팀의 {0}을(를) 복구할 수 없습니다 # {0} = player name # {1} = monument name (e.g. "Monument A") # {2} = team name +destroyable.complete.owned = {2}의 {1}이(가) {0}에게 파괴되었습니다 # {0} = player name # {1} = monument name +destroyable.complete = {1}이(가) {0}에게 파괴되었습니다 # {0} = player name # {1} = monument name @@ -130,12 +135,15 @@ destroyable.touch.owned = {2}의 {1}이 손상되었습니다 destroyable.touch.player = {0}이(가) {1}에 손상을 입혔습니다 # {1} = monument name +destroyable.touch.you = {1}에 손상을 입혔습니다 # {1} = monument name +destroyable.touch = {1}이(가) 손상되었습니다 # {0} = player name # {1} = core name (e.g. "Right Core") # {2} = team name +core.complete.owned = {2} {1}의 내용물이 {0}에게 유출되었습니다 # {0} = player name # {1} = core name @@ -157,6 +165,7 @@ wool.touch.owned.player = {0}이(가) {2}을 위해 {1}을(를) 획득하였습 # {0} = player name # {1} = wool name +wool.touch.player = {0}이(가) {1}을(를) 획득했습니다 # {1} = wool name # {2} = team name @@ -167,10 +176,13 @@ wool.touch.you = {1}을(를) 획득하였습니다. # {0} = team name # {1} = wool name +wool.wrongTeam = {0}의 팀원만 여기에 {1}을(를) 설치할 수 있습니다 # {0} = wool name +wool.wrongWool = 오직 {0}만 여기에 설치할 수 있습니다 # {0} = wool name +wool.craftingDisabled = {0}을(를) 제작하는 것은 허용되지 않습니다 # {0} = flag name (e.g. "Green Flag") # {1} = player name @@ -197,6 +209,15 @@ flag.return = {0}이(가) 다시 돌아왔습니다 # {0} = flag name # {1} = duration (e.g. "5 seconds") +flag.willRespawn = {0}이(가) {1} 후에 재생성됩니다 + +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0}이(가) {2} 후에 {1}에서 재생성됩니다 + +# {0} = flag name +# {1} = post name # {0} = flag name flag.respawn = {0}이(가) 다시 생성되었습니다 @@ -225,3 +246,11 @@ blitz.livesRemaining = {0}이(가) 남아있습니다. # {0} = "Blitz" blitz.joinDenied = {0} 경기 중에는 참여할 수 없습니다. + +victoryCondition.blitz = 최대 생존자 + +victoryCondition.goals = 최대 목표물 + +victoryCondition.tie = 아무도 승리하지 못했습니다 + +victoryCondition.score = 최고 점수 diff --git a/util/src/main/i18n/translations/gamemode_lol_US.properties b/util/src/main/i18n/translations/gamemode_lol_US.properties index 63c896166e..c8d622b484 100644 --- a/util/src/main/i18n/translations/gamemode_lol_US.properties +++ b/util/src/main/i18n/translations/gamemode_lol_US.properties @@ -211,6 +211,14 @@ flag.return = {0} haz been returnd # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} wil respon in {1} +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} wil respon @ {1} iwn {2} + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = Teh {0} haz been remeowed @@ -238,3 +246,11 @@ blitz.livesRemaining = Yooo, u only got {0} kat lievs remainin\!\! # {0} = "Blitz" blitz.joinDenied = Kitteh kant join durin a {0} macht. + +victoryCondition.blitz = mawst survivohr kittehs + +victoryCondition.goals = mawst objetivs + +victoryCondition.tie = no 1 winz + +victoryCondition.score = besT scor\! diff --git a/util/src/main/i18n/translations/gamemode_no_NO.properties b/util/src/main/i18n/translations/gamemode_no_NO.properties index 6ca5bce5b7..3f163bbd08 100644 --- a/util/src/main/i18n/translations/gamemode_no_NO.properties +++ b/util/src/main/i18n/translations/gamemode_no_NO.properties @@ -164,6 +164,13 @@ flag.return = {0} har blitt returnert # {0} = flag name # {1} = duration (e.g. "5 seconds") +# {0} = flag name +# {1} = post name +# {2} = duration + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} har gjenoppstått @@ -189,3 +196,7 @@ flag.cannotBreakBlockUnder = Blokken under flagget kan ikke ødelegges blitz.livesRemaining = Du har {0} igjen. # {0} = "Blitz" + + + + diff --git a/util/src/main/i18n/translations/gamemode_ro_RO.properties b/util/src/main/i18n/translations/gamemode_ro_RO.properties index e70b620ef7..7a8df4ae38 100644 --- a/util/src/main/i18n/translations/gamemode_ro_RO.properties +++ b/util/src/main/i18n/translations/gamemode_ro_RO.properties @@ -211,6 +211,14 @@ flag.return = {0} s-a întors # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} va apărea în {1} +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} va apărea la {1} în {2} + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} a apărut @@ -238,3 +246,11 @@ blitz.livesRemaining = Mai ai {0}. # {0} = "Blitz" blitz.joinDenied = Nu poți intra în timpul unui meci de {0}. + +victoryCondition.blitz = cei mai mulți supraviețuitori + +victoryCondition.goals = cele mai multe obiective + +victoryCondition.tie = nimeni nu câștigă + +victoryCondition.score = cel mai mare scor diff --git a/util/src/main/i18n/translations/gamemode_ru_RU.properties b/util/src/main/i18n/translations/gamemode_ru_RU.properties index a3c538a00c..f8ebfdbe0a 100644 --- a/util/src/main/i18n/translations/gamemode_ru_RU.properties +++ b/util/src/main/i18n/translations/gamemode_ru_RU.properties @@ -211,6 +211,14 @@ flag.return = {0} был возвращён # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} воскреснет через {1} +# {0} = flag name +# {1} = post name +# {2} = duration +flag.willRespawn.named = {0} возродится на точке {1} через {2} + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} возродился @@ -238,3 +246,11 @@ blitz.livesRemaining = У вас осталось {0}. # {0} = "Blitz" blitz.joinDenied = Вы не можете присоединиться к матчу {0}. + +victoryCondition.blitz = наибольшее число выживших + +victoryCondition.goals = наибольшее число выполн. целей + +victoryCondition.tie = ничья + +victoryCondition.score = лучший счёт diff --git a/util/src/main/i18n/translations/gamemode_sv_SE.properties b/util/src/main/i18n/translations/gamemode_sv_SE.properties index 32250702a2..926ba3242f 100644 --- a/util/src/main/i18n/translations/gamemode_sv_SE.properties +++ b/util/src/main/i18n/translations/gamemode_sv_SE.properties @@ -211,6 +211,13 @@ flag.return = {0} har returnerat # {1} = duration (e.g. "5 seconds") flag.willRespawn = {0} kommer återuppstå om {1} +# {0} = flag name +# {1} = post name +# {2} = duration + +# {0} = flag name +# {1} = post name + # {0} = flag name flag.respawn = {0} har återuppstått @@ -238,3 +245,11 @@ blitz.livesRemaining = Du har {0} kvar. # {0} = "Blitz" blitz.joinDenied = Du får inte gå med under en {0} match. + +victoryCondition.blitz = flest överlevande + +victoryCondition.goals = flest mål + +victoryCondition.tie = ingen vinner + +victoryCondition.score = högsta poäng diff --git a/util/src/main/i18n/translations/join_de_DE.properties b/util/src/main/i18n/translations/join_de_DE.properties index cf34a31390..48b2b37f2f 100644 --- a/util/src/main/i18n/translations/join_de_DE.properties +++ b/util/src/main/i18n/translations/join_de_DE.properties @@ -15,7 +15,7 @@ join.ok.moved.explanation = (du hast kein Team ausgewählt; daher dachten wir, e # {0} = player name # {1} = new team name (e.g. "Green Team") # {2} = old team name (e.g. "Observers") -join.ok.force = {0} wurde erfolgreich von {1} dem {2} hinzugefügt +join.ok.force = {0} wurde von {2} zu {1} verschoben # {0} = "1" join.wait.singular = Warten, bis {0} weitere Spieler beigetreten ist @@ -42,14 +42,14 @@ join.err.noSwitch = Du hast nicht die Erlaubnis, dein Team zu wechseln join.err.noChoice = Du hast nicht die Erlaubnis, dir ein Team auszusuchen -join.err.afterStart = Du kannst diesem Spiel nicht beitreten, nachdem es begonnen hat +join.err.afterStart = Du hast nicht die Erlaubnis, diesem Spiel beizutreten, nachdem es begonnen hat join.err.afterFinish = Dieses Spiel ist beendet - das nächste Spiel startet gleich -join.err.full = Sorry, das Spiel ist bereits vollständig +join.err.full = Sorry, das Spiel ist voll # {0} = team name (e.g. "Blue Team") -join.err.full.team = Sorry, {0} ist bereits vollständig +join.err.full.team = Sorry, {0} ist bereits voll join.err.vanish = Du kannst dem Spiel nicht beitreten, während du unsichtbar bist diff --git a/util/src/main/i18n/translations/join_es_CL.properties b/util/src/main/i18n/translations/join_es_CL.properties index d783f7e484..095bc9ed61 100644 --- a/util/src/main/i18n/translations/join_es_CL.properties +++ b/util/src/main/i18n/translations/join_es_CL.properties @@ -1,6 +1,8 @@ join.ok = Te has unido a la partida +join.ok.queue = Te has unido a la cola de partidas +join.ok.dequeue = Has sido removido de la cola de partidas # {0} = team name (e.g. "Red Team" or "Observers") join.ok.team = Te has unido a {0} @@ -49,6 +51,7 @@ join.err.full = Lo sentimos, la partida está llena # {0} = team name (e.g. "Blue Team") join.err.full.team = Lo sentimos, {0} está completamente lleno +join.err.vanish = No puedes unirte a la partida mientras estás en vanish leave.ok.priorityKick = Fuiste expulsado de la partida para dejar lugar a un jugador premium diff --git a/util/src/main/i18n/translations/join_es_ES.properties b/util/src/main/i18n/translations/join_es_ES.properties index d783f7e484..095bc9ed61 100644 --- a/util/src/main/i18n/translations/join_es_ES.properties +++ b/util/src/main/i18n/translations/join_es_ES.properties @@ -1,6 +1,8 @@ join.ok = Te has unido a la partida +join.ok.queue = Te has unido a la cola de partidas +join.ok.dequeue = Has sido removido de la cola de partidas # {0} = team name (e.g. "Red Team" or "Observers") join.ok.team = Te has unido a {0} @@ -49,6 +51,7 @@ join.err.full = Lo sentimos, la partida está llena # {0} = team name (e.g. "Blue Team") join.err.full.team = Lo sentimos, {0} está completamente lleno +join.err.vanish = No puedes unirte a la partida mientras estás en vanish leave.ok.priorityKick = Fuiste expulsado de la partida para dejar lugar a un jugador premium diff --git a/util/src/main/i18n/translations/join_es_MX.properties b/util/src/main/i18n/translations/join_es_MX.properties index d783f7e484..095bc9ed61 100644 --- a/util/src/main/i18n/translations/join_es_MX.properties +++ b/util/src/main/i18n/translations/join_es_MX.properties @@ -1,6 +1,8 @@ join.ok = Te has unido a la partida +join.ok.queue = Te has unido a la cola de partidas +join.ok.dequeue = Has sido removido de la cola de partidas # {0} = team name (e.g. "Red Team" or "Observers") join.ok.team = Te has unido a {0} @@ -49,6 +51,7 @@ join.err.full = Lo sentimos, la partida está llena # {0} = team name (e.g. "Blue Team") join.err.full.team = Lo sentimos, {0} está completamente lleno +join.err.vanish = No puedes unirte a la partida mientras estás en vanish leave.ok.priorityKick = Fuiste expulsado de la partida para dejar lugar a un jugador premium diff --git a/util/src/main/i18n/translations/join_ko_KR.properties b/util/src/main/i18n/translations/join_ko_KR.properties index 3f9dcf1056..d968303df3 100644 --- a/util/src/main/i18n/translations/join_ko_KR.properties +++ b/util/src/main/i18n/translations/join_ko_KR.properties @@ -44,12 +44,14 @@ join.err.noChoice = 당신은 당신의 팀을 선택할 수 없습니다. join.err.afterStart = 이번 경기는 시작한 이후에 참가할 수 없습니다 -join.err.afterFinish = 경기가 종료되었습니다 - 다음 경기가 잠시후 시작될 것입니다. +join.err.afterFinish = 경기가 종료되었습니다 - 다음 경기가 잠시 후 시작될 것입니다. +join.err.full = 죄송합니다. 현재 인원이 모두 차서 참가할 수 없습니다 # {0} = team name (e.g. "Blue Team") join.err.full.team = 죄송합니다, 이미 {0}의 인원이 모두 찼습니다 +join.err.vanish = 은신(Vanish) 상태일 때는 게임에 참여할 수 없습니다 leave.ok.priorityKick = 프리미엄 유저를 위한 자리를 만들기 위해 당신은 경기에서 강퇴되었습니다. diff --git a/util/src/main/i18n/translations/join_lol_US.properties b/util/src/main/i18n/translations/join_lol_US.properties index a9e4e09726..972438a61d 100644 --- a/util/src/main/i18n/translations/join_lol_US.properties +++ b/util/src/main/i18n/translations/join_lol_US.properties @@ -1,4 +1,4 @@ -join.ok = You joined the macth +join.ok = You joint the macth join.ok.queue = u joint da macht waitin line diff --git a/util/src/main/i18n/translations/map_de_DE.properties b/util/src/main/i18n/translations/map_de_DE.properties index 2ce7ac584d..d1e0d77a0a 100644 --- a/util/src/main/i18n/translations/map_de_DE.properties +++ b/util/src/main/i18n/translations/map_de_DE.properties @@ -1,4 +1,4 @@ -map.title = Geladene Maps +map.title = Maps map.notFound = Keine Maps stimmten mit der Abfrage überein. @@ -26,7 +26,7 @@ map.info.playerLimit.vs = vs map.info.xml = XML -map.info.xml.tip = Schaue dir den XML-Code an, der diese Map kontrolliert +map.info.xml.tip = Schaue dir den XML-Code an, der diese Map steuert map.info.proto = Proto @@ -34,17 +34,19 @@ map.info.source = Quelle map.info.folder = Ordner -map.info.pools = Map-Pools +map.info.pools = Pools map.info.objective = Ziel des Spiels # {0} = name of a maptag (e.g "#tnt" or "#controlpoint") +map.info.mapTag.hover = Klick, um alle {0}-Maps aufzulisten # {0} = map name map.nextMap = Nächste Map\: {0} # {0} = player name (who set the map) # {1} = map name +map.setNext = {0} hat {1} als nächste Map festgelegt map.setNext.confirm = Du kannst keine neue Map festlegen, wenn ein Neustart geplant ist. Benutze -f, um dies zu erzwingen. @@ -56,29 +58,30 @@ map.noNextMap = Keine nächste Map # {0} = map name # {1} = a duration (e.g. "30 seconds") -map.cycleMap = Es wird zu {0} in {1} gewechselt +map.cycleMap = Wechseln zu {0} in {1} # {0} = map name -map.cycledMap = Zur Map {0} gewechselt +map.cycledMap = Zu {0} gewechselt # {0} = a duration (e.g. "1 minute") -map.cycle = Map-Wechsel in {0} +map.cycle = Wechseln in {0} map.cycled = Gewechselt map.protectPortal = Du kannst diesen Bereich nicht blockieren # {0} = map pool name (e.g. "Mega") -pool.change = Map-Pool wurde auf {0} gesetzt, um besser der aktuellen Spielerzahl zu entsprechen. +pool.change = Map-Pool wurde auf {0} gestellt, um der aktuellen Spieleranzahl besser zu entsprechen. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = Map-Pool wurde von {1} auf {0} gesetzt +pool.change.force = {1} hat den Map-Pool auf {0} gestellt # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Map-Pool wurde von {2} auf {0} für {1} gesetzt +pool.change.forceTimed = {2} hat den Map-Pool auf {0} für {1} gestellt # {0} = number of positions pool.skip = Insgesamt {0} Positionen übersprungen. @@ -89,23 +92,24 @@ pool.name = Map-Pool pool.title = Map-Pools -pool.noPoolMatch = Gesuchter Map-Pool nicht gefunden +pool.noPoolMatch = Keine Map-Pools stimmten mit der Abfrage überein pool.noDynamic = Kein dynamischer Pool wurde gefunden -pool.noRotation = Derzeit ist keine Rotation aktiv +pool.noRotation = Keine Rotation ist derzeit aktiv pool.noMapPools = Keine geladenen Map-Pools # {0} = map pool name (e.g. "Mega") pool.matching = {0} ist bereits der aktuelle Map-Pool -pool.mapPoolsDisabled = Derzeit sind Map-Pools deaktiviert +pool.mapPoolsDisabled = Map-Pools sind derzeit deaktiviert vote.noVote = Momentan gibt es keine Abstimmung +vote.title.map = Map-Abstimmung -vote.header.map = Klicke auf alle Maps, die du spielen möchtest\: +vote.header.map = Klick auf alle Maps, die du spielen möchtest\: # {0} = option name (e.g. "Airship Battle") vote.for = Für {0} gestimmt diff --git a/util/src/main/i18n/translations/map_en_GB.properties b/util/src/main/i18n/translations/map_en_GB.properties index 19675d1345..cf61f0c145 100644 --- a/util/src/main/i18n/translations/map_en_GB.properties +++ b/util/src/main/i18n/translations/map_en_GB.properties @@ -73,14 +73,15 @@ map.protectPortal = You may not obstruct this area # {0} = map pool name (e.g. "Mega") pool.change = Map pool has been set to {0} in order to better adjust to the current player count. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = The map pool has been set to {0} by {1} +pool.change.force = {1} set the map pool to {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = The map pool has been set to {0} for {1} by {2} +pool.change.forceTimed = {2} set the map pool to {0} for {1} # {0} = number of positions pool.skip = Skipped a total of {0} positions. diff --git a/util/src/main/i18n/translations/map_es_CL.properties b/util/src/main/i18n/translations/map_es_CL.properties index 31a390c85e..2613c8b397 100644 --- a/util/src/main/i18n/translations/map_es_CL.properties +++ b/util/src/main/i18n/translations/map_es_CL.properties @@ -20,17 +20,21 @@ map.info.contributors = Colaboradores map.info.rules = Reglas +map.info.playerLimit = Jugadores map.info.playerLimit.vs = vs +map.info.xml = XML map.info.xml.tip = Ver el código XML que controla este mapa +map.info.proto = Proto map.info.source = Fuente map.info.folder = Directorio +map.info.pools = Pools map.info.objective = Objetivo @@ -42,11 +46,13 @@ map.nextMap = Siguiente mapa\: {0} # {0} = player name (who set the map) # {1} = map name +map.setNext = {0} cambió el siguiente mapa a {1} map.setNext.confirm = No puedes establecer el siguiente mapa cuando hay un reinicio programado. Usa -f para sobreescribir. # {0} = player name (who unset the map) # {1} = name of map that was unset +map.setNext.revert = {0} ha quitado {1} como el siguiente mapa map.noNextMap = No hay ningún mapa que siga @@ -58,36 +64,58 @@ map.cycleMap = Cambiando a {0} en {1} map.cycledMap = Cambiado a {0} # {0} = a duration (e.g. "1 minute") +map.cycle = Cambiando en {0} +map.cycled = Cambiado map.protectPortal = No debes obstruir esta área # {0} = map pool name (e.g. "Mega") +pool.change = La lista de mapas se ha establecido en {0} para ajustar mejor el número actual de jugadores. + # {0} = map pool name (e.g. "Mega") # {1} = player name +pool.change.force = {1} estableció la pool de mapas en {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name +pool.change.forceTimed = {2} estableció la pool de mapas en {0} por {1} # {0} = number of positions +pool.skip = Se omitieron un total de {0} posiciones. +pool.skip.negative = ¡No puedes omitir posiciones negativas\! +pool.name = Pool de mapas +pool.title = Pools de mapas +pool.noPoolMatch = Pool no encontrada +pool.noDynamic = Pool dinámica no encontrada +pool.noRotation = No hay rotación actualmente en uso +pool.noMapPools = No hay pools de mapas cargadas # {0} = map pool name (e.g. "Mega") +pool.matching = {0} ya es la pool de mapas activa +pool.mapPoolsDisabled = Las pools de mapas están desactivadas +vote.noVote = No hay nada que votar ahora mismo +vote.title.map = Votacion de mapas +vote.header.map = Haz clic en todos los mapas que quieras jugar\: # {0} = option name (e.g. "Airship Battle") +vote.for = Has votado por {0} # {0} = option name (e.g. "Airship Battle") +vote.against = Has votado contra {0} # {0} = option name (e.g. "Airship Battle") +vote.abstain = Has eliminado tu voto para {0} diff --git a/util/src/main/i18n/translations/map_es_ES.properties b/util/src/main/i18n/translations/map_es_ES.properties index 31a390c85e..2613c8b397 100644 --- a/util/src/main/i18n/translations/map_es_ES.properties +++ b/util/src/main/i18n/translations/map_es_ES.properties @@ -20,17 +20,21 @@ map.info.contributors = Colaboradores map.info.rules = Reglas +map.info.playerLimit = Jugadores map.info.playerLimit.vs = vs +map.info.xml = XML map.info.xml.tip = Ver el código XML que controla este mapa +map.info.proto = Proto map.info.source = Fuente map.info.folder = Directorio +map.info.pools = Pools map.info.objective = Objetivo @@ -42,11 +46,13 @@ map.nextMap = Siguiente mapa\: {0} # {0} = player name (who set the map) # {1} = map name +map.setNext = {0} cambió el siguiente mapa a {1} map.setNext.confirm = No puedes establecer el siguiente mapa cuando hay un reinicio programado. Usa -f para sobreescribir. # {0} = player name (who unset the map) # {1} = name of map that was unset +map.setNext.revert = {0} ha quitado {1} como el siguiente mapa map.noNextMap = No hay ningún mapa que siga @@ -58,36 +64,58 @@ map.cycleMap = Cambiando a {0} en {1} map.cycledMap = Cambiado a {0} # {0} = a duration (e.g. "1 minute") +map.cycle = Cambiando en {0} +map.cycled = Cambiado map.protectPortal = No debes obstruir esta área # {0} = map pool name (e.g. "Mega") +pool.change = La lista de mapas se ha establecido en {0} para ajustar mejor el número actual de jugadores. + # {0} = map pool name (e.g. "Mega") # {1} = player name +pool.change.force = {1} estableció la pool de mapas en {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name +pool.change.forceTimed = {2} estableció la pool de mapas en {0} por {1} # {0} = number of positions +pool.skip = Se omitieron un total de {0} posiciones. +pool.skip.negative = ¡No puedes omitir posiciones negativas\! +pool.name = Pool de mapas +pool.title = Pools de mapas +pool.noPoolMatch = Pool no encontrada +pool.noDynamic = Pool dinámica no encontrada +pool.noRotation = No hay rotación actualmente en uso +pool.noMapPools = No hay pools de mapas cargadas # {0} = map pool name (e.g. "Mega") +pool.matching = {0} ya es la pool de mapas activa +pool.mapPoolsDisabled = Las pools de mapas están desactivadas +vote.noVote = No hay nada que votar ahora mismo +vote.title.map = Votacion de mapas +vote.header.map = Haz clic en todos los mapas que quieras jugar\: # {0} = option name (e.g. "Airship Battle") +vote.for = Has votado por {0} # {0} = option name (e.g. "Airship Battle") +vote.against = Has votado contra {0} # {0} = option name (e.g. "Airship Battle") +vote.abstain = Has eliminado tu voto para {0} diff --git a/util/src/main/i18n/translations/map_es_MX.properties b/util/src/main/i18n/translations/map_es_MX.properties index b403898dc0..e3f09b7f3c 100644 --- a/util/src/main/i18n/translations/map_es_MX.properties +++ b/util/src/main/i18n/translations/map_es_MX.properties @@ -20,17 +20,21 @@ map.info.contributors = Colaboradores map.info.rules = Reglas +map.info.playerLimit = Jugadores map.info.playerLimit.vs = vs +map.info.xml = XML map.info.xml.tip = Ver el código XML que controla este mapa +map.info.proto = Proto map.info.source = Fuente map.info.folder = Directorio +map.info.pools = Pools map.info.objective = Objetivo @@ -42,11 +46,13 @@ map.nextMap = Siguiente mapa\: {0} # {0} = player name (who set the map) # {1} = map name +map.setNext = {0} cambió el siguiente mapa a {1} map.setNext.confirm = No puedes establecer el siguiente mapa cuando hay un reinicio programado. Usa -f para sobreescribir. # {0} = player name (who unset the map) # {1} = name of map that was unset +map.setNext.revert = {0} ha quitado {1} como el siguiente mapa map.noNextMap = No hay ningún mapa que siga @@ -58,36 +64,58 @@ map.cycleMap = Cambiando a {0} en {1} map.cycledMap = Cambiado a {0} # {0} = a duration (e.g. "1 minute") +map.cycle = Cambiando en {0} +map.cycled = Cambiado map.protectPortal = No debes obstruir esta área # {0} = map pool name (e.g. "Mega") +pool.change = La lista de mapas se ha establecido en {0} para ajustar mejor el número actual de jugadores. + # {0} = map pool name (e.g. "Mega") # {1} = player name +pool.change.force = {1} estableció la pool de mapas en {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name +pool.change.forceTimed = {2} estableció la pool de mapas en {0} por {1} # {0} = number of positions +pool.skip = Se omitieron un total de {0} posiciones. +pool.skip.negative = ¡No puedes omitir posiciones negativas\! +pool.name = Pool de mapas +pool.title = Pools de mapas +pool.noPoolMatch = Pool no encontrada +pool.noDynamic = Pool dinámica no encontrada +pool.noRotation = No hay rotación actualmente en uso +pool.noMapPools = No hay pools de mapas cargadas # {0} = map pool name (e.g. "Mega") +pool.matching = {0} ya es la pool de mapas activa +pool.mapPoolsDisabled = Las pools de mapas están desactivadas +vote.noVote = No hay nada que votar ahora mismo +vote.title.map = Votacion de mapas +vote.header.map = Haz clic en todos los mapas que quieras jugar\: # {0} = option name (e.g. "Airship Battle") +vote.for = Has votado por {0} # {0} = option name (e.g. "Airship Battle") +vote.against = Has votado contra {0} # {0} = option name (e.g. "Airship Battle") +vote.abstain = Has eliminado tu voto para {0} diff --git a/util/src/main/i18n/translations/map_fr_FR.properties b/util/src/main/i18n/translations/map_fr_FR.properties index a9ea671e18..914b892f4b 100644 --- a/util/src/main/i18n/translations/map_fr_FR.properties +++ b/util/src/main/i18n/translations/map_fr_FR.properties @@ -73,14 +73,13 @@ map.protectPortal = Vous ne pouvez pas obstruer cette zone # {0} = map pool name (e.g. "Mega") pool.change = Map pool reglée sur {0} afin d''accommoder le nombre de joueurs en ligne. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = La map pool a été reglée sur {0} par {1} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Le map pool a été reglée sur {0} pour {1} par {2} # {0} = number of positions pool.skip = {0} positions sautées. diff --git a/util/src/main/i18n/translations/map_ko_KR.properties b/util/src/main/i18n/translations/map_ko_KR.properties index 0ae5e97eed..baad5728ec 100644 --- a/util/src/main/i18n/translations/map_ko_KR.properties +++ b/util/src/main/i18n/translations/map_ko_KR.properties @@ -22,7 +22,7 @@ map.info.rules = 규칙 map.info.playerLimit = 최대 플레이어 -map.info.playerLimit.vs = vs +map.info.playerLimit.vs = 대 map.info.xml = XML @@ -34,6 +34,7 @@ map.info.source = 소스 map.info.folder = 폴더 +map.info.pools = 풀(Pools) map.info.objective = 목표 @@ -51,18 +52,19 @@ map.setNext.confirm = 재시작이 대기 중인 경우에는 다음 맵을 설 # {0} = player name (who unset the map) # {1} = name of map that was unset +map.setNext.revert = {0}이(가) 다음 맵 {1}을(를) 제거했습니다 map.noNextMap = 다음 맵 없음 # {0} = map name # {1} = a duration (e.g. "30 seconds") -map.cycleMap = {1}후에 {0}(으)로 이동합니다 +map.cycleMap = {1} 후에 {0}(으)로 이동합니다 # {0} = map name map.cycledMap = {0}(으)로 맵이 변경되었습니다 # {0} = a duration (e.g. "1 minute") -map.cycle = {0}후 이동합니다 +map.cycle = {0} 후 이동합니다 map.cycled = 이동됨 @@ -71,6 +73,7 @@ map.protectPortal = 이 구역을 막을 수 없습니다 # {0} = map pool name (e.g. "Mega") pool.change = 현재 플레이어 수를 더 잘 수용하기 위해 맵 저장소가 {0} 로 변경되었습니다. + # {0} = map pool name (e.g. "Mega") # {1} = player name @@ -83,25 +86,34 @@ pool.skip = 총 {0}개의 포지션을 건너뛰었습니다. pool.skip.negative = 음의 위치를 건너뛸 수 없습니다\! +pool.name = 맵 풀(Map Pool) +pool.title = 맵 풀(Map Pools) pool.noPoolMatch = 검색어와 일치하는 맵 저장소가 없습니다 +pool.noDynamic = 동적 맵 풀(Map Pool)을 찾을 수 없었습니다 pool.noRotation = 현재 사용 중인 로테이션이 없습니다 pool.noMapPools = 불러온 맵 저장소가 없습니다 # {0} = map pool name (e.g. "Mega") +pool.matching = 이미 {0}이(가) 현재 맵 풀(Map Pool)입니다 pool.mapPoolsDisabled = 맵 저장소가 현재 비활성화되었습니다 +vote.noVote = 현재 진행되는 투표가 없습니다 vote.title.map = 맵 투표 +vote.header.map = 플레이하고 싶은 맵을 모두 클릭하세요\: # {0} = option name (e.g. "Airship Battle") +vote.for = {0}에 투표하였습니다 # {0} = option name (e.g. "Airship Battle") +vote.against = {0}에 반대 투표를 하였습니다 # {0} = option name (e.g. "Airship Battle") +vote.abstain = {0}에 대한 투표를 취소했습니다 diff --git a/util/src/main/i18n/translations/map_lol_US.properties b/util/src/main/i18n/translations/map_lol_US.properties index 054435a745..25da103a2e 100644 --- a/util/src/main/i18n/translations/map_lol_US.properties +++ b/util/src/main/i18n/translations/map_lol_US.properties @@ -73,14 +73,15 @@ map.protectPortal = dont bloc dis area # {0} = map pool name (e.g. "Mega") pool.change = Mpa poolz set to {0} so the numbr of kittehs matchs da maps siez\! + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = {1} haz set the map poolz to {0} +pool.change.force = {1} setd da mapz pul 2 {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Da mawp poolz haz bin set to {0} 4 {1} bai {2} +pool.change.forceTimed = {2} setd da mapz pool 2 {0} 4 {1} # {0} = number of positions pool.skip = Skipd {0} numbrz diff --git a/util/src/main/i18n/translations/map_no_NO.properties b/util/src/main/i18n/translations/map_no_NO.properties index 415100ce74..95b5f0fa7c 100644 --- a/util/src/main/i18n/translations/map_no_NO.properties +++ b/util/src/main/i18n/translations/map_no_NO.properties @@ -67,6 +67,7 @@ map.protectPortal = Du kan ikke blokkere dette området # {0} = map pool name (e.g. "Mega") + # {0} = map pool name (e.g. "Mega") # {1} = player name diff --git a/util/src/main/i18n/translations/map_ro_RO.properties b/util/src/main/i18n/translations/map_ro_RO.properties index 6bf9101465..d3b80eaacc 100644 --- a/util/src/main/i18n/translations/map_ro_RO.properties +++ b/util/src/main/i18n/translations/map_ro_RO.properties @@ -39,7 +39,7 @@ map.info.pools = Mulțimi map.info.objective = Obiectiv # {0} = name of a maptag (e.g "#tnt" or "#controlpoint") -map.info.mapTag.hover = Dă clic pentru a lista toate hărțile {0} +map.info.mapTag.hover = Fă clic pentru a lista toate hărțile {0} # {0} = map name map.nextMap = Următoarea hartă\: {0} @@ -73,14 +73,15 @@ map.protectPortal = Nu poţi bloca această zonă # {0} = map pool name (e.g. "Mega") pool.change = Mulțimea de hărți a fost setată la {0} pentru a acomoda mai bine la numărul actual de jucători. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = Mulțimea de hărți a fost setată la {0} de {1} +pool.change.force = {1} a setat mulțimea de hărți la {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Mulțimea de hărți a fost setată la {0} de {2} timp de {1} +pool.change.forceTimed = {2} a setat mulțimea de hărți la {0} timp de {1} # {0} = number of positions pool.skip = Ai sărit peste {0} poziții. @@ -108,7 +109,7 @@ vote.noVote = Nu este nimic de votat momentan vote.title.map = Vot pentru hartă -vote.header.map = Dă clic pe toate hărțile pe care vrei să le joci\: +vote.header.map = Fă clic pe toate hărțile pe care vrei să le joci\: # {0} = option name (e.g. "Airship Battle") vote.for = Ai votat pentru {0} diff --git a/util/src/main/i18n/translations/map_ru_RU.properties b/util/src/main/i18n/translations/map_ru_RU.properties index 1e8b08ef12..6c86deb380 100644 --- a/util/src/main/i18n/translations/map_ru_RU.properties +++ b/util/src/main/i18n/translations/map_ru_RU.properties @@ -73,14 +73,15 @@ map.protectPortal = Вы не можете блокировать эту обл # {0} = map pool name (e.g. "Mega") pool.change = Пул карты был изменён на {0}, чтобы лучше подстроиться под количество игроков. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = Пул карт был изменён на {0} игроком {1} +pool.change.force = {1} изменил активный пул карт на {0} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Пул карт был изменён на {0} на {1} игроком {2} +pool.change.forceTimed = {2} изменил активный пул карт на {0} на {1} # {0} = number of positions pool.skip = Пропущено {0} позиций. diff --git a/util/src/main/i18n/translations/map_sv_SE.properties b/util/src/main/i18n/translations/map_sv_SE.properties index 8b79877857..e298111ed0 100644 --- a/util/src/main/i18n/translations/map_sv_SE.properties +++ b/util/src/main/i18n/translations/map_sv_SE.properties @@ -46,6 +46,7 @@ map.nextMap = Nästa karta\: {0} # {0} = player name (who set the map) # {1} = map name +map.setNext = {0} satte nästa karta till {1} map.setNext.confirm = Du kan inte ange nästa karta när en omstart väntar. Använd -f för att åsidosätta. @@ -72,14 +73,13 @@ map.protectPortal = Du kan inte blockera detta område # {0} = map pool name (e.g. "Mega") pool.change = Kartbanken har satts till {0} för att bättre anpassa sig till nuvarande spelarantal. + # {0} = map pool name (e.g. "Mega") # {1} = player name -pool.change.force = Kartbanken har satts till {0} av {1} # {0} = map pool name (e.g. "Mega") # {1} = a duration (e.g. "2 hours") # {2} = player name -pool.change.forceTimed = Kartbanken har satts till {0} för {1} av {2} # {0} = number of positions pool.skip = Hoppade över totalt {0} positioner. diff --git a/util/src/main/i18n/translations/match_de_DE.properties b/util/src/main/i18n/translations/match_de_DE.properties index 5e6f180f56..fa33bed770 100644 --- a/util/src/main/i18n/translations/match_de_DE.properties +++ b/util/src/main/i18n/translations/match_de_DE.properties @@ -1,5 +1,9 @@ match.title = Spiel +match.name = Spiel + +match.name.plural = Spiele + match.info.time = Zeit match.info.goals = Ziele @@ -11,18 +15,21 @@ match.info.observers = Beobachter # {0} = team name match.balanceTeams = Die Teams werden automatisch ausgeglichen, falls {0} unverhältnismäßig gefüllt bleiben sollte +match.maxBuildHeight = Du hast die maximale Bauhöhe erreicht -match.outOfBounds = Du darfst das Spielfeld nicht verlassen +match.outOfBounds = Du kannst das Spielfeld nicht verlassen match.laneExit = Du hast deine Bahn verlassen +match.disabled.enderChest = Endertruhen sind deaktiviert +match.disabled.bed = Betten sind deaktiviert match.class.title = Klassen match.class.current = Aktuelle Klasse\: -match.class.view = Gib '/classes' im Chat ein, um eine Liste von allen Klassen anzusehen +match.class.view = Gib '/classes' im Chat ein, um alle Klassen aufzulisten # {0} = class or "kit" name (e.g. "Defender", "Pyro", "Medic") match.class.ok = Du hast {0} ausgewählt @@ -39,26 +46,34 @@ match.class.notFound = Keine Klasse stimmte mit der Abfrage überein. # {1} = number of consecutive kills # {2} = number of deaths # {3} = numbers of kills divided by the number of deaths (kill-death ratio) +match.stats = Getötet\: {0} | Hintereinander getötet\: {1} | Gestorben\: {2} | K/D\: {3} # {0} = a player name # {1} = an amount of kills(number) +match.stats.kills = Getötet\: {1} von {0} # {0} = a player name # {1} = a killstreak(number) +match.stats.killstreak = Hintereinander getötet\: {1} von {0} # {0} = a player name # {1} = an amount of deaths(number) +match.stats.deaths = Gestorben\: {1} von {0} # {0} = a player name # {1} = an amount of blocks +match.stats.bowshot = Längster Schuss\: {1} Blöcke von {0} +match.stats.overall = Spiel-Statistiken +match.stats.you = Deine Statistiken +match.stats.disabled = Du hast die Spiel-Statistiken deaktiviert # {0} = team name (e.g. "Red Team") -match.myTeam = Du bist im Team {0} +match.myTeam = Du bist in {0} -match.notOnTeam = Du bist keinem Team beigetreten. +match.notOnTeam = Du bist in keinem Team. match.shuffle.ok = Teams wurden erfolgreich gemischt. @@ -71,6 +86,14 @@ match.alias.ok = {0} wurde erfolgreich zu {1} unbenannt # {0} = team name (e.g. "Red Team") match.alias.err = Ein Team mit dem Namen {0} existiert bereits. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} hat jetzt eine Maximalgröße von {1} Spielern + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} hat jetzt eine Mindestgröße von {1} Spielern + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = Spiel endet nach {0} @@ -107,33 +130,35 @@ countdown.matchStart = Das Spiel beginnt in {0} countdown.huddleEnd = Team-Vorbereitungszeit endet in {0} # {0} = duration -countdown.restart = Server startet in {0} neu +countdown.restart = Der Server startet neu in {0} +admin.reloadConfig = Konfiguration neu geladen admin.cancelCountdowns = Alle Countdowns wurden abgebrochen. -admin.autoStart.enabled = Automatisches Starten wurde für dieses Spiel aktiviert +admin.autoStart.enabled = Automatischer Start wurde für dieses Spiel aktiviert -admin.autoStart.disabled = Automatisches Starten wurde für dieses Spiel deaktiviert +admin.autoStart.disabled = Automatischer Start wurde für dieses Spiel deaktiviert admin.matchRunning.restart = Du kannst den Server während eines Spiels nicht neu starten. Benutze -f, um dies zu erzwingen. -admin.matchRunning.cycle = Du kannst die Map während eines Spiels nicht ändern. Benutze -f, um dies zu erzwingen. +admin.matchRunning.cycle = Du kannst die Map während eines Spiels nicht wechseln. Benutze -f, um dies zu erzwingen. -admin.queueRestart.restartingNow = Der Server wird jetzt neu gestartet. +admin.queueRestart.restartingNow = Der Server wird jetzt neu starten. -admin.queueRestart.restartQueued = Der Server wird bei der nächsten Gelegenheit neu gestartet. +admin.queueRestart.restartQueued = Der Server wird bei der nächsten Gelegenheit neu starten. -admin.cancelRestart.restartUnqueued = Der anstehende Countdown zum Neustarten wurde abgebrochen. +admin.cancelRestart.restartUnqueued = Der anstehende Countdown für einen Neustart wurde abgebrochen. -admin.cancelRestart.noActionTaken = Keine aktiven oder anstehenden Countdowns zum Neustarten gefunden. +admin.cancelRestart.noActionTaken = Keine aktiven oder anstehenden Countdowns für einen Neustart gefunden. -admin.start.matchRunning = Das Spiel hat bereits begonnen. +admin.start.matchRunning = Das Spiel läuft bereits. -admin.start.matchFinished = Das Spiel ist bereits vorbei. +admin.start.matchFinished = Das Spiel ist vorbei und kann nicht fortgesetzt werden. admin.start.unknownState = Das Spiel konnte zu diesem Zeitpunkt nicht gestartet werden. admin.end.unknownError = Das Spiel konnte zu diesem Zeitpunkt nicht beendet werden. +admin.setPool.activeCycle = Du kannst den Pool nicht verändern, während die Map gewechselt wird. diff --git a/util/src/main/i18n/translations/match_en_GB.properties b/util/src/main/i18n/translations/match_en_GB.properties index 2a9cc8e011..8cbbb36f34 100644 --- a/util/src/main/i18n/translations/match_en_GB.properties +++ b/util/src/main/i18n/translations/match_en_GB.properties @@ -1,5 +1,9 @@ match.title = Match +match.name = match + +match.name.plural = matches + match.info.time = Time match.info.goals = Goals @@ -82,6 +86,14 @@ match.alias.ok = {0} successfully renamed to {1} # {0} = team name (e.g. "Red Team") match.alias.err = A team by the name of {0} already exists. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} now has a maximum size of {1} players + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} now has a minimum size of {1} players + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = match ends after {0} diff --git a/util/src/main/i18n/translations/match_es_CL.properties b/util/src/main/i18n/translations/match_es_CL.properties index 667e44ae26..04d75272b7 100644 --- a/util/src/main/i18n/translations/match_es_CL.properties +++ b/util/src/main/i18n/translations/match_es_CL.properties @@ -1,5 +1,9 @@ match.title = Partida +match.name = partida + +match.name.plural = partidas + match.info.time = Tiempo match.info.goals = Objetivos @@ -11,12 +15,15 @@ match.info.observers = Observadores # {0} = team name match.balanceTeams = Se equilibrarán los equipos automáticamente si los jugadores continúan amontonados en {0} +match.maxBuildHeight = Has alcanzado la altura máxima match.outOfBounds = No debes abandonar el campo de juego match.laneExit = Has salido de tu carril +match.disabled.enderChest = Los cofres de ender están desactivados +match.disabled.bed = Las camas están desactivadas match.class.title = Clases @@ -39,21 +46,29 @@ match.class.notFound = No se ha encontrado ninguna clase con esos criterios. # {1} = number of consecutive kills # {2} = number of deaths # {3} = numbers of kills divided by the number of deaths (kill-death ratio) +match.stats = Bajas\: {0} | Racha de bajas\: {1} | Muertes\: {2} | K/D\: {3} # {0} = a player name # {1} = an amount of kills(number) +match.stats.kills = Bajas\: {1} por {0} # {0} = a player name # {1} = a killstreak(number) +match.stats.killstreak = Racha de bajas\: {1} por {0} # {0} = a player name # {1} = an amount of deaths(number) +match.stats.deaths = Muertes\: {1} por {0} # {0} = a player name # {1} = an amount of blocks +match.stats.bowshot = Disparo más largo\: {1} bloques de {0} +match.stats.overall = Estadísticas de partida +match.stats.you = Tus estadísticas +match.stats.disabled = Has desactivado las estadísticas por partida # {0} = team name (e.g. "Red Team") match.myTeam = Estás en {0} @@ -71,6 +86,14 @@ match.alias.ok = {0} fue exitosamente renombrado a {1} # {0} = team name (e.g. "Red Team") match.alias.err = Un equipo con el nombre {0} ya existe. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} tiene ahora capacidad máxima para {1} jugadores + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} requiere ahora un mínimo de {1} jugadores + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = la partida finaliza después {0} @@ -137,4 +160,5 @@ admin.start.unknownState = La partida no se pudo iniciar en este momento. admin.end.unknownError = La partida no pudo ser terminada en este momento. +admin.setPool.activeCycle = No puedes cambiar la pool de mapas mientras está cambiando. diff --git a/util/src/main/i18n/translations/match_es_ES.properties b/util/src/main/i18n/translations/match_es_ES.properties index 667e44ae26..04d75272b7 100644 --- a/util/src/main/i18n/translations/match_es_ES.properties +++ b/util/src/main/i18n/translations/match_es_ES.properties @@ -1,5 +1,9 @@ match.title = Partida +match.name = partida + +match.name.plural = partidas + match.info.time = Tiempo match.info.goals = Objetivos @@ -11,12 +15,15 @@ match.info.observers = Observadores # {0} = team name match.balanceTeams = Se equilibrarán los equipos automáticamente si los jugadores continúan amontonados en {0} +match.maxBuildHeight = Has alcanzado la altura máxima match.outOfBounds = No debes abandonar el campo de juego match.laneExit = Has salido de tu carril +match.disabled.enderChest = Los cofres de ender están desactivados +match.disabled.bed = Las camas están desactivadas match.class.title = Clases @@ -39,21 +46,29 @@ match.class.notFound = No se ha encontrado ninguna clase con esos criterios. # {1} = number of consecutive kills # {2} = number of deaths # {3} = numbers of kills divided by the number of deaths (kill-death ratio) +match.stats = Bajas\: {0} | Racha de bajas\: {1} | Muertes\: {2} | K/D\: {3} # {0} = a player name # {1} = an amount of kills(number) +match.stats.kills = Bajas\: {1} por {0} # {0} = a player name # {1} = a killstreak(number) +match.stats.killstreak = Racha de bajas\: {1} por {0} # {0} = a player name # {1} = an amount of deaths(number) +match.stats.deaths = Muertes\: {1} por {0} # {0} = a player name # {1} = an amount of blocks +match.stats.bowshot = Disparo más largo\: {1} bloques de {0} +match.stats.overall = Estadísticas de partida +match.stats.you = Tus estadísticas +match.stats.disabled = Has desactivado las estadísticas por partida # {0} = team name (e.g. "Red Team") match.myTeam = Estás en {0} @@ -71,6 +86,14 @@ match.alias.ok = {0} fue exitosamente renombrado a {1} # {0} = team name (e.g. "Red Team") match.alias.err = Un equipo con el nombre {0} ya existe. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} tiene ahora capacidad máxima para {1} jugadores + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} requiere ahora un mínimo de {1} jugadores + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = la partida finaliza después {0} @@ -137,4 +160,5 @@ admin.start.unknownState = La partida no se pudo iniciar en este momento. admin.end.unknownError = La partida no pudo ser terminada en este momento. +admin.setPool.activeCycle = No puedes cambiar la pool de mapas mientras está cambiando. diff --git a/util/src/main/i18n/translations/match_es_MX.properties b/util/src/main/i18n/translations/match_es_MX.properties index 667e44ae26..04d75272b7 100644 --- a/util/src/main/i18n/translations/match_es_MX.properties +++ b/util/src/main/i18n/translations/match_es_MX.properties @@ -1,5 +1,9 @@ match.title = Partida +match.name = partida + +match.name.plural = partidas + match.info.time = Tiempo match.info.goals = Objetivos @@ -11,12 +15,15 @@ match.info.observers = Observadores # {0} = team name match.balanceTeams = Se equilibrarán los equipos automáticamente si los jugadores continúan amontonados en {0} +match.maxBuildHeight = Has alcanzado la altura máxima match.outOfBounds = No debes abandonar el campo de juego match.laneExit = Has salido de tu carril +match.disabled.enderChest = Los cofres de ender están desactivados +match.disabled.bed = Las camas están desactivadas match.class.title = Clases @@ -39,21 +46,29 @@ match.class.notFound = No se ha encontrado ninguna clase con esos criterios. # {1} = number of consecutive kills # {2} = number of deaths # {3} = numbers of kills divided by the number of deaths (kill-death ratio) +match.stats = Bajas\: {0} | Racha de bajas\: {1} | Muertes\: {2} | K/D\: {3} # {0} = a player name # {1} = an amount of kills(number) +match.stats.kills = Bajas\: {1} por {0} # {0} = a player name # {1} = a killstreak(number) +match.stats.killstreak = Racha de bajas\: {1} por {0} # {0} = a player name # {1} = an amount of deaths(number) +match.stats.deaths = Muertes\: {1} por {0} # {0} = a player name # {1} = an amount of blocks +match.stats.bowshot = Disparo más largo\: {1} bloques de {0} +match.stats.overall = Estadísticas de partida +match.stats.you = Tus estadísticas +match.stats.disabled = Has desactivado las estadísticas por partida # {0} = team name (e.g. "Red Team") match.myTeam = Estás en {0} @@ -71,6 +86,14 @@ match.alias.ok = {0} fue exitosamente renombrado a {1} # {0} = team name (e.g. "Red Team") match.alias.err = Un equipo con el nombre {0} ya existe. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} tiene ahora capacidad máxima para {1} jugadores + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} requiere ahora un mínimo de {1} jugadores + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = la partida finaliza después {0} @@ -137,4 +160,5 @@ admin.start.unknownState = La partida no se pudo iniciar en este momento. admin.end.unknownError = La partida no pudo ser terminada en este momento. +admin.setPool.activeCycle = No puedes cambiar la pool de mapas mientras está cambiando. diff --git a/util/src/main/i18n/translations/match_fr_FR.properties b/util/src/main/i18n/translations/match_fr_FR.properties index 14e696d022..f87787a3da 100644 --- a/util/src/main/i18n/translations/match_fr_FR.properties +++ b/util/src/main/i18n/translations/match_fr_FR.properties @@ -1,5 +1,7 @@ match.title = Match + + match.info.time = Temps écoulé match.info.goals = Buts @@ -82,6 +84,14 @@ match.alias.ok = {0} a été renommée en {1} avec succès # {0} = team name (e.g. "Red Team") match.alias.err = Une équipe du nom de {0} existe déjà. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} a maintenant une limite maximale de {1} joueurs + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} a maintenant une limite minimale de {1} joueurs + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = Le match se termine après {0} diff --git a/util/src/main/i18n/translations/match_ko_KR.properties b/util/src/main/i18n/translations/match_ko_KR.properties index b24aa326a4..a60fd36da0 100644 --- a/util/src/main/i18n/translations/match_ko_KR.properties +++ b/util/src/main/i18n/translations/match_ko_KR.properties @@ -1,5 +1,7 @@ match.title = 경기 + + match.info.time = 시간 match.info.goals = 목표 @@ -11,12 +13,15 @@ match.info.observers = 구경꾼 # {0} = team name match.balanceTeams = 만약 {0}에 사람이 계속 몰려있으면, 팀이 자동조정 될 것입니다. +match.maxBuildHeight = 블록 설치가 가능한 최고 높이에 도달하였습니다 match.outOfBounds = 경기장을 나가실 수 없습니다 match.laneExit = 맵의 제한구역에 도달했습니다\! +match.disabled.enderChest = 엔더 상자를 사용할 수 없습니다 +match.disabled.bed = 침대를 사용할 수 없습니다 match.class.title = 클래스 @@ -39,21 +44,29 @@ match.class.notFound = 해당 클래스는 존재하지 않습니다. # {1} = number of consecutive kills # {2} = number of deaths # {3} = numbers of kills divided by the number of deaths (kill-death ratio) +match.stats = 처치\: {0} | 연속 처치\: {1} | 죽은 횟수\: {2} | K/D\: {3} # {0} = a player name # {1} = an amount of kills(number) +match.stats.kills = 처치\: {1} - {0} # {0} = a player name # {1} = a killstreak(number) +match.stats.killstreak = 연속 처치\: {1} - {0} # {0} = a player name # {1} = an amount of deaths(number) +match.stats.deaths = 죽은 횟수\: {1} - {0} # {0} = a player name # {1} = an amount of blocks +match.stats.bowshot = 최장거리 저격\: {1} 블록 - {0} +match.stats.overall = 경기 통계 +match.stats.you = 자신의 통계 +match.stats.disabled = 경기 통계를 사용하지 않도록 설정했습니다 # {0} = team name (e.g. "Red Team") match.myTeam = 당신은 {0}입니다 @@ -71,6 +84,14 @@ match.alias.ok = {0}의 이름을 {1}(으)로 바꾸는데 성공했습니다. # {0} = team name (e.g. "Red Team") match.alias.err = 이름이 {0}인 팀이 이미 존재합니다. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0}의 최대 인원은 이제 {1}명입니다 + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0}의 최소 인원은 이제 {1}명입니다 + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = {0} 뒤에 게임이 끝납니다 @@ -101,13 +122,13 @@ broadcast.gameOver.teamWinner = {0} 승리\! broadcast.gameOver.teamWinners = {0} 승리\! # {0} = duration (e.g. "30 seconds") -countdown.matchStart = 경기가 {0}후에 시작됩니다 +countdown.matchStart = 경기가 {0} 후에 시작됩니다 # {0} = duration countdown.huddleEnd = 팀 작전회의가 {0} 내로 끝납니다 # {0} = duration -countdown.restart = 서버가 {0}후에 재시작됩니다 +countdown.restart = 서버가 {0} 후에 재시작됩니다 admin.reloadConfig = 설정을 다시 불러왔습니다. @@ -137,4 +158,5 @@ admin.start.unknownState = 지금은 경기를 시작할 수 없습니다. admin.end.unknownError = 지금은 경기를 끝낼 수 없습니다. +admin.setPool.activeCycle = 경기 진행 중에는 풀(Pool)을 조정할 수 없습니다. diff --git a/util/src/main/i18n/translations/match_lol_US.properties b/util/src/main/i18n/translations/match_lol_US.properties index e7915c3b02..8e185c1ff5 100644 --- a/util/src/main/i18n/translations/match_lol_US.properties +++ b/util/src/main/i18n/translations/match_lol_US.properties @@ -1,5 +1,9 @@ match.title = Macht +match.name = macht + +match.name.plural = machts + match.info.time = Timez match.info.goals = Golez @@ -82,6 +86,14 @@ match.alias.ok = {0}''s naem is naw {1} # {0} = team name (e.g. "Red Team") match.alias.err = {0} is alrdy a tihng +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} naw haz a max siez ov {1} katz + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} naw haz a min siez ov {1} katz + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = macht endin adfter {0} diff --git a/util/src/main/i18n/translations/match_no_NO.properties b/util/src/main/i18n/translations/match_no_NO.properties index 29eb2035f3..e9f55205dd 100644 --- a/util/src/main/i18n/translations/match_no_NO.properties +++ b/util/src/main/i18n/translations/match_no_NO.properties @@ -1,5 +1,7 @@ match.title = Kamp + + match.info.time = Tid match.info.goals = Mål @@ -71,6 +73,12 @@ match.alias.ok = {0} omdøpt til {1} # {0} = team name (e.g. "Red Team") match.alias.err = Et lag med navnet {0} finnes allerede. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = kampen slutter etter {0} diff --git a/util/src/main/i18n/translations/match_ro_RO.properties b/util/src/main/i18n/translations/match_ro_RO.properties index a0f51c2b63..1afdcc17e7 100644 --- a/util/src/main/i18n/translations/match_ro_RO.properties +++ b/util/src/main/i18n/translations/match_ro_RO.properties @@ -1,5 +1,9 @@ match.title = Meci +match.name = meci + +match.name.plural = meciuri + match.info.time = Timp match.info.goals = Scopuri @@ -82,6 +86,14 @@ match.alias.ok = {0} a fost redenumită {1} # {0} = team name (e.g. "Red Team") match.alias.err = Există deja o echipă cu numele {0}. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = Dimensiunea maximă a {0} este acum {1} jucători + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = Dimensiunea minimă a {0} este acum {1} jucători + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = meciul se va termina după {0} diff --git a/util/src/main/i18n/translations/match_ru_RU.properties b/util/src/main/i18n/translations/match_ru_RU.properties index 5047ab3306..3bd3186982 100644 --- a/util/src/main/i18n/translations/match_ru_RU.properties +++ b/util/src/main/i18n/translations/match_ru_RU.properties @@ -1,5 +1,9 @@ match.title = Матч +match.name = матч + +match.name.plural = матчи + match.info.time = Время match.info.goals = Цели @@ -82,6 +86,14 @@ match.alias.ok = {0} успешно переименован в {1} # {0} = team name (e.g. "Red Team") match.alias.err = Команда с именем {0} уже существует. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = Максимальное кол-во игроков для команды {0} было изменено на {1} + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = Минимальное кол-во игроков для команды {0} было изменено на {1} + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = Матч закончится через {0} diff --git a/util/src/main/i18n/translations/match_sv_SE.properties b/util/src/main/i18n/translations/match_sv_SE.properties index b23339cc51..1529e96695 100644 --- a/util/src/main/i18n/translations/match_sv_SE.properties +++ b/util/src/main/i18n/translations/match_sv_SE.properties @@ -1,5 +1,7 @@ match.title = Match + + match.info.time = Tid match.info.goals = Mål @@ -82,6 +84,14 @@ match.alias.ok = {0} har nu bytt namn till {1} # {0} = team name (e.g. "Red Team") match.alias.err = Ett lag med namnet {0} existerar redan. +# {0} = team name (e.g. "Green Team") +# {1} = max number of players +match.resize.max = {0} har nu en maximal storlek på {1} spelare + +# {0} = team name (e.g. "Green Team") +# {1} = min number of players +match.resize.min = {0} har nu en minsta storlek på {1} spelare + # {0} = duration in colon format (e.g. "13:37" for 13 minutes and 37 seconds left) match.timeLimit.generic = matchen slutar efter {0} diff --git a/util/src/main/i18n/translations/misc_de_DE.properties b/util/src/main/i18n/translations/misc_de_DE.properties index 6b4ecddb00..91f144807e 100644 --- a/util/src/main/i18n/translations/misc_de_DE.properties +++ b/util/src/main/i18n/translations/misc_de_DE.properties @@ -61,6 +61,7 @@ misc.createdBy = Erstellt von {0} misc.by = von {0} # {0} = some map or gamemode name +misc.playing = Gespielt wird {0} # {0} = something made by {1} (e.g. a map name) # {1} = player name @@ -88,6 +89,11 @@ misc.blocks = {0} Blöcke # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Team +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} oder {1} + # do not translate, keep as-is misc.snowman = ☃ @@ -95,7 +101,9 @@ misc.unknown = Unbekannt misc.console = Konsole +misc.on = An +misc.off = Aus misc.to = An @@ -111,22 +119,34 @@ misc.alert = Hinweis misc.warning = WARNUNG +misc.top = Oben +misc.bottom = Unten +misc.front = Vorne +misc.back = Hinten +misc.rear = Rückseitig +misc.left = Links +misc.right = Rechts +misc.center = Mittig +misc.north = Nördlich +misc.south = Südlich +misc.east = Östlich +misc.west = Westlich # {0} = player name -misc.teleportTo = Du wirst zu {0} teleportiert +misc.teleportTo = Zu {0} teleportieren -misc.teleportTool = Teleportier-Tool +misc.teleportTool = Tool zum Teleportieren misc.editWand = Zauberstab zum Editieren @@ -134,16 +154,19 @@ misc.editWand = Zauberstab zum Editieren misc.join = {0} ist dem Spiel beigetreten # {0} = player name +misc.join.quiet = {0} ist dem Spiel still beigetreten # {0} = player name misc.leave = {0} hat das Spiel verlassen # {0} = player name +misc.leave.quiet = {0} hat das Spiel still verlassen -misc.incorrectWorld = Oh oh\! Ein Fehler ist augetreten. Bitte versuche, dem Spiel erneut beizutreten. +misc.incorrectWorld = Hoppla\! Ein Fehler ist aufgetreten. Bitte versuche, dem Spiel erneut beizutreten. +misc.serverFull = Der Server ist voll; überlege dir zu spenden, um trotzdem beitreten zu können\! -misc.serverRestart = Server startet neu\! +misc.serverRestart = Der Server startet neu\! type.int = ganze Zahl @@ -151,9 +174,20 @@ type.float = Dezimalzahl type.boolean = wahr oder falsch +type.duration = Dauer + +type.vector = (x,y,z)-Vektor + +type.chunk = (x,z)-Vektor + +type.version = (x.y.z)-Version +type.gamemode = Spielmodus +type.component = Text +type.uri = URL -type.gamemode = spielmodus +type.team = Team +type.settingkey = Einstellung \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_en_GB.properties b/util/src/main/i18n/translations/misc_en_GB.properties index 878acf4642..ae12f48143 100644 --- a/util/src/main/i18n/translations/misc_en_GB.properties +++ b/util/src/main/i18n/translations/misc_en_GB.properties @@ -89,6 +89,11 @@ misc.blocks = {0} blocks # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Team +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} or {1} + # do not translate, keep as-is misc.snowman = ☃ @@ -181,4 +186,8 @@ type.gamemode = gamemode type.component = text -type.uri = url \ No newline at end of file +type.uri = url + +type.team = team + +type.settingkey = setting \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_es_CL.properties b/util/src/main/i18n/translations/misc_es_CL.properties index 2655667c5c..16c0b8ce88 100644 --- a/util/src/main/i18n/translations/misc_es_CL.properties +++ b/util/src/main/i18n/translations/misc_es_CL.properties @@ -58,8 +58,10 @@ misc.timeRemaining = Tiempo restante\: {0} misc.createdBy = Creado por {0} # {0} = player name +misc.by = por {0} # {0} = some map or gamemode name +misc.playing = Jugando {0} # {0} = something made by {1} (e.g. a map name) # {1} = player name @@ -76,6 +78,7 @@ misc.point = {0} punto misc.points = {0} puntos # {0} = "1" +misc.life = {0} vida # {0} = number of lives misc.lives = {0} vidas @@ -86,37 +89,59 @@ misc.blocks = {0} bloques # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Equipo +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} ó {1} + # do not translate, keep as-is +misc.snowman = ☃ misc.unknown = Desconocido misc.console = Consola +misc.on = Encendido +misc.off = Apagado +misc.to = Para +misc.from = De misc.thankYou = Gracias. misc.noPermission = No tienes permiso. -misc.tip = Consejo +misc.tip = Tip misc.alert = Alerta misc.warning = ADVERTENCIA +misc.top = Arriba +misc.bottom = Abajo +misc.front = Adelante +misc.back = Atrás +misc.rear = Detrás +misc.left = Izquierda +misc.right = Derecha +misc.center = Centro +misc.north = Norte +misc.south = Sur +misc.east = Este +misc.west = Oeste # {0} = player name misc.teleportTo = Teletransportarse a {0} @@ -129,23 +154,40 @@ misc.editWand = Vara para edición misc.join = {0} se ha unido # {0} = player name +misc.join.quiet = {0} se unió a la partida silenciosamente # {0} = player name misc.leave = {0} salió # {0} = player name +misc.leave.quiet = {0} abandonó la partida silenciosamente -misc.incorrectWorld = Uh oh\! Hemos tenido un error. Por favor prueba relogueando. +misc.incorrectWorld = ¡Uh oh\! Hemos tenido un error. Por favor prueba relogueando. +misc.serverFull = El servidor está lleno. ¡Considera mejorar a premium para poder unirte mientras lo está\! misc.serverRestart = ¡Reiniciando servidor\! +type.int = número entero +type.float = número decimal +type.boolean = verdadero o falso +type.duration = duración +type.vector = vector (x,y,z) +type.chunk = vector (x,z) +type.version = versión (x.y.z) type.gamemode = modo de juego +type.component = texto + +type.uri = url + +type.team = equipo + +type.settingkey = ajuste \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_es_ES.properties b/util/src/main/i18n/translations/misc_es_ES.properties index 2655667c5c..16c0b8ce88 100644 --- a/util/src/main/i18n/translations/misc_es_ES.properties +++ b/util/src/main/i18n/translations/misc_es_ES.properties @@ -58,8 +58,10 @@ misc.timeRemaining = Tiempo restante\: {0} misc.createdBy = Creado por {0} # {0} = player name +misc.by = por {0} # {0} = some map or gamemode name +misc.playing = Jugando {0} # {0} = something made by {1} (e.g. a map name) # {1} = player name @@ -76,6 +78,7 @@ misc.point = {0} punto misc.points = {0} puntos # {0} = "1" +misc.life = {0} vida # {0} = number of lives misc.lives = {0} vidas @@ -86,37 +89,59 @@ misc.blocks = {0} bloques # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Equipo +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} ó {1} + # do not translate, keep as-is +misc.snowman = ☃ misc.unknown = Desconocido misc.console = Consola +misc.on = Encendido +misc.off = Apagado +misc.to = Para +misc.from = De misc.thankYou = Gracias. misc.noPermission = No tienes permiso. -misc.tip = Consejo +misc.tip = Tip misc.alert = Alerta misc.warning = ADVERTENCIA +misc.top = Arriba +misc.bottom = Abajo +misc.front = Adelante +misc.back = Atrás +misc.rear = Detrás +misc.left = Izquierda +misc.right = Derecha +misc.center = Centro +misc.north = Norte +misc.south = Sur +misc.east = Este +misc.west = Oeste # {0} = player name misc.teleportTo = Teletransportarse a {0} @@ -129,23 +154,40 @@ misc.editWand = Vara para edición misc.join = {0} se ha unido # {0} = player name +misc.join.quiet = {0} se unió a la partida silenciosamente # {0} = player name misc.leave = {0} salió # {0} = player name +misc.leave.quiet = {0} abandonó la partida silenciosamente -misc.incorrectWorld = Uh oh\! Hemos tenido un error. Por favor prueba relogueando. +misc.incorrectWorld = ¡Uh oh\! Hemos tenido un error. Por favor prueba relogueando. +misc.serverFull = El servidor está lleno. ¡Considera mejorar a premium para poder unirte mientras lo está\! misc.serverRestart = ¡Reiniciando servidor\! +type.int = número entero +type.float = número decimal +type.boolean = verdadero o falso +type.duration = duración +type.vector = vector (x,y,z) +type.chunk = vector (x,z) +type.version = versión (x.y.z) type.gamemode = modo de juego +type.component = texto + +type.uri = url + +type.team = equipo + +type.settingkey = ajuste \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_es_MX.properties b/util/src/main/i18n/translations/misc_es_MX.properties index 2655667c5c..8ab54c0306 100644 --- a/util/src/main/i18n/translations/misc_es_MX.properties +++ b/util/src/main/i18n/translations/misc_es_MX.properties @@ -58,8 +58,10 @@ misc.timeRemaining = Tiempo restante\: {0} misc.createdBy = Creado por {0} # {0} = player name +misc.by = por {0} # {0} = some map or gamemode name +misc.playing = Jugando {0} # {0} = something made by {1} (e.g. a map name) # {1} = player name @@ -76,6 +78,7 @@ misc.point = {0} punto misc.points = {0} puntos # {0} = "1" +misc.life = {0} vida # {0} = number of lives misc.lives = {0} vidas @@ -86,15 +89,25 @@ misc.blocks = {0} bloques # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Equipo +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} ó {1} + # do not translate, keep as-is +misc.snowman = ☃ misc.unknown = Desconocido misc.console = Consola +misc.on = Encendido +misc.off = Apagado +misc.to = Para +misc.from = De misc.thankYou = Gracias. @@ -106,17 +119,29 @@ misc.alert = Alerta misc.warning = ADVERTENCIA +misc.top = Arriba +misc.bottom = Abajo +misc.front = Adelante +misc.back = Atrás +misc.rear = Detrás +misc.left = Izquierda +misc.right = Derecha +misc.center = Centro +misc.north = Norte +misc.south = Sur +misc.east = Este +misc.west = Oeste # {0} = player name misc.teleportTo = Teletransportarse a {0} @@ -129,23 +154,40 @@ misc.editWand = Vara para edición misc.join = {0} se ha unido # {0} = player name +misc.join.quiet = {0} se unió a la partida silenciosamente # {0} = player name misc.leave = {0} salió # {0} = player name +misc.leave.quiet = {0} abandonó la partida silenciosamente misc.incorrectWorld = Uh oh\! Hemos tenido un error. Por favor prueba relogueando. +misc.serverFull = El servidor está lleno. ¡Considera mejorar a premium para poder unirte mientras lo está\! misc.serverRestart = ¡Reiniciando servidor\! +type.int = número entero +type.float = número decimal +type.boolean = verdadero o falso +type.duration = duración +type.vector = vector (x,y,z) +type.chunk = vector (x,z) +type.version = versión (x.y.z) type.gamemode = modo de juego +type.component = texto + +type.uri = url + +type.team = equipo + +type.settingkey = ajuste \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_fr_FR.properties b/util/src/main/i18n/translations/misc_fr_FR.properties index 9c053953ec..ef751e0378 100644 --- a/util/src/main/i18n/translations/misc_fr_FR.properties +++ b/util/src/main/i18n/translations/misc_fr_FR.properties @@ -89,6 +89,10 @@ misc.blocks = {0} blocs # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Equipe +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option + # do not translate, keep as-is misc.snowman = ☃ @@ -181,4 +185,8 @@ type.gamemode = mode de jeu type.component = texte -type.uri = lien \ No newline at end of file +type.uri = lien + +type.team = équipe + +type.settingkey = réglage \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_ko_KR.properties b/util/src/main/i18n/translations/misc_ko_KR.properties index 7e50b1b5bf..62a67d2e6e 100644 --- a/util/src/main/i18n/translations/misc_ko_KR.properties +++ b/util/src/main/i18n/translations/misc_ko_KR.properties @@ -89,6 +89,10 @@ misc.blocks = {0} 블록 # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = 팀 +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option + # do not translate, keep as-is misc.snowman = ☃ @@ -100,7 +104,9 @@ misc.on = 켜짐 misc.off = 꺼짐 +misc.to = To +misc.from = From misc.thankYou = 감사합니다. @@ -179,4 +185,8 @@ type.gamemode = 게임 모드 type.component = 텍스트 -type.uri = url \ No newline at end of file +type.uri = url + +type.team = 팀 + +type.settingkey = 설정 \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_lol_US.properties b/util/src/main/i18n/translations/misc_lol_US.properties index 181ff60383..a96032e70f 100644 --- a/util/src/main/i18n/translations/misc_lol_US.properties +++ b/util/src/main/i18n/translations/misc_lol_US.properties @@ -89,6 +89,11 @@ misc.blocks = {0} blokz # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Teem +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} orrrrrrrrrrrrrrrrrr {1} + # do not translate, keep as-is misc.snowman = ☃ @@ -181,4 +186,8 @@ type.gamemode = gaemode type.component = txt -type.uri = Uniform Resource Locator \ No newline at end of file +type.uri = Uniform Resource Locator + +type.team = taem + +type.settingkey = setin \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_no_NO.properties b/util/src/main/i18n/translations/misc_no_NO.properties index 57329e254d..ab794f89c3 100644 --- a/util/src/main/i18n/translations/misc_no_NO.properties +++ b/util/src/main/i18n/translations/misc_no_NO.properties @@ -86,6 +86,10 @@ misc.blocks = {0} blokker # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Lag +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option + # do not translate, keep as-is misc.snowman = ☃ @@ -159,3 +163,5 @@ misc.serverRestart = Serveren omstartes\! type.gamemode = spillemodus + + diff --git a/util/src/main/i18n/translations/misc_ro_RO.properties b/util/src/main/i18n/translations/misc_ro_RO.properties index fe1b743b37..18bd6f9491 100644 --- a/util/src/main/i18n/translations/misc_ro_RO.properties +++ b/util/src/main/i18n/translations/misc_ro_RO.properties @@ -52,7 +52,7 @@ misc.days = {0} zile misc.timeAgo = acum {0} # {0} = duration (e.g. "1:00" for 1 minute left, "15:25" for 15 minutes and 25 seconds left) -misc.timeRemaining = Timp Rămas\: {0} +misc.timeRemaining = Timp rămas\: {0} # {0} = player name misc.createdBy = Creată de {0} @@ -89,6 +89,11 @@ misc.blocks = {0} blocuri # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Echipă +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} sau {1} + # do not translate, keep as-is misc.snowman = ☃ @@ -173,4 +178,8 @@ type.gamemode = mod de joc type.component = text -type.uri = url \ No newline at end of file +type.uri = url + +type.team = echipă + +type.settingkey = setare \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_ru_RU.properties b/util/src/main/i18n/translations/misc_ru_RU.properties index 44ecf9544f..2a6590b335 100644 --- a/util/src/main/i18n/translations/misc_ru_RU.properties +++ b/util/src/main/i18n/translations/misc_ru_RU.properties @@ -89,6 +89,11 @@ misc.blocks = {0} блоки # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Команда +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option +misc.or = {0} или {1} + # do not translate, keep as-is misc.snowman = ☃ @@ -181,4 +186,8 @@ type.gamemode = режим игры type.component = текст -type.uri = url \ No newline at end of file +type.uri = url + +type.team = команда + +type.settingkey = настройка \ No newline at end of file diff --git a/util/src/main/i18n/translations/misc_sv_SE.properties b/util/src/main/i18n/translations/misc_sv_SE.properties index 987ded7a01..891ad063d8 100644 --- a/util/src/main/i18n/translations/misc_sv_SE.properties +++ b/util/src/main/i18n/translations/misc_sv_SE.properties @@ -89,6 +89,10 @@ misc.blocks = {0} block # "Team" (e.g. like in, "Red Team" or "Blue Team") misc.team = Lag +# A choice with two options (e.g. 1 hour or 5 matches) +# {0} = the first option +# {1} = the second option + # do not translate, keep as-is misc.snowman = ☃ @@ -181,4 +185,8 @@ type.gamemode = spelsätt type.component = text -type.uri = url \ No newline at end of file +type.uri = url + +type.team = lag + +type.settingkey = inställning \ No newline at end of file diff --git a/util/src/main/i18n/translations/moderation_de_DE.properties b/util/src/main/i18n/translations/moderation_de_DE.properties index 6ea5cf7ee5..4b6b1ef507 100644 --- a/util/src/main/i18n/translations/moderation_de_DE.properties +++ b/util/src/main/i18n/translations/moderation_de_DE.properties @@ -1,46 +1,65 @@ # TODO: Rename some keys and move others to misc # {0} = Type of punishment +moderation.type = Art\: {0} +moderation.type.kick = Gekickt +moderation.type.mute = Stummgeschaltet +moderation.type.warn = Verwarnt +moderation.type.ban = Permanenter Bann # {0} = duration of the ban (e.g. "7 days") +moderation.type.temp_ban = {0}-Bann # {0} = number of online staff # {1} = list of staff names (e.g. "Bob, Alice, and Jerry") +moderation.staff.name = Moderatoren online ({0})\: {1} +moderation.staff.empty = Keine Moderatoren online \:( # {0} = punishment reason (e.g. "Hacking is not allowed") -moderation.screen.kick = Du wurdest wegen {0} gekickt +moderation.screen.kick = Du wurdest gekickt wegen {0} # {0} = punishment reason -moderation.screen.ban = Du wurdest dauerhaft gebannt wegen {0} +moderation.screen.ban = Du wurdest permanent gebannt wegen {0} # {0} = punishment reason moderation.screen.temp_ban = Du wurdest temporär gebannt wegen {0} # {0} = a http link (e.g. "https://example.com/rules") -moderation.screen.rulesLink = Bitte lies unsere Regeln unter {0} nach +moderation.screen.rulesLink = Bitte lies unsere Regeln nach unter {0} # {0} = staff member name (e.g. "Notch") +moderation.screen.signoff = Auferlegt von {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Läuft ab in {0} +# {0} = mute reason +moderation.mute.message = Du wurdest stummgeschaltet wegen {0} +moderation.mute.list = Stummgeschaltete Spieler +moderation.mute.none = Keine stummgeschalteten Spieler sind online\! # {0} = player name +moderation.mute.hover = Klick, um die Stummschaltung von {0} aufzuheben # {0} = player name +moderation.mute.target = {0} ist stummgeschaltet und kann keine Nachrichten empfangen # {0} = player name +moderation.mute.existing = {0} ist bereits stummgeschaltet\! # {0} = player name +moderation.unmute.sender = Du hast die Stummschaltung von {0} aufgehoben +moderation.unmute.target = Deine Stummschaltung wurde aufgehoben, du kannst nun Nachrichten wieder versenden # {0} = player name +moderation.unmute.none = {0} ist nicht stummgeschaltet. moderation.reports.none = Es gibt keine aktuellen Meldungen\! @@ -52,23 +71,29 @@ moderation.reports.hover = Gemeldet von {0} moderation.alts.header = Zweit-Accounts # {0} = player name -moderation.alts.noAlts = {0} hat keine Zweit Accounts online. +moderation.alts.noAlts = {0} hat keine Zweit-Accounts online. # {0} = ip address (e.g. "1.2.3.4") +moderation.ipBan.invalidIP = {0} ist keine gültige IP-Adresse # {0} = player name +moderation.ipBan.banned = {0} wurde IP-gebannt # {0} = player name or ip address (e.g. "Notch" or "1.2.3.4") # {1} = number of alternate accounts +moderation.ipBan.bannedWithAlts = {0} wurde IP-gebannt mitsamt {1} Zweit-Accounts # {0} = player name +moderation.records.lookupNone = {0} hat keine Bestrafungen +moderation.records.header = Bestrafungen # {0} = punishment reason (e.g. "Hacking is not allowed") moderation.records.reason = Grund\: {0} # {0} = player name # {1} = another player name +moderation.similarIP.loginEvent = {0} hat eine ähnliche IP-Adresse wie der gebannte Spieler {1} # {0} = player name # {1} = past duration (e.g. "5 minutes ago") @@ -81,41 +106,51 @@ moderation.freeze.freeze = Du hast {0} eingefroren moderation.freeze.unfreeze = Du hast {0} aufgetaut # {0} = player name +moderation.freeze.frozen = Du wurdest eingefroren # {0} = player name +moderation.freeze.unfrozen = Du wurdest aufgetaut moderation.freeze.itemName = Spieler einfrieren -moderation.freeze.itemDescription = Mit einem Rechtsklick auf einen Spieler kannst du diesen einfrieren/auftauen +moderation.freeze.itemDescription = Rechtsklick auf einen Spieler, um diesen einzufrieren/aufzutauen +moderation.freeze.notEnabled = Einfrieren ist nicht aktiviert # {0} = player name moderation.freeze.exempt = {0} kann nicht eingefroren werden # {0} = player name +moderation.freeze.alreadyFrozen = {0} ist bereits eingefroren # {0} = player name +moderation.freeze.alreadyThawed = {0} ist nicht eingefroren # {0} = number of players # {1} = list of player names (e.g. "Alice, Bob, and Jerry") +moderation.freeze.frozenList.online = Eingefrorene Spieler ({0})\: {1} # {0} = number of players # {1} = list of player names +moderation.freeze.frozenList.offline = Eingefrorene Spieler, die offline sind ({0})\: {1} +moderation.freeze.frozenList.none = Keine Spieler sind eingefroren\! # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.frozen = {0} hat {1} eingefroren # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.thaw = {0} hat {1} aufgetaut -moderation.defuse.water = Du kannst kein TNT im Wasser entschärfen. +moderation.defuse.water = Du kannst TNT im Wasser nicht entschärfen. -moderation.defuse.enemy = Du kannst kein gegnerisches TNT entschärfen. +moderation.defuse.enemy = Du kannst gegnerisches TNT nicht entschärfen. moderation.defuse.displayName = TNT-Entschärfer -moderation.defuse.tooltip = Rechtsklicke, um TNT in einem Radius von 5 Blöcken zu entschärfen +moderation.defuse.tooltip = Rechtsklick, um TNT in einem 5-Blöcke-Radius zu entschärfen moderation.defuse.world = Du hast Welt-TNT entschärft. @@ -126,13 +161,17 @@ moderation.defuse.player = Du hast {0}s TNT entschärft. # {1} = accused player name # {2} = reason for report (e.g. "Is griefing my home") moderation.report.notify = {0} meldet {1}\: {2} -moderation.report.acknowledge = Deine Meldung wird in Kürze behandelt. +moderation.report.acknowledge = Deine Meldung wird in Kürze bearbeitet. # {0} = number of seconds moderation.afk.warn = Deine Verbindung wird in {0} Sekunden wegen Inaktivität getrennt moderation.afk.kick = Deine Verbindung wurde wegen Inaktivität getrennt +vanish.activate = Du bist unsichtbar\! +vanish.deactivate = Du bist jetzt sichtbar\! +vanish.chat.deny = Du kannst nur den Admin-Chat benutzen, wenn du unsichtbar bist +vanish.hotbar = Du bist momentan unsichtbar diff --git a/util/src/main/i18n/translations/moderation_en_GB.properties b/util/src/main/i18n/translations/moderation_en_GB.properties index dec92e9ce3..242cb9b029 100644 --- a/util/src/main/i18n/translations/moderation_en_GB.properties +++ b/util/src/main/i18n/translations/moderation_en_GB.properties @@ -37,7 +37,8 @@ moderation.screen.signoff = Issued by {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expires in {0} -moderation.mute.message = You have been muted and are unable to send chat messages +# {0} = mute reason +moderation.mute.message = You have been muted for {0} moderation.mute.list = Muted Players diff --git a/util/src/main/i18n/translations/moderation_es_CL.properties b/util/src/main/i18n/translations/moderation_es_CL.properties index 9fdd5036b9..9c9e522535 100644 --- a/util/src/main/i18n/translations/moderation_es_CL.properties +++ b/util/src/main/i18n/translations/moderation_es_CL.properties @@ -1,48 +1,72 @@ # TODO: Rename some keys and move others to misc # {0} = Type of punishment +moderation.type = Tipo\: {0} +moderation.type.kick = Expulsado +moderation.type.mute = Silenciado +moderation.type.warn = Advertido +moderation.type.ban = Ban permanente # {0} = duration of the ban (e.g. "7 days") +moderation.type.temp_ban = {0} ban # {0} = number of online staff # {1} = list of staff names (e.g. "Bob, Alice, and Jerry") +moderation.staff.name = Staff en línea ({0})\: {1} +moderation.staff.empty = No hay staff conectado \:( # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.screen.kick = Has sido expulsado por {0} # {0} = punishment reason +moderation.screen.ban = Has sido baneado permanentemente por {0} # {0} = punishment reason +moderation.screen.temp_ban = Has sido baneado temporalmente por {0} # {0} = a http link (e.g. "https://example.com/rules") +moderation.screen.rulesLink = Por favor, revisa nuestras reglas en {0} # {0} = staff member name (e.g. "Notch") +moderation.screen.signoff = Emitido por {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expira en {0} +# {0} = mute reason +moderation.mute.message = Has sido silenciado por {0} moderation.mute.list = Jugadores silenciados moderation.mute.none = ¡No hay jugadores silenciados en línea\! # {0} = player name +moderation.mute.hover = Click para desmutear a {0} # {0} = player name +moderation.mute.target = {0} está silenciado, y no puede recibir mensajes # {0} = player name +moderation.mute.existing = ¡{0} ya está silenciado\! # {0} = player name +moderation.unmute.sender = Has desmuteado a {0} +moderation.unmute.target = Has sido desmuteado y ahora puedes enviar mensajes # {0} = player name +moderation.unmute.none = {0} no está silenciado. +moderation.reports.none = ¡No ha habido reportes recientes\! +moderation.reports.header = Reportes recientes # {0} = player name +moderation.reports.hover = Reportado por {0} moderation.alts.header = Multi-Cuentas @@ -57,17 +81,23 @@ moderation.ipBan.banned = {0} ha sido baneado de IP # {0} = player name or ip address (e.g. "Notch" or "1.2.3.4") # {1} = number of alternate accounts +moderation.ipBan.bannedWithAlts = {0} ha sido baneado de IP junto con {1} multicuentas en línea # {0} = player name +moderation.records.lookupNone = {0} no tiene historial de infracciones +moderation.records.header = Registro de infracciones # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.records.reason = Razón\: {0} # {0} = player name # {1} = another player name +moderation.similarIP.loginEvent = {0} tiene una IP similar al jugador baneado {1} # {0} = player name # {1} = past duration (e.g. "5 minutes ago") +moderation.similarIP.hover = Baneado por {0}, {1} # {0} = player name moderation.freeze.freeze = Has congelado a {0} @@ -76,33 +106,43 @@ moderation.freeze.freeze = Has congelado a {0} moderation.freeze.unfreeze = Has descongelado a {0} # {0} = player name +moderation.freeze.frozen = Has sido congelado # {0} = player name +moderation.freeze.unfrozen = Has sido descongelado moderation.freeze.itemName = Congelador de jugadores moderation.freeze.itemDescription = Click derecho en un jugador para congelarlo / descongelarlo +moderation.freeze.notEnabled = La función freeze no está habilitada # {0} = player name moderation.freeze.exempt = {0} no puede ser congelado # {0} = player name +moderation.freeze.alreadyFrozen = {0} ya está congelado # {0} = player name +moderation.freeze.alreadyThawed = {0} no está congelado # {0} = number of players # {1} = list of player names (e.g. "Alice, Bob, and Jerry") +moderation.freeze.frozenList.online = Jugadores congelados ({0})\: {1} # {0} = number of players # {1} = list of player names +moderation.freeze.frozenList.offline = Jugadores congelados desconectados ({0})\: {1} +moderation.freeze.frozenList.none = ¡No hay jugadores congelados\! # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.frozen = {0} ha congelado a {1} # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.thaw = {0} ha descongelado a {1} moderation.defuse.water = No puedes desactivar TNT en el agua. @@ -128,6 +168,10 @@ moderation.afk.warn = Serás desconectado por inactividad en {0} segundos moderation.afk.kick = Has sido desconectado por inactividad +vanish.activate = ¡Has desaparecido\! +vanish.deactivate = ¡Ahora eres visible\! +vanish.chat.deny = Sólo puedes usar el chat de admin mientras estás en vanish +vanish.hotbar = Estás en vanish diff --git a/util/src/main/i18n/translations/moderation_es_ES.properties b/util/src/main/i18n/translations/moderation_es_ES.properties index 9fdd5036b9..9c9e522535 100644 --- a/util/src/main/i18n/translations/moderation_es_ES.properties +++ b/util/src/main/i18n/translations/moderation_es_ES.properties @@ -1,48 +1,72 @@ # TODO: Rename some keys and move others to misc # {0} = Type of punishment +moderation.type = Tipo\: {0} +moderation.type.kick = Expulsado +moderation.type.mute = Silenciado +moderation.type.warn = Advertido +moderation.type.ban = Ban permanente # {0} = duration of the ban (e.g. "7 days") +moderation.type.temp_ban = {0} ban # {0} = number of online staff # {1} = list of staff names (e.g. "Bob, Alice, and Jerry") +moderation.staff.name = Staff en línea ({0})\: {1} +moderation.staff.empty = No hay staff conectado \:( # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.screen.kick = Has sido expulsado por {0} # {0} = punishment reason +moderation.screen.ban = Has sido baneado permanentemente por {0} # {0} = punishment reason +moderation.screen.temp_ban = Has sido baneado temporalmente por {0} # {0} = a http link (e.g. "https://example.com/rules") +moderation.screen.rulesLink = Por favor, revisa nuestras reglas en {0} # {0} = staff member name (e.g. "Notch") +moderation.screen.signoff = Emitido por {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expira en {0} +# {0} = mute reason +moderation.mute.message = Has sido silenciado por {0} moderation.mute.list = Jugadores silenciados moderation.mute.none = ¡No hay jugadores silenciados en línea\! # {0} = player name +moderation.mute.hover = Click para desmutear a {0} # {0} = player name +moderation.mute.target = {0} está silenciado, y no puede recibir mensajes # {0} = player name +moderation.mute.existing = ¡{0} ya está silenciado\! # {0} = player name +moderation.unmute.sender = Has desmuteado a {0} +moderation.unmute.target = Has sido desmuteado y ahora puedes enviar mensajes # {0} = player name +moderation.unmute.none = {0} no está silenciado. +moderation.reports.none = ¡No ha habido reportes recientes\! +moderation.reports.header = Reportes recientes # {0} = player name +moderation.reports.hover = Reportado por {0} moderation.alts.header = Multi-Cuentas @@ -57,17 +81,23 @@ moderation.ipBan.banned = {0} ha sido baneado de IP # {0} = player name or ip address (e.g. "Notch" or "1.2.3.4") # {1} = number of alternate accounts +moderation.ipBan.bannedWithAlts = {0} ha sido baneado de IP junto con {1} multicuentas en línea # {0} = player name +moderation.records.lookupNone = {0} no tiene historial de infracciones +moderation.records.header = Registro de infracciones # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.records.reason = Razón\: {0} # {0} = player name # {1} = another player name +moderation.similarIP.loginEvent = {0} tiene una IP similar al jugador baneado {1} # {0} = player name # {1} = past duration (e.g. "5 minutes ago") +moderation.similarIP.hover = Baneado por {0}, {1} # {0} = player name moderation.freeze.freeze = Has congelado a {0} @@ -76,33 +106,43 @@ moderation.freeze.freeze = Has congelado a {0} moderation.freeze.unfreeze = Has descongelado a {0} # {0} = player name +moderation.freeze.frozen = Has sido congelado # {0} = player name +moderation.freeze.unfrozen = Has sido descongelado moderation.freeze.itemName = Congelador de jugadores moderation.freeze.itemDescription = Click derecho en un jugador para congelarlo / descongelarlo +moderation.freeze.notEnabled = La función freeze no está habilitada # {0} = player name moderation.freeze.exempt = {0} no puede ser congelado # {0} = player name +moderation.freeze.alreadyFrozen = {0} ya está congelado # {0} = player name +moderation.freeze.alreadyThawed = {0} no está congelado # {0} = number of players # {1} = list of player names (e.g. "Alice, Bob, and Jerry") +moderation.freeze.frozenList.online = Jugadores congelados ({0})\: {1} # {0} = number of players # {1} = list of player names +moderation.freeze.frozenList.offline = Jugadores congelados desconectados ({0})\: {1} +moderation.freeze.frozenList.none = ¡No hay jugadores congelados\! # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.frozen = {0} ha congelado a {1} # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.thaw = {0} ha descongelado a {1} moderation.defuse.water = No puedes desactivar TNT en el agua. @@ -128,6 +168,10 @@ moderation.afk.warn = Serás desconectado por inactividad en {0} segundos moderation.afk.kick = Has sido desconectado por inactividad +vanish.activate = ¡Has desaparecido\! +vanish.deactivate = ¡Ahora eres visible\! +vanish.chat.deny = Sólo puedes usar el chat de admin mientras estás en vanish +vanish.hotbar = Estás en vanish diff --git a/util/src/main/i18n/translations/moderation_es_MX.properties b/util/src/main/i18n/translations/moderation_es_MX.properties index 9fdd5036b9..9c9e522535 100644 --- a/util/src/main/i18n/translations/moderation_es_MX.properties +++ b/util/src/main/i18n/translations/moderation_es_MX.properties @@ -1,48 +1,72 @@ # TODO: Rename some keys and move others to misc # {0} = Type of punishment +moderation.type = Tipo\: {0} +moderation.type.kick = Expulsado +moderation.type.mute = Silenciado +moderation.type.warn = Advertido +moderation.type.ban = Ban permanente # {0} = duration of the ban (e.g. "7 days") +moderation.type.temp_ban = {0} ban # {0} = number of online staff # {1} = list of staff names (e.g. "Bob, Alice, and Jerry") +moderation.staff.name = Staff en línea ({0})\: {1} +moderation.staff.empty = No hay staff conectado \:( # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.screen.kick = Has sido expulsado por {0} # {0} = punishment reason +moderation.screen.ban = Has sido baneado permanentemente por {0} # {0} = punishment reason +moderation.screen.temp_ban = Has sido baneado temporalmente por {0} # {0} = a http link (e.g. "https://example.com/rules") +moderation.screen.rulesLink = Por favor, revisa nuestras reglas en {0} # {0} = staff member name (e.g. "Notch") +moderation.screen.signoff = Emitido por {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expira en {0} +# {0} = mute reason +moderation.mute.message = Has sido silenciado por {0} moderation.mute.list = Jugadores silenciados moderation.mute.none = ¡No hay jugadores silenciados en línea\! # {0} = player name +moderation.mute.hover = Click para desmutear a {0} # {0} = player name +moderation.mute.target = {0} está silenciado, y no puede recibir mensajes # {0} = player name +moderation.mute.existing = ¡{0} ya está silenciado\! # {0} = player name +moderation.unmute.sender = Has desmuteado a {0} +moderation.unmute.target = Has sido desmuteado y ahora puedes enviar mensajes # {0} = player name +moderation.unmute.none = {0} no está silenciado. +moderation.reports.none = ¡No ha habido reportes recientes\! +moderation.reports.header = Reportes recientes # {0} = player name +moderation.reports.hover = Reportado por {0} moderation.alts.header = Multi-Cuentas @@ -57,17 +81,23 @@ moderation.ipBan.banned = {0} ha sido baneado de IP # {0} = player name or ip address (e.g. "Notch" or "1.2.3.4") # {1} = number of alternate accounts +moderation.ipBan.bannedWithAlts = {0} ha sido baneado de IP junto con {1} multicuentas en línea # {0} = player name +moderation.records.lookupNone = {0} no tiene historial de infracciones +moderation.records.header = Registro de infracciones # {0} = punishment reason (e.g. "Hacking is not allowed") +moderation.records.reason = Razón\: {0} # {0} = player name # {1} = another player name +moderation.similarIP.loginEvent = {0} tiene una IP similar al jugador baneado {1} # {0} = player name # {1} = past duration (e.g. "5 minutes ago") +moderation.similarIP.hover = Baneado por {0}, {1} # {0} = player name moderation.freeze.freeze = Has congelado a {0} @@ -76,33 +106,43 @@ moderation.freeze.freeze = Has congelado a {0} moderation.freeze.unfreeze = Has descongelado a {0} # {0} = player name +moderation.freeze.frozen = Has sido congelado # {0} = player name +moderation.freeze.unfrozen = Has sido descongelado moderation.freeze.itemName = Congelador de jugadores moderation.freeze.itemDescription = Click derecho en un jugador para congelarlo / descongelarlo +moderation.freeze.notEnabled = La función freeze no está habilitada # {0} = player name moderation.freeze.exempt = {0} no puede ser congelado # {0} = player name +moderation.freeze.alreadyFrozen = {0} ya está congelado # {0} = player name +moderation.freeze.alreadyThawed = {0} no está congelado # {0} = number of players # {1} = list of player names (e.g. "Alice, Bob, and Jerry") +moderation.freeze.frozenList.online = Jugadores congelados ({0})\: {1} # {0} = number of players # {1} = list of player names +moderation.freeze.frozenList.offline = Jugadores congelados desconectados ({0})\: {1} +moderation.freeze.frozenList.none = ¡No hay jugadores congelados\! # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.frozen = {0} ha congelado a {1} # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.thaw = {0} ha descongelado a {1} moderation.defuse.water = No puedes desactivar TNT en el agua. @@ -128,6 +168,10 @@ moderation.afk.warn = Serás desconectado por inactividad en {0} segundos moderation.afk.kick = Has sido desconectado por inactividad +vanish.activate = ¡Has desaparecido\! +vanish.deactivate = ¡Ahora eres visible\! +vanish.chat.deny = Sólo puedes usar el chat de admin mientras estás en vanish +vanish.hotbar = Estás en vanish diff --git a/util/src/main/i18n/translations/moderation_fr_FR.properties b/util/src/main/i18n/translations/moderation_fr_FR.properties index 8848f479e2..468960c166 100644 --- a/util/src/main/i18n/translations/moderation_fr_FR.properties +++ b/util/src/main/i18n/translations/moderation_fr_FR.properties @@ -37,7 +37,7 @@ moderation.screen.signoff = Émis par {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expire dans {0} -moderation.mute.message = Vous avez été rendu muet et ne pouvez pas envoyer de messages dans le chat +# {0} = mute reason moderation.mute.list = Joueurs muets diff --git a/util/src/main/i18n/translations/moderation_ko_KR.properties b/util/src/main/i18n/translations/moderation_ko_KR.properties index bc1d6c0aa5..2a399c3055 100644 --- a/util/src/main/i18n/translations/moderation_ko_KR.properties +++ b/util/src/main/i18n/translations/moderation_ko_KR.properties @@ -35,8 +35,9 @@ moderation.screen.rulesLink = {0}에서 저희의 규칙을 검토하세요 moderation.screen.signoff = {0}에 의해 발표됨 # {0} = duration (e.g. "2 weeks") -moderation.screen.expires = {0}후 만료 +moderation.screen.expires = {0} 후 만료 +# {0} = mute reason moderation.mute.list = 채팅 금지된 플레이어 목록 @@ -46,6 +47,7 @@ moderation.mute.none = 접속 중인 플레이어 중 채팅이 금지된 플레 moderation.mute.hover = 클릭하여 {0}을(를) 채팅 금지 해제 # {0} = player name +moderation.mute.target = {0}이(가) 채팅이 금지되어 메시지를 받을 수 없습니다 # {0} = player name moderation.mute.existing = {0}은(는) 이미 채팅이 금지된 상태입니다. @@ -71,13 +73,17 @@ moderation.alts.header = 부계정 moderation.alts.noAlts = {0}은(는) 접속 중인 부계정이 없습니다. # {0} = ip address (e.g. "1.2.3.4") +moderation.ipBan.invalidIP = {0}은(는) 유효한 IP 주소가 아닙니다 # {0} = player name +moderation.ipBan.banned = {0}이(가) IP 차단되었습니다 # {0} = player name or ip address (e.g. "Notch" or "1.2.3.4") # {1} = number of alternate accounts +moderation.ipBan.bannedWithAlts = {0}이(가) {1}개의 부계정과 함께 IP 차단되었습니다 # {0} = player name +moderation.records.lookupNone = {0}은(는) 처벌 기록이 없습니다 moderation.records.header = 처벌 정보 @@ -86,6 +92,7 @@ moderation.records.reason = 사유\: {0} # {0} = player name # {1} = another player name +moderation.similarIP.loginEvent = {0}은(는) 차단된 플레이어 {1}과(와) 유사한 IP를 가지고 있습니다 # {0} = player name # {1} = past duration (e.g. "5 minutes ago") @@ -98,8 +105,10 @@ moderation.freeze.freeze = {0}을(를) 동결시켰습니다 moderation.freeze.unfreeze = {0}의 동결을 해제하였습니다 # {0} = player name +moderation.freeze.frozen = 당신은 얼어붙었습니다 # {0} = player name +moderation.freeze.unfrozen = 당신은 녹았습니다 moderation.freeze.itemName = 플레이어 프리저 @@ -118,16 +127,21 @@ moderation.freeze.alreadyThawed = {0}은(는) 얼어있지 않습니다 # {0} = number of players # {1} = list of player names (e.g. "Alice, Bob, and Jerry") +moderation.freeze.frozenList.online = 얼어붙은 플레이어 ({0})\: {1} # {0} = number of players # {1} = list of player names +moderation.freeze.frozenList.offline = 오프라인 상태의 얼어붙은 플레이어 ({0})\: {1} +moderation.freeze.frozenList.none = 현재 얼어붙은 플레이어는 없습니다\! # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.frozen = {0}이(가) {1}을(를) 얼어 붙였습니다 # {0} = staff player name # {1} = target player name +moderation.freeze.broadcast.thaw = {0}이(가) {1}을(를) 녹였습니다 moderation.defuse.water = 수중에서는 TNT를 해체할 수 없습니다. @@ -149,10 +163,14 @@ moderation.report.notify = {0}이(가) {1}\: {2}으(로) 신고했습니다 moderation.report.acknowledge = 신고가 곧 처리될 것입니다. # {0} = number of seconds -moderation.afk.warn = 활동이 없어 {0}초 뒤 접속이 끊깁니다. +moderation.afk.warn = 활동이 없어 {0}초 뒤 접속이 끊깁니다 moderation.afk.kick = 활동이 없어 연결이 끊어졌습니다 +vanish.activate = 은신(Vanish) 기능을 활성화했습니다\! +vanish.deactivate = 이제 당신은 모두에게 보입니다\! +vanish.chat.deny = 당신은 은신(Vanish) 상태일 때만 어드민 전용 채팅을 사용할 수 있습니다 +vanish.hotbar = 현재 은신(Vanish) 상태입니다 diff --git a/util/src/main/i18n/translations/moderation_lol_US.properties b/util/src/main/i18n/translations/moderation_lol_US.properties index d189719693..9b508bc049 100644 --- a/util/src/main/i18n/translations/moderation_lol_US.properties +++ b/util/src/main/i18n/translations/moderation_lol_US.properties @@ -37,7 +37,8 @@ moderation.screen.signoff = Isuer police kitteh\: {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Sentence endin in {0} -moderation.mute.message = U haev ben silencd and kant chat wut utur kittens +# {0} = mute reason +moderation.mute.message = u haev ben silencd fawr {0} moderation.mute.list = Mutd Kittehs diff --git a/util/src/main/i18n/translations/moderation_no_NO.properties b/util/src/main/i18n/translations/moderation_no_NO.properties index ade24c3dcc..72ab8f06c8 100644 --- a/util/src/main/i18n/translations/moderation_no_NO.properties +++ b/util/src/main/i18n/translations/moderation_no_NO.properties @@ -37,7 +37,7 @@ moderation.screen.signoff = Utstedt av {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Utgår om {0} -moderation.mute.message = Du har blitt dempet og kan ikke sende meldinger i chatten +# {0} = mute reason moderation.mute.list = Dempede spillere diff --git a/util/src/main/i18n/translations/moderation_ro_RO.properties b/util/src/main/i18n/translations/moderation_ro_RO.properties index 223a101b4c..c06364daa9 100644 --- a/util/src/main/i18n/translations/moderation_ro_RO.properties +++ b/util/src/main/i18n/translations/moderation_ro_RO.properties @@ -37,7 +37,8 @@ moderation.screen.signoff = Emisă de {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Expiră în {0} -moderation.mute.message = Ai fost dat pe mut și nu poți trimite mesaje în chat +# {0} = mute reason +moderation.mute.message = Ai fost dat pe mut pentru {0} moderation.mute.list = Jucători dați pe mut diff --git a/util/src/main/i18n/translations/moderation_ru_RU.properties b/util/src/main/i18n/translations/moderation_ru_RU.properties index d5f4e2ab3a..8a9f408952 100644 --- a/util/src/main/i18n/translations/moderation_ru_RU.properties +++ b/util/src/main/i18n/translations/moderation_ru_RU.properties @@ -37,7 +37,8 @@ moderation.screen.signoff = Выпущено {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Истекает через {0} -moderation.mute.message = Вы были замучены и не можете отправлять сообщения в чате +# {0} = mute reason +moderation.mute.message = Вы были замучены за {0} moderation.mute.list = Замученные игроки diff --git a/util/src/main/i18n/translations/moderation_sv_SE.properties b/util/src/main/i18n/translations/moderation_sv_SE.properties index 11a3b0c444..8ccdb7a4a7 100644 --- a/util/src/main/i18n/translations/moderation_sv_SE.properties +++ b/util/src/main/i18n/translations/moderation_sv_SE.properties @@ -37,7 +37,7 @@ moderation.screen.signoff = Utfärdad av {0} # {0} = duration (e.g. "2 weeks") moderation.screen.expires = Förfaller om {0} -moderation.mute.message = Du har blivit nedtystad och kan inte skicka chattmeddelanden +# {0} = mute reason moderation.mute.list = Nedtystade spelare diff --git a/util/src/main/i18n/translations/ui_de_DE.properties b/util/src/main/i18n/translations/ui_de_DE.properties index ec51d4ad45..1ed90ece39 100644 --- a/util/src/main/i18n/translations/ui_de_DE.properties +++ b/util/src/main/i18n/translations/ui_de_DE.properties @@ -4,6 +4,7 @@ setting.displayName = Werkzeuge setting.lore = Rechtsklick, um das Werkzeuge-Menü zu öffnen. +setting.flyspeed = Fluggeschwindigkeit # {0} = speed type (e.g. "Normal", "Fast", "Faster") setting.flyspeed.lore = Aktuelle Geschwindigkeit\: {0} @@ -19,31 +20,40 @@ setting.flyspeed.hyperspeed = Ultraschnell setting.gamemode = Spielmodus # {0} = gamemode name (e.g. "Creative" or "Spectator") -setting.gamemode.lore = Derzeitig Spielart\: {0} +setting.gamemode.lore = Aktueller Spielmodus\: {0} # {0} = "/tools" +setting.gamemode.warning = Um deinen Spielmodus wieder zu ändern, benutze {0} setting.gamemode.hover = Klick, um das Werkzeuge-Menü zu öffnen +setting.nightvision = Nachtsicht # {0} = status (e.g. "On" or "Off") +setting.nightvision.lore = Status\: {0} setting.visibility = Sichtbarkeit # {0} = status (e.g. "Shown" or "Hidden") setting.visibility.lore = Sichtbarkeit der Beobachter\: {0} +setting.visibility.shown = Sichtbar +setting.visibility.hidden = Versteckt +setting.observersOnly = Sorry, dieser Befehl ist nur für Beobachter. # {0} = name of a setting (e.g. "chat", "sounds", "picker") # {1} = current setting value (e.g. "on", "off") +setting.get = Deine {0}-Einstellung ist auf {1} eingestellt # {0} = list of setting values (e.g "on, off") +setting.options = Mögliche Optionen\: {0} # {0} = name of a setting # {1} = old setting value (e.g. "off") # {2} = new setting value (e.g. "on") +setting.set = Deine {0}-Einstellung wurde von {1} zu {2} geändert preview.noPotionEffects = Keine Trankeffekte @@ -72,6 +82,7 @@ preview.walkSpeed = Laufgeschwindigkeit ({0}x) preview.closeButton = Schließen +picker.title.teamClass = Team- & Klassen-Auswahl picker.title.team = Teamauswahl @@ -85,7 +96,7 @@ picker.tooltip = Tritt dem Spiel bei\! picker.tooltipObserver = Beobachtern beitreten -picker.windowTitle.teamClass = Wähle dein Team/Klasse aus +picker.windowTitle.teamClass = Wähle dein Team / deine Klasse picker.windowTitle.team = Wähle dein Team @@ -95,10 +106,10 @@ picker.autoJoin.displayName = Automatische Teamauswahl picker.autoJoin.tooltip = Du trittst dem Team mit den wenigsten Spielern bei -picker.capacity = Team hat maximale Kapazität erreicht, du kannst nicht beitreten. +picker.capacity = Das Team ist voll, du kannst nicht beitreten. -picker.clickToJoin = Du kannst dein Team aussuchen, klicke zum Beitreten\! +picker.clickToJoin = Du kannst dir dein Team aussuchen, Klick zum Beitreten\! -picker.clickToRejoin = Klicke, um deinem Team erneut beizutreten\! +picker.clickToRejoin = Klick, um deinem Team erneut beizutreten\! -picker.noPermissions = Premium-Spieler können ihr Team aussuchen\! +picker.noPermissions = Premium-Spieler können sich ihr Team aussuchen\! diff --git a/util/src/main/i18n/translations/ui_es_CL.properties b/util/src/main/i18n/translations/ui_es_CL.properties index 6f7a0ce7b3..8e9b18f554 100644 --- a/util/src/main/i18n/translations/ui_es_CL.properties +++ b/util/src/main/i18n/translations/ui_es_CL.properties @@ -37,6 +37,7 @@ setting.visibility = Visibilidad # {0} = status (e.g. "Shown" or "Hidden") setting.visibility.lore = Ver a otros observadores\: {0} +setting.visibility.shown = Mostrar setting.visibility.hidden = Oculto @@ -44,12 +45,15 @@ setting.observersOnly = Lo sentimos, este comando es solo para observadores. # {0} = name of a setting (e.g. "chat", "sounds", "picker") # {1} = current setting value (e.g. "on", "off") +setting.get = Tu configuración de {0} se ha establecido en {1} # {0} = list of setting values (e.g "on, off") +setting.options = Opciones posibles\: {0} # {0} = name of a setting # {1} = old setting value (e.g. "off") # {2} = new setting value (e.g. "on") +setting.set = Cambiaste tu configuración\: {0} de {1} a {2} preview.noPotionEffects = Sin efectos de pociones @@ -100,12 +104,12 @@ picker.windowTitle.class = Elige tu clase picker.autoJoin.displayName = Selección automática -picker.autoJoin.tooltip = Te pone en el equipo con la menor cantidad de jugadores +picker.autoJoin.tooltip = Te asigna al equipo con la menor cantidad de jugadores picker.capacity = El equipo está en su máxima capacidad, no puedes entrar. picker.clickToJoin = Puedes elegir tu equipo, ¡haz click para unirte\! -picker.clickToRejoin = ¡Click para volver a entrar a tu equipo\! +picker.clickToRejoin = ¡Clic para volver a entrar a tu equipo\! picker.noPermissions = ¡Los usuarios premium pueden elegir sus equipos\! diff --git a/util/src/main/i18n/translations/ui_es_ES.properties b/util/src/main/i18n/translations/ui_es_ES.properties index 6f7a0ce7b3..8e9b18f554 100644 --- a/util/src/main/i18n/translations/ui_es_ES.properties +++ b/util/src/main/i18n/translations/ui_es_ES.properties @@ -37,6 +37,7 @@ setting.visibility = Visibilidad # {0} = status (e.g. "Shown" or "Hidden") setting.visibility.lore = Ver a otros observadores\: {0} +setting.visibility.shown = Mostrar setting.visibility.hidden = Oculto @@ -44,12 +45,15 @@ setting.observersOnly = Lo sentimos, este comando es solo para observadores. # {0} = name of a setting (e.g. "chat", "sounds", "picker") # {1} = current setting value (e.g. "on", "off") +setting.get = Tu configuración de {0} se ha establecido en {1} # {0} = list of setting values (e.g "on, off") +setting.options = Opciones posibles\: {0} # {0} = name of a setting # {1} = old setting value (e.g. "off") # {2} = new setting value (e.g. "on") +setting.set = Cambiaste tu configuración\: {0} de {1} a {2} preview.noPotionEffects = Sin efectos de pociones @@ -100,12 +104,12 @@ picker.windowTitle.class = Elige tu clase picker.autoJoin.displayName = Selección automática -picker.autoJoin.tooltip = Te pone en el equipo con la menor cantidad de jugadores +picker.autoJoin.tooltip = Te asigna al equipo con la menor cantidad de jugadores picker.capacity = El equipo está en su máxima capacidad, no puedes entrar. picker.clickToJoin = Puedes elegir tu equipo, ¡haz click para unirte\! -picker.clickToRejoin = ¡Click para volver a entrar a tu equipo\! +picker.clickToRejoin = ¡Clic para volver a entrar a tu equipo\! picker.noPermissions = ¡Los usuarios premium pueden elegir sus equipos\! diff --git a/util/src/main/i18n/translations/ui_es_MX.properties b/util/src/main/i18n/translations/ui_es_MX.properties index 6f7a0ce7b3..13d97212b7 100644 --- a/util/src/main/i18n/translations/ui_es_MX.properties +++ b/util/src/main/i18n/translations/ui_es_MX.properties @@ -37,6 +37,7 @@ setting.visibility = Visibilidad # {0} = status (e.g. "Shown" or "Hidden") setting.visibility.lore = Ver a otros observadores\: {0} +setting.visibility.shown = Mostrar setting.visibility.hidden = Oculto @@ -44,12 +45,15 @@ setting.observersOnly = Lo sentimos, este comando es solo para observadores. # {0} = name of a setting (e.g. "chat", "sounds", "picker") # {1} = current setting value (e.g. "on", "off") +setting.get = Tu configuración de {0} se ha establecido en {1} # {0} = list of setting values (e.g "on, off") +setting.options = Opciones posibles\: {0} # {0} = name of a setting # {1} = old setting value (e.g. "off") # {2} = new setting value (e.g. "on") +setting.set = Cambiaste tu configuración\: {0} de {1} a {2} preview.noPotionEffects = Sin efectos de pociones diff --git a/util/src/main/i18n/translations/ui_ko_KR.properties b/util/src/main/i18n/translations/ui_ko_KR.properties index f0ddc22130..9bc20d11d6 100644 --- a/util/src/main/i18n/translations/ui_ko_KR.properties +++ b/util/src/main/i18n/translations/ui_ko_KR.properties @@ -45,6 +45,7 @@ setting.observersOnly = 죄송합니다, 이 명령어는 관전자만 사용할 # {0} = name of a setting (e.g. "chat", "sounds", "picker") # {1} = current setting value (e.g. "on", "off") +setting.get = 당신의 {0} 설정이 {1}(으)로 설정되었습니다 # {0} = list of setting values (e.g "on, off") setting.options = 가능한 옵션\: {0} diff --git a/util/src/main/i18n/translations/ui_no_NO.properties b/util/src/main/i18n/translations/ui_no_NO.properties index 2ca57ad936..3b357ddac8 100644 --- a/util/src/main/i18n/translations/ui_no_NO.properties +++ b/util/src/main/i18n/translations/ui_no_NO.properties @@ -24,6 +24,7 @@ setting.gamemode = Spillemodus setting.nightvision = Nattsyn # {0} = status (e.g. "On" or "Off") +setting.nightvision.lore = Status\: {0} setting.visibility = Synlighet @@ -39,6 +40,7 @@ setting.observersOnly = Beklager, denne kommandoen er bare for observatører. # {1} = current setting value (e.g. "on", "off") # {0} = list of setting values (e.g "on, off") +setting.options = Mulige alternativer\: {0} # {0} = name of a setting # {1} = old setting value (e.g. "off") diff --git a/util/src/main/i18n/translations/ui_ro_RO.properties b/util/src/main/i18n/translations/ui_ro_RO.properties index 43efa33263..6ec437b6f2 100644 --- a/util/src/main/i18n/translations/ui_ro_RO.properties +++ b/util/src/main/i18n/translations/ui_ro_RO.properties @@ -25,7 +25,7 @@ setting.gamemode.lore = Modul de joc actual\: {0} # {0} = "/tools" setting.gamemode.warning = Pentru a comuta modul de joc, folosește {0} -setting.gamemode.hover = Dă clic pentru a deschide meniul de instrumente +setting.gamemode.hover = Fă clic pentru a deschide meniul de instrumente setting.nightvision = Vedere nocturnă