diff --git a/app/src/processing/app/contrib/AvailableContribution.java b/app/src/processing/app/contrib/AvailableContribution.java index 0eb741e76..3c8b6ba54 100644 --- a/app/src/processing/app/contrib/AvailableContribution.java +++ b/app/src/processing/app/contrib/AvailableContribution.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import processing.app.Base; +import processing.app.Language; import processing.core.PApplet; @@ -86,7 +87,7 @@ class AvailableContribution extends Contribution { tempFolder = type.createTempFolder(); } catch (IOException e) { if (status != null) - status.setErrorMessage("Could not create a temporary folder to install."); + status.setErrorMessage(Language.text("contributions.errors.temporary_directory")); return null; } Base.unzip(contribArchive, tempFolder); @@ -115,7 +116,7 @@ class AvailableContribution extends Contribution { tempFolder = enclosingFolder; */ if (status != null) - status.setErrorMessage(getName() + " needs to be repackaged according to the " + type.getTitle() + " guidelines."); + status.setErrorMessage(Language.interpolate("contributions.errors.needs_repackage", getName(), type.getTitle())); //status.setErrorMessage("This " + type + " needs to be repackaged according to the guidelines."); return null; } @@ -128,7 +129,7 @@ class AvailableContribution extends Contribution { if (contribFolder == null) { if (status != null) - status.setErrorMessage("Could not find a " + type + " in the downloaded file."); + status.setErrorMessage(Language.interpolate("contributions.errors.no_contribution_found", type)); } else { File propFile = new File(contribFolder, type + ".properties"); @@ -180,7 +181,7 @@ class AvailableContribution extends Contribution { } else { if (status != null) - status.setErrorMessage("Error overwriting .properties file."); + status.setErrorMessage(Language.text("contributions.errors.overwriting_properties")); } } @@ -307,4 +308,4 @@ class AvailableContribution extends Contribution { } return false; } -} \ No newline at end of file +} diff --git a/app/src/processing/app/contrib/Contribution.java b/app/src/processing/app/contrib/Contribution.java index fedec1543..451ab7d4e 100644 --- a/app/src/processing/app/contrib/Contribution.java +++ b/app/src/processing/app/contrib/Contribution.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import processing.app.Language; import processing.core.PApplet; diff --git a/app/src/processing/app/contrib/ContributionListPanel.java b/app/src/processing/app/contrib/ContributionListPanel.java index 2fc5922fa..0a4c0ed8a 100644 --- a/app/src/processing/app/contrib/ContributionListPanel.java +++ b/app/src/processing/app/contrib/ContributionListPanel.java @@ -41,13 +41,6 @@ import processing.app.Base; public class ContributionListPanel extends JPanel implements Scrollable, ContributionChangeListener { - static public final String INSTALL_FAILURE_TITLE = "Install Failed"; - - static public final String MALFORMED_URL_MESSAGE = - "The link fetched from Processing.org is not valid.\n" + - "You can still install this library manually by visiting\n" + - "the library's website."; - ContributionManagerDialog contribManager; TreeMap panelByContribution; diff --git a/app/src/processing/app/contrib/ContributionManager.java b/app/src/processing/app/contrib/ContributionManager.java index 4b656ec63..76b18bfaf 100644 --- a/app/src/processing/app/contrib/ContributionManager.java +++ b/app/src/processing/app/contrib/ContributionManager.java @@ -140,7 +140,7 @@ public class ContributionManager { download(url, contribZip, downloadProgress); if (!downloadProgress.isCanceled() && !downloadProgress.isError()) { - installProgress.startTask("Installing...", ProgressMonitor.UNKNOWN); + installProgress.startTask(Language.text("contributions.progress.installing"), ProgressMonitor.UNKNOWN); LocalContribution contribution = ad.install(editor.getBase(), contribZip, false, status); @@ -159,10 +159,10 @@ public class ContributionManager { } catch (Exception e) { e.printStackTrace(); - status.setErrorMessage("Error during download and install."); + status.setErrorMessage(Language.text("contributions.errors.download_and_install")); } } catch (IOException e) { - status.setErrorMessage("Could not write to temporary directory."); + status.setErrorMessage(Language.text("contributions.errors.temporary_directory")); } } }, "Contribution Installer").start(); @@ -498,10 +498,8 @@ public class ContributionManager { static private void installOnStartUp(final Base base, final AvailableContribution availableContrib) { if (availableContrib.link == null) { - Base.showWarning("Update on Restart of " + availableContrib.getName() + "failed", - "Your operating system " - + "doesn't appear to be supported. You should visit the " - + availableContrib.getType() + "'s library for more info."); + Base.showWarning(Language.interpolate("contributions.errors.update_on_restart_failed", availableContrib.getName()), + Language.text("contributions.unsupported_operating_system")); return; } try { @@ -510,8 +508,8 @@ public class ContributionManager { ContributionManager.downloadAndInstallOnStartup(base, downloadUrl, availableContrib); } catch (MalformedURLException e) { - Base.showWarning("Update on Restart of " + availableContrib.getName() + "failed", - ContributionListPanel.MALFORMED_URL_MESSAGE, e); + Base.showWarning(Language.interpolate("contributions.errors.update_on_restart_failed", availableContrib.getName()), + Language.text("contributions.errors.malformed_url"), e); } } diff --git a/app/src/processing/app/contrib/ContributionManagerDialog.java b/app/src/processing/app/contrib/ContributionManagerDialog.java index b37b2c6bc..eda48efb1 100644 --- a/app/src/processing/app/contrib/ContributionManagerDialog.java +++ b/app/src/processing/app/contrib/ContributionManagerDialog.java @@ -41,7 +41,7 @@ import processing.app.*; public class ContributionManagerDialog { - static final String ANY_CATEGORY = "All"; + static final String ANY_CATEGORY = Language.text("contributions.all"); JFrame dialog; String title; @@ -61,10 +61,8 @@ public class ContributionManagerDialog { public ContributionManagerDialog(ContributionType type) { if (type == null) { - title = "Update Manager"; filter = ContributionType.createUpdateFilter(); } else { - // title = type.getTitle() + " Manager"; filter = type.createFilter(); } contribListing = ContributionListing.getInstance(); @@ -86,9 +84,9 @@ public class ContributionManagerDialog { this.editor = editor; if (dialog == null) { - dialog = new JFrame(title); + dialog = new JFrame(Language.text("contributions")); - restartButton = new JButton("Restart Processing"); + restartButton = new JButton(Language.text("contributions.restart")); restartButton.setVisible(false); restartButton.addActionListener(new ActionListener() { @@ -101,8 +99,8 @@ public class ContributionManagerDialog { if (ed.getSketch().isModified()) { int option = Base .showYesNoQuestion(editor, title, - "Unsaved changes have been found", - "Are you sure you want to restart Processing without saving first?"); + Language.text("contributions.unsaved_changes"), + Language.text("contributions.unsaved_changes.prompt")); if (option == JOptionPane.NO_OPTION) return; @@ -158,11 +156,9 @@ public class ContributionManagerDialog { updateCategoryChooser(); if (error) { if (exception instanceof SocketTimeoutException) { - status.setErrorMessage("Connection timed out while " + - "downloading the contribution list."); + status.setErrorMessage(Language.text("contributions.errors.list_download.timeout")); } else { - status.setErrorMessage("Could not download the list " + - "of available contributions."); + status.setErrorMessage(Language.text("contributions.errors.list_download")); } exception.printStackTrace(); } @@ -512,4 +508,4 @@ public class ContributionManagerDialog { public boolean hasAlreadyBeenOpened() { return dialog != null; } -} \ No newline at end of file +} diff --git a/app/src/processing/app/contrib/ContributionPanel.java b/app/src/processing/app/contrib/ContributionPanel.java index b4ee935b9..149b4ded5 100644 --- a/app/src/processing/app/contrib/ContributionPanel.java +++ b/app/src/processing/app/contrib/ContributionPanel.java @@ -50,16 +50,16 @@ import processing.app.Language; */ class ContributionPanel extends JPanel { static public final String REMOVE_RESTART_MESSAGE = - "Please restart Processing to finish removing this item."; + String.format("%s", Language.text("contributions.messages.remove_restart")); static public final String INSTALL_RESTART_MESSAGE = - "Please restart Processing to finish installing this item."; - + String.format("%s", Language.text("contributions.messages.install_restart")); + static public final String UPDATE_RESTART_MESSAGE = - "Please restart Processing to finish updating this item."; + String.format("%s", Language.text("contributions.messages.update_restart")); static public final String PROGRESS_BAR_CONSTRAINT = "Install/Remove Progress Bar Panel"; - + static public final String BUTTON_CONSTRAINT = "Install/Remvoe Button Panel"; private final ContributionListPanel listPanel; @@ -570,14 +570,13 @@ class ContributionPanel extends JPanel { description.append(REMOVE_RESTART_MESSAGE); } else if (contrib.isRestartFlagged()) { description.append(INSTALL_RESTART_MESSAGE); - } - else if (contrib.isUpdateFlagged()) { + } else if (contrib.isUpdateFlagged()) { description.append(UPDATE_RESTART_MESSAGE); - } - else { + } else { + String sentence = contrib.getSentence(); if (sentence == null || sentence.isEmpty()) { - sentence = "Description unavailable."; + sentence = String.format("%s", Language.text("contributions.errors.description_unavailable")); } else { sentence = sanitizeHtmlTags(sentence); sentence = toHtmlLinks(sentence); @@ -719,8 +718,8 @@ class ContributionPanel extends JPanel { listPanel.contribManager.status); } catch (MalformedURLException e) { - Base.showWarning(ContributionListPanel.INSTALL_FAILURE_TITLE, - ContributionListPanel.MALFORMED_URL_MESSAGE, e); + Base.showWarning(Language.text("contributions.errors.install_failed"), + Language.text("contributions.errors.malformed_url"), e); // not sure why we'd re-enable the button if it had an error... // installRemoveButton.setEnabled(true); } diff --git a/app/src/processing/app/languages/PDE.properties b/app/src/processing/app/languages/PDE.properties index a0548c30c..bfa3a641f 100644 --- a/app/src/processing/app/languages/PDE.properties +++ b/app/src/processing/app/languages/PDE.properties @@ -262,9 +262,29 @@ editor.status.printing.canceled = Printing canceled. # --------------------------------------- # Contribution Panel +contributions = Contribution Manager +contributions.restart = Restart Processing +contributions.unsaved_changes = Unsaved changes have been found +contributions.unsaved_changes.prompt = Are you sure you want to restart Processing without saving first? +contributions.messages.remove_restart = Please restart Processing to finish removing this item. +contributions.messages.install_restart = Please restart Processing to finish installing this item. +contributions.messages.update_restart = Please restart Processing to finish updating this item. +contributions.errors.list_download = Could not download the list of available contributions. +contributions.errors.list_download.timeout = Connection timed out while downloading the contribution list. +contributions.errors.download_and_install = Error during download and install. +contributions.errors.description_unavailable = Description unavailable. +contributions.errors.malformed_url = "The link fetched from Processing.org is not valid.\nYou can still install this library manually by visiting\nthe library's website. +contributions.errors.needs_repackage = %s needs to be repackaged according to the %s guidelines. +contributions.errors.no_contribution_found = Could not find a %s in the downloaded file. +contributions.errors.overwriting_properties = Error overwriting .properties file. +contributions.errors.install_failed = Install failed. +contributions.errors.update_on_restart_failed = Update on restart of %s failed. +contributions.errors.temporary_directory = Could not write to temporary directory. +contributions.all = All contributions.undo = Undo contributions.remove = Remove contributions.install = Install +contributions.progress.installing = Installing contributions.progress.starting = Starting contributions.progress.downloading = Downloading contributions.download_error = An error occured while downloading the contribution.