diff --git a/src/main/java/nsusbloader/AppPreferences.java b/src/main/java/nsusbloader/AppPreferences.java index 3e009b8..8299d0b 100644 --- a/src/main/java/nsusbloader/AppPreferences.java +++ b/src/main/java/nsusbloader/AppPreferences.java @@ -18,6 +18,8 @@ */ package nsusbloader; +import nsusbloader.Controllers.SettingsController; + import java.util.Locale; import java.util.prefs.Preferences; @@ -29,41 +31,6 @@ public class AppPreferences { private AppPreferences(){ preferences = Preferences.userRoot().node("NS-USBloader"); } - public void setAll( - String Protocol, - String PreviouslyOpened, - String NetUsb, - String NsIp, - boolean NsIpValidate, - boolean ExpertMode, - boolean AutoIp, - boolean RandPort, - boolean NotServe, - String HostIp, - String HostPort, - String HostExtra, - boolean autoCheck4Updates, - boolean tinfoilXciSupport, - boolean nspFileFilterForGl, - String useOldGlVersion - ){ - setProtocol(Protocol); - setRecent(PreviouslyOpened); - setNetUsb(NetUsb); - setNsIp(NsIp); - setNsIpValidationNeeded(NsIpValidate); - setExpertMode(ExpertMode); - setAutoDetectIp(AutoIp); - setRandPort(RandPort); - setNotServeRequests(NotServe); - setHostIp(HostIp); - setHostPort(HostPort); - setHostExtra(HostExtra); - setAutoCheckUpdates(autoCheck4Updates); - setTfXCI(tinfoilXciSupport); - setNspFileFilterGL(nspFileFilterForGl); - setUseOldGlVersion(useOldGlVersion); - } public String getTheme(){ String theme = preferences.get("THEME", "/res/app_dark.css"); // Don't let user to change settings manually if (!theme.matches("(^/res/app_dark.css$)|(^/res/app_light.css$)")) @@ -135,8 +102,12 @@ public class AppPreferences { public boolean getNspFileFilterGL(){return preferences.getBoolean("GL_NSP_FILTER", false); } public void setNspFileFilterGL(boolean prop){preferences.putBoolean("GL_NSP_FILTER", prop);} - public String getUseOldGlVersion(){ return preferences.get("OldGlVersion", ""); } - public void setUseOldGlVersion(String version){ preferences.put("OldGlVersion", version);} + public String getGlVersion(){ + int recentGlVersionIndex = SettingsController.glSupportedVersions.length - 1; + String recentGlVersion = SettingsController.glSupportedVersions[recentGlVersionIndex]; + return preferences.get("gl_version", recentGlVersion); + } + public void setGlVersion(String version){ preferences.put("gl_version", version);} public double getSceneWidth(){ return preferences.getDouble("WIND_WIDTH", 850.0); } public void setSceneWidth(double value){ preferences.putDouble("WIND_WIDTH", value); } diff --git a/src/main/java/nsusbloader/COM/USB/GoldLeaf.java b/src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java similarity index 99% rename from src/main/java/nsusbloader/COM/USB/GoldLeaf.java rename to src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java index 3c720c0..be3cae1 100644 --- a/src/main/java/nsusbloader/COM/USB/GoldLeaf.java +++ b/src/main/java/nsusbloader/COM/USB/GoldLeaf_08.java @@ -40,7 +40,7 @@ import java.util.concurrent.CompletableFuture; /** * GoldLeaf 0.8 processing */ -class GoldLeaf extends TransferModule { +class GoldLeaf_08 extends TransferModule { private boolean nspFilterForGl; // CMD @@ -70,7 +70,7 @@ class GoldLeaf extends TransferModule { // For using in CMD_SelectFile with SPEC:/ prefix private File selectedFile; - GoldLeaf(DeviceHandle handler, LinkedHashMap nspMap, ICommunications task, ILogPrinter logPrinter, boolean nspFilter){ + GoldLeaf_08(DeviceHandle handler, LinkedHashMap nspMap, ICommunications task, ILogPrinter logPrinter, boolean nspFilter){ super(handler, nspMap, task, logPrinter); final byte CMD_GetDriveCount = 1; diff --git a/src/main/java/nsusbloader/COM/USB/UsbCommunications.java b/src/main/java/nsusbloader/COM/USB/UsbCommunications.java index 1d2e95d..91c6d34 100644 --- a/src/main/java/nsusbloader/COM/USB/UsbCommunications.java +++ b/src/main/java/nsusbloader/COM/USB/UsbCommunications.java @@ -18,7 +18,6 @@ */ package nsusbloader.COM.USB; -import javafx.concurrent.Task; import nsusbloader.COM.ICommunications; import nsusbloader.ModelControllers.ILogPrinter; import nsusbloader.ModelControllers.Log; @@ -69,8 +68,8 @@ public class UsbCommunications implements ICommunications { case "TinFoil": module = new TinFoil(handler, nspMap, this, logPrinter); break; - case "GoldLeaf": - module = new GoldLeaf(handler, nspMap, this, logPrinter, nspFilterForGl); + case "GoldLeafv0.8": + module = new GoldLeaf_08(handler, nspMap, this, logPrinter, nspFilterForGl); break; case "GoldLeafv0.7.x": module = new GoldLeaf_07(handler, nspMap, this, logPrinter, nspFilterForGl); diff --git a/src/main/java/nsusbloader/Controllers/FrontController.java b/src/main/java/nsusbloader/Controllers/FrontController.java index 82f10ac..f841813 100644 --- a/src/main/java/nsusbloader/Controllers/FrontController.java +++ b/src/main/java/nsusbloader/Controllers/FrontController.java @@ -20,7 +20,6 @@ package nsusbloader.Controllers; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.*; @@ -267,7 +266,7 @@ public class FrontController implements Initializable { SettingsController settings = MediatorControl.getInstance().getContoller().getSettingsCtrlr(); // If USB selected if (getSelectedProtocol().equals("GoldLeaf") || ( getSelectedProtocol().equals("TinFoil") && getSelectedNetUsb().equals("USB") ) ){ - usbNetCommunications = new UsbCommunications(nspToUpload, getSelectedProtocol() + settings.getGlOldVer(), settings.getNSPFileFilterForGL()); + usbNetCommunications = new UsbCommunications(nspToUpload, getSelectedProtocol() + settings.getGlVer(), settings.getNSPFileFilterForGL()); } else { // NET INSTALL OVER TINFOIL final String ipValidationPattern = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; @@ -381,4 +380,13 @@ public class FrontController implements Initializable { public String getRecentPath(){ return previouslyOpenedPath; } + + public void updatePreferencesOnExit(){ + AppPreferences preferences = AppPreferences.getInstance(); + + preferences.setProtocol(getSelectedProtocol()); + preferences.setRecent(getRecentPath()); + preferences.setNetUsb(getSelectedNetUsb()); + preferences.setNsIp(getNsIp()); + } } diff --git a/src/main/java/nsusbloader/Controllers/NSLMainController.java b/src/main/java/nsusbloader/Controllers/NSLMainController.java index 495be84..ea8c2da 100644 --- a/src/main/java/nsusbloader/Controllers/NSLMainController.java +++ b/src/main/java/nsusbloader/Controllers/NSLMainController.java @@ -118,25 +118,8 @@ public class NSLMainController implements Initializable { * Save preferences before exit * */ public void exit(){ - AppPreferences.getInstance().setAll( - FrontTabController.getSelectedProtocol(), - FrontTabController.getRecentPath(), - FrontTabController.getSelectedNetUsb(), - FrontTabController.getNsIp(), - SettingsTabController.isNsIpValidate(), - SettingsTabController.getExpertModeSelected(), - SettingsTabController.getAutoIpSelected(), - SettingsTabController.getRandPortSelected(), - SettingsTabController.getNotServeSelected(), - SettingsTabController.getHostIp(), - SettingsTabController.getHostPort(), - SettingsTabController.getHostExtra(), - SettingsTabController.getAutoCheckForUpdates(), - SettingsTabController.getTfXciNszXczSupport(), - SettingsTabController.getNSPFileFilterForGL(), - SettingsTabController.getGlOldVer() - ); - + FrontTabController.updatePreferencesOnExit(); + SettingsTabController.updatePreferencesOnExit(); SplitMergeTabController.updatePreferencesOnExit(); // NOTE: This shit above should be re-written to similar pattern RcmTabController.updatePreferencesOnExit(); NXDTabController.updatePreferencesOnExit(); diff --git a/src/main/java/nsusbloader/Controllers/SettingsController.java b/src/main/java/nsusbloader/Controllers/SettingsController.java index 5f23072..baa542d 100644 --- a/src/main/java/nsusbloader/Controllers/SettingsController.java +++ b/src/main/java/nsusbloader/Controllers/SettingsController.java @@ -76,14 +76,11 @@ public class SettingsController implements Initializable { private ChoiceBox langCB; @FXML - private CheckBox glOldVerCheck; - - @FXML - private ChoiceBox glOldVerChoice; + private ChoiceBox glVersionChoiceBox; private HostServices hs; - private static final String[] oldGlSupportedVersions = {"v0.5", "v0.7.x"}; + public static final String[] glSupportedVersions = {"v0.5", "v0.7.x", "v0.8"}; @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -273,19 +270,9 @@ public class SettingsController implements Initializable { .getString("windowBodyRestartToApplyLang")); }); // Set supported old versions - glOldVerChoice.getItems().addAll(oldGlSupportedVersions); - String oldVer = AppPreferences.getInstance().getUseOldGlVersion(); // Overhead; Too much validation of consistency - if (Arrays.asList(oldGlSupportedVersions).contains(oldVer)) { - glOldVerChoice.getSelectionModel().select(oldVer); - glOldVerChoice.setDisable(false); - glOldVerCheck.setSelected(true); - } - else { - glOldVerChoice.getSelectionModel().select(0); - glOldVerChoice.setDisable(true); - glOldVerCheck.setSelected(false); - } - glOldVerCheck.setOnAction(e-> glOldVerChoice.setDisable(! glOldVerCheck.isSelected()) ); + glVersionChoiceBox.getItems().addAll(glSupportedVersions); + String oldVer = AppPreferences.getInstance().getGlVersion(); // Overhead; Too much validation of consistency + glVersionChoiceBox.getSelectionModel().select(oldVer); } private boolean isWindows(){ @@ -313,10 +300,24 @@ public class SettingsController implements Initializable { newVersionLink.setText("https://github.com/developersu/ns-usbloader/releases/tag/"+newVer); } - public String getGlOldVer() { - if (glOldVerCheck.isSelected()) - return glOldVerChoice.getValue(); - else - return ""; + public String getGlVer() { + return glVersionChoiceBox.getValue(); + } + + public void updatePreferencesOnExit(){ + AppPreferences preferences = AppPreferences.getInstance(); + + preferences.setNsIpValidationNeeded(isNsIpValidate()); + preferences.setExpertMode(getExpertModeSelected()); + preferences.setAutoDetectIp(getAutoIpSelected()); + preferences.setRandPort(getRandPortSelected()); + preferences.setNotServeRequests(getNotServeSelected()); + preferences.setHostIp(getHostIp()); + preferences.setHostPort(getHostPort()); + preferences.setHostExtra(getHostExtra()); + preferences.setAutoCheckUpdates(getAutoCheckForUpdates()); + preferences.setTfXCI(getTfXciNszXczSupport()); + preferences.setNspFileFilterGL(getNSPFileFilterForGL()); + preferences.setGlVersion(getGlVer()); } } \ No newline at end of file diff --git a/src/main/java/nsusbloader/cli/CommandLineInterface.java b/src/main/java/nsusbloader/cli/CommandLineInterface.java index 5cdd9c0..8edcc55 100644 --- a/src/main/java/nsusbloader/cli/CommandLineInterface.java +++ b/src/main/java/nsusbloader/cli/CommandLineInterface.java @@ -66,6 +66,10 @@ public class CommandLineInterface { new TinfoilUsb(tfArguments); return; } + if (cli.hasOption("g") || cli.hasOption("goldleaf")){ + final String[] glArguments = cli.getOptionValues("goldleaf"); + new GoldLeaf(glArguments); + } } catch (ParseException pe){ System.out.println(pe.getLocalizedMessage() + @@ -128,7 +132,13 @@ public class CommandLineInterface { .hasArgs() .argName("FILE1 ...") .build(); - + /* GoldLeaf USB */ + final Option glOption = Option.builder("g") + .longOpt("goldleaf") + .desc("Install via GoldLeaf mode. Check '-g help' for information.") + .hasArgs() + .argName("...") + .build(); final OptionGroup group = new OptionGroup(); group.addOption(rcmOption); @@ -137,6 +147,7 @@ public class CommandLineInterface { group.addOption(versionOption); group.addOption(helpOption); group.addOption(tinfoilOption); + group.addOption(glOption); options.addOptionGroup(group); diff --git a/src/main/java/nsusbloader/cli/GoldLeaf.java b/src/main/java/nsusbloader/cli/GoldLeaf.java new file mode 100644 index 0000000..6724d2e --- /dev/null +++ b/src/main/java/nsusbloader/cli/GoldLeaf.java @@ -0,0 +1,116 @@ +package nsusbloader.cli; + +import nsusbloader.COM.ICommunications; +import nsusbloader.COM.USB.UsbCommunications; +import nsusbloader.Controllers.SettingsController; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class GoldLeaf { + + private final String[] arguments; + private List filesList; + private String goldLeafVersion; + private boolean filterForNsp; + + private int parseFileSince = 1; + + public GoldLeaf(String[] arguments) throws InterruptedException, IncorrectSetupException{ + this.arguments = arguments; + + checkArguments(); + parseGoldLeafVersion(); + parseFilesArguments(); + runGoldLeafBackend(); + } + + public void checkArguments() throws IncorrectSetupException{ + if (arguments == null || arguments.length == 0) { + throw new IncorrectSetupException("No arguments.\n" + + "Try 'ns-usbloader -g help' for more information."); + } + + if (arguments.length == 1){ + if (isHelpDirective(arguments[0])){ + showHelp(); + } + } + + if (arguments.length > 1 && arguments[1].equals("filter")){ + filterForNsp = true; + } + } + private boolean isHelpDirective(String argument){ + return argument.equals("help"); + } + private void showHelp() throws IncorrectSetupException{ + throw new IncorrectSetupException("Usage:\n" + + "\tns-usbloader -g ver= [filter] FILE1 ...\n" + + "\tns-usbloader --goldleaf ver= [filter] FILE1 ..." + + "\n\nOption:" + + "\n\tver=\tDefine GoldLeaf version (mandatory)\n\n" + + "\n\tfilter\t\nShow only *.nsp in GoldLeaf (optional)\n\n" + + getGlSupportedVersions()); + } + private String getGlSupportedVersions(){ + StringBuilder builder = new StringBuilder("Supported version: \n"); + + for (String a : SettingsController.glSupportedVersions){ + builder.append("\t"); + builder.append(a); + builder.append("\n"); + } + return builder.toString(); + } + + public void parseGoldLeafVersion() throws IncorrectSetupException{ + String argument1 = arguments[0]; + + if (! argument1.startsWith("ver=")) { + throw new IncorrectSetupException("First argument must be 'ver='\n" + + "Try 'ns-usbloader -g help' for more information."); + } + + goldLeafVersion = argument1.replaceAll("^ver=", ""); + + if (goldLeafVersion.isEmpty()) { + throw new IncorrectSetupException("No spaces allowed before or after 'ver=' argument.\n" + + "Try 'ns-usbloader -g help' for more information."); + } + + for (String version : SettingsController.glSupportedVersions){ + if (version.equals(goldLeafVersion)) + return; + } + + throw new IncorrectSetupException("GoldLeaf " + goldLeafVersion + " is not supported.\n" + + getGlSupportedVersions()); + } + + public void parseFilesArguments() throws IncorrectSetupException{ + filesList = new ArrayList<>(); + File file; + + for (; parseFileSince < arguments.length; parseFileSince++) { + file = new File(arguments[parseFileSince]); + if (file.exists()) + filesList.add(file); + } + + if (filesList.size() == 0 && goldLeafVersion.equals("v0.5")) { + throw new IncorrectSetupException("File(s) doesn't exist but should be set for GoldLeaf v0.5.\n" + + "Try 'ns-usbloader -g help' for more information."); + } + } + + public void runGoldLeafBackend() throws InterruptedException { + ICommunications task = new UsbCommunications(filesList, + "GoldLeaf"+goldLeafVersion, + filterForNsp); + Thread thread = new Thread(task); + thread.start(); + thread.join(); + } +} diff --git a/src/main/java/nsusbloader/cli/TinfoilNet.java b/src/main/java/nsusbloader/cli/TinfoilNet.java index 1818a1b..f053113 100644 --- a/src/main/java/nsusbloader/cli/TinfoilNet.java +++ b/src/main/java/nsusbloader/cli/TinfoilNet.java @@ -24,7 +24,6 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -// TODO: Add 'don't serve requests' option public class TinfoilNet { private final String[] arguments; @@ -33,7 +32,7 @@ public class TinfoilNet { private String hostIp = ""; private String hostPortNum = ""; - private String hostExtras = ""; + //private String hostExtras = ""; // TODO: Add 'don't serve requests' option or remove this private int parseFileSince = 1; @@ -79,21 +78,23 @@ public class TinfoilNet { + "\tns-usbloader --tfn nsip= [hostip=] FILE1 ..." + "\n\nOptions:" + "\n\tnsip=\t\t\tDefine NS IP address (mandatory)" - + "\n\thostip=\tDefine this host IP address. Will be obtained automatically if not set."); + + "\n\thostip=\tDefine this host IP address. Will be obtained automatically if not set."); } private void parseNsIP() throws IncorrectSetupException{ String argument1 = arguments[0]; - if (! argument1.startsWith("nsip=")) + if (! argument1.startsWith("nsip=")) { throw new IncorrectSetupException("First argument must be 'nsip='\n" + "Try 'ns-usbloader -n help' for more information."); + } nsIp = argument1.replaceAll("^nsip=", ""); - if (nsIp.isEmpty()) + if (nsIp.isEmpty()) { throw new IncorrectSetupException("No spaces allowed before or after 'nsip=' argument.\n" + "Try 'ns-usbloader -n help' for more information."); + } } private void parseHostSettings(){ @@ -106,10 +107,10 @@ public class TinfoilNet { hostIp = argument2.replaceAll("(^hostip=)|(:.+?$)|(:$)", ""); if (argument2.contains(":")) - hostPortNum = argument2.replaceAll("(^.+:)|(/.+?$)|(/$)", ""); - - if (argument2.contains("/")) - hostExtras = argument2.replaceAll("^[^/]*/", ""); + hostPortNum = argument2.replaceAll("(^.+:)", ""); + // hostPortNum = argument2.replaceAll("(^.+:)|(/.+?$)|(/$)", ""); + //if (argument2.contains("/")) + // hostExtras = argument2.replaceAll("^[^/]*/", ""); } private void parseFilesArguments() throws IncorrectSetupException{ @@ -135,7 +136,7 @@ public class TinfoilNet { false, hostIp, hostPortNum, - hostExtras); + ""); Thread netCommThread = new Thread(netCommunications); netCommThread.start(); netCommThread.join(); diff --git a/src/main/resources/SettingsTab.fxml b/src/main/resources/SettingsTab.fxml index 016f194..6676a5f 100644 --- a/src/main/resources/SettingsTab.fxml +++ b/src/main/resources/SettingsTab.fxml @@ -55,8 +55,8 @@ - - + diff --git a/src/main/resources/locale.properties b/src/main/resources/locale.properties index 062ac48..ac3e419 100644 --- a/src/main/resources/locale.properties +++ b/src/main/resources/locale.properties @@ -42,8 +42,6 @@ tab2_Cb_AllowXciNszXcz=Allow XCI / NSZ / XCZ files selection for Tinfoil tab2_Lbl_AllowXciNszXczDesc=Used by applications that support XCI/NSZ/XCZ and utilizes Tinfoil transfer protocol. Don't change if not sure. Enable for Awoo Installer. tab2_Lbl_Language=Language windowBodyRestartToApplyLang=Please restart application to apply changes. -tab2_Cb_GLshowNspOnly=Show only *.nsp in GoldLeaf. -tab2_Cb_UseOldGlVersion=Use old GoldLeaf version btn_OpenSplitFile=Select split NSP tab2_Lbl_ApplicationSettings=Main settings tabSplMrg_Lbl_SplitNMergeTitle=Split & merge files tool @@ -67,4 +65,6 @@ tab2_Btn_InstallDrivers=Download and install drivers windowTitleDownloadDrivers=Download and install drivers windowBodyDownloadDrivers=Downloading drivers (libusbK v3.0.7.0)... btn_Cancel=Cancel -btn_Close=Close \ No newline at end of file +btn_Close=Close +tab2_Cb_GlVersion=GoldLeaf version +tab2_Cb_GLshowNspOnly=Show only *.nsp in GoldLeaf. \ No newline at end of file diff --git a/src/main/resources/locale_ita.properties b/src/main/resources/locale_ita.properties index a5944bb..8180fb2 100644 --- a/src/main/resources/locale_ita.properties +++ b/src/main/resources/locale_ita.properties @@ -43,7 +43,6 @@ tab2_Lbl_AllowXciNszXczDesc=Usato dalle applicazioni che supportano XCI/NSZ/XCZ tab2_Lbl_Language=Lingua windowBodyRestartToApplyLang=Riavvia l'applicazione per applicare le modifiche. tab2_Cb_GLshowNspOnly=Mostra solo *.nsp in GoldLeaf. -tab2_Cb_UseOldGlVersion=Usa una vecchia versione di GoldLeaf btn_OpenSplitFile=Seleziona NSP troncato tab2_Lbl_ApplicationSettings=Impostazioni principali tabSplMrg_Lbl_SplitNMergeTitle=Strumento tronca e unisci @@ -63,4 +62,5 @@ failure_txt=Fallito btn_Select=Seleziona btn_InjectPayloader=Inietta payload btn_Cancel=Annulla +tab2_Cb_GlVersion=Versione di GoldLeaf diff --git a/src/main/resources/locale_por.properties b/src/main/resources/locale_por.properties index 966290d..e384664 100644 --- a/src/main/resources/locale_por.properties +++ b/src/main/resources/locale_por.properties @@ -43,7 +43,6 @@ tab2_Lbl_AllowXciNszXczDesc=Usado por aplica\u00E7\u00F5es que suportam XCI/NSZ/ tab2_Lbl_Language=Idioma windowBodyRestartToApplyLang=Por favor, reinicie para aplicar as modifica\u00E7\u00F5es. tab2_Cb_GLshowNspOnly=Mostrar apenas arquivos .nsp no GoldLeaf. -tab2_Cb_UseOldGlVersion=Usar vers\u00E3o antiga do GoldLeaf. btn_OpenSplitFile=Selecionar arquivos .nsp fragmentados(splitted) tab2_Lbl_ApplicationSettings=Configura\u00E7\u00F5es principais tabSplMrg_Lbl_SplitNMergeTitle=Ferramentas para fragmentar e juntar(merge) arquivos. @@ -63,4 +62,5 @@ failure_txt=Falhou btn_Select=Selecionar btn_InjectPayloader=Injetar payload btn_Cancel=Cancelar +tab2_Cb_GlVersion=Vers\u00E3o do GoldLeaf. diff --git a/src/main/resources/locale_rus.properties b/src/main/resources/locale_rus.properties index 137fea7..5c8e15b 100644 --- a/src/main/resources/locale_rus.properties +++ b/src/main/resources/locale_rus.properties @@ -43,7 +43,6 @@ tab2_Lbl_AllowXciNszXczDesc=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u04 tab2_Lbl_Language=\u042F\u0437\u044B\u043A windowBodyRestartToApplyLang=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0447\u0442\u043E\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0442\u0443\u043F\u0438\u043B\u0438 \u0432 \u0441\u0438\u043B\u0443. tab2_Cb_GLshowNspOnly=\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0444\u0430\u0439\u043B\u044B *.nsp \u0432 GoldLeaf. -tab2_Cb_UseOldGlVersion=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u0440\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E GoldLeaf btn_OpenSplitFile=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0440\u0430\u0437\u0431\u0438\u0442\u044B\u0439 NSP tab2_Lbl_ApplicationSettings=\u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 tabSplMrg_Lbl_SplitNMergeTitle=\u0423\u0442\u0438\u043B\u0438\u0442\u0430 \u0440\u0430\u0437\u0431\u0438\u0432\u043A\u0438 \u0438 \u0441\u043B\u0438\u044F\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u043E\u0432 @@ -68,4 +67,5 @@ windowTitleDownloadDrivers=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044 windowBodyDownloadDrivers=\u0421\u043A\u0430\u0447\u0438\u0432\u0430\u0435\u043C \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044B (libusbK v3.0.7.0)... btn_Cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C btn_Close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C +tab2_Cb_GlVersion=\u0412\u0435\u0440\u0441\u0438\u044F GoldLeaf diff --git a/src/main/resources/locale_ukr.properties b/src/main/resources/locale_ukr.properties index 49e572b..64e4578 100644 --- a/src/main/resources/locale_ukr.properties +++ b/src/main/resources/locale_ukr.properties @@ -43,7 +43,6 @@ tab2_Lbl_AllowXciNszXczDesc=\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u04 tab2_Lbl_Language=\u041C\u043E\u0432\u0430 windowBodyRestartToApplyLang=\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0456\u0442\u044C \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0449\u043E\u0431 \u0437\u043C\u0456\u043D\u0438 \u0432\u0441\u0442\u0443\u043F\u0438\u043B\u0438 \u0432 \u0441\u0438\u043B\u0443. tab2_Cb_GLshowNspOnly=\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u0432\u0438\u043A\u043B\u044E\u0447\u043D\u043E *.nsp \u0444\u0430\u0439\u043B\u0438 \u0443 GoldLeaf. -tab2_Cb_UseOldGlVersion=\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0441\u0442\u0430\u0440\u0443 \u0432\u0435\u0440\u0441\u0456\u044E GoldLeaf btn_OpenSplitFile=\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0440\u043E\u0437\u0431\u0438\u0442\u0438\u0439 NSP tab2_Lbl_ApplicationSettings=\u041E\u0441\u043D\u043E\u0432\u043D\u0456 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F tabSplMrg_Lbl_SplitNMergeTitle=\u041F\u043E\u043C\u0456\u0447\u043D\u0438\u043A \u0440\u043E\u0437\u0431\u0432\u043A\u0438 \u0442\u0430 \u043E\u0431'\u0454\u0434\u043D\u0430\u043D\u043D\u044F \u0444\u0430\u0439\u043B\u0456\u0432 @@ -68,3 +67,4 @@ windowTitleDownloadDrivers=\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u043 windowBodyDownloadDrivers=\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0443\u0454\u043C\u043E \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0438 (libusbK v3.0.7.0)... btn_Cancel=\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 btn_Close=\u0417\u0430\u043A\u0440\u0438\u0442\u0438 +tab2_Cb_GlVersion=\u0412\u0435\u0440\u0441\u0456\u044F GoldLeaf diff --git a/src/main/resources/locale_vie.properties b/src/main/resources/locale_vie.properties index aac568f..46f1642 100644 --- a/src/main/resources/locale_vie.properties +++ b/src/main/resources/locale_vie.properties @@ -22,7 +22,6 @@ tab2_Cb_DontServeRequests=Kh\u00F4ng ph\u1EE5c v\u1EE5 c\u00E1c y\u00EAu c\u1EA7 tab2_Cb_ExpertMode=Ch\u1EBF \u0111\u1ED9 Chuy\u00EAn gia tab2_Cb_GLshowNspOnly=Ch\u1EC9 hi\u1EC3n th\u1ECB *.nsp trong GoldLeaf. tab2_Cb_RandSelectPort=L\u1EA5y c\u1ED5ng ng\u1EABu nhi\u00EAn -tab2_Cb_UseOldGlVersion=D\u00F9ng phi\u00EAn b\u1EA3n GoldLeaf c\u0169 tab2_Cb_ValidateNSHostName=Lu\u00F4n x\u00E1c th\u1EF1c \u0111\u1EA7u v\u00E0o IP NS. tab2_Lbl_AllowXciNszXczDesc=\u0110\u01B0\u1EE3c s\u1EED d\u1EE5ng b\u1EDFi c\u00E1c \u1EE9ng d\u1EE5ng b\u00EAn th\u1EE9 ba h\u1ED7 tr\u1EE3 XCI/NSZ/XCZ v\u00E0 v\u1EADn d\u1EE5ng giao th\u1EE9c truy\u1EC1n t\u1EA3i TinFoil. \u0110\u1EEBng thay \u0111\u1ED5i n\u1EBFu b\u1EA1n kh\u00F4ng ch\u1EAFc. tab2_Lbl_ApplicationSettings=Thi\u1EBFt l\u1EADp ch\u00EDnh