mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2024-11-23 00:40:51 +01:00
Made translation dynamic (Doesn't require G-Earth to restart)
This commit is contained in:
parent
c5dd4eb6d3
commit
65fa47e6dc
@ -24,6 +24,7 @@ import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class GExtensionStoreController implements Initializable {
|
||||
private static GExtensionStoreController instance;
|
||||
|
||||
private GExtensionStore extensionStore = null;
|
||||
|
||||
@ -38,6 +39,8 @@ public class GExtensionStoreController implements Initializable {
|
||||
|
||||
@Override
|
||||
public void initialize(URL location, ResourceBundle resources) {
|
||||
instance = this;
|
||||
|
||||
webView = new WebView();
|
||||
borderPane.setCenter(webView);
|
||||
|
||||
@ -238,4 +241,8 @@ public class GExtensionStoreController implements Initializable {
|
||||
public String getContentItemsContainer() {
|
||||
return contentItemsContainer;
|
||||
}
|
||||
|
||||
public static void reloadPage() {
|
||||
instance.webView.getEngine().reload();
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,14 @@
|
||||
package gearth.services.internal_extensions.uilogger;
|
||||
|
||||
import at.favre.lib.bytes.Bytes;
|
||||
import gearth.GEarth;
|
||||
import gearth.misc.Cacher;
|
||||
import gearth.services.internal_extensions.uilogger.hexdumper.Hexdump;
|
||||
import gearth.services.packet_info.PacketInfo;
|
||||
import gearth.protocol.HMessage;
|
||||
import gearth.protocol.HPacket;
|
||||
import gearth.ui.subforms.logger.loggerdisplays.PacketLogger;
|
||||
import gearth.ui.translations.LanguageBundle;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.application.Platform;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.Initializable;
|
||||
@ -40,7 +41,7 @@ public class UiLoggerController implements Initializable {
|
||||
public CheckMenuItem chkViewIncoming;
|
||||
public CheckMenuItem chkViewOutgoing;
|
||||
public CheckMenuItem chkDisplayStructure;
|
||||
public Label lblAutoScrolll;
|
||||
public Label lblAutoScroll;
|
||||
public CheckMenuItem chkAutoscroll;
|
||||
public CheckMenuItem chkSkipBigPackets;
|
||||
public CheckMenuItem chkMessageName;
|
||||
@ -72,6 +73,7 @@ public class UiLoggerController implements Initializable {
|
||||
public RadioMenuItem chkReprHex;
|
||||
public RadioMenuItem chkReprRawHex;
|
||||
public RadioMenuItem chkReprNone;
|
||||
public MenuItem menuItem_clear, menuItem_exportAll;
|
||||
|
||||
private Map<Integer, LinkedList<Long>> filterTimestamps = new HashMap<>();
|
||||
|
||||
@ -87,6 +89,11 @@ public class UiLoggerController implements Initializable {
|
||||
private List<MenuItem> allMenuItems = new ArrayList<>();
|
||||
private UiLogger uiLogger;
|
||||
|
||||
public Menu menu_window, menu_window_onConnect, menu_window_onDisconnect, menu_view, menu_packets,
|
||||
menu_packets_details, menu_packets_details_byteRep, menu_packets_details_message, menu_packets_antiSpam;
|
||||
|
||||
private TranslatableString viewIncoming, viewOutgoing, autoScroll, packetInfo, filtered;
|
||||
|
||||
private boolean isSelected(MenuItem item) {
|
||||
if (item instanceof CheckMenuItem) {
|
||||
return ((CheckMenuItem)item).isSelected();
|
||||
@ -158,6 +165,8 @@ public class UiLoggerController implements Initializable {
|
||||
appendLater.clear();
|
||||
}
|
||||
}
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
private static String cleanTextContent(String text) {
|
||||
@ -220,7 +229,7 @@ public class UiLoggerController implements Initializable {
|
||||
|
||||
|
||||
if (chkTimestamp.isSelected()) {
|
||||
elements.add(new Element(String.format("(%s: %d)\n", GEarth.translation.getString("ext.logger.element.timestamp"), System.currentTimeMillis()), "timestamp"));
|
||||
elements.add(new Element(String.format("(%s: %d)\n", LanguageBundle.get("ext.logger.element.timestamp"), System.currentTimeMillis()), "timestamp"));
|
||||
}
|
||||
|
||||
boolean packetInfoAvailable = uiLogger.getPacketInfoManager().getPacketInfoList().size() > 0;
|
||||
@ -257,8 +266,8 @@ public class UiLoggerController implements Initializable {
|
||||
elements.add(new Element("\n", ""));
|
||||
}
|
||||
|
||||
if (isBlocked) elements.add(new Element(String.format("[%s]\n", GEarth.translation.getString("ext.logger.element.blocked")), "blocked"));
|
||||
else if (isReplaced) elements.add(new Element(String.format("[%s]\n", GEarth.translation.getString("ext.logger.element.replaced")), "replaced"));
|
||||
if (isBlocked) elements.add(new Element(String.format("[%s]\n", LanguageBundle.get("ext.logger.element.blocked")), "blocked"));
|
||||
else if (isReplaced) elements.add(new Element(String.format("[%s]\n", LanguageBundle.get("ext.logger.element.replaced")), "replaced"));
|
||||
|
||||
if (!chkReprNone.isSelected()) {
|
||||
boolean isSkipped = chkSkipBigPackets.isSelected() && (packet.length() > 4000 || (packet.length() > 1000 && chkReprHex.isSelected()));
|
||||
@ -266,7 +275,7 @@ public class UiLoggerController implements Initializable {
|
||||
Hexdump.hexdump(packet.toBytes()) :
|
||||
(chkReprRawHex.isSelected() ? Bytes.wrap(packet.toBytes()).encodeHex() : packet.toString());
|
||||
|
||||
String type = isIncoming ? GEarth.translation.getString("ext.logger.element.direction.incoming") : GEarth.translation.getString("ext.logger.element.direction.outgoing");
|
||||
String type = isIncoming ? LanguageBundle.get("ext.logger.element.direction.incoming") : LanguageBundle.get("ext.logger.element.direction.outgoing");
|
||||
|
||||
if (!chkReprHex.isSelected()) {
|
||||
elements.add(new Element(String.format("%s[", type), type.toLowerCase()));
|
||||
@ -277,7 +286,7 @@ public class UiLoggerController implements Initializable {
|
||||
}
|
||||
|
||||
if (isSkipped) {
|
||||
elements.add(new Element(String.format("<%s>", GEarth.translation.getString("ext.logger.element.skipped")), "skipped"));
|
||||
elements.add(new Element(String.format("<%s>", LanguageBundle.get("ext.logger.element.skipped")), "skipped"));
|
||||
} else
|
||||
elements.add(new Element(packetRepresentation, String.format(chkReprHex.isSelected() ? "%sHex": "%s", type.toLowerCase())));
|
||||
elements.add(new Element("\n", ""));
|
||||
@ -344,13 +353,13 @@ public class UiLoggerController implements Initializable {
|
||||
|
||||
public void updateLoggerInfo() {
|
||||
Platform.runLater(() -> {
|
||||
lblViewIncoming.setText(String.format("%s: %s", GEarth.translation.getString("ext.logger.menu.view.incoming"), (chkViewIncoming.isSelected() ? "True" : "False")));
|
||||
lblViewOutgoing.setText(String.format("%s: %s", GEarth.translation.getString("ext.logger.menu.view.outgoing"), (chkViewOutgoing.isSelected() ? "True" : "False")));
|
||||
lblAutoScrolll.setText(String.format("%s: %s", GEarth.translation.getString("ext.logger.menu.view.autoscroll"), (chkAutoscroll.isSelected() ? "True" : "False")));
|
||||
lblFiltered.setText(String.format("%s: %d", GEarth.translation.getString("ext.logger.state.filtered"), filteredAmount));
|
||||
viewIncoming.setKey(1, "ext.logger.state." + (chkViewIncoming.isSelected() ? "true" : "false"));
|
||||
viewIncoming.setKey(1, "ext.logger.state." + (chkViewOutgoing.isSelected() ? "true" : "false"));
|
||||
autoScroll.setKey(1, "ext.logger.state." + (chkAutoscroll.isSelected() ? "true" : "false"));
|
||||
filtered.setFormat("%s: " + filteredAmount);
|
||||
|
||||
boolean packetInfoAvailable = uiLogger.getPacketInfoManager().getPacketInfoList().size() > 0;
|
||||
lblPacketInfo.setText(String.format("%s: %s", GEarth.translation.getString("ext.logger.state.packetinfo"), (packetInfoAvailable ? "True" : "False")));
|
||||
packetInfo.setKey(1, "ext.logger.state." + (packetInfoAvailable ? "true" : "false"));
|
||||
});
|
||||
}
|
||||
|
||||
@ -390,9 +399,9 @@ public class UiLoggerController implements Initializable {
|
||||
|
||||
//Set extension filter
|
||||
FileChooser.ExtensionFilter extFilter =
|
||||
new FileChooser.ExtensionFilter(String.format("%s (*.txt)", GEarth.translation.getString("ext.logger.menu.packets.exportall.filetype")), "*.txt");
|
||||
new FileChooser.ExtensionFilter(String.format("%s (*.txt)", LanguageBundle.get("ext.logger.menu.packets.exportall.filetype")), "*.txt");
|
||||
fileChooser.getExtensionFilters().add(extFilter);
|
||||
fileChooser.setTitle(GEarth.translation.getString("ext.logger.menu.packets.exportall.windowtitle"));
|
||||
fileChooser.setTitle(LanguageBundle.get("ext.logger.menu.packets.exportall.windowtitle"));
|
||||
|
||||
//Show save file dialog
|
||||
File file = fileChooser.showSaveDialog(stage);
|
||||
@ -417,4 +426,62 @@ public class UiLoggerController implements Initializable {
|
||||
public void init(UiLogger uiLogger) {
|
||||
this.uiLogger = uiLogger;
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
menu_window.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window"));
|
||||
chkAlwaysOnTop.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.alwaysontop"));
|
||||
|
||||
menu_window_onConnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.onconnect"));
|
||||
chkOpenOnConnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.onconnect.openwindow"));
|
||||
chkResetOnConnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.onconnect.reset"));
|
||||
|
||||
menu_window_onDisconnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.ondisconnect"));
|
||||
chkHideOnDisconnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.ondisconnect.hidewindow"));
|
||||
chkResetOnDisconnect.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.window.ondisconnect.reset"));
|
||||
|
||||
menu_view.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.view"));
|
||||
chkViewIncoming.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.view.incoming"));
|
||||
chkViewOutgoing.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.view.outgoing"));
|
||||
chkAutoscroll.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.view.autoscroll"));
|
||||
menuItem_clear.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.view.cleartext"));
|
||||
|
||||
menu_packets.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets"));
|
||||
menu_packets_details.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails"));
|
||||
chkDisplayStructure.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.structure"));
|
||||
chkTimestamp.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.timestamp"));
|
||||
|
||||
menu_packets_details_byteRep.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.byterep"));
|
||||
chkReprLegacy.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.byterep.legacy"));
|
||||
chkReprHex.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.byterep.hexdump"));
|
||||
chkReprRawHex.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.byterep.rawhex"));
|
||||
chkReprNone.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.byterep.none"));
|
||||
|
||||
menu_packets_details_message.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.message"));
|
||||
chkMessageHash.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.message.hash"));
|
||||
chkMessageName.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.message.name"));
|
||||
chkMessageId.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.displaydetails.message.id"));
|
||||
|
||||
menu_packets_antiSpam.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam"));
|
||||
chkAntiSpam_none.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam.none"));
|
||||
chkAntiSpam_low.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam.low"));
|
||||
chkAntiSpam_medium.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam.med"));
|
||||
chkAntiSpam_high.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam.high"));
|
||||
chkAntiSpam_ultra.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.antispam.ultra"));
|
||||
|
||||
chkSkipBigPackets.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.skipbig"));
|
||||
|
||||
menuItem_exportAll.textProperty().bind(new TranslatableString("%s", "ext.logger.menu.packets.exportall"));
|
||||
|
||||
viewIncoming = new TranslatableString("%s: %s", "ext.logger.menu.view.incoming", "ext.logger.state.true");
|
||||
viewOutgoing = new TranslatableString("%s: %s", "ext.logger.menu.view.outgoing", "ext.logger.state.true");
|
||||
autoScroll = new TranslatableString("%s: %s", "ext.logger.menu.view.autoscroll", "ext.logger.state.true");
|
||||
packetInfo = new TranslatableString("%s: %s", "ext.logger.state.packetinfo", "ext.logger.state.false");
|
||||
filtered = new TranslatableString("%s: 0", "ext.logger.state.filtered");
|
||||
|
||||
lblViewIncoming.textProperty().bind(viewIncoming);
|
||||
lblViewOutgoing.textProperty().bind(viewOutgoing);
|
||||
lblAutoScroll.textProperty().bind(autoScroll);
|
||||
lblPacketInfo.textProperty().bind(packetInfo);
|
||||
lblFiltered.textProperty().bind(filtered);
|
||||
}
|
||||
}
|
||||
|
@ -121,12 +121,12 @@ public class GEarthController {
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
tab_Connection.textProperty().bind(new TranslatableString("tab.connection"));
|
||||
tab_Injection.textProperty().bind(new TranslatableString("tab.injection"));
|
||||
tab_Tools.textProperty().bind(new TranslatableString("tab.tools"));
|
||||
tab_Scheduler.textProperty().bind(new TranslatableString("tab.scheduler"));
|
||||
tab_Extensions.textProperty().bind(new TranslatableString("tab.extensions"));
|
||||
tab_Extra.textProperty().bind(new TranslatableString("tab.extra"));
|
||||
tab_Info.textProperty().bind(new TranslatableString("tab.info"));
|
||||
tab_Connection.textProperty().bind(new TranslatableString("%s", "tab.connection"));
|
||||
tab_Injection.textProperty().bind(new TranslatableString("%s", "tab.injection"));
|
||||
tab_Tools.textProperty().bind(new TranslatableString("%s", "tab.tools"));
|
||||
tab_Scheduler.textProperty().bind(new TranslatableString("%s", "tab.scheduler"));
|
||||
tab_Extensions.textProperty().bind(new TranslatableString("%s", "tab.extensions"));
|
||||
tab_Extra.textProperty().bind(new TranslatableString("%s", "tab.extra"));
|
||||
tab_Info.textProperty().bind(new TranslatableString("%s", "tab.info"));
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ public class ConnectionController extends SubForm {
|
||||
|
||||
private volatile int initcount = 0;
|
||||
|
||||
private TranslatableString connect, state;
|
||||
|
||||
public void initialize() {
|
||||
|
||||
Constants.UNITY_PACKETS = rd_unity.isSelected();
|
||||
@ -179,20 +181,20 @@ public class ConnectionController extends SubForm {
|
||||
getHConnection().getStateObservable().addListener((oldState, newState) -> Platform.runLater(() -> {
|
||||
updateInputUI();
|
||||
if (newState == HState.NOT_CONNECTED) {
|
||||
lblState.textProperty().bind(ConnectionState.NOTCONNECTED.value);
|
||||
btnConnect.textProperty().bind(ConnectButton.CONNECT.value);
|
||||
state.setKey(0, "tab.connection.state.notconnected");
|
||||
connect.setKey(0, "tab.connection.button.connect");
|
||||
outHost.setText("");
|
||||
outPort.setText("");
|
||||
}
|
||||
else if (oldState == HState.NOT_CONNECTED) {
|
||||
btnConnect.textProperty().bind(ConnectButton.ABORT.value);
|
||||
connect.setKey(0, "tab.connection.button.abort");
|
||||
}
|
||||
|
||||
if (newState == HState.CONNECTED) {
|
||||
lblState.textProperty().bind(ConnectionState.CONNECTED.value);
|
||||
state.setKey(0, "tab.connection.state.connected");
|
||||
}
|
||||
if (newState == HState.WAITING_FOR_CLIENT) {
|
||||
lblState.textProperty().bind(ConnectionState.WAITING.value);
|
||||
state.setKey(0, "tab.connection.state.waiting");
|
||||
}
|
||||
|
||||
if (newState == HState.CONNECTED && useFlash()) {
|
||||
@ -318,44 +320,23 @@ public class ConnectionController extends SubForm {
|
||||
return false;
|
||||
}
|
||||
|
||||
private enum ConnectButton {
|
||||
CONNECT ("tab.connection.button.connect"),
|
||||
ABORT ("tab.connection.button.abort");
|
||||
|
||||
public final TranslatableString value;
|
||||
|
||||
ConnectButton(String key) {
|
||||
this.value = new TranslatableString(key);
|
||||
}
|
||||
}
|
||||
|
||||
private enum ConnectionState {
|
||||
CONNECTED ("tab.connection.state.connected"),
|
||||
NOTCONNECTED ("tab.connection.state.notconnected"),
|
||||
WAITING ("tab.connection.state.waiting");
|
||||
|
||||
public final TranslatableString value;
|
||||
|
||||
ConnectionState(String key) {
|
||||
this.value = new TranslatableString(key);
|
||||
}
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
TranslatableString port = new TranslatableString("tab.connection.port");
|
||||
TranslatableString host = new TranslatableString("tab.connection.host");
|
||||
TranslatableString port = new TranslatableString("%s", "tab.connection.port");
|
||||
TranslatableString host = new TranslatableString("%s", "tab.connection.host");
|
||||
lblInpPort.textProperty().bind(port);
|
||||
lblInpHost.textProperty().bind(host);
|
||||
lblPort.textProperty().bind(port);
|
||||
lblHost.textProperty().bind(host);
|
||||
cbx_autodetect.textProperty().bind(new TranslatableString("tab.connection.autodetect"));
|
||||
btnConnect.textProperty().bind(ConnectButton.CONNECT.value);
|
||||
lblHotelVersion.textProperty().bind(new TranslatableString("tab.connection.version"));
|
||||
lblClient.textProperty().bind(new TranslatableString("tab.connection.client"));
|
||||
rd_unity.textProperty().bind(new TranslatableString("tab.connection.client.unity"));
|
||||
rd_flash.textProperty().bind(new TranslatableString("tab.connection.client.flash"));
|
||||
rd_nitro.textProperty().bind(new TranslatableString("tab.connection.client.nitro"));
|
||||
lblStateHead.textProperty().bind(new TranslatableString("tab.connection.state"));
|
||||
lblState.textProperty().bind(ConnectionState.NOTCONNECTED.value);
|
||||
cbx_autodetect.textProperty().bind(new TranslatableString("%s", "tab.connection.autodetect"));
|
||||
connect = new TranslatableString("%s", "tab.connection.button.connect");
|
||||
btnConnect.textProperty().bind(connect);
|
||||
lblHotelVersion.textProperty().bind(new TranslatableString("%s", "tab.connection.version"));
|
||||
lblClient.textProperty().bind(new TranslatableString("%s", "tab.connection.client"));
|
||||
rd_unity.textProperty().bind(new TranslatableString("%s", "tab.connection.client.unity"));
|
||||
rd_flash.textProperty().bind(new TranslatableString("%s", "tab.connection.client.flash"));
|
||||
rd_nitro.textProperty().bind(new TranslatableString("%s", "tab.connection.client.nitro"));
|
||||
lblStateHead.textProperty().bind(new TranslatableString("%s", "tab.connection.state"));
|
||||
state = new TranslatableString("%s", "tab.connection.state.notconnected");
|
||||
lblState.textProperty().bind(state);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ import gearth.GEarth;
|
||||
import gearth.services.extension_handler.extensions.ExtensionType;
|
||||
import gearth.services.extension_handler.extensions.GEarthExtension;
|
||||
import gearth.ui.titlebar.TitleBarController;
|
||||
import gearth.ui.translations.LanguageBundle;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.application.Platform;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.geometry.Insets;
|
||||
@ -81,7 +83,8 @@ public class ExtensionItemContainer extends GridPane {
|
||||
add(versionLabel, 3, 0);
|
||||
|
||||
exitButton = new ExitButton();
|
||||
Tooltip delete = new Tooltip(GEarth.translation.getString("tab.extensions.table.edit.delete.tooltip"));
|
||||
Tooltip delete = new Tooltip();
|
||||
delete.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.edit.delete.tooltip"));
|
||||
Tooltip.install(exitButton,delete);
|
||||
exitButton.show();
|
||||
clickButton = new SimpleClickButton();
|
||||
@ -90,7 +93,8 @@ public class ExtensionItemContainer extends GridPane {
|
||||
buttonsBox = new HBox(clickButton, exitButton);
|
||||
|
||||
reloadButton = new ReloadButton();
|
||||
Tooltip reload = new Tooltip(GEarth.translation.getString("tab.extensions.table.edit.restart.tooltip"));
|
||||
Tooltip reload = new Tooltip();
|
||||
reload.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.edit.restart.tooltip"));
|
||||
Tooltip.install(reloadButton, reload);
|
||||
reloadButton.show();
|
||||
reloadButton.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
|
||||
@ -100,8 +104,6 @@ public class ExtensionItemContainer extends GridPane {
|
||||
});
|
||||
|
||||
DeleteButton deleteButton = new DeleteButton();
|
||||
Tooltip uninstall = new Tooltip(GEarth.translation.getString("tab.extensions.table.edit.uninstall.tooltip"));
|
||||
Tooltip.install(deleteButton, uninstall);
|
||||
deleteButton.show();
|
||||
GridPane this2 = this;
|
||||
|
||||
@ -111,8 +113,8 @@ public class ExtensionItemContainer extends GridPane {
|
||||
|
||||
if (ConfirmationDialog.showDialog(uninstallKey)) {
|
||||
Alert alert = ConfirmationDialog.createAlertWithOptOut(Alert.AlertType.CONFIRMATION, uninstallKey
|
||||
, GEarth.translation.getString("alert.confirmation.windowtitle"), null,
|
||||
GEarth.translation.getString("tab.extensions.table.edit.uninstall.confirmation"), GEarth.translation.getString("alert.confirmation.button.donotaskagain"),
|
||||
, LanguageBundle.get("alert.confirmation.windowtitle"), null,
|
||||
LanguageBundle.get("tab.extensions.table.edit.uninstall.confirmation"), LanguageBundle.get("alert.confirmation.button.donotaskagain"),
|
||||
ButtonType.YES, ButtonType.NO
|
||||
);
|
||||
|
||||
@ -218,4 +220,8 @@ public class ExtensionItemContainer extends GridPane {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,8 @@ import gearth.services.extension_handler.extensions.implementations.network.exec
|
||||
import gearth.services.g_python.GPythonShell;
|
||||
import gearth.ui.SubForm;
|
||||
import gearth.ui.subforms.extensions.logger.ExtensionLogger;
|
||||
import gearth.ui.translations.LanguageBundle;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.application.Platform;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.scene.control.*;
|
||||
@ -40,12 +42,14 @@ public class ExtensionsController extends SubForm {
|
||||
private NetworkExtensionsProducer networkExtensionsProducer; // needed for port
|
||||
private ExtensionLogger extensionLogger = null;
|
||||
|
||||
|
||||
public Label lbl_tableTitle, lbl_tableDesc, lbl_tableAuthor, lbl_tableVersion, lbl_tableEdit, lbl_port;
|
||||
|
||||
|
||||
public void initialize() {
|
||||
scroller.widthProperty().addListener(observable -> header_ext.setPrefWidth(scroller.getWidth()));
|
||||
extensionLogger = new ExtensionLogger();
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
protected void onParentSet() {
|
||||
@ -81,9 +85,9 @@ public class ExtensionsController extends SubForm {
|
||||
|
||||
public void installBtnClicked(ActionEvent actionEvent) {
|
||||
FileChooser fileChooser = new FileChooser();
|
||||
fileChooser.setTitle(GEarth.translation.getString("tab.extensions.button.install.windowtitle"));
|
||||
fileChooser.setTitle(LanguageBundle.get("tab.extensions.button.install.windowtitle"));
|
||||
fileChooser.getExtensionFilters().addAll(
|
||||
new FileChooser.ExtensionFilter(GEarth.translation.getString("tab.extensions.button.install.filetype"), ExecutionInfo.ALLOWEDEXTENSIONTYPES));
|
||||
new FileChooser.ExtensionFilter(LanguageBundle.get("tab.extensions.button.install.filetype"), ExecutionInfo.ALLOWEDEXTENSIONTYPES));
|
||||
File selectedFile = fileChooser.showOpenDialog(parentController.getStage());
|
||||
if (selectedFile != null) {
|
||||
extensionRunner.installAndRunExtension(selectedFile.getPath(), networkExtensionsProducer.getPort());
|
||||
@ -117,7 +121,7 @@ public class ExtensionsController extends SubForm {
|
||||
pythonShellLaunching = true;
|
||||
Platform.runLater(() -> btn_gpython.setDisable(true));
|
||||
GPythonShell shell = new GPythonShell(
|
||||
String.format("%s %d", GEarth.translation.getString("tab.extensions.button.pythonshell.windowtitle"),gpytonShellCounter++),
|
||||
String.format("%s %d", LanguageBundle.get("tab.extensions.button.pythonshell.windowtitle"),gpytonShellCounter++),
|
||||
networkExtensionsProducer.getPort(),
|
||||
Authenticator.generatePermanentCookie()
|
||||
);
|
||||
@ -130,4 +134,18 @@ public class ExtensionsController extends SubForm {
|
||||
public ExtensionHandler getExtensionHandler() {
|
||||
return extensionHandler;
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
lbl_tableTitle.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.title"));
|
||||
lbl_tableDesc.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.description"));
|
||||
lbl_tableAuthor.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.author"));
|
||||
lbl_tableVersion.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.version"));
|
||||
lbl_tableEdit.textProperty().bind(new TranslatableString("%s", "tab.extensions.table.edit"));
|
||||
|
||||
lbl_port.textProperty().bind(new TranslatableString("%s:", "tab.extensions.port"));
|
||||
|
||||
btn_gpython.textProperty().bind(new TranslatableString("%s", "tab.extensions.button.pythonshell"));
|
||||
btn_viewExtensionConsole.textProperty().bind(new TranslatableString("%s", "tab.extensions.button.logs"));
|
||||
btn_install.textProperty().bind(new TranslatableString("%s", "tab.extensions.button.install"));
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import gearth.GEarth;
|
||||
import gearth.ui.titlebar.DefaultTitleBarConfig;
|
||||
import gearth.ui.titlebar.GEarthThemedTitleBarConfig;
|
||||
import gearth.ui.titlebar.TitleBarController;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
@ -38,7 +39,7 @@ public class ExtensionLogger {
|
||||
|
||||
|
||||
stage = new Stage();
|
||||
stage.setTitle(String.format("G-Earth | %s", GEarth.translation.getString("tab.extensions.button.logs.windowtitle")));
|
||||
stage.titleProperty().bind(new TranslatableString("G-Earth | %s", "tab.extensions.button.logs.windowtitle"));
|
||||
stage.initModality(Modality.NONE);
|
||||
stage.setAlwaysOnTop(true);
|
||||
stage.setMinHeight(235);
|
||||
|
@ -11,6 +11,7 @@ import gearth.services.g_python.GPythonVersionUtils;
|
||||
import gearth.ui.SubForm;
|
||||
import gearth.ui.subforms.info.InfoController;
|
||||
import gearth.ui.titlebar.TitleBarController;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.application.Platform;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.scene.control.*;
|
||||
@ -59,6 +60,7 @@ public class ExtraController extends SubForm implements SocksConfiguration {
|
||||
public TextField txt_socksPort;
|
||||
public TextField txt_socksIp;
|
||||
public CheckBox cbx_admin;
|
||||
public Label lbl_notepad, lbl_proxyIp, lbl_proxyPort;
|
||||
|
||||
private AdminService adminService;
|
||||
|
||||
@ -92,6 +94,8 @@ public class ExtraController extends SubForm implements SocksConfiguration {
|
||||
cbx_useSocks.selectedProperty().addListener(observable -> grd_socksInfo.setDisable(!cbx_useSocks.isSelected()));
|
||||
|
||||
ProxyProviderFactory.setSocksConfig(this);
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -220,4 +224,22 @@ public class ExtraController extends SubForm implements SocksConfiguration {
|
||||
adminService.setEnabled(cbx_admin.isSelected());
|
||||
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
url_troubleshooting.textProperty().bind(new TranslatableString("%s", "tab.extra.troubleshooting"));
|
||||
|
||||
lbl_notepad.textProperty().bind(new TranslatableString("%s:", "tab.extra.notepad"));
|
||||
lbl_proxyIp.textProperty().bind(new TranslatableString("%s:", "tab.extra.options.advanced.proxy.ip"));
|
||||
lbl_proxyPort.textProperty().bind(new TranslatableString("%s:", "tab.extra.options.advanced.proxy.port"));
|
||||
|
||||
cbx_alwaysOnTop.textProperty().bind(new TranslatableString("%s", "tab.extra.options.alwaysontop"));
|
||||
|
||||
cbx_admin.textProperty().bind(new TranslatableString("%s", "tab.extra.options.staffpermissions"));
|
||||
cbx_gpython.textProperty().bind(new TranslatableString("%s", "tab.extra.options.pythonscripting"));
|
||||
cbx_advanced.textProperty().bind(new TranslatableString("%s", "tab.extra.options.advanced"));
|
||||
|
||||
cbx_useSocks.textProperty().bind(new TranslatableString("%s", "tab.extra.options.advanced.socks"));
|
||||
cbx_disableDecryption.textProperty().bind(new TranslatableString("%s", "tab.extra.options.advanced.disabledecryption"));
|
||||
cbx_debug.textProperty().bind(new TranslatableString("%s", "tab.extra.options.advanced.debugstdout"));
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package gearth.ui.subforms.info;
|
||||
|
||||
import gearth.GEarth;
|
||||
import gearth.ui.titlebar.TitleBarController;
|
||||
import gearth.ui.translations.LanguageBundle;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.scene.control.*;
|
||||
import gearth.ui.SubForm;
|
||||
@ -24,7 +26,8 @@ public class InfoController extends SubForm {
|
||||
public Hyperlink link_g_store;
|
||||
public Hyperlink link_t_gearth;
|
||||
|
||||
public Label version;
|
||||
public Label version, lbl_description, lbl_createdBy, lbl_contrib, lbl_links;
|
||||
public Button btn_donate;
|
||||
|
||||
public static void activateHyperlink(Hyperlink link) {
|
||||
link.setOnAction((ActionEvent event) -> {
|
||||
@ -49,16 +52,18 @@ public class InfoController extends SubForm {
|
||||
activateHyperlink(link_g_tanji);
|
||||
activateHyperlink(link_g_store);
|
||||
activateHyperlink(link_t_gearth);
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
public void donate(ActionEvent actionEvent) {
|
||||
String pubkey = "1GEarthEV9Ua3RcixsKTcuc1PPZd9hqri3";
|
||||
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION, GEarth.translation.getString("tab.info.donate.alert.title"), ButtonType.OK);
|
||||
alert.setHeaderText(GEarth.translation.getString("tab.info.donate.alert.title"));
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION, LanguageBundle.get("tab.info.donate.alert.title"), ButtonType.OK);
|
||||
alert.setHeaderText(LanguageBundle.get("tab.info.donate.alert.title"));
|
||||
|
||||
VBox test = new VBox();
|
||||
test.getChildren().add(new Label(GEarth.translation.getString("tab.info.donate.alert.content")));
|
||||
test.getChildren().add(new Label(LanguageBundle.get("tab.info.donate.alert.content")));
|
||||
TextArea pubText = new TextArea(pubkey);
|
||||
pubText.setPrefHeight(28);
|
||||
pubText.setMaxWidth(250);
|
||||
@ -73,4 +78,13 @@ public class InfoController extends SubForm {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
lbl_description.textProperty().bind(new TranslatableString("%s", "tab.info.description"));
|
||||
lbl_createdBy.textProperty().bind(new TranslatableString("%s:", "tab.info.createdby"));
|
||||
lbl_contrib.textProperty().bind(new TranslatableString("%s:", "tab.info.contributors"));
|
||||
lbl_links.textProperty().bind(new TranslatableString("%s:", "tab.info.links"));
|
||||
|
||||
btn_donate.textProperty().bind(new TranslatableString("%s", "tab.info.donate"));
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,9 @@ public class InjectionController extends SubForm {
|
||||
public Button btn_sendToClient;
|
||||
public ListView<InjectedPackets> history;
|
||||
public Label lblHistory;
|
||||
public Hyperlink lnk_clearHistory;
|
||||
|
||||
private TranslatableString corruption, pcktInfo;
|
||||
|
||||
protected void onParentSet() {
|
||||
getHConnection().getStateObservable().addListener((oldState, newState) -> Platform.runLater(this::updateUI));
|
||||
@ -54,15 +57,14 @@ public class InjectionController extends SubForm {
|
||||
}
|
||||
});
|
||||
|
||||
lblHistory.setTooltip(new Tooltip());
|
||||
lblHistory.getTooltip().textProperty().bind(new TranslatableString("tab.injection.history.tooltip"));
|
||||
|
||||
List<Object> rawHistory = Cacher.getList(HISTORY_CACHE_KEY);
|
||||
if (rawHistory != null) {
|
||||
List<InjectedPackets> history = rawHistory.stream()
|
||||
.map(o -> (String)o).limit(historylimit - 1).map(InjectedPackets::new).collect(Collectors.toList());
|
||||
updateHistoryView(history);
|
||||
}
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
private static boolean isPacketIncomplete(String line) {
|
||||
@ -106,7 +108,7 @@ public class InjectionController extends SubForm {
|
||||
private void updateUI() {
|
||||
boolean dirty = false;
|
||||
|
||||
lbl_corruption.setText(GEarth.translation.getString("tab.injection.corrupted.false"));
|
||||
corruption.setKey(1, "tab.injection.corrupted.false");
|
||||
lbl_corruption.getStyleClass().clear();
|
||||
lbl_corruption.getStyleClass().add("not-corrupted-label");
|
||||
|
||||
@ -122,17 +124,18 @@ public class InjectionController extends SubForm {
|
||||
for (int i = 0; i < packets.length; i++) {
|
||||
if (packets[i].isCorrupted()) {
|
||||
if (!dirty) {
|
||||
lbl_corruption.setText(String.format("%s -> %d", GEarth.translation.getString("tab.injection.corrupted.true"), i));
|
||||
corruption.setFormat("%s: %s -> " + i);
|
||||
corruption.setKey(1, "tab.injection.corrupted.true");
|
||||
lbl_corruption.getStyleClass().clear();
|
||||
lbl_corruption.getStyleClass().add("corrupted-label");
|
||||
dirty = true;
|
||||
} else
|
||||
lbl_corruption.setText(lbl_corruption.getText() + ", " + i);
|
||||
corruption.setFormat(corruption.getFormat() + ", " + i);
|
||||
}
|
||||
}
|
||||
|
||||
if (dirty && packets.length == 1) {
|
||||
lbl_corruption.setText(GEarth.translation.getString("tab.injection.corrupted.true")); // no index needed
|
||||
corruption.setFormatAndKeys("%s: %s", "tab.injection.corrupted", "tab.injection.corrupted.true");
|
||||
}
|
||||
|
||||
if (!dirty) {
|
||||
@ -150,26 +153,23 @@ public class InjectionController extends SubForm {
|
||||
btn_sendToClient.setDisable(!canSendToClient || getHConnection().getState() != HState.CONNECTED);
|
||||
btn_sendToServer.setDisable(!canSendToServer || getHConnection().getState() != HState.CONNECTED);
|
||||
if (packets.length == 1) {
|
||||
lbl_pcktInfo.setText(String.format("%s (%s: %d, %s: %d)",
|
||||
GEarth.translation.getString("tab.injection.description.header"),
|
||||
GEarth.translation.getString("tab.injection.description.id"),
|
||||
packets[0].headerId(),
|
||||
GEarth.translation.getString("tab.injection.description.length"),
|
||||
packets[0].length()));
|
||||
pcktInfo.setFormatAndKeys("%s (%s: " + packets[0].headerId() + ", %s: " + packets[0].length() + ")",
|
||||
"tab.injection.description.header",
|
||||
"tab.injection.description.id",
|
||||
"tab.injection.description.length");
|
||||
}
|
||||
else {
|
||||
lbl_pcktInfo.setText("");
|
||||
}
|
||||
} else {
|
||||
if (packets.length == 1) {
|
||||
lbl_pcktInfo.setText(String.format("%s (%s:NULL, %s: %d)",
|
||||
GEarth.translation.getString("tab.injection.description.header"),
|
||||
GEarth.translation.getString("tab.injection.description.id"),
|
||||
GEarth.translation.getString("tab.injection.description.length"),
|
||||
packets[0].getBytesLength()));
|
||||
pcktInfo.setFormatAndKeys("%s (%s:NULL, %s: " + packets[0].getBytesLength() + ")",
|
||||
"tab.injection.description.header",
|
||||
"tab.injection.description.id",
|
||||
"tab.injection.description.length");
|
||||
}
|
||||
else {
|
||||
lbl_pcktInfo.setText("");
|
||||
pcktInfo.setFormatAndKeys("");
|
||||
}
|
||||
|
||||
btn_sendToClient.setDisable(true);
|
||||
@ -235,6 +235,23 @@ public class InjectionController extends SubForm {
|
||||
updateHistoryView(new ArrayList<>());
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
lblHistory.textProperty().bind(new TranslatableString("%s", "tab.injection.history"));
|
||||
lblHistory.setTooltip(new Tooltip());
|
||||
lblHistory.getTooltip().textProperty().bind(new TranslatableString("%s", "tab.injection.history.tooltip"));
|
||||
|
||||
corruption = new TranslatableString("%s: %s", "tab.injection.corrupted", "tab.injection.corrupted.true");
|
||||
lbl_corruption.textProperty().bind(corruption);
|
||||
|
||||
pcktInfo = new TranslatableString("%s (%s:NULL, %s:0)", "tab.injection.description.header", "tab.injection.description.id", "tab.injection.description.length");
|
||||
lbl_pcktInfo.textProperty().bind(pcktInfo);
|
||||
|
||||
btn_sendToServer.textProperty().bind(new TranslatableString("%s", "tab.injection.send.toserver"));
|
||||
btn_sendToClient.textProperty().bind(new TranslatableString("%s", "tab.injection.send.toclient"));
|
||||
|
||||
lnk_clearHistory.textProperty().bind(new TranslatableString("%s", "tab.injection.history.clear"));
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
HPacket[] packets = parsePackets("{l}{h:3}{i:967585}{i:9589}{s:\"furni_inscriptionfuckfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionfurni_inscriptionsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\"}{s:\"sirjonasxx-II\"}{s:\"\"}{i:188}{i:0}{i:0}{b:false}");
|
||||
System.out.println(new HPacket("{l}{h:2550}{s:\"ClientPerf\"\"ormance\\\"}\"}{s:\"23\"}{s:\"fps\"}{s:\"Avatars: 1, Objects: 0\"}{i:76970180}").toExpression());
|
||||
|
@ -4,8 +4,11 @@ import com.tulskiy.keymaster.common.Provider;
|
||||
import gearth.GEarth;
|
||||
import gearth.services.scheduler.Interval;
|
||||
import gearth.services.scheduler.Scheduler;
|
||||
import gearth.ui.translations.LanguageBundle;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.application.Platform;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.VBox;
|
||||
@ -49,6 +52,9 @@ public class SchedulerController extends SubForm {
|
||||
|
||||
private Scheduler<InteractableScheduleItem> scheduler = null;
|
||||
|
||||
private TranslatableString addoredit;
|
||||
public Label lbl_tableIndex, lbl_tablePacket, lbl_tableInterval, lbl_tableDest, lbl_tableEdit, lbl_setupPacket, lbl_setupInterval;
|
||||
|
||||
|
||||
public void initialize() {
|
||||
scrollpane.widthProperty().addListener(observable -> header.setPrefWidth(scrollpane.getWidth()));
|
||||
@ -57,10 +63,6 @@ public class SchedulerController extends SubForm {
|
||||
txt_packet.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||
txt_delay.textProperty().addListener(event -> Platform.runLater(this::updateUI));
|
||||
|
||||
btn_clear.setTooltip(new Tooltip(GEarth.translation.getString("tab.scheduler.button.clear.tooltip")));
|
||||
btn_save.setTooltip(new Tooltip(GEarth.translation.getString("tab.scheduler.button.save.tooltip")));
|
||||
btn_load.setTooltip(new Tooltip(GEarth.translation.getString("tab.scheduler.button.load.tooltip")));
|
||||
|
||||
updateUI();
|
||||
|
||||
//register hotkeys
|
||||
@ -77,6 +79,8 @@ public class SchedulerController extends SubForm {
|
||||
provider.register(KeyStroke.getKeyStroke("control shift " + ii[0]), hotKey -> switchPauseHotkey(ii[0]));
|
||||
}
|
||||
System.setErr(err);
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -158,7 +162,7 @@ public class SchedulerController extends SubForm {
|
||||
rb_outgoing.setSelected(newItem.getDestinationProperty().get() == HMessage.Direction.TOSERVER);
|
||||
|
||||
isBeingEdited = newItem;
|
||||
btn_addoredit.setText(GEarth.translation.getString("tab.scheduler.button.edit"));
|
||||
addoredit.setKey(0, "tab.scheduler.button.edit");
|
||||
updateUI();
|
||||
newItem.onIsBeingUpdatedTrigger();
|
||||
}
|
||||
@ -176,7 +180,7 @@ public class SchedulerController extends SubForm {
|
||||
rb_incoming.setSelected(true);
|
||||
rb_outgoing.setSelected(false);
|
||||
|
||||
btn_addoredit.setText(GEarth.translation.getString("tab.scheduler.button.add"));
|
||||
addoredit.setKey(0, "tab.scheduler.button.add");
|
||||
updateUI();
|
||||
}
|
||||
|
||||
@ -204,9 +208,9 @@ public class SchedulerController extends SubForm {
|
||||
|
||||
//Set extension filter
|
||||
FileChooser.ExtensionFilter extFilter =
|
||||
new FileChooser.ExtensionFilter(GEarth.translation.getString("tab.scheduler.filetype"), "*.sched");
|
||||
new FileChooser.ExtensionFilter(LanguageBundle.get("tab.scheduler.filetype"), "*.sched");
|
||||
fileChooser.getExtensionFilters().add(extFilter);
|
||||
fileChooser.setTitle(GEarth.translation.getString("tab.scheduler.button.save.windowtitle"));
|
||||
fileChooser.setTitle(LanguageBundle.get("tab.scheduler.button.save.windowtitle"));
|
||||
|
||||
//Show save file dialog
|
||||
File file = fileChooser.showSaveDialog(parentController.getStage());
|
||||
@ -235,9 +239,9 @@ public class SchedulerController extends SubForm {
|
||||
List<InteractableScheduleItem> list = new ArrayList<>();
|
||||
|
||||
FileChooser fileChooser = new FileChooser();
|
||||
fileChooser.setTitle(GEarth.translation.getString("tab.scheduler.button.load.windowtitle"));
|
||||
fileChooser.setTitle(LanguageBundle.get("tab.scheduler.button.load.windowtitle"));
|
||||
fileChooser.getExtensionFilters().addAll(
|
||||
new FileChooser.ExtensionFilter(GEarth.translation.getString("tab.scheduler.filetype"), "*.sched"));
|
||||
new FileChooser.ExtensionFilter(LanguageBundle.get("tab.scheduler.filetype"), "*.sched"));
|
||||
File selectedFile = fileChooser.showOpenDialog(parentController.getStage());
|
||||
if (selectedFile != null) {
|
||||
|
||||
@ -263,4 +267,35 @@ public class SchedulerController extends SubForm {
|
||||
load(list);
|
||||
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
addoredit = new TranslatableString("%s", "tab.scheduler.button.add");
|
||||
btn_addoredit.textProperty().bind(addoredit);
|
||||
|
||||
btn_clear.textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.clear"));
|
||||
btn_clear.setTooltip(new Tooltip());
|
||||
btn_clear.getTooltip().textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.clear.tooltip"));
|
||||
|
||||
btn_save.textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.save"));
|
||||
btn_save.setTooltip(new Tooltip());
|
||||
btn_save.getTooltip().textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.save.tooltip"));
|
||||
|
||||
btn_load.textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.load"));
|
||||
btn_load.setTooltip(new Tooltip());
|
||||
btn_load.getTooltip().textProperty().bind(new TranslatableString("%s", "tab.scheduler.button.load.tooltip"));
|
||||
|
||||
lbl_tableIndex.textProperty().bind(new TranslatableString("%s", "tab.scheduler.table.index"));
|
||||
lbl_tablePacket.textProperty().bind(new TranslatableString("%s", "tab.scheduler.table.packet"));
|
||||
lbl_tableInterval.textProperty().bind(new TranslatableString("%s", "tab.scheduler.table.interval"));
|
||||
lbl_tableDest.textProperty().bind(new TranslatableString("%s", "tab.scheduler.table.destination"));
|
||||
lbl_tableEdit.textProperty().bind(new TranslatableString("%s", "tab.scheduler.table.edit"));
|
||||
|
||||
lbl_setupPacket.textProperty().bind(new TranslatableString("%s:", "tab.scheduler.setup.packet"));
|
||||
lbl_setupInterval.textProperty().bind(new TranslatableString("%s:", "tab.scheduler.setup.interval"));
|
||||
|
||||
rb_incoming.textProperty().bind(new TranslatableString("%s", "tab.scheduler.direction.in"));
|
||||
rb_outgoing.textProperty().bind(new TranslatableString("%s", "tab.scheduler.direction.out"));
|
||||
|
||||
cbx_hotkeys.textProperty().bind(new TranslatableString("%s", "tab.scheduler.hotkeys"));
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
package gearth.ui.subforms.tools;
|
||||
|
||||
import gearth.services.packet_info.PacketInfoManager;
|
||||
import gearth.ui.translations.TranslatableString;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.input.KeyCode;
|
||||
@ -27,6 +29,8 @@ public class ToolsController extends SubForm {
|
||||
public Button btn_toPacket;
|
||||
public TextArea txt_exprArea;
|
||||
|
||||
public Label lbl_integer, lbl_uShort, lbl_encodingDecoding, lbl_packetToExpression;
|
||||
|
||||
//TODO: toExpression() without bytelength limit for this use only
|
||||
|
||||
public void initialize() {
|
||||
@ -115,6 +119,7 @@ public class ToolsController extends SubForm {
|
||||
}
|
||||
});
|
||||
|
||||
initLanguageBinding();
|
||||
}
|
||||
|
||||
public void btnEncodeInt_clicked(ActionEvent actionEvent) {
|
||||
@ -156,4 +161,20 @@ public class ToolsController extends SubForm {
|
||||
public void btn_toPacket_clicked(ActionEvent actionEvent) {
|
||||
txt_packetArea.setText(parseToPacket(txt_exprArea.getText()).toString());
|
||||
}
|
||||
|
||||
private void initLanguageBinding() {
|
||||
lbl_integer.textProperty().bind(new TranslatableString("%s:", "tab.tools.type.integer"));
|
||||
lbl_uShort.textProperty().bind(new TranslatableString("%s:", "tab.tools.type.ushort"));
|
||||
|
||||
TranslatableString encode = new TranslatableString("%s", "tab.tools.button.encode");
|
||||
TranslatableString decode = new TranslatableString("%s", "tab.tools.button.decode");
|
||||
btnEncodeInt.textProperty().bind(encode);
|
||||
btnEncodeUShort.textProperty().bind(encode);
|
||||
btnDecodeInt.textProperty().bind(decode);
|
||||
btnDecodeUshort.textProperty().bind(decode);
|
||||
|
||||
lbl_encodingDecoding.textProperty().bind(new TranslatableString("%s/%s", "tab.tools.encoding", "tab.tools.decoding"));
|
||||
|
||||
lbl_packetToExpression.textProperty().bind(new TranslatableString("%s <-> %s", "tab.tools.packet", "tab.tools.expression"));
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package gearth.ui.translations;
|
||||
|
||||
import gearth.GEarth;
|
||||
import gearth.misc.Cacher;
|
||||
import gearth.services.internal_extensions.extensionstore.application.GExtensionStoreController;
|
||||
import gearth.ui.themes.Theme;
|
||||
|
||||
import java.util.Enumeration;
|
||||
@ -41,6 +42,7 @@ public class LanguageBundle extends ResourceBundle {
|
||||
public static void setLanguage(Language lang) {
|
||||
current = lang;
|
||||
requireUpdate.forEach(TranslatableString::trigger);
|
||||
GExtensionStoreController.reloadPage();
|
||||
Cacher.put(LANGUAGE_CACHE_KEY, current.toString());
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,82 @@
|
||||
package gearth.ui.translations;
|
||||
|
||||
import gearth.misc.StringifyAble;
|
||||
import javafx.beans.value.ObservableValueBase;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class TranslatableString extends ObservableValueBase<String> {
|
||||
private final String key;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public TranslatableString(String key) {
|
||||
this.key = key;
|
||||
public class TranslatableString extends ObservableValueBase<String> implements StringifyAble {
|
||||
private String format;
|
||||
private String[] keys;
|
||||
|
||||
public TranslatableString(String format, String... keys) {
|
||||
this.format = format;
|
||||
this.keys = keys;
|
||||
this.fireValueChangedEvent();
|
||||
LanguageBundle.addTranslatableString(this);
|
||||
}
|
||||
|
||||
private TranslatableString(String fromString) {
|
||||
constructFromString(fromString);
|
||||
}
|
||||
|
||||
public String getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return LanguageBundle.get(key);
|
||||
return String.format(format, Arrays.stream(keys).map(LanguageBundle::get).toArray());
|
||||
}
|
||||
|
||||
public void setKey(int index, String key) {
|
||||
keys[index] = key;
|
||||
fireValueChangedEvent();
|
||||
}
|
||||
|
||||
public void setKeys(String... keys) {
|
||||
this.keys = keys;
|
||||
fireValueChangedEvent();
|
||||
}
|
||||
|
||||
public void setFormat(String format) {
|
||||
this.format = format;
|
||||
fireValueChangedEvent();
|
||||
}
|
||||
|
||||
public void setFormatAndKeys(String format, String... keys) {
|
||||
this.format = format;
|
||||
this.keys = keys;
|
||||
fireValueChangedEvent();
|
||||
}
|
||||
|
||||
protected void trigger() {
|
||||
fireValueChangedEvent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String stringify() {
|
||||
return new JSONObject()
|
||||
.put("format", format)
|
||||
.put("keys", keys)
|
||||
.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void constructFromString(String str) {
|
||||
JSONObject jsonObject = new JSONObject(str);
|
||||
this.format = jsonObject.getString("format");
|
||||
this.keys = jsonObject.getJSONArray("keys")
|
||||
.toList().stream()
|
||||
.map(k -> (String) k)
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
|
||||
public static TranslatableString fromString(String str) {
|
||||
return new TranslatableString(str);
|
||||
}
|
||||
}
|
||||
|
@ -8,83 +8,83 @@
|
||||
<BorderPane fx:id="borderPane" prefHeight="560.0" prefWidth="820.0" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.services.internal_extensions.uilogger.UiLoggerController">
|
||||
<top>
|
||||
<MenuBar BorderPane.alignment="CENTER">
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.window">
|
||||
<Menu fx:id="menu_window" mnemonicParsing="false" text="Window">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkAlwaysOnTop" mnemonicParsing="false" onAction="#toggleAlwaysOnTop" text="%ext.logger.menu.window.alwaysontop" />
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.window.onconnect">
|
||||
<CheckMenuItem fx:id="chkAlwaysOnTop" mnemonicParsing="false" onAction="#toggleAlwaysOnTop" text="Always on top" />
|
||||
<Menu fx:id="menu_window_onConnect" mnemonicParsing="false" text="On connect">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkOpenOnConnect" mnemonicParsing="false" text="%ext.logger.menu.window.onconnect.openwindow" />
|
||||
<CheckMenuItem fx:id="chkResetOnConnect" mnemonicParsing="false" selected="true" text="%ext.logger.menu.window.onconnect.reset" />
|
||||
<CheckMenuItem fx:id="chkOpenOnConnect" mnemonicParsing="false" text="Open window" />
|
||||
<CheckMenuItem fx:id="chkResetOnConnect" mnemonicParsing="false" selected="true" text="Reset packetlogger" />
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.window.ondisconnect">
|
||||
<Menu fx:id="menu_window_onDisconnect" mnemonicParsing="false" text="%ext.logger.menu.window.ondisconnect">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkHideOnDisconnect" mnemonicParsing="false" selected="true" text="%ext.logger.menu.window.ondisconnect.hidewindow" />
|
||||
<CheckMenuItem fx:id="chkResetOnDisconnect" mnemonicParsing="false" text="%ext.logger.menu.window.ondisconnect.reset" />
|
||||
<CheckMenuItem fx:id="chkHideOnDisconnect" mnemonicParsing="false" selected="true" text="Hide window" />
|
||||
<CheckMenuItem fx:id="chkResetOnDisconnect" mnemonicParsing="false" text="Reset packetlogger" />
|
||||
</items>
|
||||
</Menu>
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.view">
|
||||
<CheckMenuItem fx:id="chkViewIncoming" mnemonicParsing="false" text="%ext.logger.menu.view.incoming">
|
||||
<Menu fx:id="menu_view" mnemonicParsing="false" text="View">
|
||||
<CheckMenuItem fx:id="chkViewIncoming" mnemonicParsing="false" text="View incoming">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="I" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></CheckMenuItem>
|
||||
<CheckMenuItem fx:id="chkViewOutgoing" mnemonicParsing="false" selected="true" text="%ext.logger.menu.view.outgoing">
|
||||
<CheckMenuItem fx:id="chkViewOutgoing" mnemonicParsing="false" selected="true" text="View outgoing">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="O" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></CheckMenuItem>
|
||||
<CheckMenuItem fx:id="chkAutoscroll" mnemonicParsing="false" selected="true" text="%ext.logger.menu.view.autoscroll">
|
||||
<CheckMenuItem fx:id="chkAutoscroll" mnemonicParsing="false" selected="true" text="Autoscroll">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="L" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></CheckMenuItem>
|
||||
<MenuItem mnemonicParsing="false" onAction="#clearText" text="%ext.logger.menu.view.cleartext">
|
||||
<MenuItem fx:id="menuItem_clear" mnemonicParsing="false" onAction="#clearText" text="Clear text">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="E" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></MenuItem>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.packets">
|
||||
<Menu fx:id="menu_packets" mnemonicParsing="false" text="Packets">
|
||||
<items>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails">
|
||||
<Menu fx:id="menu_packets_details" mnemonicParsing="false" text="Display details">
|
||||
<items>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.byterep">
|
||||
<Menu fx:id="menu_packets_details_byteRep" mnemonicParsing="false" text="Byte representation">
|
||||
<items>
|
||||
<RadioMenuItem fx:id="chkReprLegacy" mnemonicParsing="false" selected="true" text="%ext.logger.menu.packets.displaydetails.byterep.legacy">
|
||||
<RadioMenuItem fx:id="chkReprLegacy" mnemonicParsing="false" selected="true" text="Legacy">
|
||||
<toggleGroup>
|
||||
<ToggleGroup fx:id="byterepr" />
|
||||
</toggleGroup>
|
||||
</RadioMenuItem>
|
||||
<RadioMenuItem fx:id="chkReprHex" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.byterep.hexdump" toggleGroup="$byterepr" />
|
||||
<RadioMenuItem fx:id="chkReprRawHex" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.byterep.rawhex" toggleGroup="$byterepr" />
|
||||
<RadioMenuItem fx:id="chkReprNone" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.byterep.none" toggleGroup="$byterepr" />
|
||||
<RadioMenuItem fx:id="chkReprHex" mnemonicParsing="false" text="Hexdump" toggleGroup="$byterepr" />
|
||||
<RadioMenuItem fx:id="chkReprRawHex" mnemonicParsing="false" text="Raw hex" toggleGroup="$byterepr" />
|
||||
<RadioMenuItem fx:id="chkReprNone" mnemonicParsing="false" text="None" toggleGroup="$byterepr" />
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.message">
|
||||
<Menu fx:id="menu_packets_details_message" mnemonicParsing="false" text="Message">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkMessageName" mnemonicParsing="false" selected="true" text="%ext.logger.menu.packets.displaydetails.message.name" />
|
||||
<CheckMenuItem fx:id="chkMessageHash" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.message.hash" />
|
||||
<CheckMenuItem fx:id="chkMessageId" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.message.id" />
|
||||
<CheckMenuItem fx:id="chkMessageName" mnemonicParsing="false" selected="true" text="Name" />
|
||||
<CheckMenuItem fx:id="chkMessageHash" mnemonicParsing="false" text="Hash" />
|
||||
<CheckMenuItem fx:id="chkMessageId" mnemonicParsing="false" text="Id" />
|
||||
</items>
|
||||
</Menu>
|
||||
<CheckMenuItem fx:id="chkDisplayStructure" mnemonicParsing="false" selected="true" text="%ext.logger.menu.packets.displaydetails.structure" />
|
||||
<CheckMenuItem fx:id="chkTimestamp" mnemonicParsing="false" text="%ext.logger.menu.packets.displaydetails.timestamp" />
|
||||
<CheckMenuItem fx:id="chkDisplayStructure" mnemonicParsing="false" selected="true" text="Structure" />
|
||||
<CheckMenuItem fx:id="chkTimestamp" mnemonicParsing="false" text="Timestamp" />
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="%ext.logger.menu.packets.antispam">
|
||||
<Menu fx:id="menu_packets_antiSpam" mnemonicParsing="false" text="Anti-spam filter">
|
||||
<items>
|
||||
<RadioMenuItem fx:id="chkAntiSpam_none" mnemonicParsing="false" selected="true" text="%ext.logger.menu.packets.antispam.none">
|
||||
<RadioMenuItem fx:id="chkAntiSpam_none" mnemonicParsing="false" selected="true" text="None">
|
||||
<toggleGroup>
|
||||
<ToggleGroup fx:id="antispam" />
|
||||
</toggleGroup>
|
||||
</RadioMenuItem>
|
||||
<RadioMenuItem fx:id="chkAntiSpam_low" mnemonicParsing="false" text="%ext.logger.menu.packets.antispam.low" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_medium" mnemonicParsing="false" text="%ext.logger.menu.packets.antispam.med" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_high" mnemonicParsing="false" text="%ext.logger.menu.packets.antispam.high" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_ultra" mnemonicParsing="false" text="%ext.logger.menu.packets.antispam.ultra" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_low" mnemonicParsing="false" text="Low" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_medium" mnemonicParsing="false" text="Medium" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_high" mnemonicParsing="false" text="High" toggleGroup="$antispam" />
|
||||
<RadioMenuItem fx:id="chkAntiSpam_ultra" mnemonicParsing="false" text="Ultra" toggleGroup="$antispam" />
|
||||
</items>
|
||||
</Menu>
|
||||
<CheckMenuItem fx:id="chkSkipBigPackets" mnemonicParsing="false" selected="true" text="%ext.logger.menu.packets.skipbig" />
|
||||
<MenuItem mnemonicParsing="false" onAction="#exportAll" text="%ext.logger.menu.packets.exportall" />
|
||||
<CheckMenuItem fx:id="chkSkipBigPackets" mnemonicParsing="false" selected="true" text="Skip big packets" />
|
||||
<MenuItem fx:id="menuItem_exportAll" mnemonicParsing="false" onAction="#exportAll" text="Export all" />
|
||||
</items>
|
||||
</Menu>
|
||||
</MenuBar>
|
||||
@ -94,7 +94,7 @@
|
||||
<padding>
|
||||
<Insets left="10.0" top="1.0" />
|
||||
</padding>
|
||||
<Label fx:id="lblViewIncoming" style="-fx-text-fill: black !important" text="%ext.logger.state.viewincoming.base">
|
||||
<Label fx:id="lblViewIncoming" style="-fx-text-fill: black !important" text="View incoming: True">
|
||||
<FlowPane.margin>
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
@ -104,7 +104,7 @@
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
</Label>
|
||||
<Label fx:id="lblViewOutgoing" style="-fx-text-fill: black !important" text="%ext.logger.state.viewoutgoing.base">
|
||||
<Label fx:id="lblViewOutgoing" style="-fx-text-fill: black !important" text="View outgoing: True">
|
||||
<FlowPane.margin>
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
@ -114,7 +114,7 @@
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
</Label>
|
||||
<Label fx:id="lblAutoScrolll" layoutX="151.0" layoutY="11.0" style="-fx-text-fill: black !important" text="%ext.logger.state.autoscroll.base">
|
||||
<Label fx:id="lblAutoScroll" layoutX="151.0" layoutY="11.0" style="-fx-text-fill: black !important" text="Autoscroll: True">
|
||||
<FlowPane.margin>
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin></Label>
|
||||
@ -123,7 +123,7 @@
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
</Label>
|
||||
<Label fx:id="lblPacketInfo" layoutX="283.0" layoutY="11.0" style="-fx-text-fill: black !important" text="%ext.logger.state.packetinfo.base">
|
||||
<Label fx:id="lblPacketInfo" layoutX="283.0" layoutY="11.0" style="-fx-text-fill: black !important" text="Packetinfo: False">
|
||||
<FlowPane.margin>
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
@ -133,7 +133,7 @@
|
||||
<Insets right="10.0" />
|
||||
</FlowPane.margin>
|
||||
</Label>
|
||||
<Label fx:id="lblFiltered" layoutX="389.0" layoutY="11.0" style="-fx-text-fill: black !important" text="%ext.logger.state.filtered.base" />
|
||||
<Label fx:id="lblFiltered" layoutX="389.0" layoutY="11.0" style="-fx-text-fill: black !important" text="Filtered: 0" />
|
||||
</FlowPane>
|
||||
</bottom>
|
||||
</BorderPane>
|
||||
|
@ -78,13 +78,10 @@
|
||||
<RowConstraints />
|
||||
<RowConstraints />
|
||||
</rowConstraints>
|
||||
<CheckBox fx:id="cbx_autodetect" mnemonicParsing="false" selected="true" text="Auto-detect" textFill="#000000a9" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<CheckBox fx:id="cbx_autodetect" mnemonicParsing="false" selected="true" text="Auto-detect" textAlignment="CENTER" textFill="#000000a9" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<GridPane.margin>
|
||||
<Insets left="-5.0" />
|
||||
</GridPane.margin>
|
||||
<font>
|
||||
<Font size="12.0" />
|
||||
</font>
|
||||
</CheckBox>
|
||||
<Button fx:id="btnConnect" alignment="CENTER" maxWidth="1.7976931348623157E308" onAction="#btnConnect_clicked" text="Connect" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="CENTER">
|
||||
<GridPane.margin>
|
||||
|
@ -31,11 +31,11 @@
|
||||
<VBox.margin>
|
||||
<Insets bottom="-2.0" left="-2.0" right="-2.0" top="-2.0" />
|
||||
</VBox.margin>
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.extensions.table.title" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.extensions.table.description" GridPane.columnIndex="1" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.extensions.table.author" GridPane.columnIndex="2" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.extensions.table.version" GridPane.columnIndex="3" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.extensions.table.edit" GridPane.columnIndex="4" />
|
||||
<Label fx:id="lbl_tableTitle" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Title" />
|
||||
<Label fx:id="lbl_tableDesc" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Description" GridPane.columnIndex="1" />
|
||||
<Label fx:id="lbl_tableAuthor" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Author" GridPane.columnIndex="2" />
|
||||
<Label fx:id="lbl_tableVersion" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Version" GridPane.columnIndex="3" />
|
||||
<Label fx:id="lbl_tableEdit" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Edit" GridPane.columnIndex="4" />
|
||||
</GridPane>
|
||||
</VBox>
|
||||
</ScrollPane>
|
||||
@ -61,19 +61,19 @@
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<Button fx:id="btn_gpython" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#gpythonBtnClicked" text="%tab.extensions.button.pythonshell" GridPane.columnIndex="3" />
|
||||
<Button fx:id="btn_gpython" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#gpythonBtnClicked" text="G-Python Shell" GridPane.columnIndex="3" />
|
||||
<TextField fx:id="ext_port" editable="false" prefHeight="26.0" prefWidth="157.0" GridPane.columnIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets left="-7.0" />
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
<Label maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="%tab.extensions.port" textFill="#000000bb">
|
||||
<Label fx:id="lbl_port" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Port:" textFill="#000000bb">
|
||||
<GridPane.margin>
|
||||
<Insets left="3.0" />
|
||||
</GridPane.margin>
|
||||
</Label>
|
||||
<Button fx:id="btn_install" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#installBtnClicked" text="%tab.extensions.button.install" GridPane.columnIndex="5" />
|
||||
<Button fx:id="btn_viewExtensionConsole" layoutX="401.0" layoutY="10.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#extConsoleBtnClicked" text="%tab.extensions.button.logs" GridPane.columnIndex="4" />
|
||||
<Button fx:id="btn_install" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#installBtnClicked" text="Install" GridPane.columnIndex="5" />
|
||||
<Button fx:id="btn_viewExtensionConsole" layoutX="401.0" layoutY="10.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#extConsoleBtnClicked" text="View logs" GridPane.columnIndex="4" />
|
||||
</GridPane>
|
||||
</GridPane>
|
||||
</GridPane>
|
||||
|
@ -15,9 +15,9 @@
|
||||
<children>
|
||||
<AnchorPane prefHeight="262.0" prefWidth="318.0">
|
||||
<children>
|
||||
<CheckBox fx:id="cbx_alwaysOnTop" layoutX="14.0" layoutY="232.0" mnemonicParsing="false" text="%tab.extra.options.alwaysontop" />
|
||||
<Hyperlink fx:id="url_troubleshooting" layoutX="223.0" layoutY="232.0" text="%tab.extra.troubleshooting" />
|
||||
<Label layoutX="14.0" layoutY="8.0" text="%tab.extra.notepad" textFill="#000000bd" />
|
||||
<CheckBox fx:id="cbx_alwaysOnTop" layoutX="14.0" layoutY="232.0" mnemonicParsing="false" text="Always on top" />
|
||||
<Hyperlink fx:id="url_troubleshooting" layoutX="223.0" layoutY="232.0" text="Troubleshooting" />
|
||||
<Label fx:id="lbl_notepad" layoutX="14.0" layoutY="8.0" text="Notepad:" textFill="#000000bd" />
|
||||
<TextArea fx:id="txtarea_notepad" layoutX="11.0" layoutY="31.0" prefHeight="197.0" prefWidth="312.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
@ -50,9 +50,9 @@
|
||||
<Insets left="7.0" top="3.0" />
|
||||
</padding>
|
||||
<children>
|
||||
<CheckBox fx:id="cbx_useSocks" mnemonicParsing="false" text="%tab.extra.options.advanced.socks" />
|
||||
<CheckBox fx:id="cbx_disableDecryption" mnemonicParsing="false" text="%tab.extra.options.advanced.disabledecryption" GridPane.rowIndex="2" />
|
||||
<CheckBox fx:id="cbx_debug" mnemonicParsing="false" text="%tab.extra.options.advanced.debugstdout" GridPane.rowIndex="3" />
|
||||
<CheckBox fx:id="cbx_useSocks" mnemonicParsing="false" text="Use SOCKS proxy" />
|
||||
<CheckBox fx:id="cbx_disableDecryption" mnemonicParsing="false" text="Disable decryption" GridPane.rowIndex="2" />
|
||||
<CheckBox fx:id="cbx_debug" mnemonicParsing="false" text="Debug to stdout" GridPane.rowIndex="3" />
|
||||
<GridPane fx:id="grd_socksInfo" disable="true" prefHeight="54.0" prefWidth="81.0" GridPane.rowIndex="1">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
@ -77,8 +77,8 @@
|
||||
<RowConstraints maxHeight="29.0" minHeight="29.0" prefHeight="29.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="%tab.extra.options.advanced.proxy.ip" />
|
||||
<Label text="%tab.extra.options.advanced.proxy.port" GridPane.rowIndex="1" />
|
||||
<Label fx:id="lbl_proxyIp" text="%tab.extra.options.advanced.proxy.ip" />
|
||||
<Label fx:id="lbl_proxyPort" text="%tab.extra.options.advanced.proxy.port" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="txt_socksPort" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<opaqueInsets>
|
||||
<Insets />
|
||||
@ -104,7 +104,7 @@
|
||||
</GridPane>
|
||||
</children>
|
||||
</GridPane>
|
||||
<CheckBox fx:id="cbx_advanced" mnemonicParsing="false" text="%tab.extra.options.advanced" textFill="#000000ba" GridPane.rowIndex="3">
|
||||
<CheckBox fx:id="cbx_advanced" mnemonicParsing="false" text="Advanced" textFill="#000000ba" GridPane.rowIndex="3">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
@ -112,12 +112,12 @@
|
||||
<Insets top="2.0" />
|
||||
</padding>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="cbx_gpython" mnemonicParsing="false" onAction="#gpythonCbxClick" text="%tab.extra.options.pythonscripting" textFill="#000000ba" GridPane.rowIndex="2">
|
||||
<CheckBox fx:id="cbx_gpython" mnemonicParsing="false" onAction="#gpythonCbxClick" text="G-Python scripting" textFill="#000000ba" GridPane.rowIndex="2">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
</CheckBox>
|
||||
<CheckBox fx:id="cbx_admin" layoutX="20.0" layoutY="25.0" mnemonicParsing="false" onAction="#adminCbxClick" selected="true" text="%tab.extra.options.staffpermissions" textFill="#000000ba" GridPane.rowIndex="1">
|
||||
<CheckBox fx:id="cbx_admin" layoutX="20.0" layoutY="25.0" mnemonicParsing="false" onAction="#adminCbxClick" selected="true" text="Client-side staff permissions" textFill="#000000ba" GridPane.rowIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
|
@ -20,22 +20,22 @@
|
||||
<Font size="18.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label layoutX="260.0" layoutY="57.0" text="%tab.info.description" textFill="#000000b2">
|
||||
<Label fx:id="lbl_description" layoutX="260.0" layoutY="57.0" text="Habbo packet manipulator for Linux, Windows & Mac" textFill="#000000b2">
|
||||
<font>
|
||||
<Font size="14.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label layoutX="260.0" layoutY="92.0" text="%tab.info.createdby" textFill="#000000b2">
|
||||
<Label fx:id="lbl_createdBy" layoutX="260.0" layoutY="92.0" text="Created by:" textFill="#000000b2">
|
||||
<font>
|
||||
<Font name="System Bold" size="14.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label layoutX="344.0" layoutY="92.0" text="sirjonasxx" textFill="#000000b2">
|
||||
<Label layoutX="363.0" layoutY="92.0" text="sirjonasxx" textFill="#000000b2">
|
||||
<font>
|
||||
<Font size="14.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label layoutX="260.0" layoutY="124.0" text="%tab.info.contributors" textFill="#000000b2">
|
||||
<Label fx:id="lbl_contrib" layoutX="260.0" layoutY="124.0" text="Contributors:" textFill="#000000b2">
|
||||
<font>
|
||||
<Font name="System Bold" size="14.0" />
|
||||
</font>
|
||||
@ -75,7 +75,7 @@
|
||||
<Font size="14.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<Label layoutX="491.0" layoutY="92.0" text="%tab.info.links" textFill="#000000b2">
|
||||
<Label fx:id="lbl_links" layoutX="491.0" layoutY="92.0" text="Links:" textFill="#000000b2">
|
||||
<font>
|
||||
<Font name="System Bold" size="14.0" />
|
||||
</font>
|
||||
@ -85,7 +85,7 @@
|
||||
<Hyperlink fx:id="link_g_tanji" layoutX="487.0" layoutY="152.0" text="Github - Tanji" />
|
||||
<Hyperlink fx:id="link_d_gearth" layoutX="487.0" layoutY="172.0" text="Discord - G-Earth" />
|
||||
<Hyperlink fx:id="link_g_store" layoutX="487.0" layoutY="212.0" text="G-ExtensionStore" />
|
||||
<Button layoutX="537.0" layoutY="14.0" mnemonicParsing="false" onAction="#donate" prefHeight="20.0" prefWidth="100.0" text="%tab.info.donate" />
|
||||
<Button fx:id="btn_donate" layoutX="537.0" layoutY="14.0" mnemonicParsing="false" onAction="#donate" prefHeight="20.0" prefWidth="100.0" text="Donate BTC" />
|
||||
<Hyperlink fx:id="link_t_gearth" layoutX="487.0" layoutY="192.0" text="Twitter - G-Earth" />
|
||||
<!--<Hyperlink fx:id="link_d_bonnie" layoutX="400.0" layoutY="221.0" text="Discord - BonnieScripting (pt/br)" />-->
|
||||
</children>
|
||||
|
@ -37,12 +37,12 @@
|
||||
<GridPane.margin>
|
||||
<Insets left="13.0" right="13.0" top="4.0" />
|
||||
</GridPane.margin>
|
||||
<Text fx:id="lbl_corruption" strokeType="OUTSIDE" strokeWidth="0.0" styleClass="corrupted-label" text="%tab.injection.corrupted.true">
|
||||
<Text fx:id="lbl_corruption" strokeType="OUTSIDE" strokeWidth="0.0" styleClass="corrupted-label" text="isCorrupted: True">
|
||||
<font>
|
||||
<Font name="System Italic" size="11.0" />
|
||||
</font>
|
||||
</Text>
|
||||
<Text fx:id="lbl_pcktInfo" fill="#000000b2" nodeOrientation="LEFT_TO_RIGHT" strokeType="OUTSIDE" strokeWidth="0.0" styleClass="pckt-info" text="%tab.injection.description" GridPane.columnIndex="1" GridPane.halignment="RIGHT">
|
||||
<Text fx:id="lbl_pcktInfo" fill="#000000b2" nodeOrientation="LEFT_TO_RIGHT" strokeType="OUTSIDE" strokeWidth="0.0" styleClass="pckt-info" text="header (id=NULL, length=0)" GridPane.columnIndex="1" GridPane.halignment="RIGHT">
|
||||
<font>
|
||||
<Font name="System Italic" size="11.0" />
|
||||
</font>
|
||||
@ -61,12 +61,12 @@
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<Button fx:id="btn_sendToServer" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#sendToServer_clicked" text="%tab.injection.send.toserver" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||
<Button fx:id="btn_sendToServer" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#sendToServer_clicked" text="Send to server" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="5.0" left="10.0" right="10.0" top="5.0" />
|
||||
</GridPane.margin>
|
||||
</Button>
|
||||
<Button fx:id="btn_sendToClient" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#sendToClient_clicked" text="%tab.injection.send.toclient" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||
<Button fx:id="btn_sendToClient" disable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#sendToClient_clicked" text="Send to client" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="5.0" left="10.0" right="10.0" top="5.0" />
|
||||
</GridPane.margin>
|
||||
@ -92,11 +92,11 @@
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Hyperlink alignment="CENTER_RIGHT" onAction="#clearHistoryClick" text="%tab.injection.history.clear" GridPane.columnIndex="1">
|
||||
<Hyperlink fx:id="lnk_clearHistory" alignment="CENTER_RIGHT" onAction="#clearHistoryClick" text="Clear" GridPane.columnIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets right="6.0" />
|
||||
</GridPane.margin></Hyperlink>
|
||||
<Label fx:id="lblHistory" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="%tab.injection.history" textFill="#000000cc">
|
||||
<Label fx:id="lblHistory" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="History:" textFill="#000000cc">
|
||||
<GridPane.margin>
|
||||
<Insets />
|
||||
</GridPane.margin>
|
||||
|
@ -31,11 +31,11 @@
|
||||
<VBox.margin>
|
||||
<Insets bottom="-2.0" left="-2.0" right="-2.0" top="-2.0" />
|
||||
</VBox.margin>
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.scheduler.table.index" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.scheduler.table.packet" GridPane.columnIndex="1" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.scheduler.table.interval" GridPane.columnIndex="2" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.scheduler.table.destination" GridPane.columnIndex="3" />
|
||||
<Label alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="%tab.scheduler.table.edit" GridPane.columnIndex="4" />
|
||||
<Label fx:id="lbl_tableIndex" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Index" />
|
||||
<Label fx:id="lbl_tablePacket" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Packet" GridPane.columnIndex="1" />
|
||||
<Label fx:id="lbl_tableInterval" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Interval" GridPane.columnIndex="2" />
|
||||
<Label fx:id="lbl_tableDest" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Destination" GridPane.columnIndex="3" />
|
||||
<Label fx:id="lbl_tableEdit" alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" style="-fx-text-fill: #666666; -fx-background-color: #F7F7F7;" text="Edit" GridPane.columnIndex="4" />
|
||||
</GridPane>
|
||||
</VBox>
|
||||
</ScrollPane>
|
||||
@ -67,14 +67,14 @@
|
||||
<Insets left="-7.0" />
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
<Label maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="%tab.scheduler.setup.packet" textFill="#000000bb">
|
||||
<Label fx:id="lbl_setupPacket" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Packet:" textFill="#000000bb">
|
||||
<GridPane.margin>
|
||||
<Insets left="3.0" />
|
||||
</GridPane.margin>
|
||||
</Label>
|
||||
<Button fx:id="btn_clear" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#clearBtnClicked" text="%tab.scheduler.button.clear" GridPane.columnIndex="3" />
|
||||
<Button fx:id="btn_save" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#saveBtnClicked" text="%tab.scheduler.button.save" GridPane.columnIndex="4" />
|
||||
<Button fx:id="btn_load" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#loadBtnClicked" text="%tab.scheduler.button.load" GridPane.columnIndex="5" />
|
||||
<Button fx:id="btn_clear" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#clearBtnClicked" text="Clear" GridPane.columnIndex="3" />
|
||||
<Button fx:id="btn_save" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#saveBtnClicked" text="S" GridPane.columnIndex="4" />
|
||||
<Button fx:id="btn_load" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#loadBtnClicked" text="L" GridPane.columnIndex="5" />
|
||||
</GridPane>
|
||||
<GridPane prefHeight="33.0" prefWidth="502.0" GridPane.rowIndex="1">
|
||||
<columnConstraints>
|
||||
@ -96,17 +96,17 @@
|
||||
<Insets right="5.0" />
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
<Label maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="%tab.scheduler.setup.interval" textFill="#000000bb">
|
||||
<Label fx:id="lbl_setupInterval" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" text="Interval:" textFill="#000000bb">
|
||||
<GridPane.margin>
|
||||
<Insets left="3.0" />
|
||||
</GridPane.margin>
|
||||
</Label>
|
||||
<Button fx:id="btn_addoredit" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#scheduleBtnClicked" text="%tab.scheduler.button.add" GridPane.columnIndex="4">
|
||||
<Button fx:id="btn_addoredit" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#scheduleBtnClicked" text="Add" GridPane.columnIndex="4">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="2.0" left="5.0" top="2.0" />
|
||||
</GridPane.margin>
|
||||
</Button>
|
||||
<RadioButton fx:id="rb_incoming" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%tab.scheduler.direction.in" GridPane.columnIndex="2">
|
||||
<RadioButton fx:id="rb_incoming" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="In" GridPane.columnIndex="2">
|
||||
<GridPane.margin>
|
||||
<Insets left="5.0" />
|
||||
</GridPane.margin>
|
||||
@ -114,12 +114,12 @@
|
||||
<ToggleGroup fx:id="scheduler_dest" />
|
||||
</toggleGroup>
|
||||
</RadioButton>
|
||||
<RadioButton fx:id="rb_outgoing" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="%tab.scheduler.direction.out" toggleGroup="$scheduler_dest" GridPane.columnIndex="3">
|
||||
<RadioButton fx:id="rb_outgoing" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="Out" toggleGroup="$scheduler_dest" GridPane.columnIndex="3">
|
||||
<GridPane.margin>
|
||||
<Insets left="5.0" />
|
||||
</GridPane.margin>
|
||||
</RadioButton>
|
||||
<CheckBox fx:id="cbx_hotkeys" mnemonicParsing="false" text="%tab.scheduler.hotkeys" textFill="#4d4d4d" GridPane.columnIndex="5">
|
||||
<CheckBox fx:id="cbx_hotkeys" mnemonicParsing="false" text="Enable hotkeys (Ctrl+Shift+Index)" textFill="#4d4d4d" GridPane.columnIndex="5">
|
||||
<GridPane.margin>
|
||||
<Insets left="32.0" />
|
||||
</GridPane.margin>
|
||||
|
@ -46,7 +46,7 @@
|
||||
<GridPane.margin>
|
||||
<Insets/>
|
||||
</GridPane.margin>
|
||||
<Label alignment="CENTER" text="%tab.tools.type.integer">
|
||||
<Label fx:id="lbl_integer" alignment="CENTER" text="Integer:">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0"/>
|
||||
</GridPane.margin>
|
||||
@ -59,7 +59,7 @@
|
||||
</TextField>
|
||||
<Button fx:id="btnEncodeInt" disable="true" maxHeight="1.7976931348623157E308"
|
||||
maxWidth="1.7976931348623157E308" mnemonicParsing="false"
|
||||
onAction="#btnEncodeInt_clicked" text="%tab.tools.button.encode" GridPane.columnIndex="2"
|
||||
onAction="#btnEncodeInt_clicked" text="Encode" GridPane.columnIndex="2"
|
||||
GridPane.halignment="CENTER">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="7.0" left="5.0" right="5.0" top="7.0"/>
|
||||
@ -67,7 +67,7 @@
|
||||
</Button>
|
||||
<Button fx:id="btnDecodeInt" disable="true" maxHeight="1.7976931348623157E308"
|
||||
maxWidth="1.7976931348623157E308" mnemonicParsing="false"
|
||||
onAction="#btnDecodeInt_clicked" text="%tab.tools.button.decode" GridPane.columnIndex="3"
|
||||
onAction="#btnDecodeInt_clicked" text="Decode" GridPane.columnIndex="3"
|
||||
GridPane.halignment="CENTER">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="7.0" left="5.0" right="5.0" top="7.0"/>
|
||||
@ -80,7 +80,7 @@
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
|
||||
<Label alignment="CENTER" text="%tab.tools.type.ushort" GridPane.rowIndex="1">
|
||||
<Label fx:id="lbl_uShort" alignment="CENTER" text="Ushort:" GridPane.rowIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets left="10.0"/>
|
||||
</GridPane.margin>
|
||||
@ -94,7 +94,7 @@
|
||||
</TextField>
|
||||
<Button fx:id="btnEncodeUShort" disable="true" maxHeight="1.7976931348623157E308"
|
||||
maxWidth="1.7976931348623157E308" mnemonicParsing="false"
|
||||
onAction="#btnEncodeUShort_clicked" text="%tab.tools.button.encode" GridPane.columnIndex="2"
|
||||
onAction="#btnEncodeUShort_clicked" text="Encode" GridPane.columnIndex="2"
|
||||
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="7.0" left="5.0" right="5.0" top="7.0"/>
|
||||
@ -102,7 +102,7 @@
|
||||
</Button>
|
||||
<Button fx:id="btnDecodeUshort" disable="true" maxHeight="1.7976931348623157E308"
|
||||
maxWidth="1.7976931348623157E308" mnemonicParsing="false"
|
||||
onAction="#btnDecodeUshort_clicked" text="%tab.tools.button.decode" GridPane.columnIndex="3"
|
||||
onAction="#btnDecodeUshort_clicked" text="Decode" GridPane.columnIndex="3"
|
||||
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
||||
<GridPane.margin>
|
||||
<Insets bottom="7.0" left="5.0" right="5.0" top="7.0"/>
|
||||
@ -116,7 +116,7 @@
|
||||
</TextField>
|
||||
|
||||
</GridPane>
|
||||
<Label text="%tab.tools.encodingdecoding" textFill="#000000cc">
|
||||
<Label fx:id="lbl_encodingDecoding" text="Encoding/Decoding" textFill="#000000cc">
|
||||
<GridPane.margin>
|
||||
<Insets left="6.0" top="5.0"/>
|
||||
</GridPane.margin>
|
||||
@ -179,7 +179,7 @@
|
||||
</GridPane.margin>
|
||||
</TextArea>
|
||||
</GridPane>
|
||||
<Label text="%tab.tools.packettoexpression" textFill="#000000cc">
|
||||
<Label fx:id="lbl_packetToExpression" text="Packet <-> Expression" textFill="#000000cc">
|
||||
<GridPane.margin>
|
||||
<Insets left="6.0" top="2.0"/>
|
||||
</GridPane.margin>
|
||||
|
@ -1015,11 +1015,11 @@ VBox > .split-menu-button.last > .arrow-button {
|
||||
}
|
||||
|
||||
#language-picker .context-menu {
|
||||
-fx-padding: 5 0 5 0;
|
||||
-fx-padding: 0;
|
||||
}
|
||||
|
||||
#language-picker .context-menu .menu-item {
|
||||
-fx-padding: 5 0 5 5;
|
||||
-fx-padding: 10 0 0 5;
|
||||
}
|
||||
|
||||
#language-picker .label {
|
||||
|
@ -1121,11 +1121,11 @@ VBox > .split-menu-button.last > .arrow-button {
|
||||
}
|
||||
|
||||
#language-picker .context-menu {
|
||||
-fx-padding: 5 0 5 0;
|
||||
-fx-padding: 0;
|
||||
}
|
||||
|
||||
#language-picker .context-menu .menu-item {
|
||||
-fx-padding: 0 0 0 5;
|
||||
-fx-padding: 10 0 0 5;
|
||||
}
|
||||
|
||||
#language-picker .label {
|
||||
|
@ -1014,11 +1014,11 @@ VBox > .split-menu-button.last > .arrow-button {
|
||||
}
|
||||
|
||||
#language-picker .context-menu {
|
||||
-fx-padding: 5 0 5 0;
|
||||
-fx-padding: 0;
|
||||
}
|
||||
|
||||
#language-picker .context-menu .menu-item {
|
||||
-fx-padding: 0 0 0 5;
|
||||
-fx-padding: 10 0 0 5;
|
||||
}
|
||||
|
||||
#language-picker .label {
|
||||
|
@ -21,8 +21,9 @@ tab.connection.autodetect=Auto-detect
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injection
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -39,11 +40,12 @@ tab.injection.log.packetwithid=Packet with id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Scheduler
|
||||
tab.scheduler.table.index=Index
|
||||
@ -51,8 +53,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Edit
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Clear
|
||||
tab.scheduler.button.clear.tooltip=Clear all items
|
||||
tab.scheduler.button.save=S
|
||||
@ -79,7 +81,7 @@ tab.extensions.table.edit.delete.tooltip=Close connection with this extension
|
||||
tab.extensions.table.edit.restart.tooltip=Restart this extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Uninstall this extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Are you sure want to uninstall this extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Install
|
||||
@ -90,7 +92,7 @@ tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Always on top
|
||||
tab.extra.options.staffpermissions=Client-side staff permissions
|
||||
@ -100,8 +102,8 @@ tab.extra.options.pythonscripting.alert.content=Before using G-Python, install t
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=More information here:
|
||||
tab.extra.options.advanced=Advanced
|
||||
tab.extra.options.advanced.socks=Use SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Disable decryption
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -111,9 +113,9 @@ tab.info.description=Habbo packet manipulator for Linux, Windows & Mac
|
||||
tab.info.donate=Donate BTC
|
||||
tab.info.donate.alert.title=Donate Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin public address:
|
||||
tab.info.createdby=Created by:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contributors:
|
||||
tab.info.createdby=Created by
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contributors
|
||||
|
||||
|
||||
## Alert
|
||||
@ -301,11 +303,7 @@ ext.logger.menu.packets.exportall=Export all
|
||||
ext.logger.menu.packets.exportall.windowtitle=Save Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=View Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=View Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtered
|
||||
ext.logger.state.filtered.base=Filtered: 0
|
||||
|
||||
@ -315,3 +313,5 @@ ext.logger.element.replaced=Replaced
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
||||
|
@ -23,8 +23,9 @@ tab.connection.autodetect=Auto-detect
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injection
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -41,11 +42,12 @@ tab.injection.log.packetwithid=Packet with id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Scheduler
|
||||
tab.scheduler.table.index=Index
|
||||
@ -53,8 +55,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Edit
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Clear
|
||||
tab.scheduler.button.clear.tooltip=Clear all items
|
||||
tab.scheduler.button.save=S
|
||||
@ -81,7 +83,7 @@ tab.extensions.table.edit.delete.tooltip=Close connection with this extension
|
||||
tab.extensions.table.edit.restart.tooltip=Restart this extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Uninstall this extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Are you sure want to uninstall this extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Install
|
||||
@ -92,7 +94,7 @@ tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Always on top
|
||||
tab.extra.options.staffpermissions=Client-side staff permissions
|
||||
@ -102,8 +104,8 @@ tab.extra.options.pythonscripting.alert.content=Before using G-Python, install t
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=More information here:
|
||||
tab.extra.options.advanced=Advanced
|
||||
tab.extra.options.advanced.socks=Use SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Disable decryption
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -113,9 +115,9 @@ tab.info.description=Habbo packet manipulator for Linux, Windows & Mac
|
||||
tab.info.donate=Donate BTC
|
||||
tab.info.donate.alert.title=Donate Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin public address:
|
||||
tab.info.createdby=Created by:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contributors:
|
||||
tab.info.createdby=Created by
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contributors
|
||||
|
||||
|
||||
## Alert
|
||||
@ -303,11 +305,7 @@ ext.logger.menu.packets.exportall=Export all
|
||||
ext.logger.menu.packets.exportall.windowtitle=Save Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=View Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=View Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtered
|
||||
ext.logger.state.filtered.base=Filtered: 0
|
||||
|
||||
@ -317,3 +315,5 @@ ext.logger.element.replaced=Replaced
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
||||
|
@ -5,6 +5,7 @@
|
||||
## Tabs
|
||||
|
||||
### Tab - Connection
|
||||
ext.logger.state.viewincoming.base=Mostrar Incoming: True
|
||||
tab.connection=Conexión
|
||||
tab.connection.client=Tipo de cliente:
|
||||
tab.connection.client.flash=Flash / Air
|
||||
@ -19,12 +20,13 @@ tab.connection.port=Puerto:
|
||||
tab.connection.host=Host:
|
||||
tab.connection.button.connect=Conectar
|
||||
tab.connection.button.abort=Abortar
|
||||
tab.connection.autodetect=Detección automática
|
||||
tab.connection.autodetect=Auto-Detección
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Inyectar
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -41,11 +43,12 @@ tab.injection.log.packetwithid=Paquete con id
|
||||
tab.tools=Herramientas
|
||||
tab.tools.button.encode=Codificar
|
||||
tab.tools.button.decode=Decodificar
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Planificador
|
||||
tab.scheduler.table.index=Index
|
||||
@ -53,8 +56,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destinación
|
||||
tab.scheduler.table.edit=Editar
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Borrar
|
||||
tab.scheduler.button.clear.tooltip=Borrar todos los items
|
||||
tab.scheduler.button.save=S
|
||||
@ -81,7 +84,7 @@ tab.extensions.table.edit.delete.tooltip=Cerrar la conexi
|
||||
tab.extensions.table.edit.restart.tooltip=Reiniciar extensión
|
||||
tab.extensions.table.edit.uninstall.tooltip=Desinstalar esta extensión
|
||||
tab.extensions.table.edit.uninstall.confirmation=¿Seguro que quieres desinstalar esta extensión?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Instalar
|
||||
@ -92,7 +95,7 @@ tab.extensions.button.logs.windowtitle=Consola de extensi
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Ayuda
|
||||
tab.extra.options.alwaysontop=Mostrar siempre arriba
|
||||
tab.extra.options.staffpermissions=Permisos Staff en cliente
|
||||
@ -102,8 +105,8 @@ tab.extra.options.pythonscripting.alert.content=Antes de instalar G-Python, inst
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=Mas información aqui:
|
||||
tab.extra.options.advanced=Avanzado
|
||||
tab.extra.options.advanced.socks=Usar proxy SOCKS
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Deshabilitar desencriptación
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -113,9 +116,9 @@ tab.info.description=Habbo packet manipulador para Linux, Windows & Mac
|
||||
tab.info.donate=Donar BTC
|
||||
tab.info.donate.alert.title=Donar Bitcoins
|
||||
tab.info.donate.alert.content=Dirección pública de bitcoins:
|
||||
tab.info.createdby=Creado por:
|
||||
tab.info.links=Enlaces:
|
||||
tab.info.contributors=Contribuidores:
|
||||
tab.info.createdby=Creado por
|
||||
tab.info.links=Enlaces
|
||||
tab.info.contributors=Contribuidores
|
||||
|
||||
|
||||
## Alert
|
||||
@ -171,7 +174,7 @@ alert.gpythonerror.content=Algo ha salido mal al iniciar la G-Python shell,\n\
|
||||
## Internal extension
|
||||
|
||||
### Internal extension - G-ExtensionStore
|
||||
ext.store.elapsedtime.second.single=seundo
|
||||
ext.store.elapsedtime.second.single=segundo
|
||||
ext.store.elapsedtime.second.multiple=segundos
|
||||
ext.store.elapsedtime.minute.single=minuto
|
||||
ext.store.elapsedtime.minute.multiple=minutos
|
||||
@ -301,11 +304,7 @@ ext.logger.menu.packets.exportall=Exportar todos
|
||||
ext.logger.menu.packets.exportall.windowtitle=Guardar Packets
|
||||
ext.logger.menu.packets.exportall.filetype=archivos TXT
|
||||
|
||||
ext.logger.state.viewincoming.base=Mostrar Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=Mostrar Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtrado
|
||||
ext.logger.state.filtered.base=Filtrado: 0
|
||||
|
||||
@ -315,3 +314,5 @@ ext.logger.element.replaced=Replazado
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
||||
|
@ -23,8 +23,9 @@ tab.connection.autodetect=Auto-detect
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injection
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -41,11 +42,12 @@ tab.injection.log.packetwithid=Packet with id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Scheduler
|
||||
tab.scheduler.table.index=Index
|
||||
@ -53,8 +55,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Edit
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Clear
|
||||
tab.scheduler.button.clear.tooltip=Clear all items
|
||||
tab.scheduler.button.save=S
|
||||
@ -81,7 +83,7 @@ tab.extensions.table.edit.delete.tooltip=Close connection with this extension
|
||||
tab.extensions.table.edit.restart.tooltip=Restart this extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Uninstall this extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Are you sure want to uninstall this extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Install
|
||||
@ -92,7 +94,7 @@ tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Always on top
|
||||
tab.extra.options.staffpermissions=Client-side staff permissions
|
||||
@ -102,8 +104,8 @@ tab.extra.options.pythonscripting.alert.content=Before using G-Python, install t
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=More information here:
|
||||
tab.extra.options.advanced=Advanced
|
||||
tab.extra.options.advanced.socks=Use SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Disable decryption
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -113,9 +115,9 @@ tab.info.description=Habbo packet manipulator for Linux, Windows & Mac
|
||||
tab.info.donate=Donate BTC
|
||||
tab.info.donate.alert.title=Donate Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin public address:
|
||||
tab.info.createdby=Created by:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contributors:
|
||||
tab.info.createdby=Created by
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contributors
|
||||
|
||||
|
||||
## Alert
|
||||
@ -303,11 +305,7 @@ ext.logger.menu.packets.exportall=Export all
|
||||
ext.logger.menu.packets.exportall.windowtitle=Save Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=View Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=View Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtered
|
||||
ext.logger.state.filtered.base=Filtered: 0
|
||||
|
||||
@ -317,3 +315,5 @@ ext.logger.element.replaced=Replaced
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
||||
|
@ -26,8 +26,9 @@ tab.connection.autodetect=D
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injecter
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -44,11 +45,12 @@ tab.injection.log.packetwithid=Packet avec id
|
||||
tab.tools=Outils
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoder/decoder
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoder
|
||||
tab.tools.decoding=Decoder
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Planificateur
|
||||
tab.scheduler.table.index=Index
|
||||
@ -56,8 +58,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Modifier
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Effacer
|
||||
tab.scheduler.button.clear.tooltip=Effacer tous
|
||||
tab.scheduler.button.save=S
|
||||
@ -80,33 +82,33 @@ tab.extensions.table.description=Description
|
||||
tab.extensions.table.author=Auteur
|
||||
tab.extensions.table.version=Version
|
||||
tab.extensions.table.edit=Modifier
|
||||
tab.extensions.table.edit.delete.tooltip=Arreter la connexion avec l''extension
|
||||
tab.extensions.table.edit.restart.tooltip=Recharger l''extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Désinstaller l''extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Es-tu sûr de vouloir désinstaller l''extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.table.edit.delete.tooltip=Arreter la connexion avec l'extension
|
||||
tab.extensions.table.edit.restart.tooltip=Recharger l'extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Désinstaller l'extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Es-tu sûr de vouloir désinstaller l'extension?
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Installer
|
||||
tab.extensions.button.install.windowtitle=Installer l''extension
|
||||
tab.extensions.button.install.windowtitle=Installer l'extension
|
||||
tab.extensions.button.install.filetype=G-Earth extensions
|
||||
tab.extensions.button.logs=Logs
|
||||
tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Dépannage
|
||||
tab.extra.options.alwaysontop=Toujours au top
|
||||
tab.extra.options.staffpermissions=Permission staff client
|
||||
tab.extra.options.pythonscripting=G-Python scripting
|
||||
tab.extra.options.pythonscripting.alert.title=G-Python installation
|
||||
tab.extra.options.pythonscripting.alert.content=Avant d''utiliser G-Python, installer les packages avec pip!
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=Plus d''informations ici:
|
||||
tab.extra.options.pythonscripting.alert.content=Avant d'utiliser G-Python, installer les packages avec pip!
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=Plus d'informations ici:
|
||||
tab.extra.options.advanced=Avancer
|
||||
tab.extra.options.advanced.socks=Utiliser SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Désactiver le décryptage
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -116,9 +118,9 @@ tab.info.description=Habbo packet manipulateur pour Linux, Windows & Mac
|
||||
tab.info.donate=Donner BTC
|
||||
tab.info.donate.alert.title=Donner Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin adresse publique:
|
||||
tab.info.createdby=Crée par:
|
||||
tab.info.links=Liens:
|
||||
tab.info.contributors=Contributeurs:
|
||||
tab.info.createdby=Crée par
|
||||
tab.info.links=Liens
|
||||
tab.info.contributors=Contributeurs
|
||||
|
||||
|
||||
## Alert
|
||||
@ -129,7 +131,7 @@ alert.confirmation.button.donotaskagain=Ne pas demander
|
||||
alert.confirmation.button.remember=Se souvenir de mon choix
|
||||
|
||||
### Alert - AdminValidator
|
||||
alert.adminvalidator.content=G-Earth a besoin des privilèges d''administrateur pour pouvoir fonctionner sur Flash,\n\
|
||||
alert.adminvalidator.content=G-Earth a besoin des privilèges d'administrateur pour pouvoir fonctionner sur Flash,\n\
|
||||
merci de redémarrer G-Earth avec les privilèges d''administrateur sauf si tu utilises Unity
|
||||
|
||||
### Alert - Outdated
|
||||
@ -143,33 +145,33 @@ alert.invalidconnection.content=Tu as entr
|
||||
### Alert - Nitro root certificate
|
||||
alert.rootcertificate.title=Installation du certificat root
|
||||
alert.rootcertificate.remember=Se souvenir de mon choix
|
||||
alert.rootcertificate.content=G-Earth a détecté que tu n''avais pas le certificat root d''installer.\n\
|
||||
alert.rootcertificate.content=G-Earth a détecté que tu n'avais pas le certificat root d'installer.\n\
|
||||
Il est nécessaire pour que Nitro fonctionne, veux-tu continuer?\n\
|
||||
G-Earth va te demander les permissions administrateurs si tu le souhaites.
|
||||
|
||||
### Alert - Already connected
|
||||
alert.alreadyconnected.content=G-Earth est déjà connecté à cet hôtel.\n\
|
||||
Dû à la restriction actuelle tu peux connecter seulement une session par hôtel à G-Earth\n\
|
||||
en mode ""Raw IP"" (127.0.0.1) sur Windows.\n\
|
||||
en mode "Raw IP" (127.0.0.1) sur Windows.\n\
|
||||
\n\
|
||||
Tu peux passer outre en utilisant un SOCKS proxy [Extra -> Avancer -> SOCKS]
|
||||
|
||||
### Alert - Something went wrong
|
||||
alert.somethingwentwrong.title=Quelque chose s''est mal passé!
|
||||
alert.somethingwentwrong.content=Quelque chose s''est mal passé!\n\
|
||||
alert.somethingwentwrong.title=Quelque chose s'est mal passé!
|
||||
alert.somethingwentwrong.content=Quelque chose s'est mal passé!\n\
|
||||
\n\
|
||||
Rendez-vous sur notre page de dépannage pour résoudre le problème:
|
||||
|
||||
### Alert - Allow extension connection
|
||||
alert.extconnection.content=Extension "%s" essaie de se connecter mais n''est pas connu de G-Earth,\n\
|
||||
alert.extconnection.content=Extension "%s" essaie de se connecter mais n'est pas connu de G-Earth,\n\
|
||||
Accepter la connection?
|
||||
|
||||
### Alert - G-Python error
|
||||
alert.gpythonerror.title=G-Python erreur
|
||||
alert.gpythonerror.content=Quelque chose s''est mal passé lors du lancement de G-Python shell,\n\
|
||||
es-tu sûr d''avoir suivi le guide d''installation correctement?\n\
|
||||
alert.gpythonerror.content=Quelque chose s'est mal passé lors du lancement de G-Python shell,\n\
|
||||
es-tu sûr d'avoir suivi le guide d'installation correctement?\n\
|
||||
\n\
|
||||
Plus d''information ici:
|
||||
Plus d'information ici:
|
||||
|
||||
|
||||
## Internal extension
|
||||
@ -215,16 +217,16 @@ ext.store.extension.warning.requirement=Attention: ce framework a besoin --url:d
|
||||
! IMPORTANT: the previous line has to end with the --url component like the english version
|
||||
ext.store.extension.warning.unstable=Warning: this extension has been marked unstable!
|
||||
|
||||
ext.store.extension.status.await.install=Installer l''extension
|
||||
ext.store.extension.status.await.install.message=Appuie sur "OK" et attend que l''extension soit installer
|
||||
ext.store.extension.status.await.update=Mettre à jour l''extension
|
||||
ext.store.extension.status.await.update.message=Appuie sur "OK" et attend que l''extension soit mise à jour
|
||||
ext.store.extension.status.await.install=Installer l'extension
|
||||
ext.store.extension.status.await.install.message=Appuie sur "OK" et attend que l'extension soit installer
|
||||
ext.store.extension.status.await.update=Mettre à jour l'extension
|
||||
ext.store.extension.status.await.update.message=Appuie sur "OK" et attend que l'extension soit mise à jour
|
||||
ext.store.extension.status.success.install=Installation complétée
|
||||
ext.store.extension.status.success.install.message=L''installation de l''extension s''est terminée
|
||||
ext.store.extension.status.success.install.message=L'installation de l'extension s'est terminée
|
||||
ext.store.extension.status.success.update=Mise à jour complétée
|
||||
ext.store.extension.status.success.update.message=La mise à jour de l''extension s''est terminée
|
||||
ext.store.extension.status.success.update.message=La mise à jour de l'extension s'est terminée
|
||||
ext.store.extension.status.error.install=Installation échoué
|
||||
ext.store.extension.status.error.install.message=L''installation a échoué avec le message suivant
|
||||
ext.store.extension.status.error.install.message=L'installation a échoué avec le message suivant
|
||||
ext.store.extension.status.error.update=Mise à jour échoué
|
||||
ext.store.extension.status.error.update.message=La mise à jour a échoué avec le message suivant
|
||||
|
||||
@ -234,7 +236,7 @@ ext.store.button.installed=D
|
||||
ext.store.button.update=Mettre à jour
|
||||
|
||||
ext.store.search.title=Chercher
|
||||
ext.store.search.description=Chercher l''extension dont t''as besoin
|
||||
ext.store.search.description=Chercher l'extension dont t'as besoin
|
||||
ext.store.search.contenttitle=Chercher extensions
|
||||
ext.store.search.bykeyword=Chercher par mot clé
|
||||
ext.store.search.results=Résultats de recherche
|
||||
@ -243,7 +245,7 @@ ext.store.search.ordering.bydate.title=Nouvelles extensions
|
||||
ext.store.search.ordering.bydate.description=Extensions récemment ajouté à G-ExtensionStore
|
||||
ext.store.search.ordering.bydate.contenttitle=Nouvelles extensions
|
||||
ext.store.search.ordering.byrating.title=Extensions populaires
|
||||
ext.store.search.ordering.byrating.description=Extensions par ordre d''évaluation
|
||||
ext.store.search.ordering.byrating.description=Extensions par ordre d'évaluation
|
||||
ext.store.search.ordering.byrating.contenttitle=Extensions populaires
|
||||
ext.store.search.ordering.byupdate.title=Récemment mis à jour
|
||||
ext.store.search.ordering.byupdate.description=Extensions qui ont été récemment mis à jour
|
||||
@ -251,7 +253,7 @@ ext.store.search.ordering.byupdate.contenttitle=R
|
||||
ext.store.search.filter.clients=Clients
|
||||
ext.store.search.filter.categories=Catégories
|
||||
ext.store.search.filter.frameworks=Frameworks
|
||||
ext.store.search.info.automaticosfiltering=Info: automatiquement filtré en fonction de l''OS que tu utilises
|
||||
ext.store.search.info.automaticosfiltering=Info: automatiquement filtré en fonction de l'OS que tu utilises
|
||||
|
||||
ext.store.category=Catégories
|
||||
|
||||
@ -305,11 +307,7 @@ ext.logger.menu.packets.exportall=Exporter tout
|
||||
ext.logger.menu.packets.exportall.windowtitle=Sauvegarder les Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=Voir Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=Voir Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtré
|
||||
ext.logger.state.filtered.base=Filtré: 0
|
||||
|
||||
@ -319,3 +317,5 @@ ext.logger.element.replaced=Remplac
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
||||
|
@ -23,8 +23,9 @@ tab.connection.autodetect=Auto-detect
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injection
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -41,11 +42,12 @@ tab.injection.log.packetwithid=Packet with id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Scheduler
|
||||
tab.scheduler.table.index=Index
|
||||
@ -53,8 +55,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Edit
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Clear
|
||||
tab.scheduler.button.clear.tooltip=Clear all items
|
||||
tab.scheduler.button.save=S
|
||||
@ -81,7 +83,7 @@ tab.extensions.table.edit.delete.tooltip=Close connection with this extension
|
||||
tab.extensions.table.edit.restart.tooltip=Restart this extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Uninstall this extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Are you sure want to uninstall this extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Install
|
||||
@ -92,7 +94,7 @@ tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Always on top
|
||||
tab.extra.options.staffpermissions=Client-side staff permissions
|
||||
@ -102,8 +104,8 @@ tab.extra.options.pythonscripting.alert.content=Before using G-Python, install t
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=More information here:
|
||||
tab.extra.options.advanced=Advanced
|
||||
tab.extra.options.advanced.socks=Use SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Disable decryption
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -113,9 +115,9 @@ tab.info.description=Habbo packet manipulator for Linux, Windows & Mac
|
||||
tab.info.donate=Donate BTC
|
||||
tab.info.donate.alert.title=Donate Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin public address:
|
||||
tab.info.createdby=Created by:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contributors:
|
||||
tab.info.createdby=Created by
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contributors
|
||||
|
||||
|
||||
## Alert
|
||||
@ -303,11 +305,7 @@ ext.logger.menu.packets.exportall=Export all
|
||||
ext.logger.menu.packets.exportall.windowtitle=Save Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=View Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=View Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtered
|
||||
ext.logger.state.filtered.base=Filtered: 0
|
||||
|
||||
@ -317,3 +315,5 @@ ext.logger.element.replaced=Replaced
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
@ -17,12 +17,13 @@ tab.connection.port=Port:
|
||||
tab.connection.host=Host:
|
||||
tab.connection.button.connect=Verbind
|
||||
tab.connection.button.abort=Stop
|
||||
tab.connection.autodetect=Auto-detect
|
||||
tab.connection.autodetect=Auto-detectie
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injectie
|
||||
tab.injection.corrupted.true=isCorrupt: True
|
||||
tab.injection.corrupted.false=isCorrupt: False
|
||||
tab.injection.corrupted=isCorrupt
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, lengte:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -39,11 +40,12 @@ tab.injection.log.packetwithid=Packet met id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Codeer
|
||||
tab.tools.button.decode=Decodeer
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Codering/Decodering
|
||||
tab.tools.packettoexpression=Packet <-> expressie
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Codering
|
||||
tab.tools.decoding=Decodering
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expressie
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Planner
|
||||
tab.scheduler.table.index=Index
|
||||
@ -51,8 +53,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Bestemming
|
||||
tab.scheduler.table.edit=Bewerk
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Wis
|
||||
tab.scheduler.button.clear.tooltip=Wis alle items
|
||||
tab.scheduler.button.save=S
|
||||
@ -79,7 +81,7 @@ tab.extensions.table.edit.delete.tooltip=Verbreek verbinding met deze extensie
|
||||
tab.extensions.table.edit.restart.tooltip=Herstart deze extensie
|
||||
tab.extensions.table.edit.uninstall.tooltip=Verwijder deze extensie
|
||||
tab.extensions.table.edit.uninstall.confirmation=Ben je zeker dat je deze extensie wil verwijderen?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Installeer
|
||||
@ -90,18 +92,18 @@ tab.extensions.button.logs.windowtitle=Extensie Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Kladblok:
|
||||
tab.extra.notepad=Kladblok
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Altijd bovenop
|
||||
tab.extra.options.staffpermissions=Client-side staff machtigingen
|
||||
tab.extra.options.pythonscripting=G-Python-scripting
|
||||
tab.extra.options.pythonscripting=G-Python scripting
|
||||
tab.extra.options.pythonscripting.alert.title=G-Python installatie
|
||||
tab.extra.options.pythonscripting.alert.content=Voordat je G-Python kan gebruiken moet je de juiste packages installeren!
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=Meer informatie hier:
|
||||
tab.extra.options.advanced=Geavanceerd
|
||||
tab.extra.options.advanced.socks=Gebruik SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Schakel decryptie uit
|
||||
tab.extra.options.advanced.debugstdout=Debug naar stdout
|
||||
|
||||
@ -111,9 +113,9 @@ tab.info.description=Habbo packet manipulator voor Linux, Windows & Mac
|
||||
tab.info.donate=Doneer BTC
|
||||
tab.info.donate.alert.title=Doneer Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin publiek address:
|
||||
tab.info.createdby=Gemaakt door:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Bijdragers:
|
||||
tab.info.createdby=Gemaakt door
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Bijdragers
|
||||
|
||||
|
||||
## Alert
|
||||
@ -300,11 +302,7 @@ ext.logger.menu.packets.exportall=Exporteer alles
|
||||
ext.logger.menu.packets.exportall.windowtitle=Bewaar Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT bestanden
|
||||
|
||||
ext.logger.state.viewincoming.base=Geef binnenkomend weer: True
|
||||
ext.logger.state.viewoutgoing.base=Geef uitgaand weer: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Gefilterd
|
||||
ext.logger.state.filtered.base=Gefilterd: 0
|
||||
|
||||
@ -314,3 +312,5 @@ ext.logger.element.replaced=Vervangen
|
||||
ext.logger.element.direction.outgoing=Binnenkomend
|
||||
ext.logger.element.direction.incoming=Uitgaand
|
||||
ext.logger.element.skipped=packet overgeslagen
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
@ -21,8 +21,9 @@ tab.connection.autodetect=Autodetectar
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injeção
|
||||
tab.injection.corrupted.true=estaCorrompido: Verdadeiro
|
||||
tab.injection.corrupted.false=estaCorrompido: Falso
|
||||
tab.injection.corrupted=estaCorrompido
|
||||
tab.injection.corrupted.true=Verdadeiro
|
||||
tab.injection.corrupted.false=Falso
|
||||
tab.injection.description=cabeçalho (id:NULL, comprimento:0)
|
||||
tab.injection.description.header=cabeçalho
|
||||
tab.injection.description.packets=pacotes
|
||||
@ -39,11 +40,12 @@ tab.injection.log.packetwithid=Pacote com id
|
||||
tab.tools=Ferramentas
|
||||
tab.tools.button.encode=Codificar
|
||||
tab.tools.button.decode=Decodificar
|
||||
tab.tools.type.integer=Inteiro:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Codificando/decodificando
|
||||
tab.tools.packettoexpression=Pacote <-> expressão
|
||||
|
||||
tab.tools.type.integer=Inteiro
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Codificando
|
||||
tab.tools.decoding=Decodificando
|
||||
tab.tools.packet=Pacote
|
||||
tab.tools.expression=Expressão
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Agendador
|
||||
tab.scheduler.table.index=Índice
|
||||
@ -51,8 +53,8 @@ tab.scheduler.table.packet=Pacote
|
||||
tab.scheduler.table.interval=Intervalo
|
||||
tab.scheduler.table.destination=Destino
|
||||
tab.scheduler.table.edit=Editar
|
||||
tab.scheduler.setup.packet=Pacote:
|
||||
tab.scheduler.setup.interval=Intervalo:
|
||||
tab.scheduler.setup.packet=Pacote
|
||||
tab.scheduler.setup.interval=Intervalo
|
||||
tab.scheduler.button.clear=Limpar
|
||||
tab.scheduler.button.clear.tooltip=Limpar todos os itens
|
||||
tab.scheduler.button.save=S
|
||||
@ -79,7 +81,7 @@ tab.extensions.table.edit.delete.tooltip=Fechar conex
|
||||
tab.extensions.table.edit.restart.tooltip=Reiniciar esta extensão
|
||||
tab.extensions.table.edit.uninstall.tooltip=Desinstalar esta extensão
|
||||
tab.extensions.table.edit.uninstall.confirmation=Você tem certeza que deseja desinstalar esta extensão?
|
||||
tab.extensions.port=Porta:
|
||||
tab.extensions.port=Porta
|
||||
tab.extensions.button.pythonshell=Terminal G-Python
|
||||
tab.extensions.button.pythonshell.windowtitle=Terminal Scripting
|
||||
tab.extensions.button.install=Instalar
|
||||
@ -90,7 +92,7 @@ tab.extensions.button.logs.windowtitle=Console de Extens
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Anotações:
|
||||
tab.extra.notepad=Anotações
|
||||
tab.extra.troubleshooting=Resolução de problemas
|
||||
tab.extra.options.alwaysontop=Manter no topo
|
||||
tab.extra.options.staffpermissions=Permissões de staff no Cliente
|
||||
@ -100,8 +102,8 @@ tab.extra.options.pythonscripting.alert.content=Antes de usar G-Python, instale
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=Mais informações aqui:
|
||||
tab.extra.options.advanced=Avançado
|
||||
tab.extra.options.advanced.socks=Usar proxy SOCKS
|
||||
tab.extra.options.advanced.proxy.ip=IP do proxy:
|
||||
tab.extra.options.advanced.proxy.port=Porta do proxy:
|
||||
tab.extra.options.advanced.proxy.ip=IP do proxy
|
||||
tab.extra.options.advanced.proxy.port=Porta do proxy
|
||||
tab.extra.options.advanced.disabledecryption=Desabilitar descriptografia
|
||||
tab.extra.options.advanced.debugstdout=Debugar para stdout
|
||||
|
||||
@ -111,9 +113,9 @@ tab.info.description=Manipulador de pacotes do Habbo para Linux, Windows e Mac
|
||||
tab.info.donate=Doar BTC
|
||||
tab.info.donate.alert.title=Doar Bitcoins
|
||||
tab.info.donate.alert.content=Endereço público Bitcoin:
|
||||
tab.info.createdby=Criado por:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contribuidores:
|
||||
tab.info.createdby=Criado por
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contribuidores
|
||||
|
||||
|
||||
## Alert
|
||||
@ -300,11 +302,7 @@ ext.logger.menu.packets.exportall=Exportar todos
|
||||
ext.logger.menu.packets.exportall.windowtitle=Salvar Pacotes
|
||||
ext.logger.menu.packets.exportall.filetype=Arquivos TXT
|
||||
|
||||
ext.logger.state.viewincoming.base=Ver Chegando: Verdadeiro
|
||||
ext.logger.state.viewoutgoing.base=Ver Saindo: Verdadeiro
|
||||
ext.logger.state.autoscroll.base=Rolagem automática: Verdadeiro
|
||||
ext.logger.state.packetinfo=Informação do pacote
|
||||
ext.logger.state.packetinfo.base=Informação do pacote: Falso
|
||||
ext.logger.state.filtered=Filtrado
|
||||
ext.logger.state.filtered.base=Filtrado: 0
|
||||
|
||||
@ -314,3 +312,5 @@ ext.logger.element.replaced=Substitu
|
||||
ext.logger.element.direction.outgoing=Saindo
|
||||
ext.logger.element.direction.incoming=Chegando
|
||||
ext.logger.element.skipped=pacote pulado
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
@ -23,8 +23,9 @@ tab.connection.autodetect=Auto-detect
|
||||
|
||||
### Tab - Injection
|
||||
tab.injection=Injection
|
||||
tab.injection.corrupted.true=isCorrupted: True
|
||||
tab.injection.corrupted.false=isCorrupted: False
|
||||
tab.injection.corrupted=isCorrupted
|
||||
tab.injection.corrupted.true=True
|
||||
tab.injection.corrupted.false=False
|
||||
tab.injection.description=header (id:NULL, length:0)
|
||||
tab.injection.description.header=header
|
||||
tab.injection.description.packets=packets
|
||||
@ -41,11 +42,12 @@ tab.injection.log.packetwithid=Packet with id
|
||||
tab.tools=Tools
|
||||
tab.tools.button.encode=Encode
|
||||
tab.tools.button.decode=Decode
|
||||
tab.tools.type.integer=Integer:
|
||||
tab.tools.type.ushort=Ushort:
|
||||
tab.tools.encodingdecoding=Encoding/decoding
|
||||
tab.tools.packettoexpression=Packet <-> expression
|
||||
|
||||
tab.tools.type.integer=Integer
|
||||
tab.tools.type.ushort=Ushort
|
||||
tab.tools.encoding=Encoding
|
||||
tab.tools.decoding=Decoding
|
||||
tab.tools.packet=Packet
|
||||
tab.tools.expression=Expression
|
||||
### Tab - Scheduler
|
||||
tab.scheduler=Scheduler
|
||||
tab.scheduler.table.index=Index
|
||||
@ -53,8 +55,8 @@ tab.scheduler.table.packet=Packet
|
||||
tab.scheduler.table.interval=Interval
|
||||
tab.scheduler.table.destination=Destination
|
||||
tab.scheduler.table.edit=Edit
|
||||
tab.scheduler.setup.packet=Packet:
|
||||
tab.scheduler.setup.interval=Interval:
|
||||
tab.scheduler.setup.packet=Packet
|
||||
tab.scheduler.setup.interval=Interval
|
||||
tab.scheduler.button.clear=Clear
|
||||
tab.scheduler.button.clear.tooltip=Clear all items
|
||||
tab.scheduler.button.save=S
|
||||
@ -81,7 +83,7 @@ tab.extensions.table.edit.delete.tooltip=Close connection with this extension
|
||||
tab.extensions.table.edit.restart.tooltip=Restart this extension
|
||||
tab.extensions.table.edit.uninstall.tooltip=Uninstall this extension
|
||||
tab.extensions.table.edit.uninstall.confirmation=Are you sure want to uninstall this extension?
|
||||
tab.extensions.port=Port:
|
||||
tab.extensions.port=Port
|
||||
tab.extensions.button.pythonshell=G-Python shell
|
||||
tab.extensions.button.pythonshell.windowtitle=Scripting shell
|
||||
tab.extensions.button.install=Install
|
||||
@ -92,7 +94,7 @@ tab.extensions.button.logs.windowtitle=Extension Console
|
||||
|
||||
### Tab - Extra
|
||||
tab.extra=Extra
|
||||
tab.extra.notepad=Notepad:
|
||||
tab.extra.notepad=Notepad
|
||||
tab.extra.troubleshooting=Troubleshooting
|
||||
tab.extra.options.alwaysontop=Always on top
|
||||
tab.extra.options.staffpermissions=Client-side staff permissions
|
||||
@ -102,8 +104,8 @@ tab.extra.options.pythonscripting.alert.content=Before using G-Python, install t
|
||||
tab.extra.options.pythonscripting.alert.moreinformation=More information here:
|
||||
tab.extra.options.advanced=Advanced
|
||||
tab.extra.options.advanced.socks=Use SOCKS proxy
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP:
|
||||
tab.extra.options.advanced.proxy.port=Proxy port:
|
||||
tab.extra.options.advanced.proxy.ip=Proxy IP
|
||||
tab.extra.options.advanced.proxy.port=Proxy port
|
||||
tab.extra.options.advanced.disabledecryption=Disable decryption
|
||||
tab.extra.options.advanced.debugstdout=Debug to stdout
|
||||
|
||||
@ -113,9 +115,9 @@ tab.info.description=Habbo packet manipulator for Linux, Windows & Mac
|
||||
tab.info.donate=Donate BTC
|
||||
tab.info.donate.alert.title=Donate Bitcoins
|
||||
tab.info.donate.alert.content=Bitcoin public address:
|
||||
tab.info.createdby=Created by:
|
||||
tab.info.links=Links:
|
||||
tab.info.contributors=Contributors:
|
||||
tab.info.createdby=Created by
|
||||
tab.info.links=Links
|
||||
tab.info.contributors=Contributors
|
||||
|
||||
|
||||
## Alert
|
||||
@ -303,11 +305,7 @@ ext.logger.menu.packets.exportall=Export all
|
||||
ext.logger.menu.packets.exportall.windowtitle=Save Packets
|
||||
ext.logger.menu.packets.exportall.filetype=TXT files
|
||||
|
||||
ext.logger.state.viewincoming.base=View Incoming: True
|
||||
ext.logger.state.viewoutgoing.base=View Outgoing: True
|
||||
ext.logger.state.autoscroll.base=Autoscroll: True
|
||||
ext.logger.state.packetinfo=Packet info
|
||||
ext.logger.state.packetinfo.base=Packet info: False
|
||||
ext.logger.state.filtered=Filtered
|
||||
ext.logger.state.filtered.base=Filtered: 0
|
||||
|
||||
@ -317,3 +315,5 @@ ext.logger.element.replaced=Replaced
|
||||
ext.logger.element.direction.outgoing=Outgoing
|
||||
ext.logger.element.direction.incoming=Incoming
|
||||
ext.logger.element.skipped=packet skipped
|
||||
ext.logger.state.true=True
|
||||
ext.logger.state.false=False
|
Loading…
Reference in New Issue
Block a user