mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-20 07:02:21 +01:00
Translated dynamic content on Java side
This commit is contained in:
parent
ab124f155e
commit
2fa7689088
@ -20,6 +20,8 @@ import com.djrapitops.plan.delivery.domain.container.DataContainer;
|
||||
import com.djrapitops.plan.delivery.domain.keys.PlayerKeys;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatter;
|
||||
import com.djrapitops.plan.gathering.domain.Session;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.HtmlLang;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
|
||||
import java.util.List;
|
||||
@ -86,8 +88,27 @@ public class ActivityIndex {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public static String[] getGroups() {
|
||||
return new String[]{"Very Active", "Active", "Regular", "Irregular", "Inactive"};
|
||||
public static String[] getDefaultGroups() {
|
||||
return getGroups(null);
|
||||
}
|
||||
|
||||
public static String[] getGroups(Locale locale) {
|
||||
if (locale == null) {
|
||||
return new String[]{
|
||||
HtmlLang.INDEX_VERY_ACTIVE.getDefault(),
|
||||
HtmlLang.INDEX_ACTIVE.getDefault(),
|
||||
HtmlLang.INDEX_REGULAR.getDefault(),
|
||||
HtmlLang.INDEX_IRREGULAR.getDefault(),
|
||||
HtmlLang.INDEX_INACTIVE.getDefault()
|
||||
};
|
||||
}
|
||||
return new String[]{
|
||||
locale.get(HtmlLang.INDEX_VERY_ACTIVE).toString(),
|
||||
locale.get(HtmlLang.INDEX_ACTIVE).toString(),
|
||||
locale.get(HtmlLang.INDEX_REGULAR).toString(),
|
||||
locale.get(HtmlLang.INDEX_IRREGULAR).toString(),
|
||||
locale.get(HtmlLang.INDEX_INACTIVE).toString()
|
||||
};
|
||||
}
|
||||
|
||||
private double calculate(DataContainer container) {
|
||||
|
@ -34,6 +34,8 @@ import com.djrapitops.plan.identification.ServerInfo;
|
||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.config.paths.TimeSettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.HtmlLang;
|
||||
import com.djrapitops.plan.storage.database.DBSystem;
|
||||
import com.djrapitops.plan.storage.database.Database;
|
||||
import com.djrapitops.plan.storage.database.queries.analysis.PlayerCountQueries;
|
||||
@ -54,6 +56,7 @@ import java.util.concurrent.TimeUnit;
|
||||
public class JSONFactory {
|
||||
|
||||
private final PlanConfig config;
|
||||
private final Locale locale;
|
||||
private final DBSystem dbSystem;
|
||||
private final ServerInfo serverInfo;
|
||||
private final Graphs graphs;
|
||||
@ -62,12 +65,14 @@ public class JSONFactory {
|
||||
@Inject
|
||||
public JSONFactory(
|
||||
PlanConfig config,
|
||||
Locale locale,
|
||||
DBSystem dbSystem,
|
||||
ServerInfo serverInfo,
|
||||
Graphs graphs,
|
||||
Formatters formatters
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.dbSystem = dbSystem;
|
||||
this.serverInfo = serverInfo;
|
||||
this.graphs = graphs;
|
||||
@ -85,7 +90,7 @@ public class JSONFactory {
|
||||
database.query(new ServerTablePlayersQuery(serverUUID, System.currentTimeMillis(), playtimeThreshold, xMostRecentPlayers)),
|
||||
database.query(new ExtensionServerPlayerDataTableQuery(serverUUID, xMostRecentPlayers)),
|
||||
openPlayerLinksInNewTab,
|
||||
formatters
|
||||
formatters, locale
|
||||
).toJSONString();
|
||||
}
|
||||
|
||||
@ -100,7 +105,7 @@ public class JSONFactory {
|
||||
database.query(new NetworkTablePlayersQuery(System.currentTimeMillis(), playtimeThreshold, xMostRecentPlayers)),
|
||||
Collections.emptyMap(),
|
||||
openPlayerLinksInNewTab,
|
||||
formatters
|
||||
formatters, locale
|
||||
).toJSONString();
|
||||
}
|
||||
|
||||
@ -200,7 +205,7 @@ public class JSONFactory {
|
||||
server.put("unique_players", uniquePlayerCounts.getOrDefault(serverUUID, 0));
|
||||
TPSMutator tpsWeek = tpsMonth.filterDataBetween(weekAgo, now);
|
||||
double averageTPS = tpsWeek.averageTPS();
|
||||
server.put("avg_tps", averageTPS != -1 ? decimals.apply(averageTPS) : "No data");
|
||||
server.put("avg_tps", averageTPS != -1 ? decimals.apply(averageTPS) : locale.get(HtmlLang.UNIT_NO_DATA).toString());
|
||||
server.put("low_tps_spikes", tpsWeek.lowTpsSpikeCount(config.getNumber(DisplaySettings.GRAPH_TPS_THRESHOLD_MED)));
|
||||
server.put("downtime", timeAmount.apply(tpsWeek.serverDownTime()));
|
||||
|
||||
@ -208,7 +213,7 @@ public class JSONFactory {
|
||||
server.put("online", online.isPresent() ?
|
||||
online.get().getDate() >= now - TimeUnit.MINUTES.toMillis(3L) ?
|
||||
online.get().getPlayers() : "Possibly offline"
|
||||
: "No data");
|
||||
: locale.get(HtmlLang.UNIT_NO_DATA).toString());
|
||||
servers.add(server);
|
||||
});
|
||||
return servers;
|
||||
|
@ -22,6 +22,9 @@ import com.djrapitops.plan.delivery.formatting.Formatters;
|
||||
import com.djrapitops.plan.gathering.domain.TPS;
|
||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.GenericLang;
|
||||
import com.djrapitops.plan.settings.locale.lang.HtmlLang;
|
||||
import com.djrapitops.plan.storage.database.DBSystem;
|
||||
import com.djrapitops.plan.storage.database.Database;
|
||||
import com.djrapitops.plan.storage.database.queries.objects.TPSQueries;
|
||||
@ -43,6 +46,7 @@ import java.util.concurrent.TimeUnit;
|
||||
public class PerformanceJSONParser implements ServerTabJSONParser<Map<String, Object>> {
|
||||
|
||||
private final PlanConfig config;
|
||||
private final Locale locale;
|
||||
private final DBSystem dbSystem;
|
||||
|
||||
private final Formatter<Double> decimals;
|
||||
@ -52,10 +56,12 @@ public class PerformanceJSONParser implements ServerTabJSONParser<Map<String, Ob
|
||||
@Inject
|
||||
public PerformanceJSONParser(
|
||||
PlanConfig config,
|
||||
Locale locale,
|
||||
DBSystem dbSystem,
|
||||
Formatters formatters
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.dbSystem = dbSystem;
|
||||
|
||||
decimals = formatters.decimals();
|
||||
@ -98,9 +104,9 @@ public class PerformanceJSONParser implements ServerTabJSONParser<Map<String, Ob
|
||||
numbers.put("tps_30d", format(tpsDataMonth.averageTPS()));
|
||||
numbers.put("tps_7d", format(tpsDataWeek.averageTPS()));
|
||||
numbers.put("tps_24h", format(tpsDataDay.averageTPS()));
|
||||
numbers.put("cpu_30d", percentageFormatter.apply(tpsDataMonth.averageCPU() / 100.0));
|
||||
numbers.put("cpu_7d", percentageFormatter.apply(tpsDataWeek.averageCPU() / 100.0));
|
||||
numbers.put("cpu_24h", percentageFormatter.apply(tpsDataDay.averageCPU() / 100.0));
|
||||
numbers.put("cpu_30d", formatPerc(tpsDataMonth.averageCPU()));
|
||||
numbers.put("cpu_7d", formatPerc(tpsDataWeek.averageCPU()));
|
||||
numbers.put("cpu_24h", formatPerc(tpsDataDay.averageCPU()));
|
||||
numbers.put("ram_30d", format(tpsDataMonth.averageRAM(), " MB"));
|
||||
numbers.put("ram_7d", format(tpsDataWeek.averageRAM(), " MB"));
|
||||
numbers.put("ram_24h", format(tpsDataDay.averageRAM(), " MB"));
|
||||
@ -111,22 +117,26 @@ public class PerformanceJSONParser implements ServerTabJSONParser<Map<String, Ob
|
||||
numbers.put("chunks_7d", format((int) tpsDataWeek.averageChunks()));
|
||||
numbers.put("chunks_24h", format((int) tpsDataDay.averageChunks()));
|
||||
|
||||
numbers.put("max_disk_30d", format(tpsDataMonth.maxFreeDisk(), " Mb"));
|
||||
numbers.put("max_disk_7d", format(tpsDataWeek.maxFreeDisk(), " Mb"));
|
||||
numbers.put("max_disk_24h", format(tpsDataDay.maxFreeDisk(), " Mb"));
|
||||
numbers.put("min_disk_30d", format(tpsDataMonth.minFreeDisk(), " Mb"));
|
||||
numbers.put("min_disk_7d", format(tpsDataWeek.minFreeDisk(), " Mb"));
|
||||
numbers.put("min_disk_24h", format(tpsDataDay.minFreeDisk(), " Mb"));
|
||||
numbers.put("max_disk_30d", format(tpsDataMonth.maxFreeDisk(), " MB"));
|
||||
numbers.put("max_disk_7d", format(tpsDataWeek.maxFreeDisk(), " MB"));
|
||||
numbers.put("max_disk_24h", format(tpsDataDay.maxFreeDisk(), " MB"));
|
||||
numbers.put("min_disk_30d", format(tpsDataMonth.minFreeDisk(), " MB"));
|
||||
numbers.put("min_disk_7d", format(tpsDataWeek.minFreeDisk(), " MB"));
|
||||
numbers.put("min_disk_24h", format(tpsDataDay.minFreeDisk(), " MB"));
|
||||
|
||||
return numbers;
|
||||
}
|
||||
|
||||
private String format(double value) {
|
||||
return value != -1 ? decimals.apply(value) : "Unavailable";
|
||||
return value != -1 ? decimals.apply(value) : locale.get(GenericLang.UNAVAILABLE).toString();
|
||||
}
|
||||
|
||||
private String format(double value, String suffix) {
|
||||
return value != -1 ? decimals.apply(value) + suffix : "Unavailable";
|
||||
return value != -1 ? decimals.apply(value) + suffix : locale.get(GenericLang.UNAVAILABLE).toString();
|
||||
}
|
||||
|
||||
private String formatPerc(double value) {
|
||||
return value != -1 ? percentageFormatter.apply(value / 100.0) : locale.get(GenericLang.UNAVAILABLE).toString();
|
||||
}
|
||||
|
||||
private Map<String, Object> createInsightsMap(List<TPS> tpsData) {
|
||||
@ -140,7 +150,7 @@ public class PerformanceJSONParser implements ServerTabJSONParser<Map<String, Ob
|
||||
double averageCPU = lowTPS.averageCPU();
|
||||
double averageEntities = lowTPS.averageEntities();
|
||||
double averageChunks = lowTPS.averageChunks();
|
||||
insights.put("low_tps_players", avgPlayersOnline != -1 ? decimals.apply(avgPlayersOnline) : "No low tps spikes");
|
||||
insights.put("low_tps_players", avgPlayersOnline != -1 ? decimals.apply(avgPlayersOnline) : locale.get(HtmlLang.TEXT_NO_LOW_TPS).toString());
|
||||
insights.put("low_tps_cpu", averageCPU != -1 ? decimals.apply(averageCPU) : "-");
|
||||
insights.put("low_tps_entities", averageEntities != -1 ? decimals.apply(averageEntities) : "-");
|
||||
insights.put("low_tps_chunks", averageChunks != -1 ? decimals.apply(averageChunks) : "-");
|
||||
|
@ -22,7 +22,6 @@ import com.djrapitops.plan.delivery.domain.mutators.*;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatter;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatters;
|
||||
import com.djrapitops.plan.delivery.rendering.html.Html;
|
||||
import com.djrapitops.plan.delivery.rendering.html.structure.ServerAccordion;
|
||||
import com.djrapitops.plan.delivery.rendering.json.graphs.Graphs;
|
||||
import com.djrapitops.plan.delivery.rendering.json.graphs.pie.WorldPie;
|
||||
import com.djrapitops.plan.gathering.cache.SessionCache;
|
||||
@ -32,6 +31,8 @@ import com.djrapitops.plan.gathering.domain.WorldTimes;
|
||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.config.paths.TimeSettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.GenericLang;
|
||||
import com.djrapitops.plan.settings.theme.Theme;
|
||||
import com.djrapitops.plan.settings.theme.ThemeVal;
|
||||
import com.djrapitops.plan.storage.database.DBSystem;
|
||||
@ -51,6 +52,7 @@ import java.util.stream.Collectors;
|
||||
public class PlayerJSONParser {
|
||||
|
||||
private final PlanConfig config;
|
||||
private final Locale locale;
|
||||
private final Theme theme;
|
||||
private final DBSystem dbSystem;
|
||||
private final Graphs graphs;
|
||||
@ -63,12 +65,14 @@ public class PlayerJSONParser {
|
||||
@Inject
|
||||
public PlayerJSONParser(
|
||||
PlanConfig config,
|
||||
Locale locale,
|
||||
Theme theme,
|
||||
DBSystem dbSystem,
|
||||
Formatters formatters,
|
||||
Graphs graphs
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.theme = theme;
|
||||
this.dbSystem = dbSystem;
|
||||
|
||||
@ -88,7 +92,7 @@ public class PlayerJSONParser {
|
||||
PlayerContainer player = db.query(new PlayerContainerQuery(playerUUID));
|
||||
SessionsMutator sessionsMutator = SessionsMutator.forContainer(player);
|
||||
Map<UUID, WorldTimes> worldTimesPerServer = PerServerMutator.forContainer(player).worldTimesPerServer();
|
||||
List<Map<String, Object>> serverAccordion = new ServerAccordion(player, serverNames, graphs, year, timeAmount).asMaps();
|
||||
List<Map<String, Object>> serverAccordion = new ServerAccordion(player, serverNames, graphs, year, timeAmount, locale.get(GenericLang.UNKNOWN).toString()).asMaps();
|
||||
List<PlayerKill> kills = player.getValue(PlayerKeys.PLAYER_KILLS).orElse(Collections.emptyList());
|
||||
List<PlayerKill> deaths = player.getValue(PlayerKeys.PLAYER_DEATHS_KILLS).orElse(Collections.emptyList());
|
||||
|
||||
@ -178,7 +182,7 @@ public class PlayerJSONParser {
|
||||
int worstPing = ping.max();
|
||||
int bestPing = ping.min();
|
||||
|
||||
String unavailable = "Unavailable";
|
||||
String unavailable = locale.get(GenericLang.UNAVAILABLE).toString();
|
||||
info.put("average_ping", averagePing != -1.0 ? decimals.apply(averagePing) + " ms" : unavailable);
|
||||
info.put("worst_ping", worstPing != -1.0 ? worstPing + " ms" : unavailable);
|
||||
info.put("best_ping", bestPing != -1.0 ? bestPing + " ms" : unavailable);
|
||||
|
@ -26,6 +26,8 @@ import com.djrapitops.plan.delivery.rendering.html.icon.Icon;
|
||||
import com.djrapitops.plan.extension.FormatType;
|
||||
import com.djrapitops.plan.extension.icon.Color;
|
||||
import com.djrapitops.plan.extension.implementation.results.*;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.HtmlLang;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@ -41,6 +43,7 @@ public class PlayersTableJSONParser {
|
||||
private final List<TablePlayer> players;
|
||||
private final List<ExtensionDescriptive> extensionDescriptives;
|
||||
private final Map<UUID, ExtensionTabData> extensionData;
|
||||
private final Locale locale;
|
||||
|
||||
private final boolean openPlayerPageInNewTab;
|
||||
|
||||
@ -49,17 +52,17 @@ public class PlayersTableJSONParser {
|
||||
private Formatter<Double> decimalFormatter;
|
||||
|
||||
public PlayersTableJSONParser(
|
||||
// Data
|
||||
List<TablePlayer> players,
|
||||
Map<UUID, ExtensionTabData> extensionData,
|
||||
// Settings
|
||||
boolean openPlayerPageInNewTab,
|
||||
// Formatters
|
||||
Formatters formatters
|
||||
Formatters formatters,
|
||||
Locale locale
|
||||
) {
|
||||
// Data
|
||||
this.players = players;
|
||||
this.extensionData = extensionData;
|
||||
this.locale = locale;
|
||||
|
||||
extensionDescriptives = new ArrayList<>();
|
||||
addExtensionDescriptives(extensionData);
|
||||
@ -132,7 +135,7 @@ public class PlayersTableJSONParser {
|
||||
ActivityIndex activityIndex = player.getCurrentActivityIndex().orElseGet(() -> new ActivityIndex(0.0, 0));
|
||||
boolean isBanned = player.isBanned();
|
||||
String activityString = activityIndex.getFormattedValue(decimalFormatter)
|
||||
+ (isBanned ? " (<b>Banned</b>)" : " (" + activityIndex.getGroup() + ")");
|
||||
+ (isBanned ? " (<b>" + locale.get(HtmlLang.LABEL_BANNED) + "</b>)" : " (" + activityIndex.getGroup() + ")");
|
||||
|
||||
String geolocation = player.getGeolocation().orElse("-");
|
||||
|
||||
@ -190,13 +193,13 @@ public class PlayersTableJSONParser {
|
||||
// Is the data for the column formatted
|
||||
|
||||
columnHeaders
|
||||
.append(makeColumnHeader(Icon.called("user") + " Name", "name")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("check") + " Activity Index", "index")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("clock").of(Family.REGULAR) + " Playtime", "playtime")).append(',')
|
||||
.append(makeColumnHeader(Icon.called("calendar-plus").of(Family.REGULAR) + " Sessions", "sessions")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("user-plus") + " Registered", "registered")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("calendar-check").of(Family.REGULAR) + " Last Seen", "seen")).append(',')
|
||||
.append(makeColumnHeader(Icon.called("globe") + " Geolocation", "geolocation"));
|
||||
.append(makeColumnHeader(Icon.called("user") + " " + locale.get(HtmlLang.LABEL_NAME), "name")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("check") + " " + locale.get(HtmlLang.LABEL_ACTIVITY_INDEX), "index")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("clock").of(Family.REGULAR) + " " + locale.get(HtmlLang.LABEL_PLAYTIME), "playtime")).append(',')
|
||||
.append(makeColumnHeader(Icon.called("calendar-plus").of(Family.REGULAR) + " " + locale.get(HtmlLang.SIDE_SESSIONS), "sessions")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("user-plus") + " " + locale.get(HtmlLang.LABEL_REGISTERED), "registered")).append(',')
|
||||
.append(makeFColumnHeader(Icon.called("calendar-check").of(Family.REGULAR) + " " + locale.get(HtmlLang.LABEL_LAST_SEEN), "seen")).append(',')
|
||||
.append(makeColumnHeader(Icon.called("globe") + " " + locale.get(HtmlLang.TITLE_COUNTRY), "geolocation"));
|
||||
|
||||
appendExtensionHeaders(columnHeaders);
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.djrapitops.plan.delivery.rendering.html.structure;
|
||||
package com.djrapitops.plan.delivery.rendering.json;
|
||||
|
||||
import com.djrapitops.plan.delivery.domain.container.DataContainer;
|
||||
import com.djrapitops.plan.delivery.domain.container.PerServerContainer;
|
||||
@ -30,7 +30,7 @@ import com.djrapitops.plan.gathering.domain.WorldTimes;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* HTML utility class for creating a Server Accordion.
|
||||
* Utility for creating JSON for Server Accordion
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
@ -38,6 +38,7 @@ public class ServerAccordion {
|
||||
|
||||
private final Map<UUID, String> serverNames;
|
||||
private final PerServerContainer perServer;
|
||||
private final String unknown;
|
||||
|
||||
private final Graphs graphs;
|
||||
private final Formatter<Long> year;
|
||||
@ -47,7 +48,8 @@ public class ServerAccordion {
|
||||
PlayerContainer container, Map<UUID, String> serverNames,
|
||||
Graphs graphs,
|
||||
Formatter<Long> year,
|
||||
Formatter<Long> timeAmount
|
||||
Formatter<Long> timeAmount,
|
||||
String unknown
|
||||
) {
|
||||
this.graphs = graphs;
|
||||
this.year = year;
|
||||
@ -56,6 +58,7 @@ public class ServerAccordion {
|
||||
this.serverNames = serverNames;
|
||||
perServer = container.getValue(PlayerKeys.PER_SERVER)
|
||||
.orElse(new PerServerContainer());
|
||||
this.unknown = unknown;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> asMaps() {
|
||||
@ -66,7 +69,7 @@ public class ServerAccordion {
|
||||
DataContainer perServer = entry.getValue();
|
||||
Map<String, Object> server = new HashMap<>();
|
||||
|
||||
String serverName = serverNames.getOrDefault(serverUUID, "Unknown");
|
||||
String serverName = serverNames.getOrDefault(serverUUID, unknown);
|
||||
WorldTimes worldTimes = perServer.getValue(PerServerKeys.WORLD_TIMES).orElse(new WorldTimes());
|
||||
SessionsMutator sessionsMutator = SessionsMutator.forContainer(perServer);
|
||||
|
@ -26,6 +26,8 @@ import com.djrapitops.plan.identification.ServerInfo;
|
||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.config.paths.TimeSettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.GenericLang;
|
||||
import com.djrapitops.plan.storage.database.DBSystem;
|
||||
import com.djrapitops.plan.storage.database.Database;
|
||||
import com.djrapitops.plan.storage.database.queries.ServerAggregateQueries;
|
||||
@ -49,24 +51,27 @@ import java.util.concurrent.TimeUnit;
|
||||
public class ServerOverviewJSONParser implements ServerTabJSONParser<Map<String, Object>> {
|
||||
|
||||
private final Formatter<Long> day;
|
||||
private PlanConfig config;
|
||||
private DBSystem dbSystem;
|
||||
private ServerInfo serverInfo;
|
||||
private final PlanConfig config;
|
||||
private final Locale locale;
|
||||
private final DBSystem dbSystem;
|
||||
private final ServerInfo serverInfo;
|
||||
|
||||
private Formatter<Long> timeAmount;
|
||||
private Formatter<Double> decimals;
|
||||
private Formatter<Double> percentage;
|
||||
private Formatter<DateHolder> year;
|
||||
private final Formatter<Long> timeAmount;
|
||||
private final Formatter<Double> decimals;
|
||||
private final Formatter<Double> percentage;
|
||||
private final Formatter<DateHolder> year;
|
||||
private final TimeZone timeZone;
|
||||
|
||||
@Inject
|
||||
public ServerOverviewJSONParser(
|
||||
PlanConfig config,
|
||||
Locale locale,
|
||||
DBSystem dbSystem,
|
||||
ServerInfo serverInfo,
|
||||
Formatters formatters
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.dbSystem = dbSystem;
|
||||
this.serverInfo = serverInfo;
|
||||
|
||||
@ -105,7 +110,7 @@ public class ServerOverviewJSONParser implements ServerTabJSONParser<Map<String,
|
||||
sevenDays.put("new_players_retention_perc", percentage.apply(retentionPerc7d));
|
||||
TPSMutator tpsMutator = new TPSMutator(db.query(TPSQueries.fetchTPSDataOfServer(weekAgo, now, serverUUID)));
|
||||
double averageTPS = tpsMutator.averageTPS();
|
||||
sevenDays.put("average_tps", averageTPS != -1 ? decimals.apply(averageTPS) : "Unavailable");
|
||||
sevenDays.put("average_tps", averageTPS != -1 ? decimals.apply(averageTPS) : locale.get(GenericLang.UNAVAILABLE).toString());
|
||||
sevenDays.put("low_tps_spikes", tpsMutator.lowTpsSpikeCount(config.getNumber(DisplaySettings.GRAPH_TPS_THRESHOLD_MED)));
|
||||
sevenDays.put("downtime", timeAmount.apply(tpsMutator.serverDownTime()));
|
||||
|
||||
@ -146,7 +151,7 @@ public class ServerOverviewJSONParser implements ServerTabJSONParser<Map<String,
|
||||
? serverInfo.getServerProperties().getOnlinePlayers()
|
||||
: db.query(TPSQueries.fetchLatestTPSEntryForServer(serverUUID))
|
||||
.map(TPS::getPlayers).map(Object::toString)
|
||||
.orElse("Unknown");
|
||||
.orElse(locale.get(GenericLang.UNKNOWN).toString());
|
||||
}
|
||||
|
||||
private Map<String, Object> createWeeksMap(UUID serverUUID) {
|
||||
|
@ -30,22 +30,22 @@ import java.util.Map;
|
||||
*/
|
||||
public class ActivityPie extends Pie {
|
||||
|
||||
ActivityPie(Map<String, Integer> activityData, String[] colors) {
|
||||
super(turnToSlices(activityData, colors));
|
||||
ActivityPie(Map<String, Integer> activityData, String[] colors, String[] groups) {
|
||||
super(turnToSlices(activityData, colors, groups));
|
||||
}
|
||||
|
||||
private static List<PieSlice> turnToSlices(Map<String, Integer> activityData, String[] colors) {
|
||||
private static List<PieSlice> turnToSlices(Map<String, Integer> activityData, String[] colors, String[] groups) {
|
||||
int maxCol = colors.length;
|
||||
String[] defaultGroups = ActivityIndex.getDefaultGroups();
|
||||
|
||||
List<PieSlice> slices = new ArrayList<>();
|
||||
int i = 0;
|
||||
for (String group : ActivityIndex.getGroups()) {
|
||||
int num = activityData.getOrDefault(group, 0);
|
||||
for (int j = 0; j < groups.length; j++) {
|
||||
int num = activityData.getOrDefault(defaultGroups[j], 0);
|
||||
|
||||
slices.add(new PieSlice(group, num, colors[i % maxCol], false));
|
||||
slices.add(new PieSlice(groups[j], num, colors[i % maxCol], false));
|
||||
i++;
|
||||
}
|
||||
|
||||
return slices;
|
||||
}
|
||||
}
|
||||
|
@ -16,11 +16,14 @@
|
||||
*/
|
||||
package com.djrapitops.plan.delivery.rendering.json.graphs.pie;
|
||||
|
||||
import com.djrapitops.plan.delivery.domain.mutators.ActivityIndex;
|
||||
import com.djrapitops.plan.gathering.domain.GMTimes;
|
||||
import com.djrapitops.plan.gathering.domain.WorldTimes;
|
||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||
import com.djrapitops.plan.settings.config.WorldAliasSettings;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.GenericLang;
|
||||
import com.djrapitops.plan.settings.theme.Theme;
|
||||
import com.djrapitops.plan.settings.theme.ThemeVal;
|
||||
|
||||
@ -38,24 +41,27 @@ import java.util.UUID;
|
||||
public class PieGraphFactory {
|
||||
|
||||
private final PlanConfig config;
|
||||
private final Locale locale;
|
||||
private final Theme theme;
|
||||
|
||||
@Inject
|
||||
public PieGraphFactory(
|
||||
PlanConfig config,
|
||||
Locale locale,
|
||||
Theme theme
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.theme = theme;
|
||||
}
|
||||
|
||||
public Pie activityPie(Map<String, Integer> activityData) {
|
||||
String[] colors = theme.getPieColors(ThemeVal.GRAPH_ACTIVITY_PIE);
|
||||
return new ActivityPie(activityData, colors);
|
||||
return new ActivityPie(activityData, colors, ActivityIndex.getGroups(locale));
|
||||
}
|
||||
|
||||
public Pie serverPreferencePie(Map<UUID, String> serverNames, Map<UUID, WorldTimes> serverWorldTimes) {
|
||||
return new ServerPreferencePie(serverNames, serverWorldTimes);
|
||||
return new ServerPreferencePie(serverNames, serverWorldTimes, locale.get(GenericLang.UNKNOWN).toString());
|
||||
}
|
||||
|
||||
public Pie serverPreferencePie(Map<String, Long> serverPlaytimes) {
|
||||
|
@ -25,22 +25,22 @@ import java.util.UUID;
|
||||
|
||||
public class ServerPreferencePie extends Pie {
|
||||
|
||||
ServerPreferencePie(Map<UUID, String> serverNames, Map<UUID, WorldTimes> serverWorldTimes) {
|
||||
super(turnToSlices(serverNames, serverWorldTimes));
|
||||
ServerPreferencePie(Map<UUID, String> serverNames, Map<UUID, WorldTimes> serverWorldTimes, String unknown) {
|
||||
super(turnToSlices(serverNames, serverWorldTimes, unknown));
|
||||
}
|
||||
|
||||
ServerPreferencePie(Map<String, Long> serverPlaytimes) {
|
||||
super(turnToSlices(serverPlaytimes));
|
||||
}
|
||||
|
||||
private static List<PieSlice> turnToSlices(Map<UUID, String> serverNames, Map<UUID, WorldTimes> serverWorldTimes) {
|
||||
private static List<PieSlice> turnToSlices(Map<UUID, String> serverNames, Map<UUID, WorldTimes> serverWorldTimes, String unknown) {
|
||||
List<PieSlice> slices = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<UUID, WorldTimes> server : serverWorldTimes.entrySet()) {
|
||||
UUID serverUUID = server.getKey();
|
||||
WorldTimes worldTimes = server.getValue();
|
||||
|
||||
String serverName = serverNames.getOrDefault(serverUUID, "Unknown");
|
||||
String serverName = serverNames.getOrDefault(serverUUID, unknown);
|
||||
long num = worldTimes.getTotal();
|
||||
|
||||
slices.add(new PieSlice(serverName, num));
|
||||
|
@ -20,7 +20,9 @@ import com.djrapitops.plan.delivery.domain.DateMap;
|
||||
import com.djrapitops.plan.delivery.domain.mutators.ActivityIndex;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatter;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Stack Graph that represents evolution of the PlayerBase in terms of ActivityIndex Groups.
|
||||
@ -30,12 +32,8 @@ import java.util.*;
|
||||
*/
|
||||
class ActivityStackGraph extends StackGraph {
|
||||
|
||||
ActivityStackGraph(TreeMap<Long, Map<String, Set<UUID>>> activityData, String[] colors, Formatter<Long> dayFormatter) {
|
||||
super(getLabels(activityData.navigableKeySet(), dayFormatter), getDataSets(activityData, colors));
|
||||
}
|
||||
|
||||
ActivityStackGraph(DateMap<Map<String, Integer>> activityData, String[] colors, Formatter<Long> dayFormatter) {
|
||||
super(getLabels(activityData.navigableKeySet(), dayFormatter), getDataSets(activityData, colors));
|
||||
ActivityStackGraph(DateMap<Map<String, Integer>> activityData, String[] colors, Formatter<Long> dayFormatter, String[] groups) {
|
||||
super(getLabels(activityData.navigableKeySet(), dayFormatter), getDataSets(activityData, colors, groups));
|
||||
}
|
||||
|
||||
private static String[] getLabels(Collection<Long> dates, Formatter<Long> dayFormatter) {
|
||||
@ -55,27 +53,13 @@ class ActivityStackGraph extends StackGraph {
|
||||
return dataSets;
|
||||
}
|
||||
|
||||
private static StackDataSet[] getDataSets(TreeMap<Long, Map<String, Set<UUID>>> activityData, String[] colors) {
|
||||
String[] groups = ActivityIndex.getGroups();
|
||||
StackDataSet[] dataSets = initializeDataSet(groups, colors);
|
||||
|
||||
for (Map<String, Set<UUID>> data : activityData.values()) {
|
||||
for (int j = 0; j < groups.length; j++) {
|
||||
Set<UUID> players = data.get(groups[j]);
|
||||
dataSets[j].add(players != null ? players.size() : 0);
|
||||
}
|
||||
}
|
||||
|
||||
return dataSets;
|
||||
}
|
||||
|
||||
private static StackDataSet[] getDataSets(DateMap<Map<String, Integer>> activityData, String[] colors) {
|
||||
String[] groups = ActivityIndex.getGroups();
|
||||
private static StackDataSet[] getDataSets(DateMap<Map<String, Integer>> activityData, String[] colors, String[] groups) {
|
||||
StackDataSet[] dataSets = initializeDataSet(groups, colors);
|
||||
String[] defaultGroups = ActivityIndex.getDefaultGroups();
|
||||
|
||||
for (Map<String, Integer> data : activityData.values()) {
|
||||
for (int j = 0; j < groups.length; j++) {
|
||||
dataSets[j].add((double) data.getOrDefault(groups[j], 0));
|
||||
dataSets[j].add((double) data.getOrDefault(defaultGroups[j], 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,10 @@
|
||||
package com.djrapitops.plan.delivery.rendering.json.graphs.stack;
|
||||
|
||||
import com.djrapitops.plan.delivery.domain.DateMap;
|
||||
import com.djrapitops.plan.delivery.domain.mutators.ActivityIndex;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatter;
|
||||
import com.djrapitops.plan.delivery.formatting.Formatters;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.theme.Theme;
|
||||
import com.djrapitops.plan.settings.theme.ThemeVal;
|
||||
|
||||
@ -34,20 +36,23 @@ import java.util.Map;
|
||||
@Singleton
|
||||
public class StackGraphFactory {
|
||||
|
||||
private final Locale locale;
|
||||
private final Theme theme;
|
||||
private final Formatter<Long> dayFormatter;
|
||||
|
||||
@Inject
|
||||
public StackGraphFactory(
|
||||
Locale locale,
|
||||
Formatters formatters,
|
||||
Theme theme
|
||||
) {
|
||||
this.locale = locale;
|
||||
this.theme = theme;
|
||||
this.dayFormatter = formatters.dayLong();
|
||||
}
|
||||
|
||||
public StackGraph activityStackGraph(DateMap<Map<String, Integer>> activityData) {
|
||||
String[] colors = theme.getPieColors(ThemeVal.GRAPH_ACTIVITY_PIE);
|
||||
return new ActivityStackGraph(activityData, colors, dayFormatter);
|
||||
return new ActivityStackGraph(activityData, colors, dayFormatter, ActivityIndex.getGroups(locale));
|
||||
}
|
||||
}
|
@ -24,6 +24,9 @@ import com.djrapitops.plan.gathering.domain.Session;
|
||||
import com.djrapitops.plan.gathering.domain.WorldTimes;
|
||||
import com.djrapitops.plan.processing.Processing;
|
||||
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
|
||||
import com.djrapitops.plan.settings.locale.Locale;
|
||||
import com.djrapitops.plan.settings.locale.lang.GenericLang;
|
||||
import com.djrapitops.plan.settings.locale.lang.HtmlLang;
|
||||
import com.djrapitops.plugin.logging.L;
|
||||
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
@ -47,17 +50,20 @@ public class WorldAliasSettings {
|
||||
|
||||
private final Lazy<PlanConfig> config;
|
||||
private final Supplier<Formatter<Double>> percentageFormatter;
|
||||
private final Locale locale;
|
||||
private final Processing processing;
|
||||
private final ErrorHandler errorHandler;
|
||||
|
||||
@Inject
|
||||
public WorldAliasSettings(
|
||||
Lazy<PlanConfig> config,
|
||||
Locale locale,
|
||||
Lazy<Formatters> formatters,
|
||||
Processing processing,
|
||||
ErrorHandler errorHandler
|
||||
) {
|
||||
this.config = config;
|
||||
this.locale = locale;
|
||||
this.processing = processing;
|
||||
this.errorHandler = errorHandler;
|
||||
|
||||
@ -153,13 +159,13 @@ public class WorldAliasSettings {
|
||||
ConfigNode aliases = getAliasSection();
|
||||
|
||||
if (!session.supports(SessionKeys.WORLD_TIMES)) {
|
||||
return "No World Time Data";
|
||||
return locale.get(HtmlLang.UNIT_NO_DATA).toString();
|
||||
}
|
||||
WorldTimes worldTimes = session.getValue(SessionKeys.WORLD_TIMES).orElse(new WorldTimes());
|
||||
if (!session.supports(SessionKeys.END)) {
|
||||
return worldTimes.getCurrentWorld()
|
||||
.map(currentWorld -> "Current: " + (aliases.contains(currentWorld) ? aliases.getString(currentWorld) : currentWorld))
|
||||
.orElse("Current: Unavailable");
|
||||
.orElse("Current: " + locale.get(GenericLang.UNAVAILABLE));
|
||||
}
|
||||
|
||||
Map<String, Long> playtimePerAlias = getPlaytimePerAlias(worldTimes);
|
||||
|
@ -25,6 +25,7 @@ public enum GenericLang implements Lang {
|
||||
YES("Positive", "Yes"),
|
||||
NO("Negative", "No"),
|
||||
UNKNOWN("Unknown", "Unknown"),
|
||||
UNAVAILABLE("Unavailable", "Unavailable"),
|
||||
TODAY("Today", "'Today'"),
|
||||
YESTERDAY("Yesterday", "'Yesterday'");
|
||||
|
||||
|
@ -177,6 +177,7 @@ public enum HtmlLang implements Lang {
|
||||
LABEL_REGISTERED("Registered"),
|
||||
TITLE_TITLE_PLAYER_PUNCHCARD("Punchcard"),
|
||||
TITLE_ALL_TIME("All Time"),
|
||||
LABEL_NAME("Name"),
|
||||
// ----------------------------------
|
||||
// OLD
|
||||
// ----------------------------------
|
||||
|
@ -1,343 +1,344 @@
|
||||
Cmd - Click Me || 请点击此处
|
||||
Cmd - Link || §7 •§2 链接:§f
|
||||
Cmd Disable - Disabled || §a现已禁用计划系统。您仍可使用 /planbungee reload 重启插件。
|
||||
Cmd FAIL - Database not open || §c数据库状态为 ${0} - 请稍后再试.
|
||||
Cmd FAIL - Invalid Username || §c[数据统计] 此玩家不存在。
|
||||
Cmd FAIL - No Feature || §e请设置要禁用的功能!(当前支持 ${0})
|
||||
Cmd FAIL - No Permission || §c[数据统计] 您没有所需权限。
|
||||
Cmd FAIL - Require only one Argument || §c[数据统计] 命令需要一个参数。
|
||||
Cmd FAIL - Requires Arguments || §c[数据统计] 命令缺少参数。${0}
|
||||
Cmd FAIL - Unknown Username || §c[数据统计] 未在数据库中找到此玩家。
|
||||
Cmd FAIL - WebUser does not exists || §c用户不存在!
|
||||
Cmd FAIL - WebUser exists || §c用户已存在!
|
||||
Cmd Header - Analysis || §f»§2 玩家统计 - 统计结果
|
||||
Cmd Header - Info || §f»§2 玩家统计 - 信息
|
||||
Cmd Header - Inspect || §f»§2 玩家统计 - 检视结果:
|
||||
Cmd Header - Network || > §2网络页面
|
||||
Cmd Header - Players || > §2玩家
|
||||
Cmd Header - Search || §f»§2 玩家统计 - 搜索结果:
|
||||
Cmd Header - Servers || > §2服务器
|
||||
Cmd Header - Web Users || > §2${0} 个网页用户
|
||||
Cmd Info - Bungee Connection || §2已连接至Bungee:§f${0}
|
||||
Cmd Info - Database || §2可用数据库:§f${0}
|
||||
Cmd Info - Reload Complete || §a成功重载插件
|
||||
Cmd Info - Reload Failed || §c重载插件时发生错误,建议重新启动服务器。
|
||||
Cmd Info - Update || §2更新可用:§f${0}
|
||||
Cmd Info - Version || §2版本:§f${0}
|
||||
Cmd Notify - No WebUser || 您可能还没有网页账户,请输入 /plan register <密码>
|
||||
Cmd Notify - WebUser register || 已注册新用户:'${0}' 权限级别:${1}
|
||||
Cmd Qinspect - Activity Index || §2活跃指数:§f${0} | ${1}
|
||||
Cmd Qinspect - Deaths || §2死亡数:§f${0}
|
||||
Cmd Qinspect - Geolocation || §2从 §f${0} 登录
|
||||
Cmd Qinspect - Last Seen || §2最后在线:§f${0}
|
||||
Cmd Qinspect - Longest Session || §2最长在线时间:§f${0}
|
||||
Cmd Qinspect - Mob Kills || §2怪物击杀数:§f${0}
|
||||
Cmd Qinspect - Player Kills || §2玩家击杀数:§f${0}
|
||||
Cmd Qinspect - Playtime || §2游玩时间:§f${0}
|
||||
Cmd Qinspect - Registered || §2注册时间:§f${0}
|
||||
Cmd Qinspect - Times Kicked || §2踢出次数:§f${0}
|
||||
Cmd SUCCESS - Feature disabled || §a已在下次插件重载前暂时禁用 '${0}'。
|
||||
Cmd SUCCESS - WebUser register || §a已成功添加新用户(${0})!您可以在以下链接中查看Web面板。
|
||||
Cmd WARN - Database not open || §e数据库状态为 ${0} - 可能需要花费更多的时间..
|
||||
Cmd Web - Permission Levels || >\§70:访问所有页面\§71:访问 '/players' 及所有玩家页\§72:访问用户名与网页用户名一致的玩家页\§73+:无权限
|
||||
Command Help - /plan analyze || 查看服务器分析
|
||||
Command Help - /plan dev || 开发模式命令
|
||||
Command Help - /plan help || 查看命令列表。
|
||||
Command Help - /plan info || 查看计划版本
|
||||
Command Help - /plan inspect || 检视玩家数据
|
||||
Command Help - /plan manage || 数据库管理命令
|
||||
Command Help - /plan manage backup || 备份数据库至 .db 文件
|
||||
Command Help - /plan manage clear || 从数据库中清空所有数据
|
||||
Command Help - /plan manage disable || 暂时禁用功能
|
||||
Command Help - /plan manage export || 手动导出
|
||||
Command Help - /plan manage hotswap || 热插拔数据库并重启插件
|
||||
Command Help - /plan manage import || 从插件中导入数据
|
||||
Command Help - /plan manage move || 在数据库间移动数据
|
||||
Command Help - /plan manage raw || 查看玩家数据的raw JSON
|
||||
Command Help - /plan manage remove || 从活跃数据库中移除玩家数据
|
||||
Command Help - /plan manage restore || 恢复数据库
|
||||
Command Help - /plan manage uninstalled || 在数据库中将一个服务器标记为未安装.
|
||||
Command Help - /plan network || 查看网络页面
|
||||
Command Help - /plan players || 列出所有已缓存玩家名单
|
||||
Command Help - /plan qinspect || 在游戏内检视玩家数据
|
||||
Command Help - /plan register || 注册网页用户
|
||||
Command Help - /plan reload || 重新启动插件(重载配置)
|
||||
Command Help - /plan search || 搜索玩家
|
||||
Command Help - /plan servers || 列出数据库中的服务器
|
||||
Command Help - /plan web check || 检查网页用户的权限级别。
|
||||
Command Help - /plan web delete || 删除网页用户
|
||||
Command Help - /plan web level || 权限级别信息
|
||||
Command Help - /plan web list || 列出网页用户
|
||||
Command Help - /plan webuser || 管理网页用户
|
||||
Command Help - /planbungee disable || 暂时禁用插件
|
||||
Database - Apply Patch || 正在应用更新:${0}···
|
||||
Database - Patches Applied || 已成功应用所有数据库补丁。
|
||||
Database - Patches Applied Already || 已应用所有数据库补丁。
|
||||
Database MySQL - Launch Options Error || 启动参数出错,正使用默认参数(${0})
|
||||
Database Notify - Clean || 移除了 ${0} 位用户的数据。
|
||||
Database Notify - SQLite No WAL || 此服务器版本不支持 SQLite WAL 模式,正使用默认模式。这可能会影响性能。
|
||||
Disable || 已禁用插件。
|
||||
Disable - Processing || 正在处理未处理的关键任务。(${0})
|
||||
Disable - Processing Complete || 处理完毕。
|
||||
Disable - Unsaved Session Save || 保存未完成的时域中..
|
||||
Disable - WebServer || 正在关闭网页服务器···
|
||||
Enable || 已启用插件。
|
||||
Enable - Database || ${0}-已建立数据库连接。
|
||||
Enable - Notify Empty IP || server.properties 中的 IP 为空且未使用替代 IP。这将会导致地址出错!
|
||||
Enable - Notify Geolocations disabled || 已关闭地理位置收集。(Data.Geolocations: false)
|
||||
Enable - Notify Geolocations Internet Required || 插件需要在首次运行时访问互联网以下载 GeoLite2 地理位置数据库。
|
||||
Enable - Notify Webserver disabled || 未初始化网页服务器。(WebServer.DisableWebServer: true)
|
||||
Enable - WebServer || 正在初始化网页服务器···
|
||||
Enable FAIL - Database || ${0}-连接数据库失败:${1}
|
||||
Enable FAIL - Database Patch || 数据库补丁失败,插件必须被禁用。请汇报此问题
|
||||
Enable FAIL - GeoDB Write || 保存已下载的 GeoLite2 地理位置数据库时发生问题
|
||||
Enable FAIL - WebServer (Proxy) || 网页服务器未初始化
|
||||
Enable FAIL - Wrong Database Type || ${0} 此数据类型不存在。
|
||||
HTML - COMPARING_15_DAYS || 比较15天前
|
||||
HTML - COMPARING_60_DAYS || 比较30天前
|
||||
HTML - COMPARING_7_DAYS || 比较7天前
|
||||
HTML - DATABASE_NOT_OPEN || 数据库未开放, 请输入 /plan info 查看数据库状态
|
||||
HTML - ERROR || 认证时发生错误
|
||||
HTML - INDEX_ACTIVE || 活跃
|
||||
HTML - INDEX_INACTIVE || 不活跃
|
||||
HTML - INDEX_IRREGULAR || 偶尔上线
|
||||
HTML - INDEX_REGULAR || 经常上线
|
||||
HTML - INDEX_VERY_ACTIVE || 非常活跃
|
||||
HTML - LABEL_1ST_WEAPON || 最致命的PVP武器
|
||||
HTML - LABEL_2ND_WEAPON || 更致命的武器
|
||||
HTML - LABEL_3RD_WEAPON || 致命的PvP武器
|
||||
HTML - LABEL_ACTIVITY_INDEX || 活跃指数
|
||||
HTML - LABEL_AFK || AFK
|
||||
HTML - LABEL_AFK_TIME || 挂机时间
|
||||
HTML - LABEL_AVG || 平均
|
||||
HTML - LABEL_AVG_KDR || 平均击杀比
|
||||
HTML - LABEL_AVG_MOB_KDR || 平均怪物击杀比
|
||||
HTML - LABEL_AVG_PLAYTIME || 平均游戏时间
|
||||
HTML - LABEL_AVG_SESSION_LENGTH || 平均时域长度
|
||||
HTML - LABEL_AVG_TPS || 平均TPS
|
||||
HTML - LABEL_BANNED || 已封禁
|
||||
HTML - LABEL_BEST_PEAK || 所有时间峰值
|
||||
HTML - LABEL_DEATHS || 死亡数
|
||||
HTML - LABEL_DOWNTIME || 停机时间
|
||||
HTML - LABEL_DURING_LOW_TPS || TPS Spikes:
|
||||
HTML - LABEL_ENTITIES || 实体数
|
||||
HTML - LABEL_FAVORITE_SERVER || 喜爱的服务器
|
||||
HTML - LABEL_FIRST_SESSION_LENGTH || 第一个时域的长度
|
||||
HTML - LABEL_FREE_DISK_SPACE || 剩余磁盘空间
|
||||
HTML - LABEL_INACTIVE || 未激活
|
||||
HTML - LABEL_LAST_PEAK || 上次峰值
|
||||
HTML - LABEL_LAST_SEEN || 最后在线
|
||||
HTML - LABEL_LOADED_CHUNKS || 已加载的区块
|
||||
HTML - LABEL_LOADED_ENTITIES || 已加载的实体
|
||||
HTML - LABEL_LONE_JOINS || Lone joins
|
||||
HTML - LABEL_LONE_NEW_JOINS || Lone newbie joins
|
||||
HTML - LABEL_LONGEST_SESSION || 最长时域
|
||||
HTML - LABEL_LOW_TPS || 最低TPS Spikes
|
||||
HTML - LABEL_MOB_DEATHS || 被怪物击杀数
|
||||
HTML - LABEL_MOB_KDR || 怪物击杀比
|
||||
HTML - LABEL_MOB_KILLS || 怪物击杀数
|
||||
HTML - LABEL_MOST_ACTIVE_GAMEMODE || 最常用的游戏模式
|
||||
HTML - LABEL_NEW || 新
|
||||
HTML - LABEL_NEW_PLAYERS || 新玩家
|
||||
HTML - LABEL_NICKNAME || 昵称
|
||||
HTML - LABEL_ONLINE_FIRST_JOIN || 第一次加入服务器的在线玩家
|
||||
HTML - LABEL_OPERATOR || 管理员
|
||||
HTML - LABEL_PER_PLAYER || / 玩家
|
||||
HTML - LABEL_PER_REGULAR_PLAYER || / 普通玩家
|
||||
HTML - LABEL_PLAYER_DEATHS || 被玩家击杀数
|
||||
HTML - LABEL_PLAYER_KILLS || 玩家击杀数
|
||||
HTML - LABEL_PLAYERS_ONLINE || 在线玩家
|
||||
HTML - LABEL_PLAYTIME || 游玩时间
|
||||
HTML - LABEL_REGISTERED || 已注册
|
||||
HTML - LABEL_REGISTERED_PLAYERS || 已注册的玩家
|
||||
HTML - LABEL_REGULAR || Regular
|
||||
HTML - LABEL_REGULAR_PLAYERS || 普通玩家
|
||||
HTML - LABEL_RETENTION || 新玩家留坑率
|
||||
HTML - LABEL_SERVER_DOWNTIME || 关服时间
|
||||
HTML - LABEL_SERVER_OCCUPIED || 开服时间
|
||||
HTML - LABEL_SESSION_ENDED || 时域之末
|
||||
HTML - LABEL_SESSION_LENGTH || 时域长度
|
||||
HTML - LABEL_SESSION_MEDIAN || 平均时域
|
||||
HTML - LABEL_TIMES_KICKED || 被踢次数
|
||||
HTML - LABEL_TOTAL_PLAYERS || 总玩家数
|
||||
HTML - LABEL_TOTAL_PLAYTIME || 总游戏时间
|
||||
HTML - LABEL_UNIQUE_PLAYERS || 普通玩家
|
||||
HTML - LINK_BACK_NETWORK || 网络页面
|
||||
HTML - LINK_BACK_SERVER || 服务器页面
|
||||
HTML - LINK_CHANGELOG || 查看更新日志
|
||||
HTML - LINK_DISCORD || Discord支持
|
||||
HTML - LINK_DOWNLOAD || 下载
|
||||
HTML - LINK_ISSUES || 提问
|
||||
HTML - LINK_NIGHT_MODE || 夜晚模式
|
||||
HTML - LINK_QUICK_VIEW || 快速检索
|
||||
HTML - LINK_SERVER_ANALYSIS || 服务器分析
|
||||
HTML - LINK_WIKI || Plan Wiki,教程 & 文档
|
||||
HTML - LOCAL_MACHINE || 本机
|
||||
HTML - NAV_PLUGINS || 插件
|
||||
HTML - NEW_CALENDAR || 新:
|
||||
HTML - NO_KILLS || 无击杀数
|
||||
HTML - OFFLINE || 离线
|
||||
HTML - ONLINE || 在线
|
||||
HTML - PER_DAY || / 天
|
||||
HTML - PLAYERS_TEXT || 玩家
|
||||
HTML - SIDE_GEOLOCATIONS || 地理位置
|
||||
HTML - SIDE_INFORMATION || 信息
|
||||
HTML - SIDE_NETWORK_OVERVIEW || 网络预览
|
||||
HTML - SIDE_OVERVIEW || 预览
|
||||
HTML - SIDE_PERFORMANCE || 性能
|
||||
HTML - SIDE_PLAYER_LIST || 玩家列表
|
||||
HTML - SIDE_PLAYERBASE || Playerbase
|
||||
HTML - SIDE_PLAYERBASE_OVERVIEW || Playerbase预览
|
||||
HTML - SIDE_PLUGINS || 插件
|
||||
HTML - SIDE_PVP_PVE || PvP & PvE
|
||||
HTML - SIDE_SERVERS || 服务器
|
||||
HTML - SIDE_SERVERS_TITLE || 服务器
|
||||
HTML - SIDE_SESSIONS || 时域
|
||||
HTML - SIDE_TO_MAIN_PAGE || 到主页面
|
||||
HTML - TEXT_CLICK_TO_EXPAND || 点击拓展
|
||||
HTML - TEXT_CONTRIBUTORS_CODE || 码农
|
||||
HTML - TEXT_CONTRIBUTORS_LOCALE || 译者
|
||||
HTML - TEXT_CONTRIBUTORS_MONEY || 特别感谢那些在经济上支持该插件发展的人.
|
||||
HTML - TEXT_CONTRIBUTORS_THANKS || 另外以下 <span class="col-plan">awesome people</span> 也为该插件作出了贡献:
|
||||
HTML - TEXT_DEV_VERSION || 该版本为开发版本.
|
||||
HTML - TEXT_DEVELOPED_BY || 的开发者为
|
||||
HTML - TEXT_LICENSED_UNDER || is developed and licensed under
|
||||
HTML - TEXT_METRICS || bStats Metrics
|
||||
HTML - TEXT_NO_EXTENSION_DATA || 没有拓展数据
|
||||
HTML - TEXT_NO_LOW_TPS || No low tps spikes
|
||||
HTML - TEXT_PLUGIN_INFORMATION || 插件信息
|
||||
HTML - TEXT_VERSION || 有新版本的插件可用.
|
||||
HTML - TITLE_30_DAYS || 30 天
|
||||
HTML - TITLE_30_DAYS_AGO || 30 天前
|
||||
HTML - TITLE_ALL || 全部
|
||||
HTML - TITLE_ALL_TIME || 所有时间
|
||||
HTML - TITLE_AS_NUMBERS || 作为数字
|
||||
HTML - TITLE_AVG_PING || 平均延迟
|
||||
HTML - TITLE_BEST_PING || 最低延迟
|
||||
HTML - TITLE_CALENDAR || 日历
|
||||
HTML - TITLE_CONNECTION_INFO || 连接信息
|
||||
HTML - TITLE_COUNTRY || 国家
|
||||
HTML - TITLE_CPU_RAM || CPU & RAM
|
||||
HTML - TITLE_CURRENT_PLAYERBASE || 当前玩家
|
||||
HTML - TITLE_DISK || 磁盘空间
|
||||
HTML - TITLE_GRAPH_DAY_BY_DAY || Day by Day
|
||||
HTML - TITLE_GRAPH_NETWORK_ONLINE_ACTIVITY || Network Online Activity
|
||||
HTML - TITLE_GRAPH_PUNCHCARD || 打卡签到30天
|
||||
HTML - TITLE_INSIGHTS || Insights30天
|
||||
HTML - TITLE_IS_AVAILABLE || 可用
|
||||
HTML - TITLE_LAST_24_HOURS || 过去 24 小时
|
||||
HTML - TITLE_LAST_30_DAYS || 过去 30 天
|
||||
HTML - TITLE_LAST_7_DAYS || 过去 7 天
|
||||
HTML - TITLE_LAST_CONNECTED || 最后连接
|
||||
HTML - TITLE_LENGTH || 长度
|
||||
HTML - TITLE_MOST_PLAYED_WORLD || 最多玩家的世界
|
||||
HTML - TITLE_NETWORK || 服务器网络
|
||||
HTML - TITLE_NETWORK_AS_NUMBERS || Network as Numbers
|
||||
HTML - TITLE_NOW || 现在
|
||||
HTML - TITLE_ONLINE_ACTIVITY || 在线活动
|
||||
HTML - TITLE_ONLINE_ACTIVITY_AS_NUMBERS || Online Activity as Numbers
|
||||
HTML - TITLE_ONLINE_ACTIVITY_OVERVIEW || Online Activity Overview
|
||||
HTML - TITLE_PERFORMANCE_AS_NUMBERS || Performance as Numbers
|
||||
HTML - TITLE_PING || 延迟
|
||||
HTML - TITLE_PLAYER || 玩家
|
||||
HTML - TITLE_PLAYER_OVERVIEW || 玩家预览
|
||||
HTML - TITLE_PLAYERBASE_DEVELOPMENT || 玩家发展
|
||||
HTML - TITLE_PVP_DEATHS || 最近的PVP死亡
|
||||
HTML - TITLE_PVP_KILLS || 最近的PVP击杀
|
||||
HTML - TITLE_PVP_PVE_NUMBERS || PvP & PvE as Numbers
|
||||
HTML - TITLE_RECENT_KILLS || 最近击杀
|
||||
HTML - TITLE_RECENT_SESSIONS || 最近时域
|
||||
HTML - TITLE_SEEN_NICKNAMES || 可视昵称
|
||||
HTML - TITLE_SERVER || 服务器
|
||||
HTML - TITLE_SERVER_AS_NUMBERS || Server as Numbers
|
||||
HTML - TITLE_SERVER_OVERVIEW || 服务器预览
|
||||
HTML - TITLE_SERVER_PLAYTIME || 服务器游戏时间
|
||||
HTML - TITLE_SERVER_PLAYTIME_30 || 服务器30天的游戏时间
|
||||
HTML - TITLE_SESSION_START || 开始的时域
|
||||
HTML - TITLE_THEME_SELECT || 选择主题
|
||||
HTML - TITLE_TITLE_PLAYER_PUNCHCARD || Punchcard
|
||||
HTML - TITLE_TPS || TPS
|
||||
HTML - TITLE_TREND || 趋势
|
||||
HTML - TITLE_TRENDS || 30天趋势
|
||||
HTML - TITLE_VERSION || 版本
|
||||
HTML - TITLE_WEEK_COMPARISON || 每周对比
|
||||
HTML - TITLE_WORLD || 加载世界
|
||||
HTML - TITLE_WORLD_PLAYTIME || 世界游玩时间
|
||||
HTML - TITLE_WORST_PING || 最高延迟
|
||||
HTML - TOTAL_ACTIVE_TEXT || 总活跃玩家
|
||||
HTML - TOTAL_AFK || 总挂机玩家
|
||||
HTML - TOTAL_PLAYERS || 总玩家
|
||||
HTML - UNIQUE_CALENDAR || 普通玩家:
|
||||
HTML - UNIT_NO_DATA || 没有数据
|
||||
HTML - UNIT_THE_PLAYERS || 玩家
|
||||
HTML - USER_AND_PASS_NOT_SPECIFIED || 未指定用户名与密码
|
||||
HTML - USER_DOES_NOT_EXIST || 用户不存在
|
||||
HTML - USER_PASS_MISMATCH || 用户名与密码不匹配
|
||||
HTML - WITH || <th> 与
|
||||
HTML ERRORS - ACCESS_DENIED_403 || 拒绝访问
|
||||
HTML ERRORS - AUTH_FAIL_TIPS_401 || - 确保您已使用 <b>/plan register</b> 注册用户<br>- 检查用户名与密码是否正确<br>- 用户名与密码区分大小写<br><br>若您忘记了密码,请让工作人员删除您的旧密码并重新注册。
|
||||
HTML ERRORS - AUTHENTICATION_FAILED_401 || 认证失败。
|
||||
HTML ERRORS - FORBIDDEN_403 || 禁止访问
|
||||
HTML ERRORS - NO_SERVERS_404 || 无可执行此请求的在线服务器。
|
||||
HTML ERRORS - NOT_FOUND_404 || 未找到
|
||||
HTML ERRORS - NOT_PLAYED_404 || 玩家从未在此服务器上游玩过。
|
||||
HTML ERRORS - PAGE_NOT_FOUND_404 || 页面不存在。
|
||||
HTML ERRORS - UNAUTHORIZED_401 || 未认证
|
||||
HTML ERRORS - UNKNOWN_PAGE_404 || 请确保您正通过命令所给出的链接访问,示例:</p><p>/player/玩家名<br>/server/服务器名</p>
|
||||
HTML ERRORS - UUID_404 || 未在数据库中找到玩家的 UUID。
|
||||
In Depth Help - /plan ? || §2/plan - 主命令\§f 用于访问所有子命令及帮助\§7 /plan - 列出子命令\§7 /plan <子命令> ? - 详细帮助
|
||||
In Depth Help - /plan analyze ? || §2分析命令\§f 用于刷新分析缓存及访问结果页面\§7 /plan status 可用于在网页在线时检查分析状态fen.\§7 别名:analyze, analyse, analysis, a
|
||||
In Depth Help - /plan inspect ? || §2检视命令\§f 用于获取用户检视页链接。\§7 个人检视页可通过输入 /plan inspect 访问\§7 别名:/plan <名称>
|
||||
In Depth Help - /plan manage ? || §2管理命令\§f 用于管理插件数据库。\§7 别名:/plan m\§7 /plan m - Auflistung der Unterbefehle\§7 /plan m <子命令> ? - 详细帮助
|
||||
In Depth Help - /plan manage backup ? || > §2备份命令\ 用于建立新 SQLite 数据库(.db 文件)并包含当前在计划插件文件夹中所有的活跃数据库内容。
|
||||
In Depth Help - /plan manage clear ? || §2管理清除命令\§f 用于清除活跃数据库中的所有数据。\§7 插件在清理完毕后应被重载。\§7 别名:/plan pl
|
||||
In Depth Help - /plan manage disable ? || > §2关闭子命令\ Can disable parts of the plugin until next reload.\ Accepted arguments:\ §2kickcount §fDisables kick counts in case /kickall is used on shutdown macro.
|
||||
In Depth Help - /plan manage export ? || > §2导出子命令\ Trigger export to result folders.\ Accepted Arguments:\ §2list §fList possible arguments.\ §2players §fExport /players, /player pages + /player/raw json depending on config values.\ §2server_json §fExport /server/raw JSON if enabled in config.
|
||||
In Depth Help - /plan manage import ? || §2管理导入命令\§f 用于从其它来源导入数据\§7 在导入过程中将禁用数据分析。
|
||||
In Depth Help - /plan manage move ? || > §2移动指令\ 将数据从 SQLite 移动至 MySQL,反之亦然。\ 目标数据库将在转移前被清除。
|
||||
In Depth Help - /plan manage raw ? || > §2Raw数据子命令\ Displays link to raw JSON data page.\ Not available if Plan webserver is not enabled.
|
||||
In Depth Help - /plan manage remove ? || §2管理移除命令\§f 用于从活跃数据库中移除用户数据。
|
||||
In Depth Help - /plan manage restore ? || > §2恢复命令\ 从先前备份的 SQLite 数据库中恢复数据(.db 文件)\ 您也可以从其他服务器中恢复 database.db 到 MySQL。\ 目标数据库将在传输前被清除。
|
||||
In Depth Help - /plan manage uninstalled ? || > §2卸载服务器的子命令\ 在数据库中将一个服务器视为未安装。\ Can not mark the server the command is being used on as uninstalled.\ 将会影响连接系统。
|
||||
In Depth Help - /plan network ? || > §2网络命令\ 显示到网络页的链接。\ 若不在群组网络上,此页面将显示为服务器页面。
|
||||
In Depth Help - /plan players ? || > §2玩家命令\ 显示到玩家页的链接。
|
||||
In Depth Help - /plan qinspect ? || §2快速检视命令\§f 用于获取游戏内关于检视的信息。\§7 相比检视网页有着更少的信息。\§7 别名:/plan qi
|
||||
In Depth Help - /plan reload ? || > §2重载命令\ 使用 onDisable 与 onEnable 重新载入插件。\ §b不支持运行时热切换插件
|
||||
In Depth Help - /plan search ? || §2搜索命令\§f 用于获取匹配特定参数的玩家名列表。\§7 示例:/plan search 123 - 搜索名称中包含 123 的所有玩家。
|
||||
In Depth Help - /plan servers ? || > §2服务器命令\ 显示数据库中的计划服务器列表。\ 可用于调试在网络上数据库注册的问题。
|
||||
In Depth Help - /plan web ? || < §2网页用户管理命令。\ §2/plan web §f列出子命令\ §2/plan web <子命令> ? §f详细帮助
|
||||
In Depth Help - /plan web register ? || > §2注册命令\ 注册一位新的网页用户。\ 为其他用户注册需要 plan.webmanage 权限。\ 密码通过使用随机密码盐的 PBKDF2 哈希方法加密(重复 64000 次 SHA1)。
|
||||
In Depth Help - /planbungee disable ? || > §2禁用命令\ 在 PlanBungee 上运行 onDisable。\ 插件之后需要运行 /planbungee reload 以重新启用。\ §b不支持运行时热切换插件
|
||||
Manage - Confirm Overwrite || 数据库 ${0} 中的数据将被覆盖!
|
||||
Manage - Confirm Removal || 数据库 ${0} 中的数据将被移除!
|
||||
Manage - Fail || > §c[数据统计] 处理数据时发生错误! ${0}
|
||||
Manage - Fail File not found || > §c[数据统计] 备份文件不存在! ${0}
|
||||
Manage - Fail Incorrect Database || > §c'${0}' 不是一个支持的数据库。
|
||||
Manage - Fail No Exporter || §e导出器 '${0}' 不存在
|
||||
Manage - Fail No Importer || §e导入器 '${0}' 不存在
|
||||
Manage - Fail No Server || 找不到这个服务器.
|
||||
Manage - Fail Same Database || > §c[数据统计] 无法移动至相同的数据库!
|
||||
Manage - Fail Same server || 无法将服务器标记为未安装 (你已在该服务器)
|
||||
Manage - Fail, Confirmation || > §c[数据统计] 请添加 -a 以确认执行!${0}
|
||||
Manage - List Importers || 导入器:
|
||||
Manage - Remind HotSwap || §e[数据统计] 请切换至新数据库并重载插件(/plan m hotswap ${0})
|
||||
Manage - Start || »§7 正在处理数据...
|
||||
Manage - Success || §f» §2 成功!
|
||||
Negative || 否
|
||||
Positive || 是
|
||||
Today || '今天'
|
||||
Unknown || 未知
|
||||
Version - DEV || 这是开发版本。
|
||||
Version - Latest || 您正使用最新版本。
|
||||
Version - New || 有新版本(${0})可用 ${1}
|
||||
Version - New (old) || 新版本在 ${0} 可用
|
||||
Version FAIL - Read info (old) || 无法检查最新版本号
|
||||
Version FAIL - Read versions.txt || 无法从 Github/versions.txt 加载版本信息
|
||||
Web User Listing || §2${0} §7:§f${1}
|
||||
WebServer - Notify HTTP || 网页服务器:无证书 -> 正使用 HTTP 服务器提供可视化效果。
|
||||
WebServer - Notify HTTP User Auth || 网页服务器:已禁用用户认证!(HTTP 方式不安全)
|
||||
WebServer - Notify no Cert file || 网页服务器:未找到证书密钥存储文件:${0}
|
||||
WebServer FAIL - Port Bind || 未成功初始化网页服务器。端口(${0})是否被占用?
|
||||
WebServer FAIL - SSL Context || 网页服务器:SSL 环境初始化失败。
|
||||
WebServer FAIL - Store Load || 网页服务器:SSL 证书载入失败。
|
||||
Yesterday || '昨天'
|
||||
Cmd - Click Me || 请点击此处
|
||||
Cmd - Link || §7 •§2 链接:§f
|
||||
Cmd Disable - Disabled || §a现已禁用计划系统。您仍可使用 /planbungee reload 重启插件。
|
||||
Cmd FAIL - Database not open || §c数据库状态为 ${0} - 请稍后再试.
|
||||
Cmd FAIL - Invalid Username || §c[数据统计] 此玩家不存在。
|
||||
Cmd FAIL - No Feature || §e请设置要禁用的功能!(当前支持 ${0})
|
||||
Cmd FAIL - No Permission || §c[数据统计] 您没有所需权限。
|
||||
Cmd FAIL - Require only one Argument || §c[数据统计] 命令需要一个参数。
|
||||
Cmd FAIL - Requires Arguments || §c[数据统计] 命令缺少参数。${0}
|
||||
Cmd FAIL - Unknown Username || §c[数据统计] 未在数据库中找到此玩家。
|
||||
Cmd FAIL - WebUser does not exists || §c用户不存在!
|
||||
Cmd FAIL - WebUser exists || §c用户已存在!
|
||||
Cmd Header - Analysis || §f»§2 玩家统计 - 统计结果
|
||||
Cmd Header - Info || §f»§2 玩家统计 - 信息
|
||||
Cmd Header - Inspect || §f»§2 玩家统计 - 检视结果:
|
||||
Cmd Header - Network || > §2网络页面
|
||||
Cmd Header - Players || > §2玩家
|
||||
Cmd Header - Search || §f»§2 玩家统计 - 搜索结果:
|
||||
Cmd Header - Servers || > §2服务器
|
||||
Cmd Header - Web Users || > §2${0} 个网页用户
|
||||
Cmd Info - Bungee Connection || §2已连接至Bungee:§f${0}
|
||||
Cmd Info - Database || §2可用数据库:§f${0}
|
||||
Cmd Info - Reload Complete || §a成功重载插件
|
||||
Cmd Info - Reload Failed || §c重载插件时发生错误,建议重新启动服务器。
|
||||
Cmd Info - Update || §2更新可用:§f${0}
|
||||
Cmd Info - Version || §2版本:§f${0}
|
||||
Cmd Notify - No WebUser || 您可能还没有网页账户,请输入 /plan register <密码>
|
||||
Cmd Notify - WebUser register || 已注册新用户:'${0}' 权限级别:${1}
|
||||
Cmd Qinspect - Activity Index || §2活跃指数:§f${0} | ${1}
|
||||
Cmd Qinspect - Deaths || §2死亡数:§f${0}
|
||||
Cmd Qinspect - Geolocation || §2从 §f${0} 登录
|
||||
Cmd Qinspect - Last Seen || §2最后在线:§f${0}
|
||||
Cmd Qinspect - Longest Session || §2最长在线时间:§f${0}
|
||||
Cmd Qinspect - Mob Kills || §2怪物击杀数:§f${0}
|
||||
Cmd Qinspect - Player Kills || §2玩家击杀数:§f${0}
|
||||
Cmd Qinspect - Playtime || §2游玩时间:§f${0}
|
||||
Cmd Qinspect - Registered || §2注册时间:§f${0}
|
||||
Cmd Qinspect - Times Kicked || §2踢出次数:§f${0}
|
||||
Cmd SUCCESS - Feature disabled || §a已在下次插件重载前暂时禁用 '${0}'。
|
||||
Cmd SUCCESS - WebUser register || §a已成功添加新用户(${0})!您可以在以下链接中查看Web面板。
|
||||
Cmd WARN - Database not open || §e数据库状态为 ${0} - 可能需要花费更多的时间..
|
||||
Cmd Web - Permission Levels || >\§70:访问所有页面\§71:访问 '/players' 及所有玩家页\§72:访问用户名与网页用户名一致的玩家页\§73+:无权限
|
||||
Command Help - /plan analyze || 查看服务器分析
|
||||
Command Help - /plan dev || 开发模式命令
|
||||
Command Help - /plan help || 查看命令列表。
|
||||
Command Help - /plan info || 查看计划版本
|
||||
Command Help - /plan inspect || 检视玩家数据
|
||||
Command Help - /plan manage || 数据库管理命令
|
||||
Command Help - /plan manage backup || 备份数据库至 .db 文件
|
||||
Command Help - /plan manage clear || 从数据库中清空所有数据
|
||||
Command Help - /plan manage disable || 暂时禁用功能
|
||||
Command Help - /plan manage export || 手动导出
|
||||
Command Help - /plan manage hotswap || 热插拔数据库并重启插件
|
||||
Command Help - /plan manage import || 从插件中导入数据
|
||||
Command Help - /plan manage move || 在数据库间移动数据
|
||||
Command Help - /plan manage raw || 查看玩家数据的raw JSON
|
||||
Command Help - /plan manage remove || 从活跃数据库中移除玩家数据
|
||||
Command Help - /plan manage restore || 恢复数据库
|
||||
Command Help - /plan manage uninstalled || 在数据库中将一个服务器标记为未安装.
|
||||
Command Help - /plan network || 查看网络页面
|
||||
Command Help - /plan players || 列出所有已缓存玩家名单
|
||||
Command Help - /plan qinspect || 在游戏内检视玩家数据
|
||||
Command Help - /plan register || 注册网页用户
|
||||
Command Help - /plan reload || 重新启动插件(重载配置)
|
||||
Command Help - /plan search || 搜索玩家
|
||||
Command Help - /plan servers || 列出数据库中的服务器
|
||||
Command Help - /plan web check || 检查网页用户的权限级别。
|
||||
Command Help - /plan web delete || 删除网页用户
|
||||
Command Help - /plan web level || 权限级别信息
|
||||
Command Help - /plan web list || 列出网页用户
|
||||
Command Help - /plan webuser || 管理网页用户
|
||||
Command Help - /planbungee disable || 暂时禁用插件
|
||||
Database - Apply Patch || 正在应用更新:${0}···
|
||||
Database - Patches Applied || 已成功应用所有数据库补丁。
|
||||
Database - Patches Applied Already || 已应用所有数据库补丁。
|
||||
Database MySQL - Launch Options Error || 启动参数出错,正使用默认参数(${0})
|
||||
Database Notify - Clean || 移除了 ${0} 位用户的数据。
|
||||
Database Notify - SQLite No WAL || 此服务器版本不支持 SQLite WAL 模式,正使用默认模式。这可能会影响性能。
|
||||
Disable || 已禁用插件。
|
||||
Disable - Processing || 正在处理未处理的关键任务。(${0})
|
||||
Disable - Processing Complete || 处理完毕。
|
||||
Disable - Unsaved Session Save || 保存未完成的时域中..
|
||||
Disable - WebServer || 正在关闭网页服务器···
|
||||
Enable || 已启用插件。
|
||||
Enable - Database || ${0}-已建立数据库连接。
|
||||
Enable - Notify Empty IP || server.properties 中的 IP 为空且未使用替代 IP。这将会导致地址出错!
|
||||
Enable - Notify Geolocations disabled || 已关闭地理位置收集。(Data.Geolocations: false)
|
||||
Enable - Notify Geolocations Internet Required || 插件需要在首次运行时访问互联网以下载 GeoLite2 地理位置数据库。
|
||||
Enable - Notify Webserver disabled || 未初始化网页服务器。(WebServer.DisableWebServer: true)
|
||||
Enable - WebServer || 正在初始化网页服务器···
|
||||
Enable FAIL - Database || ${0}-连接数据库失败:${1}
|
||||
Enable FAIL - Database Patch || 数据库补丁失败,插件必须被禁用。请汇报此问题
|
||||
Enable FAIL - GeoDB Write || 保存已下载的 GeoLite2 地理位置数据库时发生问题
|
||||
Enable FAIL - WebServer (Proxy) || 网页服务器未初始化
|
||||
Enable FAIL - Wrong Database Type || ${0} 此数据类型不存在。
|
||||
HTML - COMPARING_15_DAYS || 比较15天前
|
||||
HTML - COMPARING_60_DAYS || 比较30天前
|
||||
HTML - COMPARING_7_DAYS || 比较7天前
|
||||
HTML - DATABASE_NOT_OPEN || 数据库未开放, 请输入 /plan info 查看数据库状态
|
||||
HTML - ERROR || 认证时发生错误
|
||||
HTML - INDEX_ACTIVE || 活跃
|
||||
HTML - INDEX_INACTIVE || 不活跃
|
||||
HTML - INDEX_IRREGULAR || 偶尔上线
|
||||
HTML - INDEX_REGULAR || 经常上线
|
||||
HTML - INDEX_VERY_ACTIVE || 非常活跃
|
||||
HTML - LABEL_1ST_WEAPON || 最致命的PVP武器
|
||||
HTML - LABEL_2ND_WEAPON || 更致命的武器
|
||||
HTML - LABEL_3RD_WEAPON || 致命的PvP武器
|
||||
HTML - LABEL_ACTIVITY_INDEX || 活跃指数
|
||||
HTML - LABEL_AFK || AFK
|
||||
HTML - LABEL_AFK_TIME || 挂机时间
|
||||
HTML - LABEL_AVG || 平均
|
||||
HTML - LABEL_AVG_KDR || 平均击杀比
|
||||
HTML - LABEL_AVG_MOB_KDR || 平均怪物击杀比
|
||||
HTML - LABEL_AVG_PLAYTIME || 平均游戏时间
|
||||
HTML - LABEL_AVG_SESSION_LENGTH || 平均时域长度
|
||||
HTML - LABEL_AVG_TPS || 平均TPS
|
||||
HTML - LABEL_BANNED || 已封禁
|
||||
HTML - LABEL_BEST_PEAK || 所有时间峰值
|
||||
HTML - LABEL_DEATHS || 死亡数
|
||||
HTML - LABEL_DOWNTIME || 停机时间
|
||||
HTML - LABEL_DURING_LOW_TPS || TPS Spikes:
|
||||
HTML - LABEL_ENTITIES || 实体数
|
||||
HTML - LABEL_FAVORITE_SERVER || 喜爱的服务器
|
||||
HTML - LABEL_FIRST_SESSION_LENGTH || 第一个时域的长度
|
||||
HTML - LABEL_FREE_DISK_SPACE || 剩余磁盘空间
|
||||
HTML - LABEL_INACTIVE || 未激活
|
||||
HTML - LABEL_LAST_PEAK || 上次峰值
|
||||
HTML - LABEL_LAST_SEEN || 最后在线
|
||||
HTML - LABEL_LOADED_CHUNKS || 已加载的区块
|
||||
HTML - LABEL_LOADED_ENTITIES || 已加载的实体
|
||||
HTML - LABEL_LONE_JOINS || Lone joins
|
||||
HTML - LABEL_LONE_NEW_JOINS || Lone newbie joins
|
||||
HTML - LABEL_LONGEST_SESSION || 最长时域
|
||||
HTML - LABEL_LOW_TPS || 最低TPS Spikes
|
||||
HTML - LABEL_MOB_DEATHS || 被怪物击杀数
|
||||
HTML - LABEL_MOB_KDR || 怪物击杀比
|
||||
HTML - LABEL_MOB_KILLS || 怪物击杀数
|
||||
HTML - LABEL_MOST_ACTIVE_GAMEMODE || 最常用的游戏模式
|
||||
HTML - LABEL_NEW || 新
|
||||
HTML - LABEL_NEW_PLAYERS || 新玩家
|
||||
HTML - LABEL_NICKNAME || 昵称
|
||||
HTML - LABEL_ONLINE_FIRST_JOIN || 第一次加入服务器的在线玩家
|
||||
HTML - LABEL_OPERATOR || 管理员
|
||||
HTML - LABEL_PER_PLAYER || / 玩家
|
||||
HTML - LABEL_PER_REGULAR_PLAYER || / 普通玩家
|
||||
HTML - LABEL_PLAYER_DEATHS || 被玩家击杀数
|
||||
HTML - LABEL_PLAYER_KILLS || 玩家击杀数
|
||||
HTML - LABEL_PLAYERS_ONLINE || 在线玩家
|
||||
HTML - LABEL_PLAYTIME || 游玩时间
|
||||
HTML - LABEL_REGISTERED || 已注册
|
||||
HTML - LABEL_REGISTERED_PLAYERS || 已注册的玩家
|
||||
HTML - LABEL_REGULAR || Regular
|
||||
HTML - LABEL_REGULAR_PLAYERS || 普通玩家
|
||||
HTML - LABEL_RETENTION || 新玩家留坑率
|
||||
HTML - LABEL_SERVER_DOWNTIME || 关服时间
|
||||
HTML - LABEL_SERVER_OCCUPIED || 开服时间
|
||||
HTML - LABEL_SESSION_ENDED || 时域之末
|
||||
HTML - LABEL_SESSION_LENGTH || 时域长度
|
||||
HTML - LABEL_SESSION_MEDIAN || 平均时域
|
||||
HTML - LABEL_TIMES_KICKED || 被踢次数
|
||||
HTML - LABEL_TOTAL_PLAYERS || 总玩家数
|
||||
HTML - LABEL_TOTAL_PLAYTIME || 总游戏时间
|
||||
HTML - LABEL_UNIQUE_PLAYERS || 普通玩家
|
||||
HTML - LINK_BACK_NETWORK || 网络页面
|
||||
HTML - LINK_BACK_SERVER || 服务器页面
|
||||
HTML - LINK_CHANGELOG || 查看更新日志
|
||||
HTML - LINK_DISCORD || Discord支持
|
||||
HTML - LINK_DOWNLOAD || 下载
|
||||
HTML - LINK_ISSUES || 提问
|
||||
HTML - LINK_NIGHT_MODE || 夜晚模式
|
||||
HTML - LINK_QUICK_VIEW || 快速检索
|
||||
HTML - LINK_SERVER_ANALYSIS || 服务器分析
|
||||
HTML - LINK_WIKI || Plan Wiki,教程 & 文档
|
||||
HTML - LOCAL_MACHINE || 本机
|
||||
HTML - NAV_PLUGINS || 插件
|
||||
HTML - NEW_CALENDAR || 新:
|
||||
HTML - NO_KILLS || 无击杀数
|
||||
HTML - OFFLINE || 离线
|
||||
HTML - ONLINE || 在线
|
||||
HTML - PER_DAY || / 天
|
||||
HTML - PLAYERS_TEXT || 玩家
|
||||
HTML - SIDE_GEOLOCATIONS || 地理位置
|
||||
HTML - SIDE_INFORMATION || 信息
|
||||
HTML - SIDE_NETWORK_OVERVIEW || 网络预览
|
||||
HTML - SIDE_OVERVIEW || 预览
|
||||
HTML - SIDE_PERFORMANCE || 性能
|
||||
HTML - SIDE_PLAYER_LIST || 玩家列表
|
||||
HTML - SIDE_PLAYERBASE || Playerbase
|
||||
HTML - SIDE_PLAYERBASE_OVERVIEW || Playerbase预览
|
||||
HTML - SIDE_PLUGINS || 插件
|
||||
HTML - SIDE_PVP_PVE || PvP & PvE
|
||||
HTML - SIDE_SERVERS || 服务器
|
||||
HTML - SIDE_SERVERS_TITLE || 服务器
|
||||
HTML - SIDE_SESSIONS || 时域
|
||||
HTML - SIDE_TO_MAIN_PAGE || 到主页面
|
||||
HTML - TEXT_CLICK_TO_EXPAND || 点击拓展
|
||||
HTML - TEXT_CONTRIBUTORS_CODE || 码农
|
||||
HTML - TEXT_CONTRIBUTORS_LOCALE || 译者
|
||||
HTML - TEXT_CONTRIBUTORS_MONEY || 特别感谢那些在经济上支持该插件发展的人.
|
||||
HTML - TEXT_CONTRIBUTORS_THANKS || 另外以下 <span class="col-plan">awesome people</span> 也为该插件作出了贡献:
|
||||
HTML - TEXT_DEV_VERSION || 该版本为开发版本.
|
||||
HTML - TEXT_DEVELOPED_BY || 的开发者为
|
||||
HTML - TEXT_LICENSED_UNDER || is developed and licensed under
|
||||
HTML - TEXT_METRICS || bStats Metrics
|
||||
HTML - TEXT_NO_EXTENSION_DATA || 没有拓展数据
|
||||
HTML - TEXT_NO_LOW_TPS || No low tps spikes
|
||||
HTML - TEXT_PLUGIN_INFORMATION || 插件信息
|
||||
HTML - TEXT_VERSION || 有新版本的插件可用.
|
||||
HTML - TITLE_30_DAYS || 30 天
|
||||
HTML - TITLE_30_DAYS_AGO || 30 天前
|
||||
HTML - TITLE_ALL || 全部
|
||||
HTML - TITLE_ALL_TIME || 所有时间
|
||||
HTML - TITLE_AS_NUMBERS || 作为数字
|
||||
HTML - TITLE_AVG_PING || 平均延迟
|
||||
HTML - TITLE_BEST_PING || 最低延迟
|
||||
HTML - TITLE_CALENDAR || 日历
|
||||
HTML - TITLE_CONNECTION_INFO || 连接信息
|
||||
HTML - TITLE_COUNTRY || 国家
|
||||
HTML - TITLE_CPU_RAM || CPU & RAM
|
||||
HTML - TITLE_CURRENT_PLAYERBASE || 当前玩家
|
||||
HTML - TITLE_DISK || 磁盘空间
|
||||
HTML - TITLE_GRAPH_DAY_BY_DAY || Day by Day
|
||||
HTML - TITLE_GRAPH_NETWORK_ONLINE_ACTIVITY || Network Online Activity
|
||||
HTML - TITLE_GRAPH_PUNCHCARD || 打卡签到30天
|
||||
HTML - TITLE_INSIGHTS || Insights30天
|
||||
HTML - TITLE_IS_AVAILABLE || 可用
|
||||
HTML - TITLE_LAST_24_HOURS || 过去 24 小时
|
||||
HTML - TITLE_LAST_30_DAYS || 过去 30 天
|
||||
HTML - TITLE_LAST_7_DAYS || 过去 7 天
|
||||
HTML - TITLE_LAST_CONNECTED || 最后连接
|
||||
HTML - TITLE_LENGTH || 长度
|
||||
HTML - TITLE_MOST_PLAYED_WORLD || 最多玩家的世界
|
||||
HTML - TITLE_NETWORK || 服务器网络
|
||||
HTML - TITLE_NETWORK_AS_NUMBERS || Network as Numbers
|
||||
HTML - TITLE_NOW || 现在
|
||||
HTML - TITLE_ONLINE_ACTIVITY || 在线活动
|
||||
HTML - TITLE_ONLINE_ACTIVITY_AS_NUMBERS || Online Activity as Numbers
|
||||
HTML - TITLE_ONLINE_ACTIVITY_OVERVIEW || Online Activity Overview
|
||||
HTML - TITLE_PERFORMANCE_AS_NUMBERS || Performance as Numbers
|
||||
HTML - TITLE_PING || 延迟
|
||||
HTML - TITLE_PLAYER || 玩家
|
||||
HTML - TITLE_PLAYER_OVERVIEW || 玩家预览
|
||||
HTML - TITLE_PLAYERBASE_DEVELOPMENT || 玩家发展
|
||||
HTML - TITLE_PVP_DEATHS || 最近的PVP死亡
|
||||
HTML - TITLE_PVP_KILLS || 最近的PVP击杀
|
||||
HTML - TITLE_PVP_PVE_NUMBERS || PvP & PvE as Numbers
|
||||
HTML - TITLE_RECENT_KILLS || 最近击杀
|
||||
HTML - TITLE_RECENT_SESSIONS || 最近时域
|
||||
HTML - TITLE_SEEN_NICKNAMES || 可视昵称
|
||||
HTML - TITLE_SERVER || 服务器
|
||||
HTML - TITLE_SERVER_AS_NUMBERS || Server as Numbers
|
||||
HTML - TITLE_SERVER_OVERVIEW || 服务器预览
|
||||
HTML - TITLE_SERVER_PLAYTIME || 服务器游戏时间
|
||||
HTML - TITLE_SERVER_PLAYTIME_30 || 服务器30天的游戏时间
|
||||
HTML - TITLE_SESSION_START || 开始的时域
|
||||
HTML - TITLE_THEME_SELECT || 选择主题
|
||||
HTML - TITLE_TITLE_PLAYER_PUNCHCARD || Punchcard
|
||||
HTML - TITLE_TPS || TPS
|
||||
HTML - TITLE_TREND || 趋势
|
||||
HTML - TITLE_TRENDS || 30天趋势
|
||||
HTML - TITLE_VERSION || 版本
|
||||
HTML - TITLE_WEEK_COMPARISON || 每周对比
|
||||
HTML - TITLE_WORLD || 加载世界
|
||||
HTML - TITLE_WORLD_PLAYTIME || 世界游玩时间
|
||||
HTML - TITLE_WORST_PING || 最高延迟
|
||||
HTML - TOTAL_ACTIVE_TEXT || 总活跃玩家
|
||||
HTML - TOTAL_AFK || 总挂机玩家
|
||||
HTML - TOTAL_PLAYERS || 总玩家
|
||||
HTML - UNIQUE_CALENDAR || 普通玩家:
|
||||
HTML - UNIT_NO_DATA || 没有数据
|
||||
HTML - UNIT_THE_PLAYERS || 玩家
|
||||
HTML - USER_AND_PASS_NOT_SPECIFIED || 未指定用户名与密码
|
||||
HTML - USER_DOES_NOT_EXIST || 用户不存在
|
||||
HTML - USER_PASS_MISMATCH || 用户名与密码不匹配
|
||||
HTML - WITH || <th> 与
|
||||
HTML ERRORS - ACCESS_DENIED_403 || 拒绝访问
|
||||
HTML ERRORS - AUTH_FAIL_TIPS_401 || - 确保您已使用 <b>/plan register</b> 注册用户<br>- 检查用户名与密码是否正确<br>- 用户名与密码区分大小写<br><br>若您忘记了密码,请让工作人员删除您的旧密码并重新注册。
|
||||
HTML ERRORS - AUTHENTICATION_FAILED_401 || 认证失败。
|
||||
HTML ERRORS - FORBIDDEN_403 || 禁止访问
|
||||
HTML ERRORS - NO_SERVERS_404 || 无可执行此请求的在线服务器。
|
||||
HTML ERRORS - NOT_FOUND_404 || 未找到
|
||||
HTML ERRORS - NOT_PLAYED_404 || 玩家从未在此服务器上游玩过。
|
||||
HTML ERRORS - PAGE_NOT_FOUND_404 || 页面不存在。
|
||||
HTML ERRORS - UNAUTHORIZED_401 || 未认证
|
||||
HTML ERRORS - UNKNOWN_PAGE_404 || 请确保您正通过命令所给出的链接访问,示例:</p><p>/player/玩家名<br>/server/服务器名</p>
|
||||
HTML ERRORS - UUID_404 || 未在数据库中找到玩家的 UUID。
|
||||
In Depth Help - /plan ? || §2/plan - 主命令\§f 用于访问所有子命令及帮助\§7 /plan - 列出子命令\§7 /plan <子命令> ? - 详细帮助
|
||||
In Depth Help - /plan analyze ? || §2分析命令\§f 用于刷新分析缓存及访问结果页面\§7 /plan status 可用于在网页在线时检查分析状态fen.\§7 别名:analyze, analyse, analysis, a
|
||||
In Depth Help - /plan inspect ? || §2检视命令\§f 用于获取用户检视页链接。\§7 个人检视页可通过输入 /plan inspect 访问\§7 别名:/plan <名称>
|
||||
In Depth Help - /plan manage ? || §2管理命令\§f 用于管理插件数据库。\§7 别名:/plan m\§7 /plan m - Auflistung der Unterbefehle\§7 /plan m <子命令> ? - 详细帮助
|
||||
In Depth Help - /plan manage backup ? || > §2备份命令\ 用于建立新 SQLite 数据库(.db 文件)并包含当前在计划插件文件夹中所有的活跃数据库内容。
|
||||
In Depth Help - /plan manage clear ? || §2管理清除命令\§f 用于清除活跃数据库中的所有数据。\§7 插件在清理完毕后应被重载。\§7 别名:/plan pl
|
||||
In Depth Help - /plan manage disable ? || > §2关闭子命令\ Can disable parts of the plugin until next reload.\ Accepted arguments:\ §2kickcount §fDisables kick counts in case /kickall is used on shutdown macro.
|
||||
In Depth Help - /plan manage export ? || > §2导出子命令\ Trigger export to result folders.\ Accepted Arguments:\ §2list §fList possible arguments.\ §2players §fExport /players, /player pages + /player/raw json depending on config values.\ §2server_json §fExport /server/raw JSON if enabled in config.
|
||||
In Depth Help - /plan manage import ? || §2管理导入命令\§f 用于从其它来源导入数据\§7 在导入过程中将禁用数据分析。
|
||||
In Depth Help - /plan manage move ? || > §2移动指令\ 将数据从 SQLite 移动至 MySQL,反之亦然。\ 目标数据库将在转移前被清除。
|
||||
In Depth Help - /plan manage raw ? || > §2Raw数据子命令\ Displays link to raw JSON data page.\ Not available if Plan webserver is not enabled.
|
||||
In Depth Help - /plan manage remove ? || §2管理移除命令\§f 用于从活跃数据库中移除用户数据。
|
||||
In Depth Help - /plan manage restore ? || > §2恢复命令\ 从先前备份的 SQLite 数据库中恢复数据(.db 文件)\ 您也可以从其他服务器中恢复 database.db 到 MySQL。\ 目标数据库将在传输前被清除。
|
||||
In Depth Help - /plan manage uninstalled ? || > §2卸载服务器的子命令\ 在数据库中将一个服务器视为未安装。\ Can not mark the server the command is being used on as uninstalled.\ 将会影响连接系统。
|
||||
In Depth Help - /plan network ? || > §2网络命令\ 显示到网络页的链接。\ 若不在群组网络上,此页面将显示为服务器页面。
|
||||
In Depth Help - /plan players ? || > §2玩家命令\ 显示到玩家页的链接。
|
||||
In Depth Help - /plan qinspect ? || §2快速检视命令\§f 用于获取游戏内关于检视的信息。\§7 相比检视网页有着更少的信息。\§7 别名:/plan qi
|
||||
In Depth Help - /plan reload ? || > §2重载命令\ 使用 onDisable 与 onEnable 重新载入插件。\ §b不支持运行时热切换插件
|
||||
In Depth Help - /plan search ? || §2搜索命令\§f 用于获取匹配特定参数的玩家名列表。\§7 示例:/plan search 123 - 搜索名称中包含 123 的所有玩家。
|
||||
In Depth Help - /plan servers ? || > §2服务器命令\ 显示数据库中的计划服务器列表。\ 可用于调试在网络上数据库注册的问题。
|
||||
In Depth Help - /plan web ? || < §2网页用户管理命令。\ §2/plan web §f列出子命令\ §2/plan web <子命令> ? §f详细帮助
|
||||
In Depth Help - /plan web register ? || > §2注册命令\ 注册一位新的网页用户。\ 为其他用户注册需要 plan.webmanage 权限。\ 密码通过使用随机密码盐的 PBKDF2 哈希方法加密(重复 64000 次 SHA1)。
|
||||
In Depth Help - /planbungee disable ? || > §2禁用命令\ 在 PlanBungee 上运行 onDisable。\ 插件之后需要运行 /planbungee reload 以重新启用。\ §b不支持运行时热切换插件
|
||||
Manage - Confirm Overwrite || 数据库 ${0} 中的数据将被覆盖!
|
||||
Manage - Confirm Removal || 数据库 ${0} 中的数据将被移除!
|
||||
Manage - Fail || > §c[数据统计] 处理数据时发生错误! ${0}
|
||||
Manage - Fail File not found || > §c[数据统计] 备份文件不存在! ${0}
|
||||
Manage - Fail Incorrect Database || > §c'${0}' 不是一个支持的数据库。
|
||||
Manage - Fail No Exporter || §e导出器 '${0}' 不存在
|
||||
Manage - Fail No Importer || §e导入器 '${0}' 不存在
|
||||
Manage - Fail No Server || 找不到这个服务器.
|
||||
Manage - Fail Same Database || > §c[数据统计] 无法移动至相同的数据库!
|
||||
Manage - Fail Same server || 无法将服务器标记为未安装 (你已在该服务器)
|
||||
Manage - Fail, Confirmation || > §c[数据统计] 请添加 -a 以确认执行!${0}
|
||||
Manage - List Importers || 导入器:
|
||||
Manage - Remind HotSwap || §e[数据统计] 请切换至新数据库并重载插件(/plan m hotswap ${0})
|
||||
Manage - Start || »§7 正在处理数据...
|
||||
Manage - Success || §f» §2 成功!
|
||||
Negative || 否
|
||||
Positive || 是
|
||||
Today || '今天'
|
||||
Unknown || 未知
|
||||
Version - DEV || 这是开发版本。
|
||||
Version - Latest || 您正使用最新版本。
|
||||
Version - New || 有新版本(${0})可用 ${1}
|
||||
Version - New (old) || 新版本在 ${0} 可用
|
||||
Version FAIL - Read info (old) || 无法检查最新版本号
|
||||
Version FAIL - Read versions.txt || 无法从 Github/versions.txt 加载版本信息
|
||||
Web User Listing || §2${0} §7:§f${1}
|
||||
WebServer - Notify HTTP || 网页服务器:无证书 -> 正使用 HTTP 服务器提供可视化效果。
|
||||
WebServer - Notify HTTP User Auth || 网页服务器:已禁用用户认证!(HTTP 方式不安全)
|
||||
WebServer - Notify no Cert file || 网页服务器:未找到证书密钥存储文件:${0}
|
||||
WebServer FAIL - Port Bind || 未成功初始化网页服务器。端口(${0})是否被占用?
|
||||
WebServer FAIL - SSL Context || 网页服务器:SSL 环境初始化失败。
|
||||
WebServer FAIL - Store Load || 网页服务器:SSL 证书载入失败。
|
||||
Yesterday || '昨天'
|
||||
HTML - LABEL_NAME || 名称
|
@ -341,3 +341,4 @@ WebServer FAIL - Port Bind || WebServer wurde nicht erfolgr
|
||||
WebServer FAIL - SSL Context || WebServer: SSL Context Initialisierung fehlgeschlagen.
|
||||
WebServer FAIL - Store Load || WebServer: SSL Zertifikat konnte nicht geladen werden.
|
||||
Yesterday || 'Gestern'
|
||||
HTML - LABEL_NAME || Name
|
@ -341,3 +341,4 @@ WebServer FAIL - Port Bind || WebServer was not initialized
|
||||
WebServer FAIL - SSL Context || WebServer: SSL Context Initialization Failed.
|
||||
WebServer FAIL - Store Load || WebServer: SSL Certificate loading Failed.
|
||||
Yesterday || 'Yesterday'
|
||||
HTML - LABEL_NAME || Name
|
@ -341,3 +341,4 @@ WebServer FAIL - Port Bind || Web Palvelin ei käynnistynyt
|
||||
WebServer FAIL - SSL Context || Web Palvelin: SSL Kontekstin käynnistys ei onnistunut.
|
||||
WebServer FAIL - Store Load || Web Palvelin: SSL Sertifikaatin lataus ei onnistunut.
|
||||
Yesterday || 'Eilen'
|
||||
HTML - LABEL_NAME || Nimi
|
@ -341,3 +341,4 @@ WebServer FAIL - Port Bind || Webサーバーの初期化
|
||||
WebServer FAIL - SSL Context || Webサーバー: SSLコンテキストの初期化に失敗しました。
|
||||
WebServer FAIL - Store Load || Webサーバー: SSL証明書のロードに失敗しました
|
||||
Yesterday || '昨日'
|
||||
HTML - LABEL_NAME || 名前
|
@ -341,3 +341,4 @@ WebServer FAIL - Port Bind || O servidor web não foi inici
|
||||
WebServer FAIL - SSL Context || Servidor Web: Falha ao inicializar certificado SSL.
|
||||
WebServer FAIL - Store Load || Servidor Web: Falha ao carregar certificado SSL.
|
||||
Yesterday || 'Ontem'
|
||||
HTML - LABEL_NAME || Nome
|
@ -57,7 +57,7 @@ function diskChart(id, series) {
|
||||
yAxis: {
|
||||
labels: {
|
||||
formatter: function () {
|
||||
return this.value + ' Mb';
|
||||
return this.value + ' MB';
|
||||
}
|
||||
},
|
||||
softMax: 2,
|
||||
@ -317,7 +317,7 @@ function resourceChart(id, cpuSeries, ramSeries, playersOnlineSeries) {
|
||||
}, {
|
||||
labels: {
|
||||
formatter: function () {
|
||||
return this.value + ' Mb';
|
||||
return this.value + ' MB';
|
||||
}
|
||||
}
|
||||
}],
|
||||
|
@ -9,7 +9,7 @@ function loadPingTable(json, error) {
|
||||
var countries = json;
|
||||
|
||||
if (!countries.length) {
|
||||
pingTable.append('<tr><td>No Ping Data</td><td>-</td><td>-</td><td>-</td></tr>');
|
||||
pingTable.append('<tr><td>No Data</td><td>-</td><td>-</td><td>-</td></tr>');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ function loadServerAccordion(json, error) {
|
||||
var servers = json.servers;
|
||||
|
||||
if (!servers.length) {
|
||||
serverTable.append('<tr><td>No Sessions</td><td>-</td><td>-</td><td>-</td></tr>')
|
||||
serverTable.append('<tr><td>No Data</td><td>-</td><td>-</td><td>-</td></tr>')
|
||||
}
|
||||
|
||||
var serversHtml = '';
|
||||
|
@ -9,7 +9,7 @@ function loadSessionAccordion(json, error) {
|
||||
var sessions = json.sessions;
|
||||
|
||||
if (!sessions.length) {
|
||||
sessionTable.append('<tr><td>No Sessions</td><td>-</td><td>-</td><td>-</td></tr>');
|
||||
sessionTable.append('<tr><td>No Data</td><td>-</td><td>-</td><td>-</td></tr>');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1348,13 +1348,13 @@
|
||||
newPlayers: 'New Players',
|
||||
tps: 'TPS',
|
||||
cpu: 'CPU Usage (%)',
|
||||
ram: 'RAM Usage (Mb)',
|
||||
ram: 'RAM Usage (MB)',
|
||||
entities: 'Loaded Entities',
|
||||
chunks: 'Loaded Chunks',
|
||||
maxPing: 'Worst Ping',
|
||||
minPing: 'Best Ping',
|
||||
avgPing: 'Average Ping',
|
||||
disk: 'Free Disk Space (Mb)'
|
||||
disk: 'Free Disk Space (MB)'
|
||||
},
|
||||
tooltip: {
|
||||
twoDecimals: {
|
||||
|
Loading…
Reference in New Issue
Block a user