diff --git a/Core/manifest.mf b/Core/manifest.mf index 7aa34c46dc..9c9ba77918 100644 --- a/Core/manifest.mf +++ b/Core/manifest.mf @@ -2,7 +2,7 @@ Manifest-Version: 1.0 OpenIDE-Module: org.sleuthkit.autopsy.core/9 OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml -OpenIDE-Module-Implementation-Version: 9 +OpenIDE-Module-Implementation-Version: 10 OpenIDE-Module-Requires: org.openide.windows.WindowManager, org.netbeans.api.javahelp.Help AutoUpdate-Show-In-Client: true AutoUpdate-Essential-Module: true diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index 377812104d..69d3afa92d 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -6,5 +6,5 @@ license.file=../LICENSE-2.0.txt nbm.homepage=http://www.sleuthkit.org/ nbm.module.author=Brian Carrier nbm.needs.restart=true -spec.version.base=7.0 +spec.version.base=7.1 diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index d5eb8a4d96..fb2fb85e48 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -194,6 +194,7 @@ org.sleuthkit.autopsy.actions org.sleuthkit.autopsy.casemodule org.sleuthkit.autopsy.casemodule.services + org.sleuthkit.autopsy.contentviewers org.sleuthkit.autopsy.core org.sleuthkit.autopsy.corecomponentinterfaces org.sleuthkit.autopsy.corecomponents diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java index 4e3efcad87..8cdef4af84 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddBlackboardArtifactTagAction.java @@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.actions; import java.util.Collection; import java.util.logging.Level; import javax.swing.JOptionPane; + +import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; @@ -50,7 +52,11 @@ public class AddBlackboardArtifactTagAction extends AddTagAction { @Override protected String getActionDisplayName() { - return Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class).size() > 1 ? "Tag Results" : "Tag Result"; + String singularTagResult = NbBundle.getMessage(this.getClass(), + "AddBlackboardArtifactTagAction.singularTagResult"); + String pluralTagResult = NbBundle.getMessage(this.getClass(), + "AddBlackboardArtifactTagAction.pluralTagResult"); + return Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class).size() > 1 ? pluralTagResult : singularTagResult; } @Override @@ -62,7 +68,13 @@ public class AddBlackboardArtifactTagAction extends AddTagAction { } catch (TskCoreException ex) { Logger.getLogger(AddBlackboardArtifactTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex); - JOptionPane.showMessageDialog(null, "Unable to tag " + artifact.getDisplayName() + ".", "Tagging Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "AddBlackboardArtifactTagAction.unableToTag.msg", + artifact.getDisplayName()), + NbBundle.getMessage(this.getClass(), + "AddBlackboardArtifactTagAction.taggingErr"), + JOptionPane.ERROR_MESSAGE); } } } diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java index 8760ed364f..5d7f7d16bf 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddContentTagAction.java @@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.actions; import java.util.Collection; import java.util.logging.Level; import javax.swing.JOptionPane; + +import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; @@ -51,7 +53,9 @@ public class AddContentTagAction extends AddTagAction { @Override protected String getActionDisplayName() { - return Utilities.actionsGlobalContext().lookupAll(AbstractFile.class).size() > 1 ? "Tag Files" : "Tag File"; + String singularTagFile = NbBundle.getMessage(this.getClass(), "AddContentTagAction.singularTagFile"); + String pluralTagFile = NbBundle.getMessage(this.getClass(), "AddContentTagAction.pluralTagFile"); + return Utilities.actionsGlobalContext().lookupAll(AbstractFile.class).size() > 1 ? pluralTagFile : singularTagFile; } @Override @@ -66,7 +70,13 @@ public class AddContentTagAction extends AddTagAction { file = (AbstractFile)parentFile; } else { - JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.unableToTag.msg", + parentFile.getName()), + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.cannotApplyTagErr"), + JOptionPane.WARNING_MESSAGE); continue; } } @@ -78,12 +88,24 @@ public class AddContentTagAction extends AddTagAction { file = (AbstractFile)parentFile; } else { - JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.unableToTag.msg", + parentFile.getName()), + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.cannotApplyTagErr"), + JOptionPane.WARNING_MESSAGE); continue; } } else { - JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.unableToTag.msg", + parentFile.getName()), + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.cannotApplyTagErr"), + JOptionPane.WARNING_MESSAGE); continue; } } @@ -92,7 +114,12 @@ public class AddContentTagAction extends AddTagAction { } catch (TskCoreException ex) { Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex); - JOptionPane.showMessageDialog(null, "Unable to tag " + file.getName() + ".", "Tagging Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "AddContentTagAction.unableToTag.msg2", + file.getName()), + NbBundle.getMessage(this.getClass(), "AddContentTagAction.taggingErr"), + JOptionPane.ERROR_MESSAGE); } } } diff --git a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java index 65f6a5e589..6d5c91d074 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/AddTagAction.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.logging.Level; import javax.swing.JMenu; import javax.swing.JMenuItem; + +import org.openide.util.NbBundle; import org.openide.util.actions.Presenter; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.services.TagsManager; @@ -85,7 +87,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup { } // Create a "Quick Tag" sub-menu. - JMenu quickTagMenu = new JMenu("Quick Tag"); + JMenu quickTagMenu = new JMenu(NbBundle.getMessage(this.getClass(), "AddTagAction.quickTag")); add(quickTagMenu); // Each tag name in the current set of tags gets its own menu item in @@ -105,7 +107,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup { } } else { - JMenuItem empty = new JMenuItem("No tags"); + JMenuItem empty = new JMenuItem(NbBundle.getMessage(this.getClass(), "AddTagAction.noTags")); empty.setEnabled(false); quickTagMenu.add(empty); } @@ -115,7 +117,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup { // The "Quick Tag" menu also gets an "Choose Tag..." menu item. // Selecting this item initiates a dialog that can be used to create // or select a tag name and adds a tag with the resulting name. - JMenuItem newTagMenuItem = new JMenuItem("New Tag..."); + JMenuItem newTagMenuItem = new JMenuItem(NbBundle.getMessage(this.getClass(), "AddTagAction.newTag")); newTagMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -131,7 +133,8 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup { // Create a "Choose Tag and Comment..." menu item. Selecting this item initiates // a dialog that can be used to create or select a tag name with an // optional comment and adds a tag with the resulting name. - JMenuItem tagAndCommentItem = new JMenuItem("Tag and Comment..."); + JMenuItem tagAndCommentItem = new JMenuItem( + NbBundle.getMessage(this.getClass(), "AddTagAction.tagAndComment")); tagAndCommentItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties index ad0c347ecb..2151fafa49 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties @@ -14,3 +14,37 @@ GetTagNameAndCommentDialog.commentLabel.text=Comment: GetTagNameAndCommentDialog.cancelButton.text=Cancel GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use GetTagNameAndCommentDialog.tagLabel.text=Tag: +AddBlackboardArtifactTagAction.singularTagResult=Tag Result +AddBlackboardArtifactTagAction.pluralTagResult=Tag Results +AddBlackboardArtifactTagAction.unableToTag.msg=Unable to tag {0}. +AddBlackboardArtifactTagAction.taggingErr=Tagging Error +AddContentTagAction.singularTagFile=Tag File +AddContentTagAction.pluralTagFile=Tag Files +AddContentTagAction.unableToTag.msg=Unable to tag {0}, not a regular file. +AddContentTagAction.cannotApplyTagErr=Cannot Apply Tag +AddContentTagAction.unableToTag.msg2=Unable to tag {0}. +AddContentTagAction.taggingErr=Tagging Error +AddTagAction.quickTag=Quick Tag +AddTagAction.noTags=No tags +AddTagAction.newTag=New Tag... +AddTagAction.tagAndComment=Tag and Comment... +DeleteBlackboardArtifactTagAction.deleteTags=Delete Tag(s) +DeleteBlackboardArtifactTagAction.unableToDelTag.msg=Unable to delete tag {0}. +DeleteBlackboardArtifactTagAction.tagDelErr=Tag Deletion Error +DeleteContentTagAction.deleteTags=Delete Tag(s) +DeleteContentTagAction.unableToDelTag.msg=Unable to delete tag {0}. +DeleteContentTagAction.tagDelErr=Tag Deletion Error +GetTagNameAndCommentDialog.noTags=No Tags +GetTagNameAndCommentDialog.createTag=Create Tag +GetTagNameAndCommentDialog.cancelName=cancel +GetTagNameDialog.createTag=Create Tag +GetTagNameDialog.cancelName=Cancel +GetTagNameDialog.mustSupplyTtagName.msg=Must supply a tag name to continue. +GetTagNameDialog.tagNameErr=Tag Name +GetTagNameDialog.illegalChars.msg=The tag name contains illegal characters.\ +Cannot contain any of the following symbols\: \\ \: * ? " < > | +GetTagNameDialog.illegalCharsErr=Illegal Characters +GetTagNameDialog.unableToAddTagNameToCase.msg=Unable to add the {0} tag name to the case. +GetTagNameDialog.taggingErr=Tagging Error +GetTagNameDialog.tagNameAlreadyDef.msg=A {0} tag name has already been defined. +GetTagNameDialog.dupTagErr=Duplicate Tag Error diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties new file mode 100644 index 0000000000..0cf5a8be40 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties @@ -0,0 +1,46 @@ +GetTagNameDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB +GetTagNameDialog.okButton.text=OK +GetTagNameDialog.preexistingLabel.text=\u65E2\u5B58\u30BF\u30B0\uFF1A +GetTagNameDialog.newTagPanel.border.title=\u65B0\u898F\u30BF\u30B0 +GetTagNameDialog.tagNameLabel.text=\u30BF\u30B0\u540D\uFF1A +GetTagNameAndCommentDialog.newTagButton.text=\u65B0\u898F\u30BF\u30B0 +GetTagNameAndCommentDialog.okButton.text=OK +GetTagNameAndCommentDialog.commentText.toolTipText=\u30BF\u30B0\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u5165\u529B\u307E\u305F\u306F\u7A7A\u6B04\u306B\u3057\u3066\u304F\u3060\u3055\u3044 +GetTagNameAndCommentDialog.commentLabel.text=\u30B3\u30E1\u30F3\u30C8\uFF1A +GetTagNameAndCommentDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB +GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4F7F\u7528\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E +GetTagNameAndCommentDialog.tagLabel.text=\u30BF\u30B0\uFF1A +AddBlackboardArtifactTagAction.singularTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0 +AddBlackboardArtifactTagAction.pluralTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0 +AddBlackboardArtifactTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002 +AddBlackboardArtifactTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC +AddContentTagAction.singularTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0 +AddContentTagAction.pluralTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0 +AddContentTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 +AddContentTagAction.unableToTag.msg2={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002 +AddContentTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC +AddTagAction.quickTag=\u30AF\u30A4\u30C3\u30AF\u30BF\u30B0 +AddTagAction.noTags=\u30BF\u30B0\u7121\u3057 +AddTagAction.newTag=\u65B0\u898F\u30BF\u30B0\u2026 +AddTagAction.tagAndComment=\u30BF\u30B0\u3068\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u2026 +DeleteBlackboardArtifactTagAction.deleteTags=\u30BF\u30B0\u3092\u524A\u9664 +DeleteBlackboardArtifactTagAction.unableToDelTag.msg=\u30BF\u30B0{0}\u306E\u524A\u9664\u304C\u3067\u304D\u307E\u305B\u3093\u3002 +DeleteBlackboardArtifactTagAction.tagDelErr=\u30BF\u30B0\u524A\u9664\u30A8\u30E9\u30FC +DeleteContentTagAction.deleteTags=\u30BF\u30B0\u3092\u524A\u9664 +DeleteContentTagAction.unableToDelTag.msg=\u30BF\u30B0{0}\u306E\u524A\u9664\u304C\u3067\u304D\u307E\u305B\u3093\u3002 +DeleteContentTagAction.tagDelErr=\u30BF\u30B0\u524A\u9664\u30A8\u30E9\u30FC +GetTagNameAndCommentDialog.noTags=\u30BF\u30B0\u7121\u3057 +GetTagNameAndCommentDialog.createTag=\u30BF\u30B0\u3092\u4F5C\u6210 +GetTagNameAndCommentDialog.cancelName=\u30AD\u30E3\u30F3\u30BB\u30EB +GetTagNameDialog.createTag=\u30BF\u30B0\u3092\u4F5C\u6210 +GetTagNameDialog.cancelName=\u30AD\u30E3\u30F3\u30BB\u30EB +GetTagNameDialog.mustSupplyTtagName.msg=\u30BF\u30B0\u540D\u3092\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070\u3001\u5148\u306B\u9032\u3081\u307E\u305B\u3093\u3002 +GetTagNameDialog.tagNameErr=\u30BF\u30B0\u540D +GetTagNameDialog.illegalChars.msg=\u4E0D\u6B63\u306A\u6587\u5B57\u304C\u30BF\u30B0\u540D\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\ +\u6B21\u306E\u6587\u5B57\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF1A \\ \: * ? " < > | +GetTagNameDialog.illegalCharsErr=\u4E0D\u6B63\u306A\u6587\u5B57 +GetTagNameDialog.unableToAddTagNameToCase.msg=\u30BF\u30B0\u540D{0}\u3092\u30B1\u30FC\u30B9\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 +GetTagNameDialog.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC +GetTagNameDialog.tagNameAlreadyDef.msg=\u30BF\u30B0\u540D{0}\u306F\u65E2\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002 +GetTagNameDialog.dupTagErr=\u91CD\u8907\u30BF\u30B0\u306E\u30A8\u30E9\u30FC +AddContentTagAction.cannotApplyTagErr=\u30BF\u30B0\u3092\u9069\u7528\u3067\u304D\u307E\u305B\u3093 \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java index 3899b09c82..db19ad6f6f 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteBlackboardArtifactTagAction.java @@ -23,6 +23,8 @@ import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; + +import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.datamodel.BlackboardArtifactTag; @@ -32,7 +34,8 @@ import org.sleuthkit.datamodel.TskCoreException; * Instances of this Action allow users to delete tags applied to blackboard artifacts. */ public class DeleteBlackboardArtifactTagAction extends TagAction { - private static final String MENU_TEXT = "Delete Tag(s)"; + private static final String MENU_TEXT = NbBundle.getMessage(DeleteBlackboardArtifactTagAction.class, + "DeleteBlackboardArtifactTagAction.deleteTags"); // This class is a singleton to support multi-selection of nodes, since // org.openide.nodes.NodeOp.findActions(Node[] nodes) will only pick up an Action if every @@ -59,7 +62,13 @@ public class DeleteBlackboardArtifactTagAction extends TagAction { } catch (TskCoreException ex) { Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex); - JOptionPane.showMessageDialog(null, "Unable to delete tag " + tag.getName() + ".", "Tag Deletion Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "DeleteBlackboardArtifactTagAction.unableToDelTag.msg", + tag.getName()), + NbBundle.getMessage(this.getClass(), + "DeleteBlackboardArtifactTagAction.tagDelErr"), + JOptionPane.ERROR_MESSAGE); } } } diff --git a/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java b/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java index 6f4bfd42a1..b8bd85e321 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java +++ b/Core/src/org/sleuthkit/autopsy/actions/DeleteContentTagAction.java @@ -23,6 +23,8 @@ import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; + +import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.datamodel.ContentTag; @@ -32,7 +34,8 @@ import org.sleuthkit.datamodel.TskCoreException; * Instances of this Action allow users to delete tags applied to content. */ public class DeleteContentTagAction extends TagAction { - private static final String MENU_TEXT = "Delete Tag(s)"; + private static final String MENU_TEXT = NbBundle.getMessage(DeleteContentTagAction.class, + "DeleteContentTagAction.deleteTags"); // This class is a singleton to support multi-selection of nodes, since // org.openide.nodes.NodeOp.findActions(Node[] nodes) will only pick up an Action if every @@ -59,7 +62,12 @@ public class DeleteContentTagAction extends TagAction { } catch (TskCoreException ex) { Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex); - JOptionPane.showMessageDialog(null, "Unable to delete tag " + tag.getName() + ".", "Tag Deletion Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "DeleteContentTagAction.unableToDelTag.msg", + tag.getName()), + NbBundle.getMessage(this.getClass(), "DeleteContentTagAction.tagDelErr"), + JOptionPane.ERROR_MESSAGE); } } } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.form b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.form index cbbdaebb26..47ff059281 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.form +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.form @@ -109,6 +109,7 @@ + diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java index e953694d90..68c38b6114 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameAndCommentDialog.java @@ -30,6 +30,8 @@ import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.KeyStroke; + +import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.services.TagsManager; @@ -38,7 +40,8 @@ import org.sleuthkit.datamodel.TagName; import org.sleuthkit.datamodel.TskCoreException; public class GetTagNameAndCommentDialog extends JDialog { - private static final String NO_TAG_NAMES_MESSAGE = "No Tags"; + private static final String NO_TAG_NAMES_MESSAGE = NbBundle.getMessage(GetTagNameAndCommentDialog.class, + "GetTagNameAndCommentDialog.noTags"); private final HashMap tagNames = new HashMap<>(); private TagNameAndComment tagNameAndComment = null; @@ -66,11 +69,13 @@ public class GetTagNameAndCommentDialog extends JDialog { } private GetTagNameAndCommentDialog() { - super((JFrame)WindowManager.getDefault().getMainWindow(), "Create Tag", true); + super((JFrame)WindowManager.getDefault().getMainWindow(), + NbBundle.getMessage(GetTagNameAndCommentDialog.class, "GetTagNameAndCommentDialog.createTag"), + true); initComponents(); // Set up the dialog to close when Esc is pressed. - String cancelName = "cancel"; + String cancelName = NbBundle.getMessage(this.getClass(), "GetTagNameAndCommentDialog.cancelName"); InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName); ActionMap actionMap = getRootPane().getActionMap(); @@ -240,7 +245,7 @@ public class GetTagNameAndCommentDialog extends JDialog { private javax.swing.JTextField commentText; private javax.swing.JButton newTagButton; private javax.swing.JButton okButton; - private javax.swing.JComboBox tagCombo; + private javax.swing.JComboBox tagCombo; private javax.swing.JLabel tagLabel; // End of variables declaration//GEN-END:variables } diff --git a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java index fb0d50ddc4..f74ddd38e8 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java +++ b/Core/src/org/sleuthkit/autopsy/actions/GetTagNameDialog.java @@ -34,6 +34,7 @@ import javax.swing.JOptionPane; import javax.swing.KeyStroke; import javax.swing.table.AbstractTableModel; import org.openide.util.ImageUtilities; +import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.services.TagsManager; @@ -52,12 +53,14 @@ public class GetTagNameDialog extends JDialog { } private GetTagNameDialog() { - super((JFrame)WindowManager.getDefault().getMainWindow(), "Create Tag", true); + super((JFrame)WindowManager.getDefault().getMainWindow(), + NbBundle.getMessage(GetTagNameDialog.class, "GetTagNameDialog.createTag"), + true); setIconImage(ImageUtilities.loadImage(TAG_ICON_PATH)); initComponents(); // Set up the dialog to close when Esc is pressed. - String cancelName = "cancel"; + String cancelName = NbBundle.getMessage(this.getClass(), "GetTagNameDialog.cancelName"); InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName); ActionMap actionMap = getRootPane().getActionMap(); @@ -276,10 +279,17 @@ public class GetTagNameDialog extends JDialog { private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed String tagDisplayName = tagNameField.getText(); if (tagDisplayName.isEmpty()) { - JOptionPane.showMessageDialog(null, "Must supply a tag name to continue.", "Tag Name", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "GetTagNameDialog.mustSupplyTtagName.msg"), + NbBundle.getMessage(this.getClass(), "GetTagNameDialog.tagNameErr"), + JOptionPane.ERROR_MESSAGE); } else if (containsIllegalCharacters(tagDisplayName)) { - JOptionPane.showMessageDialog(null, "The tag name contains illegal characters.\nCannot contain any of the following symbols: \\ : * ? \" < > |", "Illegal Characters", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalChars.msg"), + NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalCharsErr"), + JOptionPane.ERROR_MESSAGE); } else { tagName = tagNames.get(tagDisplayName); @@ -290,12 +300,22 @@ public class GetTagNameDialog extends JDialog { } catch (TskCoreException ex) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex); - JOptionPane.showMessageDialog(null, "Unable to add the " + tagDisplayName + " tag name to the case.", "Tagging Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "GetTagNameDialog.unableToAddTagNameToCase.msg", + tagDisplayName), + NbBundle.getMessage(this.getClass(), "GetTagNameDialog.taggingErr"), + JOptionPane.ERROR_MESSAGE); tagName = null; } catch (TagsManager.TagNameAlreadyExistsException ex) { Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex); - JOptionPane.showMessageDialog(null, "A " + tagDisplayName + " tag name has already been defined.", "Duplicate Tag Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "GetTagNameDialog.tagNameAlreadyDef.msg", + tagDisplayName), + NbBundle.getMessage(this.getClass(), "GetTagNameDialog.dupTagErr"), + JOptionPane.ERROR_MESSAGE); tagName = null; } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java index 469b600ac2..a769194ed3 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageAction.java @@ -111,15 +111,18 @@ public final class AddImageAction extends CallableSystemAction implements Presen final IngestConfigurator ingestConfig = Lookup.getDefault().lookup(IngestConfigurator.class); if (null != ingestConfig && ingestConfig.isIngestRunning()) { - final String msg = "Ingest is ongoing on another data source. Adding a new source now might slow down the current ingest.
Do you want to proceed and add a new data source now?"; - if (JOptionPane.showConfirmDialog(null, msg, "Ingest in progress", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.NO_OPTION) { + final String msg = NbBundle.getMessage(this.getClass(), "AddImageAction.ingestConfig.ongoingIngest.msg"); + if (JOptionPane.showConfirmDialog(null, msg, + NbBundle.getMessage(this.getClass(), + "AddImageAction.ingestConfig.ongoingIngest.title"), + JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.NO_OPTION) { return; } } iterator = new AddImageWizardIterator(this); wizardDescriptor = new WizardDescriptor(iterator); - wizardDescriptor.setTitle("Add Data Source"); + wizardDescriptor.setTitle(NbBundle.getMessage(this.getClass(), "AddImageAction.wizard.title")); wizardDescriptor.putProperty(NAME, e); if (dialog != null) { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java index 0057aa689f..1aecf44f31 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageTask.java @@ -24,6 +24,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.coreutils.Logger; @@ -97,7 +99,9 @@ import org.sleuthkit.datamodel.TskException; String currDir = process.currentDirectory(); if (currDir != null) { if (!currDir.isEmpty() ) { - progressMonitor.setProgressText("Adding: " + currDir); + progressMonitor.setProgressText( + NbBundle.getMessage(this.getClass(), "AddImageTask.run.progress.adding", + currDir)); } } // this sleep here prevents the UI from locking up @@ -298,7 +302,7 @@ import org.sleuthkit.datamodel.TskException; logger.log(Level.INFO, "interrupt() add image process"); addImageProcess.stop(); //it might take time to truly stop processing and writing to db } catch (TskCoreException ex) { - throw new Exception("Error stopping add-image process.", ex); + throw new Exception(NbBundle.getMessage(this.getClass(), "AddImageTask.interrupt.exception.msg"), ex); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressPanel.java index 951d60c834..14920f7183 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressPanel.java @@ -29,6 +29,7 @@ import javax.swing.event.ChangeListener; import org.openide.WizardDescriptor; import org.openide.util.HelpCtx; import org.openide.util.Lookup; +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; /** @@ -136,7 +137,8 @@ class AddImageWizardAddingProgressPanel implements WizardDescriptor.FinishablePa public boolean isValid() { // set the focus to the next button of the wizard dialog if it's enabled if (imgAdded) { - Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton("Next >"); + Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton( + NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressPanel.isValid.focusNext")); } return imgAdded; @@ -147,7 +149,8 @@ class AddImageWizardAddingProgressPanel implements WizardDescriptor.FinishablePa */ void setStateStarted() { component.getProgressBar().setIndeterminate(true); - component.setProgressBarTextAndColor("*This process may take some time for large data sources.", 0, Color.black); + component.setProgressBarTextAndColor( + NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressPanel.stateStarted.progressBarText"), 0, Color.black); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressVisual.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressVisual.java index a7be36a1d7..afd5ec7281 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressVisual.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardAddingProgressVisual.java @@ -23,6 +23,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JProgressBar; import org.openide.WizardDescriptor; +import org.openide.util.NbBundle; /** * visual component to display progress bar and status updates while adding an @@ -30,7 +31,8 @@ import org.openide.WizardDescriptor; */ class AddImageWizardAddingProgressVisual extends javax.swing.JPanel { - private static final String ADDING_DATA_SOURCE_COMPLETE = "Adding Data Source - Complete"; + private static final String ADDING_DATA_SOURCE_COMPLETE = NbBundle + .getMessage(AddImageWizardAddingProgressVisual.class, "AddImageWizardAddingProgressVisual.addingDsComplete.text"); private String errorLog = ""; private boolean hasCriticalErrors = false; @@ -42,7 +44,7 @@ import org.openide.WizardDescriptor; */ @Override public String getName() { - return "Add Data Source"; + return NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.getName.text"); } /** @@ -115,10 +117,12 @@ import org.openide.WizardDescriptor; //progressBar.setValue(100); //always invoked when process completed if (hasCriticalErrors) { statusLabel.setForeground(Color.RED); - statusLabel.setText("*Failed to add data source (critical errors encountered). Click below to view the log."); + statusLabel.setText( + NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.showErrors.critText")); } else { statusLabel.setForeground(Color.BLACK); - statusLabel.setText("*Data Source added (non-critical errors encountered). Click below to view the log."); + statusLabel.setText( + NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.showErrors.nonCritText")); } errorLog += errors + "\n"; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourcePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourcePanel.java index d662439f3b..9f595e92d3 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourcePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourcePanel.java @@ -25,6 +25,8 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -106,7 +108,8 @@ class AddImageWizardChooseDataSourcePanel implements WizardDescriptor.Panel"); + Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton( + NbBundle.getMessage(this.getClass(), "AddImageWizardChooseDataSourcePanel.moveFocusNext")); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourceVisual.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourceVisual.java index 65a97761dd..7cd8f412ba 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourceVisual.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardChooseDataSourceVisual.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.casemodule; - import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -37,25 +36,22 @@ import javax.swing.JSeparator; import javax.swing.event.DocumentEvent; import javax.swing.ListCellRenderer; import org.openide.util.Lookup; +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; /** - * visual component for the first panel of add image wizard. - * Allows the user to choose the data source type and then select the data source + * visual component for the first panel of add image wizard. Allows the user to + * choose the data source type and then select the data source * */ final class AddImageWizardChooseDataSourceVisual extends JPanel { static final Logger logger = Logger.getLogger(AddImageWizardChooseDataSourceVisual.class.getName()); - private AddImageWizardChooseDataSourcePanel wizPanel; - private JPanel currentPanel; - private Map datasourceProcessorsMap = new HashMap(); - - - List coreDSPTypes = new ArrayList(); + private Map datasourceProcessorsMap = new HashMap<>(); + List coreDSPTypes = new ArrayList<>(); /** * Creates new form AddImageVisualPanel1 @@ -65,46 +61,45 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { AddImageWizardChooseDataSourceVisual(AddImageWizardChooseDataSourcePanel wizPanel) { initComponents(); this.wizPanel = wizPanel; - + customInit(); } private void customInit() { - + typePanel.setLayout(new BorderLayout()); - + discoverDataSourceProcessors(); - + // set up the DSP type combobox typeComboBox.removeAllItems(); - + Set dspTypes = datasourceProcessorsMap.keySet(); - + // make a list of core DSPs // ensure that the core DSPs are at the top and in a fixed order coreDSPTypes.add(ImageDSProcessor.getType()); coreDSPTypes.add(LocalDiskDSProcessor.getType()); coreDSPTypes.add(LocalFilesDSProcessor.getType()); - - for(String dspType:coreDSPTypes){ + + for (String dspType : coreDSPTypes) { typeComboBox.addItem(dspType); } - + // now add any addtional DSPs that haven't already been added - for(String dspType:dspTypes){ + for (String dspType : dspTypes) { if (!coreDSPTypes.contains(dspType)) { typeComboBox.addItem(dspType); } } - - // set a custom renderer that draws a separator at the end of the core DSPs in the combobox - typeComboBox.setRenderer(new ComboboxSeparatorRenderer(typeComboBox.getRenderer()){ + + typeComboBox.setRenderer(new ComboboxSeparatorRenderer(typeComboBox.getRenderer()) { @Override - protected boolean addSeparatorAfter(JList list, Object value, int index){ - return (index == coreDSPTypes.size() - 1); - } - }); - + protected boolean addSeparatorAfter(JList list, Object value, int index) { + return (index == coreDSPTypes.size() - 1); + } + }); + //add actionlistner to listen for change ActionListener cbActionListener = new ActionListener() { @Override @@ -117,24 +112,23 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { } private void discoverDataSourceProcessors() { - - for (DataSourceProcessor dsProcessor: Lookup.getDefault().lookupAll(DataSourceProcessor.class)) { - - if (!datasourceProcessorsMap.containsKey(dsProcessor.getDataSourceType()) ) { - datasourceProcessorsMap.put(dsProcessor.getDataSourceType(), dsProcessor); - } - else { - logger.log(Level.SEVERE, "discoverDataSourceProcessors(): A DataSourceProcessor already exists for type = " + dsProcessor.getDataSourceType() ); - } - } - } - private void dspSelectionChanged() { - // update the current panel to selection - currentPanel = getCurrentDSProcessor().getPanel(); - updateCurrentPanel(currentPanel); + for (DataSourceProcessor dsProcessor : Lookup.getDefault().lookupAll(DataSourceProcessor.class)) { + + if (!datasourceProcessorsMap.containsKey(dsProcessor.getDataSourceType())) { + datasourceProcessorsMap.put(dsProcessor.getDataSourceType(), dsProcessor); + } else { + logger.log(Level.SEVERE, "discoverDataSourceProcessors(): A DataSourceProcessor already exists for type = {0}", dsProcessor.getDataSourceType()); + } + } } - + + private void dspSelectionChanged() { + // update the current panel to selection + currentPanel = getCurrentDSProcessor().getPanel(); + updateCurrentPanel(currentPanel); + } + /** * Changes the current panel to the given panel. * @@ -143,7 +137,7 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { private void updateCurrentPanel(JPanel panel) { currentPanel = panel; typePanel.removeAll(); - typePanel.add((JPanel) currentPanel, BorderLayout.CENTER); + typePanel.add(currentPanel, BorderLayout.CENTER); typePanel.validate(); typePanel.repaint(); currentPanel.addPropertyChangeListener(new PropertyChangeListener() { @@ -157,24 +151,26 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { } } }); - + updateUI(null); } - /** + /** * Returns the currently selected DS Processor - * @return DataSourceProcessor the DataSourceProcessor corresponding to the data source type selected in the combobox + * + * @return DataSourceProcessor the DataSourceProcessor corresponding to the + * data source type selected in the combobox */ protected DataSourceProcessor getCurrentDSProcessor() { // get the type of the currently selected panel and then look up // the correspodning DS Handler in the map String dsType = (String) typeComboBox.getSelectedItem(); DataSourceProcessor dsProcessor = datasourceProcessorsMap.get(dsType); - + return dsProcessor; - + } - + /** * Returns the name of the this panel. This name will be shown on the left * panel of the "Add Image" wizard panel. @@ -183,10 +179,9 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { */ @Override public String getName() { - return "Enter Data Source Information"; + return NbBundle.getMessage(this.getClass(), "AddImageWizardChooseDataSourceVisual.getName.text"); } - /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always @@ -309,25 +304,27 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel { this.wizPanel.enableNextButton(getCurrentDSProcessor().isPanelValid()); } - - public abstract class ComboboxSeparatorRenderer implements ListCellRenderer{ + public abstract class ComboboxSeparatorRenderer implements ListCellRenderer { + private ListCellRenderer delegate; private JPanel separatorPanel = new JPanel(new BorderLayout()); private JSeparator separator = new JSeparator(); - public ComboboxSeparatorRenderer(ListCellRenderer delegate){ - this.delegate = delegate; + public ComboboxSeparatorRenderer(ListCellRenderer delegate) { + this.delegate = delegate; } - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component comp = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - if(index!=-1 && addSeparatorAfter(list, value, index)){ + if (index != -1 && addSeparatorAfter(list, value, index)) { separatorPanel.removeAll(); separatorPanel.add(comp, BorderLayout.CENTER); separatorPanel.add(separator, BorderLayout.SOUTH); return separatorPanel; - }else + } else { return comp; + } } protected abstract boolean addSeparatorAfter(JList list, Object value, int index); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardIngestConfigPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardIngestConfigPanel.java index c4c2f6d4dd..0e0726480b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardIngestConfigPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/AddImageWizardIngestConfigPanel.java @@ -19,6 +19,7 @@ package org.sleuthkit.autopsy.casemodule; +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.ingest.IngestConfigurator; import java.awt.Color; import java.awt.Component; @@ -275,9 +276,11 @@ class AddImageWizardIngestConfigPanel implements WizardDescriptor.PanelIngest is ongoing on another data source. Adding a new source now might slow down the current ingest.
Do you want to proceed and add a new data source now? +AddImageAction.ingestConfig.ongoingIngest.title=Ingest in progress +AddImageTask.run.progress.adding=Adding\: {0} +AddImageTask.interrupt.exception.msg=Error stopping add-image process. +AddImageWizardAddingProgressPanel.isValid.focusNext=Next > +AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*This process may take some time for large data sources. +AddImageWizardAddingProgressVisual.addingDsComplete.text=Adding Data Source - Complete +AddImageWizardAddingProgressVisual.getName.text=Add Data Source +AddImageWizardAddingProgressVisual.showErrors.critText=*Failed to add data source (critical errors encountered). Click below to view the log. +AddImageWizardAddingProgressVisual.showErrors.nonCritText=*Data Source added (non-critical errors encountered). Click below to view the log. +AddImageWizardChooseDataSourcePanel.moveFocusNext=Next > +AddImageWizardChooseDataSourceVisual.getName.text=Enter Data Source Information +AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*Data Source added. +AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*Errors encountered in adding Data Source. +AddImageWizardIngestConfigVisual.getName.text=Configure Ingest Modules +AddImageWizardIterator.stepXofN=Step {0} of {1} +AddLocalFilesTask.localFileAdd.progress.text=Adding\: {0}/{1} +Case.getCurCase.exception.noneOpen=Can't get the current case; there is no case open\! +Case.moduleErr=Module Error +Case.changeCase.errListenToCaseUpdates.msg=A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete. +Case.create.exception.msg=Error creating a case\: {0} in dir {1} +Case.open.exception.blankCase.msg=Case name is blank. +Case.open.msgDlg.updated.msg=Updated case database schema.\ +A backup copy of the database with the following path has been made\:\ + {0} +Case.open.msgDlg.updated.title=Case Database Schema Update +Case.open.exception.checkFile.msg=Check that you selected the correct case file (usually with {0} extension) +Case.open.exception.gen.msg=Error opening the case +Case.checkImgExist.confDlg.doesntExist.msg={0} has detected that one of the images associated with \ +this case are missing. Would you like to search for them now?\ +Previously, the image was located at\:\ +{1}\ +Please note that you will still be able to browse directories and generate reports\ +if you choose No, but you will not be able to view file content or run the ingest process. +Case.checkImgExist.confDlg.doesntExist.title=Missing Image +Case.addImg.exception.msg=Error adding image to the case +Case.closeCase.exception.msg=Error while trying to close the current case. +Case.deleteCase.exception.msg=Error deleting the case dir\: {0} +Case.deleteCase.exception.msg2=Error deleting the case dir\: {0} +Case.updateCaseName.exception.msg=Error while trying to update the case name. +Case.updateExaminer.exception.msg=Error while trying to update the examiner. +Case.updateCaseNum.exception.msg=Error while trying to update the case number. +Case.exception.errGetRootObj=Error getting root objects. +Case.createCaseDir.exception.existNotDir=Cannot create case dir, already exists and is not a directory\: {0} +Case.createCaseDir.exception.existCantRW=Cannot create case dir, already exists and cannot read/write\: {0} +Case.createCaseDir.exception.cantCreate=Cannot create case dir\: {0} +Case.createCaseDir.exception.cantCreateCaseDir=Could not create case directory\: {0} +Case.createCaseDir.exception.cantCreateModDir=Could not create modules output directory\: {0} +Case.createCaseDir.exception.gen=Could not create case directory\: {0} +CaseDeleteAction.closeConfMsg.text=Are you sure want to close and delete this case? \ + Case Name\: {0}\ + Case Directory\: {1} +CaseDeleteAction.closeConfMsg.title=Warning\: Closing the Current Case +CaseDeleteAction.msgDlg.fileInUse.msg=The delete action can't be fully completed because the folder or file in it is open by another program.\ + \ +Close the folder and file and try again or you can delete the case manually. +CaseDeleteAction.msgDlg.fileInUse.title=Error\: Folder In Use +CaseDeleteAction.msgDlg.caseDelete.msg=Case {0} has been deleted. +CaseOpenAction.autFilter.title={0} Case File ( {1}) +CaseOpenAction.msgDlg.fileNotExist.msg=Error\: File doesn't exist. +CaseOpenAction.msgDlg.fileNotExist.title=Error +CaseOpenAction.msgDlg.cantOpenCase.msg=Error\: could not open the case in folder {0}\: {1} +CaseOpenAction.msgDlg.cantOpenCase.title=Error +CasePropertiesAction.window.title=Case Properties +CasePropertiesForm.updateCaseName.msgDlg.empty.msg=The caseName cannot be empty. +CasePropertiesForm.updateCaseName.msgDlg.empty.title=Error +CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg=The Case Name cannot contain any of this following symbol\: \\ / \: * ? " < > | +CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title=Error +CasePropertiesForm.updateCaseName.confMsg.msg=Are you sure want to update the case name from "{0}" to "{1}"? +CasePropertiesForm.updateCaseName.confMsg.title=Create directory +CueBannerPanel.title.text=Open Recent Case +GeneralFilter.rawImageDesc.text=Raw Images (*.img, *.dd, *.001, *.aa, *.raw, *.bin) +GeneralFilter.encaseImageDesc.text=Encase Images (*.e01) +ImageDSProcessor.dsType.text=Image File +ImageDSProcessor.allDesc.text=All Supported Types +ImageFilePanel.moduleErr=Module Error +ImageFilePanel.moduleErr.msg=A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete. +LocalDiskDSProcessor.dsType.text=Local Disk +LocalDiskPanel.localDiskModel.loading.msg=Loading local disks... +LocalDiskPanel.moduleErr=Module Error +LocalDiskPanel.moduleErr.msg=A module caused an error listening to LocalDiskPanel updates. See log to determine which module. Some data could be incomplete. +LocalDiskPanel.errLabel.disksNotDetected.text=Disks were not detected. On some systems it requires admin privileges (or "Run as administrator"). +LocalDiskPanel.errLabel.disksNotDetected.toolTipText=Disks were not detected. On some systems it requires admin privileges (or "Run as administrator"). +LocalDiskPanel.errLabel.drivesNotDetected.text=Local drives were not detected. Auto-detection not supported on this OS or admin privileges required +LocalDiskPanel.errLabel.drivesNotDetected.toolTipText=Local drives were not detected. Auto-detection not supported on this OS or admin privileges required +LocalDiskPanel.errLabel.someDisksNotDetected.text=Some disks were not detected. On some systems it requires admin privileges (or "Run as administrator"). +LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText=Some disks were not detected. On some systems it requires admin privileges (or "Run as administrator"). +LocalFilesDSProcessor.dsType=Logical Files +LocalFilesDSProcessor.toString.text=Logical Files +LocalFilesPanel.contentType.text=LOCAL +LocalFilesPanel.moduleErr=Module Error +LocalFilesPanel.moduleErr.msg=A module caused an error listening to LocalFilesPanel updates. See log to determine which module. Some data could be incomplete. +MissingImageDialog.allDesc.text=All Supported Types +MissingImageDialog.display.title=Search for Missing Image +MissingImageDialog.confDlg.noFileSel.msg=No image file has been selected, are you sure you\ +would like to exit without finding the image. +MissingImageDialog.confDlg.noFileSel.title=Missing Image +NewCaseVisualPanel1.getName.text=Case Info +NewCaseVisualPanel1.caseDirBrowse.selectButton.text=Select +NewCaseVisualPanel2.getName.text=Additional Information +NewCaseWizardAction.closeCurCase.confMsg.msg=Do you want to save and close this case and proceed with the new case creation? +NewCaseWizardAction.closeCurCase.confMsg.title=Warning\: Closing the Current Case +NewCaseWizardAction.newCase.windowTitle.text=New Case Information +NewCaseWizardAction.getName.text=New Case Wizard +NewCaseWizardPanel1.validate.errMsg.invalidSymbols=The Case Name cannot contain any of the following symbols\: \\ / \: * ? " < > | +NewCaseWizardPanel1.validate.errMsg.dirExists=Case directory ''{0}'' already exists. +NewCaseWizardPanel1.validate.confMsg.createDir.msg=The base directory ''{0}'' doesn''t exist. \ + \ + Do you want to create that directory? +NewCaseWizardPanel1.validate.confMsg.createDir.title=Create directory +NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=Error\: Couldn''t create case parent directory {0} +NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=Prevented from creating base directory {0} +NewCaseWizardPanel1.validate.errMsg.cantCreateDir=Error\: Couldn't create directory. +NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=ERROR\: The Base Directory that you entered is not valid.\ +Please enter a valid Base Directory. +NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=ERROR\: Could not create the case directory. \ +Please enter a valid Case Name and Directory. +NewCaseWizardPanel2.validate.errCreateCase.msg=Error creating case +OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg=Error\: Case {0} doesn''t exist. +OpenRecentCasePanel.openCase.msgDlg.err=Error +OpenRecentCasePanel.colName.caseName=Case Name +OpenRecentCasePanel.colName.path=Path +RecentCases.exception.caseIdxOutOfRange.msg=Recent case index {0} is out of range. +RecentCases.getName.text=Clear Recent Cases +RecentItems.openRecentCase.msgDlg.text=Error\: Case {0} doesn''t exist. +RecentItems.openRecentCase.msgDlg.err=Error +StartupWindow.title.text=Welcome +UpdateRecentCases.menuItem.clearRecentCases.text=Clear Recent Cases +UpdateRecentCases.menuItem.empty=-Empty- +XMLCaseManagement.create.exception.msg=Error setting up Case XML file, +XMLCaseManagement.writeFile.exception.noCase.msg=No set case to write management file for. +XMLCaseManagement.writeFile.exception.errWriteToFile.msg=Error writing to case file +XMLCaseManagement.open.exception.errReadXMLFile.msg=Error reading case XML file\: {0} +XMLCaseManagement.open.msgDlg.notAutCase.msg=Error\: This is not an Autopsy config file ("{0}").\ + \ +Detail\: \ +Cannot open a non-Autopsy config file (at {1}). +XMLCaseManagement.open.msgDlg.notAutCase.title=Error diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties new file mode 100644 index 0000000000..333bd7367c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties @@ -0,0 +1,90 @@ +CTL_AddImage=データソース追加... +CTL_AddImageButton=データソース追加 +CTL_CaseCloseAct=ケースを閉じる +CTL_CaseNewAction=New Case... +CTL_CaseOpenActionOld=Open Case(old)... +CTL_CasePropertiesAction=Case Properties... +CTL_OpenAction=Open Case... +CTL_CaseDeleteAction=ケース削除 +OpenIDE-Module-Name=Case +NewCaseVisualPanel1.jLabel1.text_1=新規ケース情報を入力: +#Nick: Does this mean info on new case or new info on existing case? +NewCaseVisualPanel1.caseNameLabel.text_1=ケース名 +NewCaseVisualPanel1.caseDirLabel.text=ベースディレクトリ: +NewCaseVisualPanel1.caseDirBrowseButton.text=閲覧 +NewCaseVisualPanel1.caseNameTextField.text_1= +NewCaseVisualPanel1.jLabel2.text_1=ケースデータは下記のディレクトリに保存されます: +#Nick: is "case data" and "case information" the same? +NewCaseVisualPanel1.caseParentDirTextField.text= +NewCaseVisualPanel1.caseDirTextField.text_1= +CasePropertiesForm.caseDirLabel.text=ケースディレクトリ: +CasePropertiesForm.crDateLabel.text=作成日: +CasePropertiesForm.caseNameLabel.text=ケース名: +CasePropertiesForm.crDateTextField.text= +CasePropertiesForm.caseNameTextField.text= +CasePropertiesForm.updateCaseNameButton.text=アップデート +CasePropertiesForm.casePropLabel.text=ケース情報 +CasePropertiesForm.genInfoLabel.text=一般情報 +CasePropertiesForm.imgInfoLabel.text=画像情報 +CasePropertiesForm.OKButton.text=OK +CasePropertiesForm.deleteCaseButton.text=ケース削除 +CueBannerPanel.autopsyLogo.text= +CueBannerPanel.createNewLabel.text=新規ケース作成 +CueBannerPanel.openLabel.text=既存ケースを開く +##オープンは日本語にするべき? +CueBannerPanel.closeButton.text=閉じる +CueBannerPanel.openRecentLabel.text=最近開いたケースを開く +CueBannerPanel.newCaseButton.text= +CueBannerPanel.openCaseButton.text= +CueBannerPanel.openRecentButton.text= +OpenRecentCasePanel.cancelButton.text=キャンセル +OpenRecentCasePanel.jLabel1.text=最近開いたファイル +CasePropertiesForm.caseNumberLabel.text=ケース番号: +CasePropertiesForm.examinerLabel.text=Examiner: +#審査官?カタカナ? +CasePropertiesForm.caseNumberTextField.text= +CasePropertiesForm.examinerTextField.text= +NewCaseVisualPanel2.caseNumberTextField.text= +NewCaseVisualPanel2.examinerLabel.text=Examiner: +#審査官?カタカナ? +NewCaseVisualPanel2.caseNumberLabel.text=ケース番号: +NewCaseVisualPanel2.examinerTextField.text= +NewCaseVisualPanel2.optionalLabel.text=オプショナル:ケース番号及び審査官を設定 +#審査官?カタカナ? +AddImageErrorsDialog.title=イメージログ追加 +AddImageErrorsDialog.copyButton.toolTipText=エラーをクリップボードにコピーします +AddImageErrorsDialog.copyButton.text=コピー +AddImageErrorsDialog.closeButton.toolTipText=このウィンドウを閉じます +AddImageErrorsDialog.closeButton.text=閉じる +OpenRecentCasePanel.openButton.text=開く +ImageFilePanel.pathLabel.text=画像ファイルを閲覧: +ImageFilePanel.browseButton.text=閲覧 +ImageFilePanel.pathTextField.text= +LocalDiskPanel.diskLabel.text=ローカルディスクを選択: +MissingImageDialog.selectButton.text=画像選択 +MissingImageDialog.titleLabel.text=欠落した画像の検索 +MissingImageDialog.cancelButton.text=キャンセル +LocalDiskPanel.errorLabel.text=エラーラベル +LocalFilesPanel.infoLabel.text=ローカルファイル及びフォルダーを追加: +LocalFilesPanel.selectButton.text=追加 +LocalFilesPanel.localFileChooser.dialogTitle=ローカルファイル又はフォルダーを選択 +LocalFilesPanel.selectButton.toolTipText=ローカルファイル及びフォルダーをロジカルファイルとして追加します +LocalFilesPanel.clearButton.text=クリアー +LocalFilesPanel.clearButton.toolTipText=現在選択されているローカルファイルパスがクリアされます +LocalFilesPanel.selectedPaths.toolTipText= +LocalFilesPanel.localFileChooser.approveButtonText=選択 +LocalFilesPanel.localFileChooser.approveButtonToolTipText= +LocalFilesPanel.selectButton.actionCommand=追加 +AddImageWizardIngestConfigVisual.subtitleLabel.text=このデータソースに対して実行したい追加モジュール群を設定します +#Nick: Does ingest module mean a module you added? +AddImageWizardIngestConfigVisual.titleLabel.text=追加モジュール設定 +AddImageWizardAddingProgressVisual.statusLabel.text=ファイルシステムがローカルデータベースに追加されました。ファイルを解析中です。 +AddImageWizardChooseDataSourceVisual.typeTabel.text=追加するソースタイプを選択: +AddImageWizardChooseDataSourceVisual.jLabel2.text=jLabel2 +AddImageWizardChooseDataSourceVisual.nextLabel.text= 「次へ」をクリックして、インプットデータを解析、ボリューム及びファイルシステムデータを抽出、ローカルデータベースにデータを投入。 +#Nick: Do I leave the and as is? +AddImageWizardChooseDataSourceVisual.imgInfoLabel.text=データソース情報を入力: +AddImageWizardAddingProgressVisual.progressLabel.text=<進捗状況> +AddImageWizardAddingProgressVisual.viewLogButton.text=ログ閲覧 +AddImageWizardAddingProgressVisual.titleLabel.text=データソース追加中 +AddImageWizardAddingProgressVisual.subTitle1Label.text=ローカルデータベースにファイルシステム情報を追加中です。こちらが完了次第、ファイル解析が始まります。 diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 29c5a2bae1..b04fc9aedf 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -37,8 +37,9 @@ import java.util.TimeZone; import java.util.logging.Level; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; -import org.openide.util.Exceptions; + import org.openide.util.Lookup; +import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; import org.openide.util.actions.SystemAction; import org.openide.windows.WindowManager; @@ -159,7 +160,7 @@ public class Case implements SleuthkitCase.ErrorObserver { if (currentCase != null) { return currentCase; } else { - throw new IllegalStateException("Can't get the current case; there is no case open!"); + throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen")); } } @@ -192,7 +193,10 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"), + NbBundle.getMessage(Case.class, + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } doCaseNameChange(""); @@ -201,7 +205,10 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"), + NbBundle.getMessage(Case.class, + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } } @@ -214,7 +221,10 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"), + NbBundle.getMessage(Case.class, + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } doCaseChange(currentCase); @@ -224,7 +234,10 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"), + NbBundle.getMessage(Case.class, + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } doCaseNameChange(currentCase.name); @@ -267,7 +280,8 @@ public class Case implements SleuthkitCase.ErrorObserver { db = SleuthkitCase.newCase(dbPath); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error creating a case: " + caseName + " in dir " + caseDir, ex); - throw new CaseActionException("Error creating a case: " + caseName + " in dir " + caseDir, ex); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.create.exception.msg", caseName, caseDir), ex); } Case newCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db); @@ -296,14 +310,18 @@ public class Case implements SleuthkitCase.ErrorObserver { String examiner = xmlcm.getCaseExaminer(); // if the caseName is "", case / config file can't be opened if (caseName.equals("")) { - throw new CaseActionException("Case name is blank."); + throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.blankCase.msg")); } String caseDir = xmlcm.getCaseDirectory(); String dbPath = caseDir + File.separator + "autopsy.db"; SleuthkitCase db = SleuthkitCase.openCase(dbPath); if (null != db.getBackupDatabasePath()) { - JOptionPane.showMessageDialog(null, "Updated case database schema.\nA backup copy of the database with the following path has been made:\n " + db.getBackupDatabasePath(), "Case Database Schema Update", JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(Case.class, "Case.open.msgDlg.updated.msg", + db.getBackupDatabasePath()), + NbBundle.getMessage(Case.class, "Case.open.msgDlg.updated.title"), + JOptionPane.INFORMATION_MESSAGE); } checkImagesExist(db); @@ -318,10 +336,10 @@ public class Case implements SleuthkitCase.ErrorObserver { CaseCloseAction closeCase = SystemAction.get(CaseCloseAction.class); closeCase.actionPerformed(null); if (!configFilePath.endsWith(CASE_DOT_EXTENSION)) { - throw new CaseActionException("Check that you selected the correct case file (usually with " - + CASE_DOT_EXTENSION + " extension)", ex); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.open.exception.checkFile.msg", CASE_DOT_EXTENSION), ex); } else { - throw new CaseActionException("Error opening the case", ex); + throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.gen.msg"), ex); } } } @@ -352,11 +370,13 @@ public class Case implements SleuthkitCase.ErrorObserver { boolean fileExists = (pathExists(path) || driveExists(path)); if (!fileExists) { - int ret = JOptionPane.showConfirmDialog(null, appName + " has detected that one of the images associated with \n" - + "this case are missing. Would you like to search for them now?\n" - + "Previously, the image was located at:\n" + path - + "\nPlease note that you will still be able to browse directories and generate reports\n" - + "if you choose No, but you will not be able to view file content or run the ingest process.", "Missing Image", JOptionPane.YES_NO_OPTION); + int ret = JOptionPane.showConfirmDialog(null, + NbBundle.getMessage(Case.class, + "Case.checkImgExist.confDlg.doesntExist.msg", + appName, path), + NbBundle.getMessage(Case.class, + "Case.checkImgExist.confDlg.doesntExist.title"), + JOptionPane.YES_NO_OPTION); if (ret == JOptionPane.YES_OPTION) { MissingImageDialog.makeDialog(obj_id, db); @@ -389,12 +409,15 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"), + NbBundle.getMessage(this.getClass(), + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } CoreComponentControl.openCoreWindows(); return newImage; } catch (Exception ex) { - throw new CaseActionException("Error adding image to the case", ex); + throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.addImg.exception.msg"), ex); } } @@ -423,7 +446,10 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"), + NbBundle.getMessage(this.getClass(), + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } CoreComponentControl.openCoreWindows(); } @@ -456,7 +482,7 @@ public class Case implements SleuthkitCase.ErrorObserver { this.xmlcm.close(); // close the xmlcm this.db.close(); } catch (Exception e) { - throw new CaseActionException("Error while trying to close the current case.", e); + throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.closeCase.exception.msg"), e); } } @@ -478,11 +504,13 @@ public class Case implements SleuthkitCase.ErrorObserver { RecentCases.getInstance().removeRecentCase(this.name, this.configFilePath); // remove it from the recent case Case.changeCase(null); if (result == false) { - throw new CaseActionException("Error deleting the case dir: " + caseDir); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "Case.deleteCase.exception.msg", caseDir)); } } catch (Exception ex) { logger.log(Level.SEVERE, "Error deleting the current case dir: " + caseDir, ex); - throw new CaseActionException("Error deleting the case dir: " + caseDir, ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "Case.deleteCase.exception.msg2", caseDir), ex); } } @@ -504,12 +532,15 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"), + NbBundle.getMessage(this.getClass(), + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } doCaseNameChange(newCaseName); } catch (Exception e) { - throw new CaseActionException("Error while trying to update the case name.", e); + throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateCaseName.exception.msg"), e); } } @@ -528,10 +559,13 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"), + NbBundle.getMessage(this.getClass(), + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } } catch (Exception e) { - throw new CaseActionException("Error while trying to update the examiner.", e); + throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateExaminer.exception.msg"), e); } } @@ -551,10 +585,13 @@ public class Case implements SleuthkitCase.ErrorObserver { } catch (Exception e) { logger.log(Level.SEVERE, "Case listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"), + NbBundle.getMessage(this.getClass(), + "Case.changeCase.errListenToCaseUpdates.msg"), + MessageNotifyUtil.MessageType.ERROR); } } catch (Exception e) { - throw new CaseActionException("Error while trying to update the case number.", e); + throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateCaseNum.exception.msg"), e); } } @@ -764,7 +801,7 @@ public class Case implements SleuthkitCase.ErrorObserver { try { return db.getRootObjects(); } catch (TskException ex) { - throw new RuntimeException("Error getting root objects.", ex); + throw new RuntimeException(NbBundle.getMessage(this.getClass(), "Case.exception.errGetRootObj"), ex); } } @@ -919,16 +956,19 @@ public class Case implements SleuthkitCase.ErrorObserver { File caseDirF = new File(caseDir); if (caseDirF.exists()) { if (caseDirF.isFile()) { - throw new CaseActionException("Cannot create case dir, already exists and is not a directory: " + caseDir); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.existNotDir", caseDir)); } else if (!caseDirF.canRead() || !caseDirF.canWrite()) { - throw new CaseActionException("Cannot create case dir, already exists and cannot read/write: " + caseDir); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.existCantRW", caseDir)); } } try { boolean result = (caseDirF).mkdirs(); // create root case Directory if (result == false) { - throw new CaseActionException("Cannot create case dir: " + caseDir); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreate", caseDir)); } // create the folders inside the case directory @@ -938,17 +978,21 @@ public class Case implements SleuthkitCase.ErrorObserver { && (new File(caseDir + File.separator + XMLCaseManagement.CACHE_FOLDER_RELPATH)).mkdir(); if (result == false) { - throw new CaseActionException("Could not create case directory: " + caseDir); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateCaseDir", caseDir)); } final String modulesOutDir = caseDir + File.separator + getModulesOutputDirRelPath(); result = new File(modulesOutDir).mkdir(); if (result == false) { - throw new CaseActionException("Could not create modules output directory: " + modulesOutDir); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateModDir", + modulesOutDir)); } } catch (Exception e) { - throw new CaseActionException("Could not create case directory: " + caseDir, e); + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.gen", caseDir), e); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java index 72ed22351b..229bbe2ca9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseDeleteAction.java @@ -99,8 +99,11 @@ import org.openide.util.actions.CallableSystemAction; } else{ // show the confirmation first to close the current case and open the "New Case" wizard panel - String closeCurrentCase = "Are you sure want to close and delete this case? \n Case Name: " + caseName + "\n Case Directory: "+ caseFolder.getPath(); - NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, "Warning: Closing the Current Case", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); + String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CaseDeleteAction.closeConfMsg.text", caseName, caseFolder.getPath()); + NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, + NbBundle.getMessage(this.getClass(), + "CaseDeleteAction.closeConfMsg.title"), + NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); d.setValue(NotifyDescriptor.NO_OPTION); Object res = DialogDisplayer.getDefault().notify(d); @@ -116,11 +119,18 @@ import org.openide.util.actions.CallableSystemAction; // show notification whether the case has been deleted or it failed to delete... if(!success){ - JOptionPane.showMessageDialog(caller, "The delete action can't be fully completed because the folder or file in it is open by another program.\n \nClose the folder and file and try again or you can delete the case manually.", "Error: Folder In Use", JOptionPane.ERROR_MESSAGE); // throw an error + JOptionPane.showMessageDialog(caller, + NbBundle.getMessage(this.getClass(), + "CaseDeleteAction.msgDlg.fileInUse.msg"), + NbBundle.getMessage(this.getClass(), + "CaseDeleteAction.msgDlg.fileInUse.title"), + JOptionPane.ERROR_MESSAGE); // throw an error } else{ CasePropertiesAction.closeCasePropertiesWindow(); // because the "Delete Case" button is in the "CaseProperties" window, we have to close that window when we delete the case. - JOptionPane.showMessageDialog(caller, "Case " + caseName + " has been deleted."); + JOptionPane.showMessageDialog(caller, NbBundle.getMessage(this.getClass(), + "CaseDeleteAction.msgDlg.caseDelete.msg", + caseName)); } } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java index 26dfb3b821..6c2ac4c0e6 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java @@ -22,15 +22,17 @@ import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; -import java.util.Collections; import java.util.logging.Level; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileNameExtensionFilter; + +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.Version; /** * The action to open a existing case. This class is always enabled. @@ -47,8 +49,9 @@ public final class CaseOpenAction implements ActionListener { * The constructor */ public CaseOpenAction() { - autFilter = new FileNameExtensionFilter(org.sleuthkit.autopsy.coreutils.Version.getName() - + " Case File ( " + Case.CASE_DOT_EXTENSION + ")", + autFilter = new FileNameExtensionFilter( + NbBundle.getMessage(CaseOpenAction.class, "CaseOpenAction.autFilter.title", Version.getName(), + Case.CASE_DOT_EXTENSION), Case.CASE_EXTENSION); fc.setDragEnabled(false); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); @@ -80,7 +83,12 @@ public final class CaseOpenAction implements ActionListener { ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, PROP_BASECASE, dirPath.substring(0, dirPath.lastIndexOf(File.separator))); // check if the file exists if (!new File(path).exists()) { - JOptionPane.showMessageDialog(null, "Error: File doesn't exist.", "Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.fileNotExist.msg"), + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.fileNotExist.title"), + JOptionPane.ERROR_MESSAGE); this.actionPerformed(e); // show the dialog box again } else { // try to close Startup window if there's one @@ -93,8 +101,13 @@ public final class CaseOpenAction implements ActionListener { try { Case.open(path); // open the case } catch (CaseActionException ex) { - JOptionPane.showMessageDialog(null, "Error: could not open the case in folder " + path - + ": " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.msg", path, + ex.getMessage()), + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.title"), + JOptionPane.ERROR_MESSAGE); logger.log(Level.WARNING, "Error opening case in folder " + path, ex); StartupWindowProvider.getInstance().open(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java index 76ff941278..26f86db61a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesAction.java @@ -62,7 +62,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; try { // create the popUp window for it - String title = "Case Properties"; + String title = NbBundle.getMessage(this.getClass(), "CasePropertiesAction.window.title"); final JFrame frame = new JFrame(title); popUpWindow = new JDialog(frame, title, true); // to make the popUp Window to be modal diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesForm.java b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesForm.java index 5ff08adcad..6da501f08f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesForm.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CasePropertiesForm.java @@ -27,9 +27,10 @@ package org.sleuthkit.autopsy.casemodule; import java.awt.event.ActionListener; import java.io.File; -import java.util.List; import java.util.Map; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -365,7 +366,12 @@ class CasePropertiesForm extends javax.swing.JPanel{ // check if the case name is empty if(newCaseName.trim().equals("")){ - JOptionPane.showMessageDialog(caller, "The caseName cannot be empty.", "Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(caller, + NbBundle.getMessage(this.getClass(), + "CasePropertiesForm.updateCaseName.msgDlg.empty.msg"), + NbBundle.getMessage(this.getClass(), + "CasePropertiesForm.updateCaseName.msgDlg.empty.title"), + JOptionPane.ERROR_MESSAGE); } else{ // check if case Name contain one of this following symbol: @@ -373,13 +379,22 @@ class CasePropertiesForm extends javax.swing.JPanel{ if(newCaseName.contains("\\") || newCaseName.contains("/") || newCaseName.contains(":") || newCaseName.contains("*") || newCaseName.contains("?") || newCaseName.contains("\"") || newCaseName.contains("<") || newCaseName.contains(">") || newCaseName.contains("|")){ - String errorMsg = "The Case Name cannot contain any of this following symbol: \\ / : * ? \" < > |"; - JOptionPane.showMessageDialog(caller, errorMsg, "Error", JOptionPane.ERROR_MESSAGE); + String errorMsg = NbBundle + .getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg"); + JOptionPane.showMessageDialog(caller, errorMsg, + NbBundle.getMessage(this.getClass(), + "CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title"), + JOptionPane.ERROR_MESSAGE); } else{ // ask for the confirmation first - String confMsg = "Are you sure want to update the case name from \"" + oldCaseName + "\" to \"" + newCaseName + "\"?"; - NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg, "Create directory", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); + String confMsg = NbBundle + .getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.confMsg.msg", oldCaseName, + newCaseName); + NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg, + NbBundle.getMessage(this.getClass(), + "CasePropertiesForm.updateCaseName.confMsg.title"), + NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); d.setValue(NotifyDescriptor.NO_OPTION); Object res = DialogDisplayer.getDefault().notify(d); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CueBannerPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/CueBannerPanel.java index 49c5b313a0..0d9f33cd89 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CueBannerPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CueBannerPanel.java @@ -29,13 +29,14 @@ import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import org.openide.util.Lookup; +import org.openide.util.NbBundle; /** * */ public class CueBannerPanel extends javax.swing.JPanel { - final private static String title = "Open Recent Case"; + final private static String title = NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.title.text"); final private static JFrame frame = new JFrame(title); final static JDialog recentCasesWindow = new JDialog(frame, title, true); // to make the popUp Window to be modal diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralFilter.java b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralFilter.java index 9b9a091466..4d972958c9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralFilter.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralFilter.java @@ -19,6 +19,8 @@ package org.sleuthkit.autopsy.casemodule; +import org.openide.util.NbBundle; + import java.io.File; import java.util.List; import java.util.Arrays; @@ -32,10 +34,10 @@ public class GeneralFilter extends FileFilter{ // Extensions & Descriptions for commonly used filters public static final List RAW_IMAGE_EXTS = Arrays.asList(new String[]{".img", ".dd", ".001", ".aa", ".raw", ".bin"}); - public static final String RAW_IMAGE_DESC = "Raw Images (*.img, *.dd, *.001, *.aa, *.raw, *.bin)"; + public static final String RAW_IMAGE_DESC = NbBundle.getMessage(GeneralFilter.class, "GeneralFilter.rawImageDesc.text"); public static final List ENCASE_IMAGE_EXTS = Arrays.asList(new String[]{".e01"}); - public static final String ENCASE_IMAGE_DESC = "Encase Images (*.e01)"; + public static final String ENCASE_IMAGE_DESC = NbBundle.getMessage(GeneralFilter.class, "GeneralFilter.encaseImageDesc.text"); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index b22b94f300..d8c4b31de6 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -22,6 +22,8 @@ import javax.swing.JPanel; import java.util.ArrayList; import java.util.List; import javax.swing.filechooser.FileFilter; + +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; @@ -41,7 +43,7 @@ public class ImageDSProcessor implements DataSourceProcessor { static final Logger logger = Logger.getLogger(ImageDSProcessor.class.getName()); // Data source type handled by this processor - private final static String dsType = "Image File"; + private final static String dsType = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.dsType.text"); // The Config UI panel that plugins into the Choose Data Source Wizard private final ImageFilePanel imageFilePanel; @@ -70,7 +72,7 @@ public class ImageDSProcessor implements DataSourceProcessor { allExt.addAll(GeneralFilter.RAW_IMAGE_EXTS); allExt.addAll(GeneralFilter.ENCASE_IMAGE_EXTS); } - static final String allDesc = "All Supported Types"; + static final String allDesc = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.allDesc.text"); static final GeneralFilter allFilter = new GeneralFilter(allExt, allDesc); static final List filtersList = new ArrayList<>(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java index 52ccfd5c9d..1369745a57 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageFilePanel.java @@ -21,8 +21,6 @@ package org.sleuthkit.autopsy.casemodule; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; import java.util.List; import java.util.SimpleTimeZone; @@ -32,6 +30,8 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.JPanel; import javax.swing.filechooser.FileFilter; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @@ -202,7 +202,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } catch (Exception e) { logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } }//GEN-LAST:event_browseButtonActionPerformed @@ -330,7 +332,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } catch (Exception ee) { logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } } @@ -341,7 +345,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } catch (Exception ee) { logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } } @@ -353,7 +359,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener { } catch (Exception ee) { logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index 5a74b31a7c..997e69348b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.casemodule; import javax.swing.JPanel; + +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; @@ -33,7 +35,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { static final Logger logger = Logger.getLogger(ImageDSProcessor.class.getName()); // Data source type handled by this processor - private static final String dsType = "Local Disk"; + private static final String dsType = NbBundle.getMessage(LocalDiskDSProcessor.class, "LocalDiskDSProcessor.dsType.text"); // The Config UI panel that plugins into the Choose Data Source Wizard private final LocalDiskPanel localDiskPanel; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.form b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.form index 58e493e793..55707d9f0c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.form +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.form @@ -80,6 +80,10 @@ + + + +
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java index b85ec86e4f..3a5bcc8ab7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java @@ -41,6 +41,8 @@ import javax.swing.ListCellRenderer; import javax.swing.SwingWorker; import javax.swing.border.EmptyBorder; import javax.swing.event.ListDataListener; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.PlatformUtil; @@ -48,12 +50,12 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; /** * ImageTypePanel for adding a local disk or partition such as PhysicalDrive0 or C:. */ - class LocalDiskPanel extends JPanel { + final class LocalDiskPanel extends JPanel { private static final Logger logger = Logger.getLogger(LocalDiskPanel.class.getName()); private static LocalDiskPanel instance; private PropertyChangeSupport pcs = null; - private List disks = new ArrayList(); + private List disks; private LocalDiskModel model; private boolean enableNext = false; @@ -61,6 +63,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; * Creates new form LocalDiskPanel */ public LocalDiskPanel() { + this.disks = new ArrayList<>(); initComponents(); customInit(); @@ -99,7 +102,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; private void initComponents() { diskLabel = new javax.swing.JLabel(); - diskComboBox = new javax.swing.JComboBox(); + diskComboBox = new javax.swing.JComboBox<>(); errorLabel = new javax.swing.JLabel(); timeZoneLabel = new javax.swing.JLabel(); timeZoneComboBox = new javax.swing.JComboBox(); @@ -163,7 +166,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; }// //GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel descLabel; - private javax.swing.JComboBox diskComboBox; + private javax.swing.JComboBox diskComboBox; private javax.swing.JLabel diskLabel; private javax.swing.JLabel errorLabel; private javax.swing.JCheckBox noFatOrphansCheckbox; @@ -294,14 +297,13 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; private Object selected; private boolean ready = false; private volatile boolean loadingDisks = false; - List physical = new ArrayList(); - List partitions = new ArrayList(); + List physical = new ArrayList<>(); + List partitions = new ArrayList<>(); //private String SELECT = "Select a local disk:"; - private String LOADING = "Loading local disks..."; + private String LOADING = NbBundle.getMessage(this.getClass(), "LocalDiskPanel.localDiskModel.loading.msg"); LocalDiskThread worker = null; - private void loadDisks() { // if there is a worker already building the lists, then cancel it first. @@ -311,9 +313,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; // Clear the lists errorLabel.setText(""); - disks = new ArrayList(); - physical = new ArrayList(); - partitions = new ArrayList(); + disks = new ArrayList<>(); + physical = new ArrayList<>(); + partitions = new ArrayList<>(); diskComboBox.setEnabled(false); ready = false; enableNext = false; @@ -328,7 +330,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @Override public void setSelectedItem(Object anItem) { if(ready) { - selected = anItem; + selected = (LocalDisk) anItem; enableNext = true; try { @@ -336,7 +338,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; } catch (Exception e) { logger.log(Level.SEVERE, "LocalDiskPanel listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to LocalDiskPanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalDiskPanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "LocalDiskPanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } } } @@ -380,13 +384,14 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; label.setForeground(list.getForeground()); } - if(value !=null && value.equals(LOADING)) { + String localDiskString = value.toString(); + if(localDiskString.equals(LOADING)) { Font font = new Font(label.getFont().getName(), Font.ITALIC, label.getFont().getSize()); label.setText(LOADING); label.setFont(font); label.setBackground(Color.GRAY); } else { - label.setText(value != null ? value.toString() : ""); + label.setText(value.toString()); } label.setOpaque(true); label.setBorder(new EmptyBorder(2, 2, 2, 2)); @@ -410,16 +415,22 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; private void displayErrors() { if(physical.isEmpty() && partitions.isEmpty()) { if(PlatformUtil.isWindowsOS()) { - errorLabel.setText("Disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\")."); - errorLabel.setToolTipText("Disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\")."); + errorLabel.setText( + NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.disksNotDetected.text")); + errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(), + "LocalDiskPanel.errLabel.disksNotDetected.toolTipText")); } else { - errorLabel.setText("Local drives were not detected. Auto-detection not supported on this OS or admin privileges required"); - errorLabel.setToolTipText("Local drives were not detected. Auto-detection not supported on this OS or admin privileges required"); + errorLabel.setText( + NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.drivesNotDetected.text")); + errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(), + "LocalDiskPanel.errLabel.drivesNotDetected.toolTipText")); } diskComboBox.setEnabled(false); } else if(physical.isEmpty()) { - errorLabel.setText("Some disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\")."); - errorLabel.setToolTipText("Some disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\")."); + errorLabel.setText( + NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.someDisksNotDetected.text")); + errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(), + "LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText")); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index 7ff306ae9a..898e414e8f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.casemodule; import javax.swing.JPanel; + +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; @@ -32,7 +34,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor { static final Logger logger = Logger.getLogger(LocalFilesDSProcessor.class.getName()); // Data source type handled by this processor - private static final String dsType = "Logical Files"; + private static final String dsType = NbBundle.getMessage(LocalFilesDSProcessor.class, "LocalFilesDSProcessor.dsType"); // The Config UI panel that plugins into the Choose Data Source Wizard private final LocalFilesPanel localFilesPanel; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java index 863e3b2610..c03c293c1a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesPanel.java @@ -25,6 +25,8 @@ import java.util.Set; import java.util.TreeSet; import javax.swing.JFileChooser; import javax.swing.JPanel; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import java.util.logging.Level; @@ -84,7 +86,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; //@Override public String getContentType() { - return "LOCAL"; + return NbBundle.getMessage(this.getClass(), "LocalFilesPanel.contentType.text"); } //@Override @@ -127,7 +129,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @Override public String toString() { - return "Logical Files"; + return NbBundle.getMessage(this.getClass(), "LocalFilesDSProcessor.toString.text"); } /** @@ -242,7 +244,9 @@ import org.sleuthkit.autopsy.coreutils.Logger; } catch (Exception e) { logger.log(Level.SEVERE, "LocalFilesPanel listener threw exception", e); - MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to LocalFilesPanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR); + MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr"), + NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr.msg"), + MessageNotifyUtil.MessageType.ERROR); } }//GEN-LAST:event_selectButtonActionPerformed diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/MissingImageDialog.java b/Core/src/org/sleuthkit/autopsy/casemodule/MissingImageDialog.java index d2d865aa0c..4fa8224fc1 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/MissingImageDialog.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/MissingImageDialog.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2012 Basis Technology Corp. + * Copyright 2012-2014 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.casemodule; - import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.WindowAdapter; @@ -31,52 +30,46 @@ import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; -import org.sleuthkit.autopsy.casemodule.GeneralFilter; - +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; +class MissingImageDialog extends javax.swing.JDialog { - - class MissingImageDialog extends javax.swing.JDialog { private static final Logger logger = Logger.getLogger(MissingImageDialog.class.getName()); long obj_id; SleuthkitCase db; - - - static final GeneralFilter rawFilter = new GeneralFilter(GeneralFilter.RAW_IMAGE_EXTS, GeneralFilter.RAW_IMAGE_DESC); static final GeneralFilter encaseFilter = new GeneralFilter(GeneralFilter.ENCASE_IMAGE_EXTS, GeneralFilter.ENCASE_IMAGE_DESC); - static final List allExt = new ArrayList(); + static { allExt.addAll(GeneralFilter.RAW_IMAGE_EXTS); allExt.addAll(GeneralFilter.ENCASE_IMAGE_EXTS); } - static final String allDesc = "All Supported Types"; + static final String allDesc = NbBundle.getMessage(MissingImageDialog.class, "MissingImageDialog.allDesc.text"); static final GeneralFilter allFilter = new GeneralFilter(allExt, allDesc); - private JFileChooser fc = new JFileChooser(); - + private MissingImageDialog(long obj_id, SleuthkitCase db) { super(new JFrame(), true); this.obj_id = obj_id; this.db = db; initComponents(); - + fc.setDragEnabled(false); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setMultiSelectionEnabled(false); - + fc.addChoosableFileFilter(rawFilter); fc.addChoosableFileFilter(encaseFilter); fc.setFileFilter(allFilter); - - + + customInit(); } - + // // * Client call to create a MissingImageDialog. // * @@ -89,45 +82,45 @@ import org.sleuthkit.datamodel.TskCoreException; @Override public void windowClosing(WindowEvent e) { dialog.cancel(); - } + } }); dialog.display(); } - + private void customInit() { - - selectButton.setEnabled(false); + + selectButton.setEnabled(false); } - + private void display() { - this.setTitle("Search for Missing Image"); + this.setTitle(NbBundle.getMessage(this.getClass(), "MissingImageDialog.display.title")); Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); // set the popUp window / JFrame int w = this.getSize().width; int h = this.getSize().height; // set the location of the popUp Window on the center of the screen setLocation((screenDimension.width - w) / 2, (screenDimension.height - h) / 2); - + this.setVisible(true); } - + // // * Focuses the select button for easy enter-pressing access. // private void moveFocusToSelect() { this.selectButton.requestFocusInWindow(); } - + // // * Enables/disables the select button based off the current panel. // private void updateSelectButton() { - + // Enable this based on whether there is a valid path if (!pathNameTextField.getText().isEmpty()) { String filePath = pathNameTextField.getText(); boolean isExist = Case.pathExists(filePath) || Case.driveExists(filePath); - selectButton.setEnabled(isExist); + selectButton.setEnabled(isExist); } } @@ -274,16 +267,14 @@ import org.sleuthkit.datamodel.TskCoreException; private void pathNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pathNameTextFieldActionPerformed // TODO add your handling code here: - - updateSelectButton(); + + updateSelectButton(); }//GEN-LAST:event_pathNameTextFieldActionPerformed private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed - - - + String oldText = pathNameTextField.getText(); - + // set the current directory of the FileChooser if the ImagePath Field is valid File currentDir = new File(oldText); if (currentDir.exists()) { @@ -296,10 +287,9 @@ import org.sleuthkit.datamodel.TskCoreException; pathNameTextField.setText(path); } //pcs.firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.FOCUS_NEXT.toString(), false, true); - - updateSelectButton(); - }//GEN-LAST:event_browseButtonActionPerformed + updateSelectButton(); + }//GEN-LAST:event_browseButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browseButton; private javax.swing.JPanel buttonPanel; @@ -310,19 +300,19 @@ import org.sleuthkit.datamodel.TskCoreException; private javax.swing.JLabel titleLabel; private javax.swing.JSeparator titleSeparator; // End of variables declaration//GEN-END:variables - + // // * Verify the user wants to cancel searching for the image. // void cancel() { int ret = JOptionPane.showConfirmDialog(null, - "No image file has been selected, are you sure you\n" + - "would like to exit without finding the image.", - "Missing Image", JOptionPane.YES_NO_OPTION); + NbBundle.getMessage(this.getClass(), + "MissingImageDialog.confDlg.noFileSel.msg"), + NbBundle.getMessage(this.getClass(), + "MissingImageDialog.confDlg.noFileSel.title"), + JOptionPane.YES_NO_OPTION); if (ret == JOptionPane.YES_OPTION) { this.dispose(); } } - - -} \ No newline at end of file +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java index 3c4dd72bcf..d1faa81e7d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel1.java @@ -19,6 +19,8 @@ package org.sleuthkit.autopsy.casemodule; +import org.openide.util.NbBundle; + import java.awt.Component; import java.io.File; import javax.swing.JFileChooser; @@ -52,7 +54,7 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener{ */ @Override public String getName() { - return "Case Info"; + return NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel1.getName.text"); } /** @@ -179,7 +181,8 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener{ //fc.setSelectedFile(new File("C:\\Program Files\\")); //disableTextField(fc); // disable all the text field on the file chooser - int returnValue = fc.showDialog((Component)evt.getSource(), "Select"); + int returnValue = fc.showDialog((Component)evt.getSource(), NbBundle.getMessage(this.getClass(), + "NewCaseVisualPanel1.caseDirBrowse.selectButton.text")); if(returnValue == JFileChooser.APPROVE_OPTION){ String path = fc.getSelectedFile().getPath(); caseParentDirTextField.setText(path); // put the path to the textfield diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java index 5232f17835..d5180fdcce 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseVisualPanel2.java @@ -24,6 +24,8 @@ */ package org.sleuthkit.autopsy.casemodule; +import org.openide.util.NbBundle; + /** * * @author dfickling @@ -43,7 +45,7 @@ package org.sleuthkit.autopsy.casemodule; */ @Override public String getName() { - return "Additional Information"; + return NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel2.getName.text"); } /** This method is called from within the constructor to diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java index 63f4ad5c56..a5093c5230 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java @@ -31,6 +31,7 @@ import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.WizardDescriptor; import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; import org.openide.util.actions.SystemAction; import org.sleuthkit.autopsy.coreutils.Logger; @@ -52,8 +53,12 @@ import org.sleuthkit.autopsy.coreutils.Logger; // there's a case open if (Case.existsCurrentCase()) { // show the confirmation first to close the current case and open the "New Case" wizard panel - String closeCurrentCase = "Do you want to save and close this case and proceed with the new case creation?"; - NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, "Warning: Closing the Current Case", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); + String closeCurrentCase = NbBundle + .getMessage(this.getClass(), "NewCaseWizardAction.closeCurCase.confMsg.msg"); + NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, + NbBundle.getMessage(this.getClass(), + "NewCaseWizardAction.closeCurCase.confMsg.title"), + NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE); d.setValue(NotifyDescriptor.NO_OPTION); Object res = DialogDisplayer.getDefault().notify(d); @@ -77,7 +82,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; WizardDescriptor wizardDescriptor = new WizardDescriptor(getPanels()); // {0} will be replaced by WizardDesriptor.Panel.getComponent().getName() wizardDescriptor.setTitleFormat(new MessageFormat("{0}")); - wizardDescriptor.setTitle("New Case Information"); + wizardDescriptor.setTitle(NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.newCase.windowTitle.text")); Dialog dialog = DialogDisplayer.getDefault().createDialog(wizardDescriptor); dialog.setVisible(true); dialog.toFront(); @@ -115,7 +120,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; * Initialize panels representing individual wizard's steps and sets * various properties for them influencing wizard appearance. */ - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({"unchecked", "rawtypes"}) private WizardDescriptor.Panel[] getPanels() { if (panels == null) { panels = new WizardDescriptor.Panel[]{ @@ -149,7 +154,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @Override public String getName() { - return "New Case Wizard"; + return NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.getName.text"); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java index 52be7a1a7d..8bbc242059 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java @@ -23,6 +23,8 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -205,13 +207,15 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel | if (!Case.isValidName(caseName)) { - String errorMsg = "The Case Name cannot contain any of the following symbols: \\ / : * ? \" < > |"; + String errorMsg = NbBundle + .getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.invalidSymbols"); validationError(errorMsg); } else { // check if the directory exist if (new File(caseDirPath).exists()) { // throw a warning to enter new data or delete the existing directory - String errorMsg = "Case directory '" + caseDirPath + "' already exists."; + String errorMsg = NbBundle + .getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.dirExists", caseDirPath); validationError(errorMsg); } else { // check if the "base" directory path is absolute @@ -220,8 +224,13 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel= LENGTH) { - throw new IllegalArgumentException("Recent case index " + i + " is out of range."); + throw new IllegalArgumentException( + NbBundle.getMessage(RecentCases.class, "RecentCases.exception.caseIdxOutOfRange.msg", i)); } } @@ -419,7 +421,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @Override public String getName() { //return NbBundle.getMessage(RecentCases.class, "CTL_RecentCases"); - return "Clear Recent Cases"; + return NbBundle.getMessage(this.getClass(), "RecentCases.getName.text"); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java index d8f5fcaca7..d7d66095e7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java @@ -26,6 +26,8 @@ import java.io.File; import java.util.logging.Level; import javax.swing.JOptionPane; import javax.swing.JPanel; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; /** @@ -56,7 +58,11 @@ class RecentItems implements ActionListener { // check if the file exists if(caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())){ // throw an error here - JOptionPane.showMessageDialog(caller, "Error: Case " + caseName + " doesn't exist.", "Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(caller, + NbBundle.getMessage(this.getClass(), "RecentItems.openRecentCase.msgDlg.text", + caseName), + NbBundle.getMessage(this.getClass(), "RecentItems.openRecentCase.msgDlg.err"), + JOptionPane.ERROR_MESSAGE); RecentCases.getInstance().removeRecentCase(caseName, casePath); // remove the recent case if it doesn't exist anymore //if case is not opened, open the start window diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/StartupWindow.java b/Core/src/org/sleuthkit/autopsy/casemodule/StartupWindow.java index f100123479..4c99d4f582 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/StartupWindow.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/StartupWindow.java @@ -26,6 +26,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JDialog; import javax.swing.JFrame; + +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; /** @@ -35,7 +37,7 @@ import org.openide.util.lookup.ServiceProvider; public final class StartupWindow extends JDialog implements StartupWindowInterface { private static StartupWindow instance; - private static final String TITLE = "Welcome"; + private static final String TITLE = NbBundle.getMessage(StartupWindow.class, "StartupWindow.title.text"); private static Dimension DIMENSIONS = new Dimension(750, 400); public StartupWindow() { diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java b/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java index 9667768397..0355fc20fe 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java @@ -23,6 +23,7 @@ import javax.swing.JComponent; import javax.swing.JMenuItem; import javax.swing.JSeparator; import org.openide.awt.DynamicMenuContent; +import org.openide.util.NbBundle; import org.openide.util.actions.SystemAction; /** @@ -66,14 +67,15 @@ import org.openide.util.actions.SystemAction; // if it has recent case, create clear menu if(hasRecentCase){ comps[length] = new JSeparator(); - JMenuItem clearMenu = new JMenuItem("Clear Recent Cases"); + JMenuItem clearMenu = new JMenuItem( + NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.clearRecentCases.text")); clearMenu.addActionListener(SystemAction.get(RecentCases.class)); comps[length+1] = clearMenu; } // otherwise, just create a disabled empty menu else{ comps = new JComponent[1]; - JMenuItem emptyMenu = new JMenuItem("-Empty-"); + JMenuItem emptyMenu = new JMenuItem(NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.empty")); emptyMenu.addActionListener(new RecentItems("", "")); comps[0] = emptyMenu; comps[0].setEnabled(false); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/XMLCaseManagement.java b/Core/src/org/sleuthkit/autopsy/casemodule/XMLCaseManagement.java index 45d8ac4784..7fc760463c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/XMLCaseManagement.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/XMLCaseManagement.java @@ -30,6 +30,7 @@ import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.openide.util.Exceptions; +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.XMLUtil; import org.w3c.dom.*; @@ -458,7 +459,8 @@ import org.xml.sax.SAXException; docBuilder = docFactory.newDocumentBuilder(); } catch (ParserConfigurationException ex) { clear(); - throw new CaseActionException("Error setting up Case XML file, ", ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.create.exception.msg"), ex); } doc = docBuilder.newDocument(); @@ -531,7 +533,8 @@ import org.xml.sax.SAXException; @Override public void writeFile() throws CaseActionException { if (doc == null || caseName.equals("")) { - throw new CaseActionException("No set case to write management file for."); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.noCase.msg")); } // Prepare the DOM document for writing @@ -549,7 +552,8 @@ import org.xml.sax.SAXException; xformer = tfactory.newTransformer(); } catch (TransformerConfigurationException ex) { logger.log(Level.SEVERE, "Could not setup tranformer and write case file"); - throw new CaseActionException("Error writing to case file", ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.errWriteToFile.msg"), ex); } //Setup indenting to "pretty print" @@ -560,7 +564,8 @@ import org.xml.sax.SAXException; xformer.transform(source, result); } catch (TransformerException ex) { logger.log(Level.SEVERE, "Could not run tranformer and write case file"); - throw new CaseActionException("Error writing to case file", ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.errWriteToFile.msg"), ex); } // preparing the output file @@ -597,11 +602,17 @@ import org.xml.sax.SAXException; db = dbf.newDocumentBuilder(); doc = db.parse(file); } catch (ParserConfigurationException ex) { - throw new CaseActionException("Error reading case XML file: " + conFilePath, ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg", + conFilePath), ex); } catch (SAXException ex) { - throw new CaseActionException("Error reading case XML file: " + conFilePath, ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg", + conFilePath), ex); } catch (IOException ex) { - throw new CaseActionException("Error reading case XML file: " + conFilePath, ex); + throw new CaseActionException( + NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg", + conFilePath), ex); } @@ -619,7 +630,13 @@ import org.xml.sax.SAXException; if (!rootName.equals(TOP_ROOT_NAME)) { // throw an error ... clear(); - JOptionPane.showMessageDialog(caller, "Error: This is not an Autopsy config file (\"" + file.getName() + "\").\n \nDetail: \nCannot open a non-Autopsy config file (at " + className + ").", "Error", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(caller, + NbBundle.getMessage(this.getClass(), + "XMLCaseManagement.open.msgDlg.notAutCase.msg", + file.getName(), className), + NbBundle.getMessage(this.getClass(), + "XMLCaseManagement.open.msgDlg.notAutCase.title"), + JOptionPane.ERROR_MESSAGE); } else { /* Autopsy Created Version */ String createdVersion = getCreatedVersion(); // get the created version diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties new file mode 100644 index 0000000000..a8565de787 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties @@ -0,0 +1,16 @@ +Metadata.tableRowTitle.name=Name +Metadata.tableRowTitle.size=Size +Metadata.tableRowTitle.fileNameAlloc=File Name Allocation +Metadata.tableRowTitle.metadataAlloc=Metadata Allocation +Metadata.tableRowTitle.modified=Modified +Metadata.tableRowTitle.accessed=Accessed +Metadata.tableRowTitle.created=Created +Metadata.tableRowTitle.changed=Changed +Metadata.tableRowContent.md5notCalc=Not calculated +Metadata.tableRowTitle.md5=MD5 +Metadata.tableRowTitle.hashLookupResults=Hash Lookup Results +Metadata.tableRowTitle.internalid=Internal ID +Metadata.tableRowTitle.localPath=Local Path +Metadata.title=Metadata +Metadata.toolTip=Displays metadata about the file. +Metadata.nodeText.nonFilePassedIn=Non-file passed in \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties new file mode 100644 index 0000000000..b3db39fbc1 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties @@ -0,0 +1,16 @@ +Metadata.tableRowTitle.name=\u540D\u79F0 +Metadata.tableRowTitle.size=\u30B5\u30A4\u30BA +Metadata.tableRowTitle.fileNameAlloc=\u30D5\u30A1\u30A4\u30EB\u30A2\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u72B6\u614B +Metadata.tableRowTitle.metadataAlloc=\u30E1\u30BF\u30C7\u30FC\u30BF\u30A2\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u72B6\u614B +Metadata.tableRowTitle.modified=\u4FEE\u6B63\u6E08\u307F +Metadata.tableRowTitle.accessed=\u30A2\u30AF\u30BB\u30B9\u6E08\u307F +Metadata.tableRowTitle.created=\u4F5C\u6210\u6E08\u307F +Metadata.tableRowTitle.changed=\u5909\u66F4\u6E08\u307F +Metadata.tableRowContent.md5notCalc=\u672A\u8A08\u7B97 +Metadata.tableRowTitle.md5=MD5 +Metadata.tableRowTitle.hashLookupResults=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u7D50\u679C +Metadata.tableRowTitle.internalid=\u5185\u90E8ID +Metadata.tableRowTitle.localPath=\u30ED\u30FC\u30AB\u30EB\u30D1\u30B9 +Metadata.title=\u30E1\u30BF\u30C7\u30FC\u30BF +Metadata.toolTip=\u30D5\u30A1\u30A4\u30EB\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002 +Metadata.nodeText.nonFilePassedIn=\u51E6\u7406\u4E2D\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093 \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java index 20de49affd..ab29df1d2b 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java @@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.contentviewers; import java.awt.Component; import org.openide.nodes.Node; +import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer; import org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode; @@ -122,7 +123,7 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer public void setNode(Node node) { AbstractFile file = node.getLookup().lookup(AbstractFile.class); if (file == null) { - setText("Non-file passed in"); + setText(NbBundle.getMessage(this.getClass(), "Metadata.nodeText.nonFilePassedIn")); return; } @@ -130,29 +131,29 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer startTable(sb); try { - addRow(sb, "Name", file.getUniquePath()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.name"), file.getUniquePath()); } catch (TskCoreException ex) { - addRow(sb, "Name", file.getParentPath() + "/" + file.getName()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.name"), file.getParentPath() + "/" + file.getName()); } - addRow(sb, "Size", new Long(file.getSize()).toString() ); - addRow(sb, "File Name Allocation", file.getDirFlagAsString()); - addRow(sb, "Metadata Allocation", file.getMetaFlagsAsString()); - addRow(sb, "Modified", ContentUtils.getStringTime(file.getMtime(), file)); - addRow(sb, "Accessed", ContentUtils.getStringTime(file.getAtime(), file)); - addRow(sb, "Created", ContentUtils.getStringTime(file.getCrtime(), file)); - addRow(sb, "Changed", ContentUtils.getStringTime(file.getCtime(), file)); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.size"), new Long(file.getSize()).toString() ); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.fileNameAlloc"), file.getDirFlagAsString()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.metadataAlloc"), file.getMetaFlagsAsString()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.modified"), ContentUtils.getStringTime(file.getMtime(), file)); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.accessed"), ContentUtils.getStringTime(file.getAtime(), file)); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.created"), ContentUtils.getStringTime(file.getCrtime(), file)); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.changed"), ContentUtils.getStringTime(file.getCtime(), file)); String md5 = file.getMd5Hash(); if (md5 == null) { - md5 = "Not calculated"; + md5 = NbBundle.getMessage(this.getClass(), "Metadata.tableRowContent.md5notCalc"); } - addRow(sb, "MD5", md5); - addRow(sb, "Hash Lookup Results", file.getKnown().toString()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.md5"), md5); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.hashLookupResults"), file.getKnown().toString()); - addRow(sb, "Internal ID", new Long(file.getId()).toString()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.internalid"), new Long(file.getId()).toString()); if (file.getType().compareTo(TSK_DB_FILES_TYPE_ENUM.LOCAL) == 0) { - addRow(sb, "Local Path", file.getLocalAbsPath()); + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.localPath"), file.getLocalAbsPath()); } endTable(sb); @@ -161,12 +162,12 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer @Override public String getTitle() { - return "Metadata"; + return NbBundle.getMessage(this.getClass(), "Metadata.title"); } @Override public String getToolTip() { - return "Displays metadata about the file."; + return NbBundle.getMessage(this.getClass(), "Metadata.toolTip"); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Utilities.java b/Core/src/org/sleuthkit/autopsy/contentviewers/Utilities.java index 188fe2822d..152034d174 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Utilities.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Utilities.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2013 Basis Technology Corp. + * Copyright 2013-2014 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,8 +21,6 @@ package org.sleuthkit.autopsy.contentviewers; import javax.swing.JTextPane; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; -import org.sleuthkit.datamodel.AbstractFile; -import org.sleuthkit.datamodel.TskCoreException; /** * diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties index 1bc91ef607..ff08a90d89 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle.properties @@ -10,3 +10,5 @@ OpenIDE-Module-Name=Autopsy-Core OpenIDE-Module-Short-Description=Autopsy Core Module org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy Update Center +Installer.errorInitJavafx.msg=Error initializing JavaFX. +Installer.errorInitJavafx.details=\ Some features will not be available. Check that you have the right JRE installed (Oracle JRE > 1.7.10). diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties new file mode 100644 index 0000000000..4acb349e27 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties @@ -0,0 +1,14 @@ +OpenIDE-Module-Display-Category=\u57FA\u76E4 +OpenIDE-Module-Long-Description=\ + Autopsy\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30B3\u30A2\u3067\u3059\u3002\n\n\ + \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u3067\u5B9F\u884C\u3059\u308B\u306E\u306B\u5FC5\u8981\u306A\u4E3B\u8981\u306A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\uFF1ARCP\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u30A4\u30F3\u30B0GUI\u3001Sleuth Kit\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3001\u30C7\u30FC\u30BF\u30E2\u30C7\u30EB\uFF0F\u30B9\u30C8\u30EC\u30FC\u30B8\u3001\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u3001\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30B3\u30F3\u30C6\u30F3\u30C4\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u7528\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u3001\u30D5\u30A1\u30A4\u30EB\u691C\u7D22\u7B49\u306E\u4E3B\u8981\u30C4\u30FC\u30EB\u3002\n\n\ + \u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u306B\u306F\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3001\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u958B\u767A\u7528\u306EAPI\u304C\u542B\u307E\u308C\u307E\u3059\u3002\ + \u30E2\u30B8\u30E5\u30FC\u30EB\u306FAutopsy\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u5B9F\u88C5\u3067\u304D\u307E\u3059\u3002\n\ + \u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3051\u308C\u3070\u3001Autopsy\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\ + \u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002http\://www.sleuthkit.org/autopsy/ +OpenIDE-Module-Name=Autopsy-\u30B3\u30A2 +OpenIDE-Module-Short-Description=Autopsy\u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB +org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates.xml +Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30BB\u30F3\u30BF\u30FC +Installer.errorInitJavafx.msg=JavaFX\u521D\u671F\u5316\u30A8\u30E9\u30FC +Installer.errorInitJavafx.details=\u4E00\u90E8\u306E\u6A5F\u80FD\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u6B63\u3057\u3044JRE\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u306E\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\uFF08Oracle JRE > 1.7.10\uFF09 \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/core/Installer.java b/Core/src/org/sleuthkit/autopsy/core/Installer.java index 38f6862352..66a132114b 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/core/Installer.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.logging.Level; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.openide.modules.ModuleInstall; import org.openide.windows.WindowManager; @@ -113,9 +114,8 @@ public class Installer extends ModuleInstall { javaFxInit = true; } catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) { //in case javafx not present - final String msg = "Error initializing JavaFX. "; - final String details = " Some features will not be available. " - + " Check that you have the right JRE installed (Oracle JRE > 1.7.10). "; + final String msg = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.msg"); + final String details = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.details"); logger.log(Level.SEVERE, msg + details, e); diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 54bec76816..6796ad9d91 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -13,7 +13,8 @@ --> - + + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle.properties index 1468238a77..a1c78ba931 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle.properties @@ -1 +1,3 @@ OpenIDE-Module-Name=CoreComponentInterfaces +CoreComponentControl.CTL_DirectoryTreeTopComponent=Directory Tree +CoreComponentControl.CTL_FavoritesTopComponent=Favorites diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties new file mode 100644 index 0000000000..8e2fd233f8 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties @@ -0,0 +1,3 @@ +OpenIDE-Module-Name=\u4E3B\u8981\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9 +CoreComponentControl.CTL_DirectoryTreeTopComponent=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30C4\u30EA\u30FC +CoreComponentControl.CTL_FavoritesTopComponent=\u304A\u6C17\u306B\u5165\u308A \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/CoreComponentControl.java b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/CoreComponentControl.java index 2ada97d001..43b3c63629 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/CoreComponentControl.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/CoreComponentControl.java @@ -22,6 +22,8 @@ import java.util.Collection; import java.util.Iterator; import java.util.Set; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.openide.util.Lookup; import org.openide.windows.Mode; @@ -37,6 +39,10 @@ import org.sleuthkit.autopsy.corecomponents.DataContentTopComponent; public class CoreComponentControl { private static final Logger logger = Logger.getLogger(CoreComponentControl.class.getName()); + private static final String DIRECTORY_TREE = NbBundle.getMessage(CoreComponentControl.class, + "CoreComponentControl.CTL_DirectoryTreeTopComponent"); + private static final String FAVORITES = NbBundle.getMessage(CoreComponentControl.class, + "CoreComponentControl.CTL_FavoritesTopComponent"); /** * Opens all TopComponent windows that are needed ({@link DataExplorer}, {@link DataResult}, and @@ -83,6 +89,7 @@ public class CoreComponentControl { Set modes = wm.getModes(); Iterator iter = wm.getModes().iterator(); + TopComponent directoryTree = null; TopComponent favorites = null; String tcName = ""; @@ -94,16 +101,13 @@ public class CoreComponentControl { logger.log(Level.INFO, "tcName was null"); tcName = ""; } - switch (tcName) { - case "Directory Tree": - directoryTree = tc; - break; - case "Favorites": - favorites = tc; - break; - default: - tc.close(); - break; + // switch requires constant strings, so converted to if/else. + if (DIRECTORY_TREE.equals(tcName)) { + directoryTree = tc; + } else if (FAVORITES.equals(tcName)) { + favorites = tc; + } else { + tc.close(); } } } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties index 1cefe19010..7edfe2053c 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties @@ -1,38 +1,15 @@ CTL_DataContentAction=DataContent CTL_DataContentTopComponent=Data Content -CTL_NodeTableAction=NodeTable -CTL_NodeTableTopComponent=NodeTable Window -CTL_HexViewAction=HexView -CTL_HexViewTopComponent=Hex View -CTL_StringViewAction=StringView -CTL_StringViewTopComponent=String View CTL_CustomAboutAction=About +OptionsCategory_Name_General=Display +OptionsCategory_Keywords_General=display HINT_DataContentTopComponent=This is a DataContent window HINT_NodeTableTopComponent=This is a DataResult window -HINT_HexViewTopComponent=This is a HexView window -HINT_StringViewTopComponent=This is a StringView window OpenIDE-Module-Name=CoreComponents -OutputViewPanel.prevPageButton.text=Previous Page -OutputViewPanel.totalPageLabel.text=100 -OutputViewPanel.ofLabel.text=of -OutputViewPanel.currentPageLabel.text=1 -OutputViewPanel.pageLabel.text=Page: -OutputViewPanel.filePathLabel.text=FilePath -OutputViewPanel.nextPageButton.text=Next Page -DataContentViewerHex.filePathLabel.text=FilePath -DataContentViewerHex.pageLabel.text=Page: -DataContentViewerHex.currentPageLabel.text=1 -DataContentViewerHex.ofLabel.text=of -DataContentViewerHex.totalPageLabel.text=100 DataContentViewerHex.prevPageButton.text= DataContentViewerHex.nextPageButton.text= -DataContentViewerString.totalPageLabel.text=100 DataContentViewerString.prevPageButton.text= DataContentViewerString.nextPageButton.text= -DataContentViewerString.filePathLabel.text=FilePath -DataContentViewerString.pageLabel.text=Page: -DataContentViewerString.currentPageLabel.text=1 -DataContentViewerString.ofLabel.text=of DataContentViewerHex.pageLabel.text_1=Page: DataContentViewerHex.currentPageLabel.text_1=1 DataContentViewerHex.ofLabel.text_1=of @@ -41,7 +18,6 @@ DataContentViewerString.pageLabel.text_1=Page: DataContentViewerString.currentPageLabel.text_1=1 DataContentViewerString.ofLabel.text_1=of DataContentViewerString.totalPageLabel.text_1=100 -DataContentViewerPicture.picLabel.text=[Picture goes Here] DataContentViewerHex.pageLabel2.text=Page DataContentViewerString.pageLabel2.text=Page @@ -54,13 +30,13 @@ URL_ON_IMG=http://www.sleuthkit.org/ #SwingBrowser -LBL_SwingBrowserDescription=Simple HTML Browser based on a Swing component -MSG_cannot_create_browser=Cannot create Swing HTML Browser. -Services/Browsers/SwingBrowser.settings=Swing HTML Browser +#LBL_SwingBrowserDescription=Simple HTML Browser based on a Swing component +#MSG_cannot_create_browser=Cannot create Swing HTML Browser. +#Services/Browsers/SwingBrowser.settings=Swing HTML Browser LBL_Close=Close -MNE_Close=C -ACSN_Close=Close -ACSD_Close=Close +#MNE_Close=C +#ACSN_Close=Close +#ACSD_Close=Close DataContentViewerString.copyMenuItem.text=Copy DataContentViewerHex.copyMenuItem.text=Copy DataContentViewerString.selectAllMenuItem.text=Select All @@ -107,8 +83,60 @@ MediaViewVideoPanel.progressLabel.text=00:00 DataContentViewerMedia.AccessibleContext.accessibleDescription= MediaViewVideoPanel.infoLabel.text=info GeneralPanel.jLabel2.text=When displaying times: -GeneralPanel.useLocalTimeRB.text=Use local timezone +GeneralPanel.useLocalTimeRB.text=Use local time zone GeneralPanel.useGMTTimeRB.text=Use GMT -GeneralPanel.jLabel3.text=Hide known files in the Directory Listing when: -GeneralPanel.viewsHideKnownCB.text=Selecting under Views -GeneralPanel.dataSourcesHideKnownCB.text=Selecting under Data Sources +GeneralPanel.jLabel3.text=Hide known files (i.e. those in the NIST NSRL) in the: +GeneralPanel.viewsHideKnownCB.text= Views area +GeneralPanel.dataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy) +DataContentViewerArtifact.waitText=Retrieving and preparing data, please wait... +DataContentViewerArtifact.errorText=Error retrieving result +DataContentViewerArtifact.title=Results +DataContentViewerArtifact.toolTip=Displays Results associated with the file +DataContentViewerHex.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0} +DataContentViewerHex.goToPageTextField.err=Invalid page number +DataContentViewerHex.setDataView.errorText=(offset {0}-{1} could not be read) +DataContentViewerHex.title=Hex +DataContentViewerHex.toolTip=Displays the binary contents of a file as hexidecimal, with bytes that are displayable as ASCII characters on the right. +DataContentViewerMedia.title=Media +DataContentViewerMedia.toolTip=Displays supported multimedia files (images, videos, audio) +DataContentViewerString.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0} +DataContentViewerString.goToPageTextField.err=Invalid page number +DataContentViewerString.setDataView.errorText=(offset {0}-{1} could not be read) +DataContentViewerString.setDataView.errorNoText=(offset {0}-{1} contains no text) +DataContentViewerString.title=Strings +DataContentViewerString.toolTip=Displays ASCII and Unicode strings extracted from the file. +DataResultPanel.dummyNodeDisplayName=Please Wait... +DataResultViewerTable.firstColLbl=Name +DataResultViewerTable.illegalArgExc.noChildFromParent=Couldn't get a child Node from the given parent. +DataResultViewerTable.illegalArgExc.childWithoutPropertySet=Child Node doesn't have the regular PropertySet. +DataResultViewerTable.title=Table +DataResultViewerTable.dummyNodeDisplayName=Please Wait... +DataResultViewerThumbnail.title=Thumbnail +DataResultViewerThumbnail.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0} +DataResultViewerThumbnail.goToPageTextField.err=Invalid page number +DataResultViewerThumbnail.genThumbs=Generating Thumbnails... +DataResultViewerThumbnail.pageNumbers.curOfTotal={0} of {1} +FXVideoPanel.mediaPane.infoLabel=Playback of deleted videos is not supported, use an external player. +FXVideoPanel.progress.bufferingFile=Buffering {0} +FXVideoPanel.progressLabel.buffering=Buffering... +FXVideoPanel.media.unsupportedFormat=Unsupported Format. +GeneralOptionsPanelController.moduleErr=Module Error +GeneralOptionsPanelController.moduleErr.msg=A module caused an error listening to GeneralOptionsPanelController updates. See log to determine which module. Some data could be incomplete. +GstVideoPanel.cannotProcFile.err=The media player cannot process this file. +GstVideoPanel.initGst.gstException.msg=Error initializing gstreamer for audio/video viewing and frame extraction capabilities. Video and audio viewing will be disabled. +GstVideoPanel.initGst.otherException.msg=Error initializing gstreamer for audio/video viewing frame extraction capabilities. Video and audio viewing will be disabled. +GstVideoPanel.setupVideo.infoLabel.text=Playback of deleted videos is not supported, use an external player. +GstVideoPanel.exception.problemFile.msg=Cannot capture frames from this file ({0}). +GstVideoPanel.exception.problemPlay.msg=Problem with video file; problem when attempting to play while obtaining duration. +GstVideoPanel.exception.problemPause.msg=Problem with video file; problem when attempting to pause while obtaining duration. +GstVideoPanel.exception.problemPauseCaptFrame.msg=Problem with video file; problem when attempting to pause while capturing a frame. +GstVideoPanel.exception.problemPlayCaptFrame.msg=Problem with video file; problem when attempting to play while capturing a frame. +GstVideoPanel.exception.problemStopCaptFrame.msg=Problem with video file; problem when attempting to stop while capturing a frame. +GstVideoPanel.progress.buffering=Buffering... +GstVideoPanel.progressLabel.bufferingErr=Error buffering file +MediaViewImagePanel.imgFileTooLarge.msg=Could not load image file (too large)\: {0} +ProductInformationPanel.actVerboseLogging.text=Activate verbose logging +ProductInformationPanel.verbLoggingEnabled.text=Verbose logging enabled +ProductInformationPanel.propertyUnknown.text=unknown +ProductInformationPanel.getVMValue.text={0} {1} +TableFilterNode.displayName.text=Name diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties new file mode 100644 index 0000000000..19e5b3b3c7 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties @@ -0,0 +1,115 @@ +CTL_DataContentTopComponent=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4 +HINT_DataContentTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059 +HINT_NodeTableTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u7D50\u679C\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059 +OpenIDE-Module-Name=\u4E3B\u8981\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8 +DataContentViewerHex.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A +DataContentViewerHex.currentPageLabel.text_1=1 +DataContentViewerHex.totalPageLabel.text_1=100 +DataContentViewerString.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A +DataContentViewerString.currentPageLabel.text_1=1 +DataContentViewerString.totalPageLabel.text_1=100 +DataContentViewerHex.pageLabel2.text=\u30DA\u30FC\u30B8 +DataContentViewerString.pageLabel2.text=\u30DA\u30FC\u30B8 +Format_OperatingSystem_Value={0} \u30D0\u30FC\u30B8\u30E7\u30F3 {1} \u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3\u3000{2} +URL_ON_IMG=http\://www.sleuthkit.org/ +LBL_Close=\u9589\u3058\u308B +DataContentViewerString.copyMenuItem.text=\u30B3\u30D4\u30FC +DataContentViewerHex.copyMenuItem.text=\u30B3\u30D4\u30FC +DataContentViewerString.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E +DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E +DataContentViewerArtifact.totalPageLabel.text=100 +DataContentViewerArtifact.pageLabel2.text=\u7D50\u679C +DataContentViewerArtifact.currentPageLabel.text=1 +DataContentViewerArtifact.copyMenuItem.text=\u30B3\u30D4\u30FC +DataContentViewerArtifact.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E +DataContentViewerArtifact.pageLabel.text=\u7D50\u679C\uFF1A +AdvancedConfigurationDialog.applyButton.text=OK +DataContentViewerString.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A +DataContentViewerHex.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A +DataContentViewerString.languageLabel.text=\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A +DataContentViewerString.languageCombo.toolTipText=\u30D0\u30A4\u30CA\u30EA\u30B9\u30C8\u30EA\u30F3\u30B0\u306E\u51E6\u7406\uFF08\u62BD\u51FA\u304A\u3088\u3073\u30C7\u30B3\u30FC\u30C9\uFF09\u306E\u969B\u306B\u4F7F\u7528\u3059\u308B\u8A00\u8A9E +DataResultViewerThumbnail.pageLabel.text=\u30DA\u30FC\u30B8\uFF1A +DataResultViewerThumbnail.pagesLabel.text=\u30DA\u30FC\u30B8\uFF1A +DataResultViewerThumbnail.imagesLabel.text=\u30A4\u30E1\u30FC\u30B8\uFF1A +DataResultViewerThumbnail.imagesRangeLabel.text=- +DataResultViewerThumbnail.pageNumLabel.text=- +DataResultViewerThumbnail.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u306B\u79FB\u52D5\uFF1A +GeneralPanel.jLabel1.text=\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3059\u308B\u969B\uFF1A +GeneralPanel.useBestViewerRB.text=\u6700\u3082\u5C02\u9580\u7684\u306A\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u306B\u5909\u66F4 +GeneralPanel.keepCurrentViewerRB.text=\u305D\u306E\u307E\u307E\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u3092\u4F7F\u7528 +GeneralPanel.useBestViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u969B\u306B\u306FHEX\u304B\u3089\u30E1\u30C7\u30A3\u30A2\u306B\u5909\u66F4\u3059\u308B\u3002 +GeneralPanel.keepCurrentViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u969B\u306B\u305D\u306E\u307E\u307EHEX\u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3002 +AdvancedConfigurationDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB +DataResultPanel.directoryTablePath.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30D1\u30B9 +DataResultPanel.numberMatchLabel.text=0 +DataResultPanel.matchLabel.text=\u7D50\u679C +MediaViewVideoPanel.pauseButton.text=\u25BA +MediaViewVideoPanel.progressLabel.text=00\:00 +MediaViewVideoPanel.infoLabel.text=\u60C5\u5831 +GeneralPanel.jLabel2.text=\u30A2\u30A4\u30C6\u30E0\u3092\u8868\u793A\u3059\u308B\u969B\uFF1A +GeneralPanel.useLocalTimeRB.text=\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u4F7F\u7528 +GeneralPanel.useGMTTimeRB.text=GMT\u3092\u4F7F\u7528 +GeneralPanel.jLabel3.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30EA\u30B9\u30C6\u30A3\u30F3\u30B0\u5185\u306E\u65E2\u77E5\u30D5\u30A1\u30A4\u30EB\u306F\u4E0B\u8A18\u306E\u5834\u5408\u306B\u96A0\u3059\uFF1A +GeneralPanel.viewsHideKnownCB.text=\u30D3\u30E5\u30FC\u304B\u3089\u9078\u629E\u3057\u3066\u3044\u308B\u5834\u5408 +GeneralPanel.dataSourcesHideKnownCB.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304B\u3089\u9078\u629E\u3057\u3066\u3044\u308B\u5834\u5408 +DataContentViewerArtifact.waitText=\u30C7\u30FC\u30BF\u3092\u53D6\u8FBC\u307F\u304A\u3088\u3073\u6E96\u5099\u4E2D\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u2026 +DataContentViewerArtifact.errorText=\u7D50\u679C\u306E\u53D6\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +DataContentViewerArtifact.title=\u7D50\u679C +DataContentViewerArtifact.toolTip=\u30D5\u30A1\u30A4\u30EB\u306B\u95A2\u9023\u3059\u308B\u7D50\u679C\u3092\u8868\u793A\u3057\u307E\u3059 +DataContentViewerHex.goToPageTextField.msgDlg=\uFF11\u304B\u3089 {0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +DataContentViewerHex.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570 +DataContentViewerHex.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09 +DataContentViewerHex.title=HEX +DataContentViewerHex.toolTip=\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092HEX\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u8868\u793A\u3057\u3001ASCII\u3068\u3057\u3066\u8868\u793A\u3067\u304D\u308B\u30D0\u30A4\u30C8\u306F\u53F3\u5074\u306B\u8868\u793A\u3057\u307E\u3059\u3002 +DataContentViewerMedia.title=\u30E1\u30C7\u30A3\u30A2 +DataContentViewerMedia.toolTip=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30DE\u30EB\u30C1\u30E1\u30C7\u30A3\u30A2\u30D5\u30A1\u30A4\u30EB\uFF08\u753B\u50CF\u3001\u30D3\u30C7\u30AA\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002 +DataContentViewerString.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +DataContentViewerString.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570 +DataContentViewerString.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09\ +DataContentViewerString.setDataView.errorNoText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306B\u306F\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09 +DataContentViewerString.title=\u30B9\u30C8\u30EA\u30F3\u30B0 +DataContentViewerString.toolTip=\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u62BD\u51FA\u3055\u308C\u305FASCII\u304A\u3088\u3073\u30E6\u30CB\u30B3\u30FC\u30C9\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002 +DataResultPanel.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026 +DataResultViewerTable.firstColLbl=\u540D\u79F0 +DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5B9A\u3055\u308C\u305F\u30DA\u30A2\u30EC\u30F3\u30C8\u304B\u3089\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 +DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u306F\u901A\u5E38\u306EPropertySet\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002 +DataResultViewerTable.title=\u30C6\u30FC\u30D6\u30EB +DataResultViewerTable.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026 +DataResultViewerThumbnail.title=\u30B5\u30E0\u30CD\u30A4\u30EB +DataResultViewerThumbnail.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044 +DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570 +DataResultViewerThumbnail.genThumbs=\u30B5\u30E0\u30CD\u30A4\u30EB\u3092\u4F5C\u6210\u4E2D\u2026 +DataResultViewerThumbnail.pageNumbers.curOfTotal={0}\uFF0F{1}\u3064\u76EE +FXVideoPanel.mediaPane.infoLabel=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002 +FXVideoPanel.progress.bufferingFile={0}\u3092\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0 +FXVideoPanel.progressLabel.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026 +FXVideoPanel.media.unsupportedFormat=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u3059\u3002 +GeneralOptionsPanelController.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC +GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002 +GstVideoPanel.cannotProcFile.err=\u30E1\u30C7\u30A4\u30A2\u30D7\u30EC\u30FC\u30E4\u30FC\u304C\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3002 +GstVideoPanel.initGst.gstException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002 +GstVideoPanel.initGst.otherException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002 +GstVideoPanel.setupVideo.infoLabel.text=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002 +GstVideoPanel.exception.problemFile.msg=\u30D5\u30A1\u30A4\u30EB({0})\u304B\u3089\u306F\u30D5\u30EC\u30FC\u30E0\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 +GstVideoPanel.exception.problemPlay.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1B\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u518D\u751F\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +LBL_Description=
\n \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A {0} ({9})
Sleuth Kit\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A {7}
Netbeans RCP\u30D3\u30EB\u30C9\: {8}
Java\: {1}; {2}
\u30B7\u30B9\u30C6\u30E0\uFF1A {3}; {4}; {5}
\u30E6\u30FC\u30B6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D {6}
+LBL_Copyright=
Autopsy™\u306FSleuth Kit™\u3084\u305D\u306E\u4ED6\u30C4\u30FC\u30EB\u3092\u57FA\u306B\u3057\u305F\u30C7\u30B8\u30BF\u30EB\u30FB\u30D5\u30A9\u30EC\u30F3\u30B8\u30C3\u30AF\u30FB\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u3059\u3002

Copyright © 2003-2013. \u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002 http\://www.sleuthkit.org.
+GstVideoPanel.exception.problemPause.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +GstVideoPanel.exception.problemPauseCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +GstVideoPanel.exception.problemPlayCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u518D\u751F\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +GstVideoPanel.exception.problemStopCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u505C\u6B62\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 +GstVideoPanel.progress.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026 +GstVideoPanel.progressLabel.bufferingErr=\u30D5\u30A1\u30A4\u30EB\u306E\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u30A8\u30E9\u30FC +MediaViewImagePanel.imgFileTooLarge.msg=\u753B\u50CF\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u5927\u304D\u3059\u304E\u3067\u3059\uFF09\uFF1A {0} +ProductInformationPanel.actVerboseLogging.text=Verbose\u30ED\u30B0\u3092\u6709\u52B9\u5316 +ProductInformationPanel.verbLoggingEnabled.text=Verbose\u30ED\u30B0\u304C\u6709\u52B9\u3067\u3059 +ProductInformationPanel.propertyUnknown.text=\u4E0D\u660E +ProductInformationPanel.getVMValue.text={0} {1} +TableFilterNode.displayName.text=\u540D\u79F0 +CTL_DataContentAction=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4 +OptionsCategory_Name_General=\u4E00\u822C +OptionsCategory_Keywords_General=\u4E00\u822C +CTL_CustomAboutAction=Autopsy\u306B\u3064\u3044\u3066 +DataContentViewerHex.ofLabel.text_1=of +DataContentViewerString.ofLabel.text_1=of +DataContentViewerArtifact.ofLabel.text=of \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/CustomAboutAction.java b/Core/src/org/sleuthkit/autopsy/corecomponents/CustomAboutAction.java index 37d21e2748..8fd75651e5 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/CustomAboutAction.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/CustomAboutAction.java @@ -37,7 +37,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; ProductInformationPanel pip = new ProductInformationPanel(); DialogDescriptor descriptor = new DialogDescriptor( pip, - NbBundle.getMessage(AboutAction.class, "About_title"), + NbBundle.getMessage(CustomAboutAction.class, "CTL_CustomAboutAction"), true, new Object[0], null, diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java index f979f74688..4cc0e394a6 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java @@ -27,6 +27,8 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.JMenuItem; import javax.swing.JTextPane; @@ -53,8 +55,8 @@ import org.sleuthkit.datamodel.TskCoreException; public class DataContentViewerArtifact extends javax.swing.JPanel implements DataContentViewer{ private final static Logger logger = Logger.getLogger(DataContentViewerArtifact.class.getName()); - private final static String WAIT_TEXT = "Retrieving and preparing data, please wait..."; - private final static String ERROR_TEXT = "Error retrieving result"; + private final static String WAIT_TEXT = NbBundle.getMessage(DataContentViewerArtifact.class, "DataContentViewerArtifact.waitText"); + private final static String ERROR_TEXT = NbBundle.getMessage(DataContentViewerArtifact.class, "DataContentViewerArtifact.errorText"); private Node currentNode; // @@@ Remove this when the redundant setNode() calls problem is fixed. private int currentPage = 1; private final Object lock = new Object(); @@ -288,12 +290,12 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat @Override public String getTitle() { - return "Results"; + return NbBundle.getMessage(this.getClass(), "DataContentViewerArtifact.title"); } @Override public String getToolTip() { - return "Displays Results associated with the file"; + return NbBundle.getMessage(this.getClass(), "DataContentViewerArtifact.toolTip"); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerHex.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerHex.java index 0e28a337f8..fbf63346fb 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerHex.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerHex.java @@ -23,6 +23,8 @@ import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -257,8 +259,13 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont pageNumber = totalPages + 1; } if (pageNumber > totalPages || pageNumber < 1) { - JOptionPane.showMessageDialog(this, "Please enter a valid page number between 1 and " + totalPages, - "Invalid page number", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(this, + NbBundle.getMessage(this.getClass(), + "DataContentViewerHex.goToPageTextField.msgDlg", + totalPages), + NbBundle.getMessage(this.getClass(), + "DataContentViewerHex.goToPageTextField.err"), + JOptionPane.WARNING_MESSAGE); return; } setDataView(pageNumber); @@ -309,16 +316,16 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont try { bytesRead = dataSource.read(data, offset, pageLength); // read the data } catch (TskException ex) { - errorText = "(offset " + offset + "-" + (offset + pageLength) - + " could not be read)"; + errorText = NbBundle.getMessage(this.getClass(), "DataContentViewerHex.setDataView.errorText", offset, + offset + pageLength); logger.log(Level.WARNING, "Error while trying to show the hex content.", ex); } } // set the data on the bottom and show it if (bytesRead <= 0) { - errorText = "(offset " + offset + "-" + (offset + pageLength) - + " could not be read)"; + errorText = NbBundle.getMessage(this.getClass(), "DataContentViewerHex.setDataView.errorText", offset, + offset + pageLength); } @@ -378,13 +385,12 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont @Override public String getTitle() { - return "Hex"; + return NbBundle.getMessage(this.getClass(), "DataContentViewerHex.title"); } @Override public String getToolTip() { - return "Displays the binary contents of a file as hexidecimal, with " - + "bytes that are displayable as ASCII characters on the right."; + return NbBundle.getMessage(this.getClass(), "DataContentViewerHex.toolTip"); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerMedia.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerMedia.java index 7bd6c0d1cd..d7a2c63814 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerMedia.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerMedia.java @@ -24,6 +24,8 @@ import java.awt.Dimension; import java.util.Arrays; import java.util.logging.Level; import javax.imageio.ImageIO; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.openide.nodes.Node; import org.openide.util.lookup.ServiceProvider; @@ -164,12 +166,12 @@ public class DataContentViewerMedia extends javax.swing.JPanel implements DataCo @Override public String getTitle() { - return "Media"; + return NbBundle.getMessage(this.getClass(), "DataContentViewerMedia.title"); } @Override public String getToolTip() { - return "Displays supported multimedia files (images, videos, audio)"; + return NbBundle.getMessage(this.getClass(), "DataContentViewerMedia.toolTip"); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.form b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.form index c837f5efc8..c2df92ded6 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.form +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.form @@ -284,6 +284,10 @@ + + + +
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.java index 5223f61920..975be800e7 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerString.java @@ -24,6 +24,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import java.util.logging.Level; + +import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -114,7 +116,7 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC prevPageButton = new javax.swing.JButton(); goToPageLabel = new javax.swing.JLabel(); goToPageTextField = new javax.swing.JTextField(); - languageCombo = new javax.swing.JComboBox(); + languageCombo = new javax.swing.JComboBox<>(); languageLabel = new javax.swing.JLabel(); copyMenuItem.setText(org.openide.util.NbBundle.getMessage(DataContentViewerString.class, "DataContentViewerString.copyMenuItem.text")); // NOI18N @@ -286,8 +288,13 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC pageNumber = maxPage + 1; } if (pageNumber > maxPage || pageNumber < 1) { - JOptionPane.showMessageDialog(this, "Please enter a valid page number between 1 and " + maxPage, - "Invalid page number", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(this, + NbBundle.getMessage(this.getClass(), + "DataContentViewerString.goToPageTextField.msgDlg", + maxPage), + NbBundle.getMessage(this.getClass(), + "DataContentViewerString.goToPageTextField.err"), + JOptionPane.WARNING_MESSAGE); return; } currentOffset = (pageNumber - 1) * pageLength; @@ -309,7 +316,7 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC private javax.swing.JTextField goToPageTextField; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JComboBox languageCombo; + private javax.swing.JComboBox