summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <snowleo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-05-16 08:40:28 +0000
committersnowleo <snowleo@e251c2fe-e539-e718-e476-b85c1f46cddb>2011-05-16 08:40:28 +0000
commit62fe52ee1308052220fb801855eb548cf1f731c7 (patch)
tree4afe030cf8e960ba164ce133042ae7b4b414d833
parenta4fc756f1eb9d5352181b0fb6ee82c8a7367d063 (diff)
downloadEssentials-62fe52ee1308052220fb801855eb548cf1f731c7.tar
Essentials-62fe52ee1308052220fb801855eb548cf1f731c7.tar.gz
Essentials-62fe52ee1308052220fb801855eb548cf1f731c7.tar.lz
Essentials-62fe52ee1308052220fb801855eb548cf1f731c7.tar.xz
Essentials-62fe52ee1308052220fb801855eb548cf1f731c7.zip
Various translation bugfixes
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1499 e251c2fe-e539-e718-e476-b85c1f46cddb
-rw-r--r--Essentials/src/com/earth2me/essentials/Essentials.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/Util.java52
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandkit.java3
-rw-r--r--Essentials/src/messages.properties14
-rw-r--r--Essentials/src/messages_de.properties4
-rw-r--r--Essentials/src/messages_en.properties306
6 files changed, 357 insertions, 24 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index 68e48ca8c..023e8d0ee 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -200,6 +200,8 @@ public class Essentials extends JavaPlugin
{
iConf.reloadConfig();
}
+
+ Util.updateLocale(settings.getLocale(), this.getDataFolder());
for (User user : users.values())
{
diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java
index 43b1b9e7f..bd68d19cb 100644
--- a/Essentials/src/com/earth2me/essentials/Util.java
+++ b/Essentials/src/com/earth2me/essentials/Util.java
@@ -3,7 +3,6 @@ package com.earth2me.essentials;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
@@ -15,8 +14,11 @@ import java.text.MessageFormat;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.GregorianCalendar;
+import java.util.HashSet;
import java.util.Locale;
+import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
@@ -29,6 +31,8 @@ import org.bukkit.block.Block;
public class Util
{
+ private final static Logger logger = Logger.getLogger("Minecraft");
+
public static String sanitizeFileName(String name)
{
return name.toLowerCase().replaceAll("[^a-z0-9]", "_");
@@ -110,13 +114,13 @@ public class Util
public static long parseDateDiff(String time, boolean future) throws Exception
{
Pattern timePattern = Pattern.compile(
- "(?:([0-9]+)\\s*y[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?"
- + "(?:([0-9]+)\\s*(?:s[a-z]*)?)?", Pattern.CASE_INSENSITIVE);
+ "(?:([0-9]+)\\s*y[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?"
+ + "(?:([0-9]+)\\s*(?:s[a-z]*)?)?", Pattern.CASE_INSENSITIVE);
Matcher m = timePattern.matcher(time);
int years = 0;
int months = 0;
@@ -279,9 +283,10 @@ public class Util
public static String formatCurrency(double value)
{
- String str = Essentials.getStatic().getSettings().getCurrencySymbol()+df.format(value);
- if (str.endsWith(".00")) {
- str = str.substring(0, str.length()-3);
+ String str = Essentials.getStatic().getSettings().getCurrencySymbol() + df.format(value);
+ if (str.endsWith(".00"))
+ {
+ str = str.substring(0, str.length() - 3);
}
return str;
}
@@ -338,8 +343,9 @@ public class Util
BufferedReader br = new BufferedReader(new FileReader(file));
String version = br.readLine();
br.close();
- if (version == null || !version.equals("#version: "+Essentials.getStatic().getDescription().getVersion())) {
- Logger.getLogger("Minecraft").log(Level.WARNING, "Translation file "+file+" is not updated for Essentials version. Will use default.");
+ if (version == null || !version.equals("#version: " + Essentials.getStatic().getDescription().getVersion()))
+ {
+ logger.log(Level.WARNING, String.format("Translation file %s is not updated for Essentials version. Will use default.", file));
return cl.getResourceAsStream(string);
}
return new FileInputStream(file);
@@ -385,10 +391,18 @@ public class Util
private static final Locale defaultLocale = Locale.getDefault();
public static Locale currentLocale = defaultLocale;
private static ResourceBundle bundle = ResourceBundle.getBundle("messages", defaultLocale);
+ private static ResourceBundle defaultBundle = ResourceBundle.getBundle("messages", Locale.US);
public static String i18n(String string)
{
- return bundle.getString(string);
+ try {
+ return bundle.getString(string);
+ }
+ catch (MissingResourceException ex)
+ {
+ logger.log(Level.WARNING, String.format("Missing translation key \"%s\" in translation file %s", ex.getKey(), bundle.getLocale().toString()));
+ return defaultBundle.getString(string);
+ }
}
public static String format(String string, Object... objects)
@@ -403,7 +417,7 @@ public class Util
{
return;
}
- String[] parts = loc.split("_");
+ String[] parts = loc.split("[_\\.]");
if (parts.length == 1)
{
currentLocale = new Locale(parts[0]);
@@ -412,6 +426,14 @@ public class Util
{
currentLocale = new Locale(parts[0], parts[1]);
}
+ if (parts.length == 3)
+ {
+ currentLocale = new Locale(parts[0], parts[1], parts[2]);
+ }
+ logger.log(Level.INFO, String.format("Using locale %s", currentLocale.toString()));
bundle = ResourceBundle.getBundle("messages", currentLocale, new ConfigClassLoader(dataFolder, Util.class.getClassLoader()));
+ if (!bundle.keySet().containsAll(defaultBundle.keySet())) {
+ logger.log(Level.WARNING, String.format("Translation file %s does not contain all translation keys.", currentLocale.toString()));
+ }
}
}
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
index e6b5d1cd1..8065234ab 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandkit.java
@@ -5,7 +5,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Server;
-import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.GregorianCalendar;
@@ -40,7 +39,7 @@ public class Commandkit extends EssentialsCommand
}
if (list.length() > 0)
{
- user.sendMessage("ยง7Kits:" + list.toString());
+ user.sendMessage(Util.format("kits", list.toString()));
}
else
{
diff --git a/Essentials/src/messages.properties b/Essentials/src/messages.properties
index 81202212e..2ec6bb426 100644
--- a/Essentials/src/messages.properties
+++ b/Essentials/src/messages.properties
@@ -1,4 +1,5 @@
#version: TeamCity
+# Single quotes have to be doubled: ''
# Translations start here
loadinfo = Loaded {0} build {1} by {2}
markedAsNotAway = \u00a77You are no longer marked as away.
@@ -96,7 +97,7 @@ cooldownWithMessage = \u00a7cCooldown: {0}
warpingTo = \u00a77Warping to {0}.
timeBeforeTeleport = Time before next teleport: {0}
pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
-dontMoveMessage = \u00a77Teleportation will commence in {0}. Don't move.
+dontMoveMessage = \u00a77Teleportation will commence in {0}. Don''t move.
noHomeSet = You have not set a home.
noHomeSetPlayer = Player has not set a home.
timeBeforeHeal = Time before next heal: {0}
@@ -132,7 +133,7 @@ questionFormat = \u00a77[Question]\u00a7f {0}
notAllowedToQuestion = \u00a7cYou are not authorized to use question.
localFormat = Local: <{0}> {1}
geoipJoinFormat = Player {0} comes from {1}
-cantFindGeoIpDB = Can't find GeoIP database!
+cantFindGeoIpDB = Can''t find GeoIP database!
cantReadGeoIpDB = Failed to read GeoIP database!
geoIpUrlEmpty = GeoIP download url is empty.
downloadingGeoIp = Downloading GeoIP database ... this might take a while (country: 0.6 MB, city: 20MB)
@@ -172,7 +173,7 @@ invSee = You see the inventory of {0}.
invSeeHelp = Use /invsee to restore your inventory.
cantSpawnItem = \u00a7cYou are not allowed to spawn the item {0}
itemSpawn = \u00a77Giving {0} of {1}
-jumpError = That would hurt your computer's brain.
+jumpError = That would hurt your computer''s brain.
kickDefault = Kicked from server
kill = \u00a77Killed {0}.
noKits = \u00a77There are no kits available yet
@@ -180,7 +181,7 @@ kitError = \u00a7cThere are no valid kits.
kitError2 = \u00a7cThat kit does not exist or is improperly defined.
kitErrorHelp = \u00a7cPerhaps an item is missing a quantity in the configuration?
noKitPermission = \u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit.
-kitTimed = \u00a7cYou can't use that kit again for another {0}
+kitTimed = \u00a7cYou can''t use that kit again for another {0}.
kitInvFull = \u00a7cYour inventory was full, placing kit on the floor
kitGive = \u00a77Giving kit {0}.
lightningUse = \u00a77Smiting {0}
@@ -205,7 +206,7 @@ nickInUse = \u00a7cThat name is already in use.
nickSet = \u00a77Your nickname is now \u00a7c{0}
nickChanged = Nickname changed.
pong = Pong!
-powerToolAir = Command can't be attached to air.
+powerToolAir = Command can''t be attached to air.
powerToolAttach = Command assigned to {0}
powerToolRemove = Command removed from {0}
foreverAlone = \u00a7cYou have nobody to whom you can reply.
@@ -301,4 +302,5 @@ unignorePlayer = You are not ignoring player {0} anymore.
ignorePlayer = You ignore player {0} from now on.
illegalDate = Illegal date format.
timePattern = (?:([0-9]+)\\s*y[a-z]*[,\\s]*)?(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:s[a-z]*)?)?
-msgFormat = [{0} -> {1}\u00a7f] {2} \ No newline at end of file
+msgFormat = [{0} -> {1}\u00a7f] {2}
+kits = \u00a77Kits: {0} \ No newline at end of file
diff --git a/Essentials/src/messages_de.properties b/Essentials/src/messages_de.properties
index 09a839d97..627a4195c 100644
--- a/Essentials/src/messages_de.properties
+++ b/Essentials/src/messages_de.properties
@@ -1,4 +1,5 @@
#version: TeamCity
+# Single quotes have to be doubled: ''
# Translations start here
loadinfo = Plugin {0} Version {1} geladen, erstellt von {2}, \u00fcbersetzt von snowleo
markedAsNotAway = \u00a77Du wirst nicht mehr als abwesend angezeigt.
@@ -301,4 +302,5 @@ unignorePlayer = Du ignorierst Spieler {0} nicht mehr.
ignorePlayer = Du ignorierst ab jetzt Spieler {0}.
illegalDate = Ung\u00fcltiges Datumsformat.
timePattern = (?:([0-9]+)\\s*[yj][a-z]*[,\\s]*)?(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?(?:([0-9]+)\\s*[dt][a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:h|st)[a-z]*[,\\s]*)?(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:s[a-z]*)?)?
-msgFormat = [{0} -> {1}\u00a7f] {2} \ No newline at end of file
+msgFormat = [{0} -> {1}\u00a7f] {2}
+kits = \u00a77Ausr\u00fcstungen: {0} \ No newline at end of file
diff --git a/Essentials/src/messages_en.properties b/Essentials/src/messages_en.properties
new file mode 100644
index 000000000..2ec6bb426
--- /dev/null
+++ b/Essentials/src/messages_en.properties
@@ -0,0 +1,306 @@
+#version: TeamCity
+# Single quotes have to be doubled: ''
+# Translations start here
+loadinfo = Loaded {0} build {1} by {2}
+markedAsNotAway = \u00a77You are no longer marked as away.
+markedAsAway = \u00a77You are now marked as away.
+userIsNotAway = {0} is no longer AFK
+userIsAway = {0} is now AFK
+backupStarted = Backup started
+backupFinished = Backup finished
+invalidServer = Invalid server!
+usingTempFolderForTesting = Using temp folder for testing:
+versionMismatch = Version mismatch! Please update {0} to the same version.
+notRecommendedBukkit = Bukkit version is not the recommended build for Essentials.
+bukkitFormatChanged = Bukkit version format changed. Version not checked.
+itemsCsvNotLoaded = Could not load items.csv.
+corruptNodeInConfig = \u00a74Notice: Your configuration file has a corrupt {0} node.
+youHaveNewMail = \u00a7cYou have {0} messages!\u00a7f Type \u00a77/mail read\u00a7f to view your mail.
+commandNotLoaded = \u00a7cCommand {0} is improperly loaded.
+deniedAccessCommand = {0} was denied access to command.
+noAccessCommand = \u00a7cYou do not have access to that command.
+errorCallingCommand = Error calling command /{0}
+commandFailed = Command {0} failed:
+bannedPlayersFileNotFound = banned-players.txt not found
+bannedPlayersFileError = Error reading banned-players.txt
+bannedIpsFileNotFound = banned-ips.txt not found
+bannedIpsFileError = Error reading banned-ips.txt
+noDestroyPermission = \u00a7cYou do not have permission to destroy that {0}.
+noAccessPermission = \u00a7cYou do not have permission to access that {0}.
+moreThanZero = Quantities must be greater than 0.
+errorWithMessage = \u00a7cError: {0}
+creatingConfigFromTemplate = Creating config from template: {0}
+creatingEmptyConfig = Creating empty config: {0}
+failedToCreateConfig = Failed to create config {0}
+couldNotFindTemplate = Could not find template {0}
+failedToWriteConfig = Failed to write config {0}
+failedToCloseConfig = Failed to close config {0}
+notEnoughMoney = You do not have sufficient funds.
+missingItems = You do not have {0}x {1}.
+tradeSignEmpty = The trade sign does not have enough supply left.
+tradeCompleted = \u00a77Trade completed.
+backAfterDeath = \u00a77Use the /back command to return to your death point.
+mutedUserSpeaks = {0} tried to speak, but is muted.
+userCreatedPortal = {0} used a portal and generated an exit portal.
+generatingPortal = \u00a77Generating an exit portal.
+userUsedPortal = {0} used an existing exit portal.
+usingPortal = \u00a77Teleporting via portal to an existing portal.
+teleportingPortal = \u00a77Teleporting via portal.
+freedMemory = Freed {0} MB.
+defaultBanReason = The Ban Hammer has spoken!
+noNewMail = \u00a77You have no new mail.
+serverFull = Server is full
+returnPlayerToJailError = Error occured when trying to return player to jail.
+jailMessage = \u00a7cYou do the crime, you do the time.
+homeSetToBed = \u00a77Your home is now set to this bed.
+moneyTaken = {0} taken from your bank account.
+youAreHealed = \u00a77You have been healed.
+markMailAsRead = \u00a7cTo mark your mail as read, type /mail clear
+balance = \u00a77Balance: {0}
+backUsageMsg = \u00a77Returning to previous location.
+playerBanned = \u00a7cPlayer {0} banned
+banIpAddress = \u00a77Banned IP address
+bigTreeSuccess = \u00a77Big tree spawned.
+bigTreeFailure = \u00a7cBig tree generation failure. Try again on grass or dirt.
+broadcast = [\u00a7cBroadcast\u00a7f]\u00a7a {0}
+burnMsg = \u00a77You set {0} on fire for {1} seconds.
+playerNotFound = \u00a7cPlayer not found.
+inventoryCleared = \u00a77Inventory Cleared.
+inventoryClearedOthers = \u00a77Inventory of \u00a7c{0}\u00a77 cleared.
+compassBearing = \u00a77Bearing: {0} ({1} degrees).
+deleteJail = \u00a77Jail {0} has been removed.
+deleteWarp = \u00a77Warp {0} has been removed.
+depth = \u00a77You are at sea level.
+depthAboveSea = \u00a77You are {0} block(s) above sea level.
+depthBelowSea = \u00a77You are {0} block(s) below sea level.
+extinguish = \u00a77You extinguished yourself.
+extinguishOthers = \u00a77You extinguished {0}.
+canTalkAgain = \u00a77You can talk again
+haveBeenReleased = \u00a77You have been released
+upgradingFilesError = Error while upgrading the files
+configFileMoveError = Failed to move config.yml to backup location.
+configFileRenameError = Failed to rename temp file to config.yml
+fileRenameError = Renaming file {0} failed
+userdataMoveError = Failed to move userdata/{0} to userdata/{1}.tmp
+duplicatedUserdata = Duplicated userdata: {0} and {1}
+userdataMoveBackError = Failed to move userdata/{0}.tmp to userdata/{1}
+parseError = Error parsing {0} on line {1}
+unknownItemName = Unknown item name: {0}
+unknownItemId = Unknown item id: {0}
+jailNotExist = That jail does not exist.
+unableToSpawnMob = Unable to spawn mob.
+creatingPortal = Creating portal at {0},{1},{2}.
+notSupportedYet = Not supported yet.
+unknownItemInList = Unknown item {0} in {1} list.
+teleportationCommencing = \u00a77Teleportation commencing...
+cooldownWithMessage = \u00a7cCooldown: {0}
+warpingTo = \u00a77Warping to {0}.
+timeBeforeTeleport = Time before next teleport: {0}
+pendingTeleportCancelled = \u00a7cPending teleportation request cancelled.
+dontMoveMessage = \u00a77Teleportation will commence in {0}. Don''t move.
+noHomeSet = You have not set a home.
+noHomeSetPlayer = Player has not set a home.
+timeBeforeHeal = Time before next heal: {0}
+addedToAccount = \u00a7a{0} has been added to your account.
+moneySentTo = \u00a7a{0} has been sent to {1}
+moneyRecievedFrom = \u00a7a{0} has been recieved from {1}
+takenFromAccount = \u00a7c{0} has been taken from your account.
+emptyWorldName = Set Home: World name is null or empty.
+now = now
+year = year
+years = years
+month = month
+months = months
+day = day
+days = days
+hour = hour
+hours = hours
+minute = minute
+minutes = minutes
+second = second
+seconds = seconds
+destinationNotSet = Destination not set
+holeInFloor = Hole in floor
+warpNotExist = That warp does not exist.
+similarWarpExist = A warp with a similar name already exists.
+warpDeleteError = Problem deleting the warp file.
+versionMismatchAll = Version mismatch! Please update all Essentials jars to the same version.
+missingPrefixSuffix = Missing a prefix or suffix for {0}
+permissionsError = Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.
+shoutFormat = \u00a77[Shout]\u00a7f {0}
+notAllowedToShout = \u00a7cYou are not authorized to shout.
+questionFormat = \u00a77[Question]\u00a7f {0}
+notAllowedToQuestion = \u00a7cYou are not authorized to use question.
+localFormat = Local: <{0}> {1}
+geoipJoinFormat = Player {0} comes from {1}
+cantFindGeoIpDB = Can''t find GeoIP database!
+cantReadGeoIpDB = Failed to read GeoIP database!
+geoIpUrlEmpty = GeoIP download url is empty.
+downloadingGeoIp = Downloading GeoIP database ... this might take a while (country: 0.6 MB, city: 20MB)
+geoIpUrlInvalid = GeoIP download url is invalid.
+connectionFailed = Failed to open connection.
+alertFormat = \u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
+alertPlaced = placed:
+alertBroke = broke:
+alertUsed = used:
+buildAlert = \u00a7cYou are not permitted to build
+protectionOwner = \u00a76[EssentialsProtect] Protection owner: {0}
+spawnSet = \u00a77Spawn location set for group {0}.
+teleportNewPlayerError = Failed to teleport new player
+essentialsReload = \u00a77Essentials Reloaded {0}
+gcmax = Maximum memory: {0} MB
+gcmin = Minimum memory: {0} MB
+gcchunks = chunks,
+gcentities = entities
+godMode = \u00a77God mode {0}.
+enabled = enabled
+disabled = disabled
+godEnabledFor = enabled for {0}
+godDisabledFor = disabled for {0}
+heal = \u00a77You have been healed.
+healOther = \u00a77Healed {0}.
+helpPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
+helpConsole = To view help from the console, type ?.
+helpOp = \u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
+infoFileDoesNotExist = File info.txt does not exist. Creating one for you.
+infoPages = Page \u00a7c{0}\u00a7f of \u00a7c{1}\u00a7f:
+infoChapter = Select chapter:
+infoUnknownChapter = Unknown chapter.
+infoChapterPages = Chapter {0}, page \u00a7c{1}\u00a7f of \u00a7c{2}\u00a7f:
+invBigger = The other users inventory is bigger than yours.
+invRestored = Your inventory has been restored.
+invSee = You see the inventory of {0}.
+invSeeHelp = Use /invsee to restore your inventory.
+cantSpawnItem = \u00a7cYou are not allowed to spawn the item {0}
+itemSpawn = \u00a77Giving {0} of {1}
+jumpError = That would hurt your computer''s brain.
+kickDefault = Kicked from server
+kill = \u00a77Killed {0}.
+noKits = \u00a77There are no kits available yet
+kitError = \u00a7cThere are no valid kits.
+kitError2 = \u00a7cThat kit does not exist or is improperly defined.
+kitErrorHelp = \u00a7cPerhaps an item is missing a quantity in the configuration?
+noKitPermission = \u00a7cYou need the \u00a7c{0}\u00a7c permission to use that kit.
+kitTimed = \u00a7cYou can''t use that kit again for another {0}.
+kitInvFull = \u00a7cYour inventory was full, placing kit on the floor
+kitGive = \u00a77Giving kit {0}.
+lightningUse = \u00a77Smiting {0}
+lightningSmited = \u00a77You have just been smited
+connectedPlayers = Connected players:
+noMail = You do not have any mail
+mailClear = \u00a7cTo mark your mail as read, type /mail clear
+noMailSendPerm = \u00a7cYou do not have the \u00a7fessentials.mail.send\u00a7c permission.
+playerNeverOnServer = \u00a7cPlayer {0} was never on this server.
+mailSent = \u00a77Mail sent!
+mailCleared = \u00a77Mail Cleared!
+voiceSilenced = \u00a77Your voice has been silenced
+noMotd = \u00a7cThere is no message of the day."
+me = me
+mutedPlayerFor = Player {0} muted for {1}.
+mutedPlayer = Player {0} muted.
+unmutedPlayer = Player {0} unmuted.
+nickOthersPermission = \u00a7cYou do not have permission to change the nickname of others
+nickNoMore = \u00a7You no longer have a nickname.
+nickNamesAlpha = \u00a7cNicknames must be alphanumeric.
+nickInUse = \u00a7cThat name is already in use.
+nickSet = \u00a77Your nickname is now \u00a7c{0}
+nickChanged = Nickname changed.
+pong = Pong!
+powerToolAir = Command can''t be attached to air.
+powerToolAttach = Command assigned to {0}
+powerToolRemove = Command removed from {0}
+foreverAlone = \u00a7cYou have nobody to whom you can reply.
+is = is
+reloadAllPlugins = \u00a77Reloaded all plugins.
+noRules = \u00a7cThere are no rules specified yet.
+seenOnline = Player {0} is online since {1}
+seenOffline = Player {0} is offline since {1}
+itemCannotBeSold = That item cannot be sold to the server.
+itemMustBeStacked = Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
+itemNotEnough1 = \u00a7cYou do not have enough of that item to sell.
+itemNotEnough2 = \u00a77If you meant to sell all of your items of that type, use /sell itemname
+itemNotEnough3 = \u00a77/sell itemname -1 will sell all but one item, etc.
+itemSold = \u00a77Sold for \u00a7c {0} \u00a77 ({1} items at {2} each)
+itemSoldConsole = {0} sold {1} for \u00a77 {2} \u00a77 ({3} items at {4} each)
+itemSellAir = You really tried to sell Air? Put an item in your hand.
+homeSet = \u00a77Home set.
+jailSet = \u00a77Jail {0} has been set
+warpSet = \u00a77Warp {0} set.
+worthSet = Worth value set
+mobSpawnTarget = Target block must be a mob spawner.
+mobSpawnError = Error while changing mob spawner.
+invalidMob = Invalid mob type.
+unableToSpawnMob = Unable to spawn mob.
+mobSpawnLimit = Mob quantity limited to server limit
+soloMob = That mob likes to be alone
+numberRequired = A number goes there, silly.
+spawned = spawned
+slimeMalformedSize = Malformed size.
+sheepMalformedColor = Malformed color.
+suicideMessage = \u00a77Goodbye Cruel World...
+suicideSuccess = \u00a77{0} took their own life
+tempBanned = Temporarily banned from server for {0}
+thunderDuration = You {0} thunder in your world for {1} seconds.
+thunder = You {0} thunder in your world
+deleteFileError = Could not delete file: {0}
+userDoesNotExist = The user {0} does not exist.
+negativeBalanceError = User is not allowed to have a negative balance.
+timeSet = Time set in all worlds.
+onlyDayNight = /time only supports day/night.
+mayNotJail = \u00a7cYou may not jail that person
+userJailed = \u00a77You have been jailed
+playerJailed = \u00a77Player {0} jailed.
+playerJailedFor = \u00a77Player {0} jailed for {1}.
+playerInJail = \u00a7cPlayer is already in jail {0}.
+teleportTop = \u00a77Teleporting to top.
+teleporting = \u00a77Teleporting...
+teleportDisabled = {0} has teleportation disabled.
+needTpohere = You need access to /tpohere to teleport other players.
+teleportAtoB = \u00a77{0}\u00a77 teleported you to {1}\u00a77.
+teleportRequest = \u00a7c{0}\u00a7c has requested to teleport to you.
+typeTpaccept = \u00a77To teleport, type \u00a7c/tpaccept\u00a77.
+typeTpdeny = \u00a77To deny this request, type \u00a7c/tpdeny\u00a77.
+requestSent = \u00a77Request sent to {0}\u00a77.
+teleportHereRequest = \u00a7c{0}\u00a7c has requested that you teleport to him/her.
+teleportAll = \u00a77Teleporting all players...
+noPendingRequest = You do not have a pending request.
+requestDenied = \u00a77Teleport request denied.
+requestAccepted = \u00a77Teleport request accepted.
+teleportationEnabled = \u00a77Teleportation enabled.
+teleportationDisabled = \u00a77Teleportation disabled.
+treeSpawned = \u00a77Tree spawned.
+treeFailure = \u00a7cTree generation failure. Try again on grass or dirt.
+unbannedPlayer = Unbanned player.
+unbannedIP = Unbanned IP address.
+unlimitedItems = Unlimited items:
+none = none
+unlimitedItemPermission = \u00a7cNo permission for unlimited item {0}.
+disableUnlimited = \u00a77Disable unlimited placing of {0} for {1}.
+enableUnlimited = \u00a77Giving unlimited amount of {0} to {1}.
+warpListPermission = \u00a7cYou do not have Permission to list that warps.
+noWarpsDefined = No warps defined
+warpUsePermission = \u00a7cYou do not have Permission to use that warp.
+weatherSunFor = \u00a77You set the weather to sun in your world for {0} seconds
+weatherSun = \u00a77You set the weather to sun in your world
+weatherStormFor = \u00a77You set the weather to storm in your world for {0} seconds
+weatherStorm = \u00a77You set the weather to storm in your world
+whoisIs = {0} is {1}
+whoisHealth = \u00a79 - Health: {0}/20
+whoisLocation = \u00a79 - Location: ({0}, {1}, {2}, {3})
+whoisMoney = \u00a79 - Money: {0}
+whoisStatusAway = \u00a79 - Status: \u00a7cAway\u00a7f
+whoisStatusAvailable = \u00a79 - Status: Available
+whoisIPAddress = \u00a79 - IP Address: {0}
+whoisGeoLocation = \u00a79 - Location: {0}
+invalidWorld = \u00a7cInvalid world.
+possibleWorlds = \u00a77Possible worlds are the numbers 0 through {0}.
+typeWorldName = \u00a77You can also type the name of a specific world.
+worth = \u00a77Stack of {0} worth \u00a7c{1}\u00a77 ({2} item(s) at {3} each)
+worthMeta = \u00a77Stack of {0} with metadata of {1} worth \u00a7c{2}\u00a77 ({3} item(s) at {4} each)
+onlyPlayers = Only in-game players can use {0}.
+unignorePlayer = You are not ignoring player {0} anymore.
+ignorePlayer = You ignore player {0} from now on.
+illegalDate = Illegal date format.
+timePattern = (?:([0-9]+)\\s*y[a-z]*[,\\s]*)?(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:s[a-z]*)?)?
+msgFormat = [{0} -> {1}\u00a7f] {2}
+kits = \u00a77Kits: {0} \ No newline at end of file