diff --git a/Core/ivy.xml b/Core/ivy.xml index 2958230052..5185b58c13 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -42,6 +42,9 @@ + + + @@ -54,6 +57,6 @@ - + diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index aa5e50279c..3c994d58ac 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -18,6 +18,7 @@ file.reference.commons-lang3-3.8.1.jar=release\\modules\\ext\\commons-lang3-3.8. file.reference.commons-pool2-2.4.2.jar=release/modules/ext/commons-pool2-2.4.2.jar file.reference.cxf-rt-rs-client-3.3.0.jar=release\\modules\\ext\\cxf-rt-rs-client-3.3.0.jar file.reference.dec-0.1.2.jar=release\\modules\\ext\\dec-0.1.2.jar +file.reference.decodetect-core-0.3.jar=release\\modules\\ext\\decodetect-core-0.3.jar file.reference.fontbox-2.0.13.jar=release\\modules\\ext\\fontbox-2.0.13.jar file.reference.geoapi-3.0.1.jar=release\\modules\\ext\\geoapi-3.0.1.jar file.reference.grib-4.5.5.jar=release\\modules\\ext\\grib-4.5.5.jar @@ -50,6 +51,7 @@ file.reference.jsoup-1.11.3.jar=release\\modules\\ext\\jsoup-1.11.3.jar file.reference.jul-to-slf4j-1.7.25.jar=release\\modules\\ext\\jul-to-slf4j-1.7.25.jar file.reference.juniversalchardet-1.0.3.jar=release\\modules\\ext\\juniversalchardet-1.0.3.jar file.reference.junrar-2.0.0.jar=release\\modules\\ext\\junrar-2.0.0.jar +file.reference.jutf7-1.0.0.jar=release\\modules\\ext\\jutf7-1.0.0.jar file.reference.jxmapviewer2-2.4.jar=release/modules/ext/jxmapviewer2-2.4.jar file.reference.jython-standalone-2.7.0.jar=release/modules/ext/jython-standalone-2.7.0.jar file.reference.libphonenumber-3.5.jar=release/modules/ext/libphonenumber-3.5.jar diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 7fe269c0fb..83aefea7c5 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -794,6 +794,14 @@ ext/vorbis-java-tika-0.8.jar release\modules\ext\vorbis-java-tika-0.8.jar + + ext/decodetect-core-0.3.jar + release/modules/ext/decodetect-core-0.3.jar + + + ext/jutf7-1.0.0.jar + release/modules/ext/jutf7-1.0.0.jar + diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties index 10bd2ad0df..a4a460df69 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties @@ -1,51 +1,97 @@ -GetTagNameDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb +AddBlackboardArtifactTagAction.pluralTagResult=\u7d50\u679c\u30bf\u30b0\u3092\u8ffd\u52a0 +AddBlackboardArtifactTagAction.singularTagResult=\u7d50\u679c\u30bf\u30b0\u3092\u8ffd\u52a0 +AddBlackboardArtifactTagAction.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc +# {0} - artifactName +AddBlackboardArtifactTagAction.unableToTag.msg={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +AddContentTagAction.cannotApplyTagErr=\u30bf\u30b0\u3092\u9069\u7528\u3067\u304d\u307e\u305b\u3093 +AddContentTagAction.pluralTagFile=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u8ffd\u52a0 +AddContentTagAction.singularTagFile=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u8ffd\u52a0 +# {0} - fileName +# {1} - tagName +AddContentTagAction.tagExists={0} \u304c {1} \u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3057\u305f\u3002\u540c\u3058\u30bf\u30b0\u3092\u518d\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +AddContentTagAction.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc +# {0} - fileName +AddContentTagAction.unableToTag.msg={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002\u901a\u5e38\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +# {0} - fileName +AddContentTagAction.unableToTag.msg2={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +CTL_ShowIngestProgressSnapshotAction=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30c6\u30fc\u30bf\u30b9\u8a73\u7d30 +DeleteBlackboardArtifactTagAction.deleteTag=\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u524a\u9664 +DeleteBlackboardArtifactTagAction.tagDelErr=\u30bf\u30b0\u524a\u9664\u30a8\u30e9\u30fc +# {0} - tagName +DeleteBlackboardArtifactTagAction.unableToDelTag.msg={0} \u3092Delete\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +DeleteContentTagAction.deleteTag=\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u524a\u9664 +DeleteContentTagAction.tagDelErr=\u30bf\u30b0\u524a\u9664\u30a8\u30e9\u30fc +# {0} - tagName +DeleteContentTagAction.unableToDelTag.msg={0} \u3092Delete\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +DeleteFileBlackboardArtifactTagAction.deleteTag=\u7d50\u679c\u30bf\u30b0\u3092\u524a\u9664 +# {0} - artifactID +DeleteFileBlackboardArtifactTagAction.deleteTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +# {0} - artifactID +DeleteFileBlackboardArtifactTagAction.deleteTags.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +DeleteFileContentTagAction.deleteTag=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u524a\u9664 +# {0} - fileID +DeleteFileContentTagAction.deleteTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +ExitAction.confirmationDialog.message=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u7d42\u4e86\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +ExitAction.confirmationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +ExitAction.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +GetTagNameDialog.descriptionLabel.text=\u8a18\u8ff0: +GetTagNameDialog.notableCheckbox.text=\u30bf\u30b0\u306f\u9805\u76ee\u304c\u9855\u8457\u3067\u3042\u308b\u3068\u793a\u5506\u3057\u3066\u3044\u307e\u3059\u3002 +GetTagNameDialog.tagDescriptionIllegalCharacters.message=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u30ab\u30f3\u30de(,)\u3084\u30bb\u30df\u30b3\u30ed\u30f3(;)\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093 +GetTagNameDialog.tagDescriptionIllegalCharacters.title=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059 +GetTagNameDialog.tagNameAlreadyExists.message=\u30bf\u30b0\u540d\u306f\u4e00\u610f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u540d\u524d\u306e\u30bf\u30b0\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +GetTagNameDialog.tagNameAlreadyExists.title=\u30bf\u30b0\u540d\u3092\u8907\u88fd +GetTagNameDialog.tagNameField.text= +GetTagNameDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 GetTagNameDialog.okButton.text=OK -GetTagNameDialog.preexistingLabel.text=\u65e2\u5b58\u30bf\u30b0\uff1a +GetTagNameDialog.preexistingLabel.text=\u524d\u304b\u3089\u5b58\u5728\u3059\u308b\u30bf\u30b0\u540d: GetTagNameDialog.newTagPanel.border.title=\u65b0\u898f\u30bf\u30b0 -GetTagNameDialog.tagNameLabel.text=\u30bf\u30b0\u540d\uff1a +GetTagNameDialog.tagNameLabel.text=\u30bf\u30b0\u540d: GetTagNameAndCommentDialog.newTagButton.text=\u65b0\u898f\u30bf\u30b0 GetTagNameAndCommentDialog.okButton.text=OK -GetTagNameAndCommentDialog.commentText.toolTipText=\u30bf\u30b0\u306e\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\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.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 +GetTagNameAndCommentDialog.commentText.toolTipText=\u4efb\u610f\u30bf\u30b0\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5165\u529b\u3059\u308b\u304b\u7a7a\u6b04\u306e\u307e\u307e\u306b\u3059\u308b +GetTagNameAndCommentDialog.commentText.text= +GetTagNameAndCommentDialog.commentLabel.text=\u30b3\u30e1\u30f3\u30c8: +# \u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb | \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] \u3092\u9078\u629e\u3057\u3001 +# \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u958b\u304d\u307e\u3059\u3002 +GetTagNameAndCommentDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +GetTagNameAndCommentDialog.tagLabel.text=\u30bf\u30b0: +AddTagAction.bookmarkFile=\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb 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 -GetTagNameAndCommentDialog.noTags=\u30bf\u30b0\u7121\u3057 +AddTagAction.noTags=\u30bf\u30b0\u306a\u3057 +AddTagAction.newTag=\u65b0\u898f\u30bf\u30b0... +AddTagAction.tagAndComment=\u30bf\u30b0\u3068\u30b3\u30e1\u30f3\u30c8... +AddBookmarkTagAction.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af +GetTagNameAndCommentDialog.noTags=\u30bf\u30b0\u306a\u3057 GetTagNameAndCommentDialog.selectTag=\u30bf\u30b0\u3092\u9078\u629e -GetTagNameAndCommentDialog.cancelName=\u30ad\u30e3\u30f3\u30bb\u30eb +GetTagNameAndCommentDialog.cancelName=\u53d6\u308a\u6d88\u3057 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\u5148\u306b\u9032\u3081\u307e\u305b\u3093\u3002 +GetTagNameDialog.cancelName=\u53d6\u308a\u6d88\u3057 +GetTagNameDialog.mustSupplyTtagName.msg=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30bf\u30b0\u540d\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 GetTagNameDialog.tagNameErr=\u30bf\u30b0\u540d -GetTagNameDialog.illegalCharsErr=\u4f7f\u7528\u3067\u304d\u306a\u3044\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.illegalChars.msg=\u30bf\u30b0\u540d\u306b\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093: \\ : * ? " < > | , ; +GetTagNameDialog.illegalCharsErr=\u4e0d\u6b63\u306a\u6587\u5b57 +GetTagNameDialog.unableToAddTagNameToCase.msg={0} \u30bf\u30b0\u540d\u3092\u30b1\u30fc\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\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=\u30bf\u30b0\u306e\u91cd\u8907\u30a8\u30e9\u30fc -AddContentTagAction.cannotApplyTagErr=\u30bf\u30b0\u3092\u9069\u7528\u3067\u304d\u307e\u305b\u3093 -OpenLogFolder.error1=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -CTL_OpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u3092\u958b\u304f -ShowIngestProgressSnapshotAction.actionName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30b0\u30ec\u30b9\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u53d6\u5f97 -CTL_OpenPythonModulesFolderAction=Python\u30d7\u30e9\u30b0\u30a4\u30f3 +GetTagNameDialog.tagNameAlreadyDef.msg={0} \u30bf\u30b0\u540d\u3092\u3059\u3067\u306b\u5b9a\u7fa9\u6e08\u307f\u3067\u3059\u3002 +GetTagNameDialog.dupTagErr=\u30bf\u30b0\u8907\u88fd\u30a8\u30e9\u30fc +GetTagNameDialog.tagNameExistsTskCore.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306b {0} \u30bf\u30b0\u540d\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +OpenLogFolder.error1=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} +OpenLogFolder.CouldNotOpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +CTL_OpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f +CTL_OpenOutputFolder=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f +OpenOutputFolder.error1=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} +OpenOutputFolder.noCaseOpen=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u306a\u3044\u305f\u3081\u3001\u73fe\u5728\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +OpenOutputFolder.CouldNotOpenOutputFolder=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u53e4\u3044\u30bf\u30b0\u540d +# {1} - artifactID +ReplaceBlackboardArtifactTagAction.replaceTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {1} \u306e\u30bf\u30b0 {0} \u3092\u7f6e\u63db\u3067\u304d\u307e\u305b\u3093\u3002 +# {0} - \u53e4\u3044\u30bf\u30b0\u540d +# {1} - \u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID +ReplaceContentTagAction.replaceTag.alert={1} \u306e\u30bf\u30b0 {0} \u3092\u7f6e\u63db\u3067\u304d\u307e\u305b\u3093\u3002 +ReplaceTagAction.replaceTag=\u3067\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u7f6e\u63db +ShowIngestProgressSnapshotAction.actionName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u9032\u884c\u72b6\u6cc1\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u53d6\u5f97 OpenPythonModulesFolderAction.actionName.text=Python\u30d7\u30e9\u30b0\u30a4\u30f3 -OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python\u30d7\u30e9\u30b0\u30a4\u30f3\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -AddContentTagAction.tagExists={0}\u306f\u65e2\u306b{1}\u3068\u30bf\u30b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u540c\u3058\u30bf\u30b0\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -OpenLogFolder.CouldNotOpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f -CTL_OpenOutputFolder=\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a9\u30eb\u30c0\u3092\u3092\u958b\u304f -OpenOutputFolder.error1=\u6b21\u306e\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a9\u30eb\u30c0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -OpenOutputFolder.noCaseOpen=\u30aa\u30fc\u30d7\u30f3\u30b1\u30fc\u30b9\u304c\u306a\u3044\u306e\u3067\u3001\u4f5c\u696d\u4e2d\u306e\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a9\u30eb\u30c0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -GetTagNameDialog.illegalChars.msg=\u4f7f\u7528\u3067\u304d\u306a\u3044\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\u6b21\u306e\u6587\u5b57\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\uff1a\\ \: * ? " < > | -OpenOutputFolder.CouldNotOpenOutputFolder=\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a9\u30eb\u30c0\u304c\u304c\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python\u30d7\u30e9\u30b0\u30a4\u30f3\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} +CTL_OpenPythonModulesFolderAction=Python\u30d7\u30e9\u30b0\u30a4\u30f3 GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4f7f\u7528\u3059\u308b\u30bf\u30b0\u3092\u9078\u629e diff --git a/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties new file mode 100644 index 0000000000..08a2809615 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/allcasessearch/Bundle_ja.properties @@ -0,0 +1,46 @@ + +AllCasesSearchAction.getName.text=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9\u3092\u691c\u7d22 +# {0} - \u30b1\u30fc\u30b9\u6570 +AllCasesSearchDialog.caseLabel.text=\u73fe\u5728\u306e\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u306f {0} \u30b1\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.correlationValueTextField.domainExample=\u4f8b: "domain.com" +AllCasesSearchDialog.correlationValueTextField.emailExample=\u4f8b: "user@host.com" +AllCasesSearchDialog.correlationValueTextField.filesExample=\u4f8b: "f0e1d2c3b4a5968778695a4b3c2d1e0f" +AllCasesSearchDialog.correlationValueTextField.iccidExample=\u4f8b: "89 91 19 1299 99 329451 0" +AllCasesSearchDialog.correlationValueTextField.imeiExample=\u4f8b: "351756061523999" +AllCasesSearchDialog.correlationValueTextField.imsiExample=\u4f8b: "310150123456789" +AllCasesSearchDialog.correlationValueTextField.macExample=\u4f8b: "0C-14-F2-01-AF-45" +AllCasesSearchDialog.correlationValueTextField.phoneExample=\u4f8b: "(800)123-4567" +AllCasesSearchDialog.correlationValueTextField.ssidExample=\u4f8b: "WirelessNetwork-5G" +AllCasesSearchDialog.correlationValueTextField.usbExample=\u4f8b: "4&1234567&0" +AllCasesSearchDialog.descriptionLabel.text=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u306a\u3044\u304b\u6307\u5b9a\u5024\u3067\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u691c\u7d22\u3057\u307e\u3059\u3002\u691c\u7d22\u306f\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.dialogTitle.text=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9\u3092\u691c\u7d22 +AllCasesSearchDialog.emptyNode.text=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.errorLabel.text=\ +AllCasesSearchDialog.correlationTypeLabel.text=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u30bf\u30a4\u30d7: +AllCasesSearchDialog.resultsDescription.text=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9\u306e\u691c\u7d22 +AllCasesSearchDialog.resultsTitle.text=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9 +AllCasesSearchDialog.searchButton.AccessibleContext.accessibleDescription= +AllCasesSearchDialog.searchButton.AccessibleContext.accessibleName=\u691c\u7d22 +AllCasesSearchDialog.searchButton.text=\u691c\u7d22 +AllCasesSearchDialog.correlationValueTextField.text= +AllCasesSearchDialog.correlationValueLabel.text=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u5024: +AllCasesSearchDialog.casesLabel.text=\ +AllCasesSearchDialog.validation.genericMessage=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidDomain=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306a\u30c9\u30e1\u30a4\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidEmail=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306a\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidHash=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aMD5\u30cf\u30c3\u30b7\u30e5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidIccid=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aICCID\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidImei=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aIMEI\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidImsi=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aIMSI\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidMac=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306aMAC\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidPhone=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306a\u96fb\u8a71\u756a\u53f7\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchDialog.validation.invalidSsid=\u63d0\u4f9b\u3055\u308c\u305f\u5024\u306f\u6709\u52b9\u306a\u30ef\u30a4\u30e4\u30ec\u30b9 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AllCasesSearchNode.getName.text=\u305d\u306e\u4ed6\u306e\u30b1\u30fc\u30b9\u306e\u691c\u7d22 +CorrelationAttributeInstanceNode.columnName.case=\u30b1\u30fc\u30b9 +CorrelationAttributeInstanceNode.columnName.comment=\u30b3\u30e1\u30f3\u30c8 +CorrelationAttributeInstanceNode.columnName.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +CorrelationAttributeInstanceNode.columnName.device=\u30c7\u30d0\u30a4\u30b9 +CorrelationAttributeInstanceNode.columnName.known=\u65e2\u77e5 +CorrelationAttributeInstanceNode.columnName.name=\u540d\u524d +CorrelationAttributeInstanceNode.columnName.path=\u30d1\u30b9 +CTL_AllCasesSearchAction=\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9\u3092\u691c\u7d22 diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED index afa4459a85..ca2deebaa4 100755 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties-MERGED @@ -354,6 +354,7 @@ UnpackagePortableCaseProgressDialog.title.text=Unpackage Portable Case Progress UnpackageWorker.doInBackground.canceled=Unpackaging canceled by user UnpackageWorker.doInBackground.errorCompressingCase=Error unpackaging case UnpackageWorker.doInBackground.errorFinding7zip=Could not locate 7-Zip executable +UnpackageWorker.doInBackground.previousSeenCase=Case with name {0} has been previously opened do you want to open it again? UpdateRecentCases.menuItem.clearRecentCases.text=Clear Recent Cases UpdateRecentCases.menuItem.empty=-Empty- AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=Cancel diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties index 2b05d5cac8..27d4a47fd7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties @@ -1,198 +1,457 @@ +AddImageWizardIngestConfigPanel.name.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u69cb\u6210 +AddImageWizardSelectDspVisual.multiUserWarning.text=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30d7\u30ed\u30bb\u30c3\u30b5\u30fc\u306f\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30e2\u30fc\u30c9\u3067\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.closeException.couldNotCloseCase=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Case.creationException.couldNotAcquireDirLock=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306e\u30ed\u30c3\u30af\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Case.creationException.couldNotAcquireResourcesLock=\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u306e\u30ed\u30c3\u30af\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Case.deleteCaseConfirmationDialog.message=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +Case.deleteCaseConfirmationDialog.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3059\u304b? +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.deleteCaseFailureMessageBox.message=\u6b21\u306e\u30b1\u30fc\u30b9\u306e\u524a\u9664\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Case.deleteCaseFailureMessageBox.title=\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Case.exceptionMessage.cancelledByUser=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +Case.exceptionMessage.cannotDeleteCurrentCase=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\u6700\u521d\u306b\u9589\u3058\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +Case.exceptionMessage.cannotGetLockToDeleteCase=\u5225\u306e\u30e6\u30fc\u30b6\u30fc\u307e\u305f\u306f\u30db\u30b9\u30c8\u304c\u958b\u3044\u3066\u3044\u308b\u305f\u3081\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002 +Case.exceptionMessage.cannotLocateMainWindow=\u30e1\u30a4\u30f3\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +Case.exceptionMessage.cannotOpenMultiUserCaseNoSettings=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093([\u30c4\u30fc\u30eb]\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3]\u3001[\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc] \u30bf\u30d6\u3092\u53c2\u7167)\u3002\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotCreatCollaborationMonitor=\u9023\u643a\u30e2\u30cb\u30bf\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotCreateCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotCreateCaseNodeData=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotGetDbServerConnectionInfo=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306e\u63a5\u7d9a\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotOpenCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotOpenRemoteEventChannel=\u30ea\u30e2\u30fc\u30c8\u30a4\u30d9\u30f3\u30c8\u30c1\u30e3\u30cd\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotSaveCaseMetadata=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotSaveDbNameToMetadataFile=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u3092\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.couldNotUpdateCaseNodeData=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u30b1\u30fc\u30b9\u8868\u793a\u540d +Case.exceptionMessage.deletionInterrupted=\u30b1\u30fc\u30b9 {0} \u306e\u524a\u9664\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +Case.exceptionMessage.emptyCaseDir=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +Case.exceptionMessage.emptyCaseName=\u30b1\u30fc\u30b9\u540d\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +Case.exceptionMessage.errorsDeletingCase=\u30b1\u30fc\u30b9\u306e\u524a\u9664\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u8a73\u7d30\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.execExceptionWrapperMessage={0} +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.failedToConnectToCoordSvc=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}. +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.failedToFetchCoordSvcNodeData=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.failedToLockCaseForDeletion=\u524a\u9664\u5bfe\u8c61\u306e\u30b1\u30fc\u30b9\u3092\u6392\u4ed6\u30ed\u30c3\u30af\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.failedToReadMetadata=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f:\n{0}\u3002 +Case.exceptionMessage.metadataUpdateError=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.exceptionMessage.unsupportedSchemaVersionMessage=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059:\n{0}\u3002 +Case.open.exception.multiUserCaseNotEnabled=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u304c\u6709\u52b9\u3067\u306a\u3044\u5834\u5408\u306f\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002[\u30c4\u30fc\u30eb]\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3]\u3001[\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc] \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +Case.progressIndicatorCancelButton.label=\u53d6\u308a\u6d88\u3057 +Case.progressIndicatorTitle.closingCase=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059 +Case.progressIndicatorTitle.creatingCase=\u30b1\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059 +Case.progressIndicatorTitle.deletingCase=\u30b1\u30fc\u30b9\u3092\u524a\u9664\u4e2d\u3067\u3059 +Case.progressIndicatorTitle.openingCase=\u30b1\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059 +Case.progressMessage.cancelling=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059... +Case.progressMessage.clearingTempDirectory=\u30b1\u30fc\u30b9\u306e\u4e00\u6642\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u6d88\u53bb\u4e2d\u3067\u3059... +Case.progressMessage.closingApplicationServiceResources=\u30b1\u30fc\u30b9\u56fa\u6709\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d3\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059... +Case.progressMessage.closingCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059... +Case.progressMessage.closingCaseLevelServices=\u30b1\u30fc\u30b9\u30ec\u30d9\u30eb\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059... +Case.progressMessage.connectingToCoordSvc=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u4e2d\u3067\u3059... +Case.progressMessage.creatingCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059... +Case.progressMessage.creatingCaseDirectory=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u4e2d\u3067\u3059... +Case.progressMessage.creatingCaseNodeData=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\u4e2d\u3067\u3059... +Case.progressMessage.deletingCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.deletingCaseDirCoordSvcNode=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306e\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.deletingCaseDirectory=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.deletingResourcesCoordSvcNode=\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u306e\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.deletingTextIndex=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.fetchingCoordSvcNodeData=\u30b1\u30fc\u30b9\u306e\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u4e2d\u3067\u3059... +Case.progressMessage.openingApplicationServiceResources=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b5\u30fc\u30d3\u30b9\u306e\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059... +Case.progressMessage.openingCaseDatabase=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059... +Case.progressMessage.openingCaseLevelServices=\u30b1\u30fc\u30b9\u30ec\u30d9\u30eb\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059... +Case.progressMessage.preparing=\u6e96\u5099\u4e2d\u3067\u3059... +Case.progressMessage.preparingToOpenCaseResources=\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u304f\u6e96\u5099\u3092\u3057\u3066\u3044\u307e\u3059\u3002
\u5225\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u30b1\u30fc\u30b9\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +Case.progressMessage.removingCaseFromRecentCases=[\u6700\u8fd1\u306e\u30b1\u30fc\u30b9] \u30e1\u30cb\u30e5\u30fc\u304b\u3089\u30b1\u30fc\u30b9\u3092\u524a\u9664\u4e2d\u3067\u3059... +Case.progressMessage.savingCaseMetadata=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u4e2d\u3067\u3059... +Case.progressMessage.settingUpNetworkCommunications=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901a\u4fe1\u3092\u8a2d\u5b9a\u4e2d\u3067\u3059... +Case.progressMessage.shuttingDownNetworkCommunications=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901a\u4fe1\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u4e2d\u3067\u3059... +Case.progressMessage.switchingLogDirectory=\u30ed\u30b0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u5207\u308a\u63db\u3048\u4e2d\u3067\u3059... +Case.progressMessage.updatingCaseNodeData=\u5ea7\u6a19\u30b5\u30fc\u30d3\u30b9\u30ce\u30fc\u30c9\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u4e2d\u3067\u3059... +# {0} - serviceName +Case.serviceCloseResourcesProgressIndicator.title={0} \u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059 +# {0} - \u30b5\u30fc\u30d3\u30b9\u540d +Case.serviceOpenCaseResourcesProgressIndicator.cancellingMessage={0} \u306b\u3088\u3063\u3066\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u304f\u64cd\u4f5c\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f... +# {0} - \u30b5\u30fc\u30d3\u30b9\u540d +Case.serviceOpenCaseResourcesProgressIndicator.title={0} \u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059 +# {0} - \u30b5\u30fc\u30d3\u30b9\u540d +Case.servicesException.notificationTitle={0} \u30a8\u30e9\u30fc +# {0} - \u30b5\u30fc\u30d3\u30b9\u540d +# {1} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Case.servicesException.serviceResourcesCloseError={0} \u30b5\u30fc\u30d3\u30b9\u306e\u6b21\u306e\u30b1\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {1} +Case_caseType_multiUser=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9 +Case_caseType_singleUser=\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9 +CaseDetailsPanel.casePanel.border.title=\u30b1\u30fc\u30b9 +CaseDetailsPanel.examinerLabel.text=\u540d\u524d: +CaseDetailsPanel.examinerPanel.border.title=\u8abf\u67fb\u54e1 +CaseDetailsPanel.lbCaseUUIDLabel.text=\u30b1\u30fc\u30b9UUID: +CaseDetailsPanel.lbExaminerEmailLabel.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +CaseDetailsPanel.lbExaminerPhoneLabel.text=\u96fb\u8a71\u756a\u53f7: +CaseDetailsPanel.lbNotesLabel.text=\u5099\u8003: +CaseDetailsPanel.lbOrganizationNameLabel.text=\u540d\u524d: +CaseDetailsPanel.lbPointOfContactEmailLabel.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +CaseDetailsPanel.lbPointOfContactNameLabel.text=\u9023\u7d61\u5148: +CaseDetailsPanel.lbPointOfContactPhoneLabel.text=\u96fb\u8a71\u756a\u53f7: +CaseDetailsPanel.pnOrganization.border.title=\u7d44\u7e54 +CaseInformationPanel.caseDetails.header=\u8a73\u7d30 +CaseInformationPanel.editDetailsButton.text=\u8a73\u7d30\u3092\u7de8\u96c6 +CaseInformationPanel.editDetailsDialog.title=\u30b1\u30fc\u30b9\u8a73\u7d30\u3092\u7de8\u96c6 +CaseOpenAction.msgDlg.cantOpenCase.title=\u30b1\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +CTL_AddImage=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 CTL_AddImageButton=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 CTL_CaseCloseAct=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u308b CTL_CaseNewAction=\u65b0\u898f\u30b1\u30fc\u30b9 -CTL_CasePropertiesAction=\u30b1\u30fc\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3 +CTL_CaseDetailsAction=\u30b1\u30fc\u30b9\u8a73\u7d30 CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664 CTL_CaseOpenAction=\u30b1\u30fc\u30b9\u3092\u958b\u304f -Menu/Case/OpenRecentCase=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f +CTL_UnpackagePortableCaseAction=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u3092\u958b\u5c01 +EditOptionalCasePropertiesPanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +EditOptionalCasePropertiesPanel.saveButton.text=\u4fdd\u5b58 +GeneralFilter.encaseImageDesc.text=\u30a4\u30e1\u30fc\u30b8(*.e01)\u3092\u5305\u542b +GeneralFilter.executableDesc.text=\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb(*.exe) +GeneralFilter.graphicImageDesc.text=\u30a4\u30e1\u30fc\u30b8(*.png, *.jpg, *.jpeg, *.gif, *.bmp) +GeneralFilter.rawImageDesc.text=\u30ed\u30fc\u30a4\u30e1\u30fc\u30b8(*.img, *.dd, *.001, *.aa, *.raw, *.bin) +GeneralFilter.virtualMachineImageDesc.text=\u4eee\u60f3\u30de\u30b7\u30f3(*.vmdk, *.vhd) +ImageFilePanel.000.confirmationMessage=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u62e1\u5f35\u5b50\u306f .001 \u3067\u3059\u304c\u3001\u30ed\u30fc\u30a4\u30e1\u30fc\u30b8\u306e\u30b7\u30fc\u30b1\u30f3\u30b9\u306b .000\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\n\u9078\u629e\u3057\u305f .001\u30d5\u30a1\u30a4\u30eb\u306e\u4ee3\u308f\u308a\u306b\u3001.000\u30d5\u30a1\u30a4\u30eb\u3092\u8d77\u70b9\u3068\u3057\u3066\u4f7f\u7528\u3059\u3079\u304d\u3067\u3059\u304b?\n +ImageFilePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +ImageFilePanel.moduleErr.msg=ImageFilePanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n +ImageFilePanel.validatePanel.dataSourceOnCDriveError=\u8b66\u544a: \u30de\u30eb\u30c1\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30d1\u30b9\u306f"C:" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059\u3002 +ImageFilePanel.validatePanel.invalidMD5=\u7121\u52b9\u306aMD5\u30cf\u30c3\u30b7\u30e5 +ImageFilePanel.validatePanel.invalidSHA1=\u7121\u52b9\u306aSHA1\u30cf\u30c3\u30b7\u30e5 +ImageFilePanel.validatePanel.invalidSHA256=\u7121\u52b9\u306aSHA256\u30cf\u30c3\u30b7\u30e5 +IngestJobInfoPanel.IngestJobTableModel.EndTime.header=\u7d42\u4e86\u6642\u523b +IngestJobInfoPanel.IngestJobTableModel.IngestStatus.header=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30c6\u30fc\u30bf\u30b9 +IngestJobInfoPanel.IngestJobTableModel.StartTime.header=\u958b\u59cb\u6642\u523b +IngestJobInfoPanel.IngestModuleTableModel.ModuleName.header=\u30e2\u30b8\u30e5\u30fc\u30eb\u540d +IngestJobInfoPanel.IngestModuleTableModel.ModuleVersion.header=\u30e2\u30b8\u30e5\u30fc\u30eb\u30d0\u30fc\u30b8\u30e7\u30f3 +IngestJobInfoPanel.loadIngestJob.error.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestJobInfoPanel.loadIngestJob.error.title=\u8aad\u307f\u8fbc\u307f\u5931\u6557 +LocalDiskPanel.errorMessage.noOpenCaseBody=LocalDiskPanel\u30ea\u30b9\u30ca\u30fc\u304c\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +LocalDiskPanel.errorMessage.noOpenCaseTitle=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093 +LocalDiskPanel.imageWriterError.directoryNotExist=\u30a8\u30e9\u30fc - \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +LocalDiskPanel.imageWriterError.emptyPath=\u30a8\u30e9\u30fc - VHD\u306e\u30d1\u30b9\u3092\u5165\u529b +LocalDiskPanel.imageWriterError.fileExists=Error - VHD\u30d1\u30b9\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +LocalDiskPanel.imageWriterError.isDirectory=Error - VHD\u30d1\u30b9\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3067\u3059 +LocalDiskPanel.localDiskMessage.unspecified=\u672a\u6307\u5b9a +LocalDiskPanel.moduleErrorMessage.body=LocalDiskPanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +LocalDiskPanel.moduleErrorMessage.title=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +LocalDiskSelectionDialog.columnName.diskName=\u30c7\u30a3\u30b9\u30af\u540d +LocalDiskSelectionDialog.columnName.diskSize=\u30c7\u30a3\u30b9\u30af\u30b5\u30a4\u30ba +LocalDiskSelectionDialog.errorMessage.disksNotDetected=\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650(\u307e\u305f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u300d)\u304c\u5fc5\u8981\u3067\u3059\u3002 +LocalDiskSelectionDialog.errorMessage.drivesNotDetected=\u30ed\u30fc\u30ab\u30eb\u30c9\u30e9\u30a4\u30d6\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3053\u306eOS\u3067\u306f\u81ea\u52d5\u691c\u51fa\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059 +LocalDiskSelectionDialog.errorMessage.someDisksNotDetected=\u4e00\u90e8\u306e\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650(\u307e\u305f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u300d)\u304c\u5fc5\u8981\u3067\u3059\u3002 +LocalDiskSelectionDialog.moduleErrorMessage.body=LocalDiskPanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +LocalDiskSelectionDialog.moduleErrorMessage.title=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +LocalDiskSelectionDialog.tableMessage.loading=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059... +LocalDiskSelectionDialog.tableMessage.noDrives=\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u30c9\u30e9\u30a4\u30d6\u306f\u3042\u308a\u307e\u305b\u3093 +LocalFilesDSProcessor.logicalEvidenceFilter.desc=\u8ad6\u7406\u8a3c\u62e0\u30d5\u30a1\u30a4\u30eb(L01) +LocalFilesPanel.pathValidation.dataSourceOnCDriveError=\u8b66\u544a: \u30de\u30eb\u30c1\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30d1\u30b9\u306f"C:" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059\u3002 +LocalFilesPanel.pathValidation.getOpenCase=\u8b66\u544a: \u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +LogicalEvidenceFilePanel.moduleErr.msg=LogicalEvidenceFilePanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +LogicalEvidenceFilePanel.moduleErr.name=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +LogicalEvidenceFilePanel.pathValidation.dataSourceOnCDriveError=\u8b66\u544a: \u30de\u30eb\u30c1\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30d1\u30b9\u306f"C:" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059\u3002 +LogicalEvidenceFilePanel.pathValidation.getOpenCase.Error=\u8b66\u544a: \u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +LogicalEvidenceFilePanel.validatePanel.nonL01Error.text=\u3053\u3053\u3067\u306f .l01\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +LogicalFilesDspPanel.subTypeComboBox.l01FileOption.text=\u8ad6\u7406\u8a3c\u62e0\u30d5\u30a1\u30a4\u30eb(L01) +LogicalFilesDspPanel.subTypeComboBox.localFilesOption.text=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30d5\u30a9\u30eb\u30c0\u30fc +Menu/Case/OpenRecentCase=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u3092\u958b\u304f CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664 OpenIDE-Module-Name=\u30b1\u30fc\u30b9 -NewCaseVisualPanel1.caseNameLabel.text_1=\u30b1\u30fc\u30b9\u540d\uff1a -NewCaseVisualPanel1.caseDirLabel.text=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff1a -NewCaseVisualPanel1.caseDirBrowseButton.text=\u95b2\u89a7 -NewCaseVisualPanel1.jLabel2.text_1=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u306f\u6b21\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff1a +NewCaseVisualPanel1.caseNameLabel.text_1=\u30b1\u30fc\u30b9\u540d: +NewCaseVisualPanel1.caseDirLabel.text=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc: +NewCaseVisualPanel1.caseDirBrowseButton.text=\u53c2\u7167 +NewCaseVisualPanel1.caseNameTextField.text_1= +NewCaseVisualPanel1.jLabel2.text_1=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u306f\u6b21\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059: +NewCaseVisualPanel1.caseParentDirTextField.text= +NewCaseVisualPanel1.caseDirTextField.text_1= +CueBannerPanel.autopsyLogo.text= CueBannerPanel.closeButton.text=\u9589\u3058\u308b -OpenRecentCasePanel.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -OpenRecentCasePanel.jLabel1.text=\u6700\u8fd1\u958b\u3044\u305f\u30d5\u30a1\u30a4\u30eb +# {0} - caseErrorMessage +OpenMultiUserCaseAction.caseOpeningErrorErrorMsg=\u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f: {0} +OpenMultiUserCaseAction.menuItemText=\u30b1\u30fc\u30b9\u3092\u958b\u304f +OpenMultiUserCaseDialog.title=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u958b\u304f +OpenRecentCasePanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +OpenRecentCasePanel.jLabel1.text=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9 AddImageErrorsDialog.title=\u30a4\u30e1\u30fc\u30b8\u30ed\u30b0\u3092\u8ffd\u52a0 -AddImageErrorsDialog.copyButton.toolTipText=\u30a8\u30e9\u30fc\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059 +AddImageErrorsDialog.copyButton.toolTipText=\u30a8\u30e9\u30fc\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc AddImageErrorsDialog.copyButton.text=\u30b3\u30d4\u30fc -AddImageErrorsDialog.closeButton.toolTipText=\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u9589\u3058\u307e\u3059 +AddImageErrorsDialog.closeButton.toolTipText=\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u9589\u3058\u308b AddImageErrorsDialog.closeButton.text=\u9589\u3058\u308b OpenRecentCasePanel.openButton.text=\u958b\u304f -ImageFilePanel.browseButton.text=\u95b2\u89a7 +ImageFilePanel.pathLabel.text=\u30d1\u30b9: +ImageFilePanel.browseButton.text=\u53c2\u7167 +ImageFilePanel.pathTextField.text= MissingImageDialog.selectButton.text=\u30a4\u30e1\u30fc\u30b8\u3092\u9078\u629e -MissingImageDialog.titleLabel.text=\u6b20\u843d\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u306e\u691c\u7d22 -MissingImageDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -AddImageWizardAddingProgressVisual.statusLabel.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u4e2d\u3067\u3059\u3002 -AddImageWizardAddingProgressVisual.progressLabel.text=\uff1c\u30d7\u30ed\u30b0\u30ec\u30b9\uff1e +MissingImageDialog.titleLabel.text=\u898b\u3064\u304b\u3089\u306a\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u691c\u7d22 +MissingImageDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +AddImageWizardAddingProgressVisual.statusLabel.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u6790\u4e2d\u3067\u3059\u3002 +AddImageWizardAddingProgressVisual.progressLabel.text=<\u9032\u6357\u72b6\u6cc1> AddImageWizardAddingProgressVisual.viewLogButton.text=\u30ed\u30b0\u3092\u8868\u793a -AddImageWizardAddingProgressVisual.subTitle1Label.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u60c5\u5831\u3092\u8ffd\u52a0\u4e2d\u3067\u3059\u3002\u3053\u3061\u3089\u304c\u5b8c\u4e86\u6b21\u7b2c\u3001\u30d5\u30a1\u30a4\u30eb\u89e3\u6790\u304c\u59cb\u307e\u308a\u307e\u3059\u3002 -ImageFilePanel.descLabel.text=\uff08\u3088\u308a\u901f\u3044\u7d50\u679c\u3001\u3057\u304b\u3057\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u306f\u691c\u7d22\u3055\u308c\u307e\u305b\u3093\uff09 -LocalDiskPanel.timeZoneLabel.text=\u30a4\u30f3\u30d7\u30c3\u30c8\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\uff1a -LocalDiskPanel.descLabel.text=\uff08\u3088\u308a\u901f\u3044\u7d50\u679c\u3001\u3057\u304b\u3057\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u306f\u691c\u7d22\u3055\u308c\u307e\u305b\u3093\uff09 -MissingImageDialog.browseButton.text=\u95b2\u89a7 +AddImageWizardAddingProgressVisual.subTitle1Label.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u51e6\u7406\u3068\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u8ffd\u52a0\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u7d42\u4e86\u3059\u308b\u3068\u30d5\u30a1\u30a4\u30eb\u5206\u6790\u304c\u958b\u59cb\u3057\u307e\u3059\u3002 +ImageFilePanel.timeZoneLabel.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: +ImageFilePanel.noFatOrphansCheckbox.text=\u5b64\u7acb\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 +ImageFilePanel.noFatOrphansCheckbox.toolTipText= +ImageFilePanel.descLabel.text=(\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u691c\u7d22\u3055\u308c\u306a\u304f\u3066\u3082\u3001\u7d50\u679c\u3092\u3088\u308a\u901f\u304f\u53d6\u5f97\u3057\u307e\u3059) +LocalDiskPanel.timeZoneLabel.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: +LocalDiskPanel.noFatOrphansCheckbox.toolTipText= +LocalDiskPanel.noFatOrphansCheckbox.text=\u5b64\u7acb\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 +LocalDiskPanel.descLabel.text=(\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u691c\u7d22\u3055\u308c\u306a\u304f\u3066\u3082\u3001\u7d50\u679c\u3092\u3088\u308a\u901f\u304f\u53d6\u5f97\u3057\u307e\u3059) +MissingImageDialog.browseButton.text=\u53c2\u7167 +MissingImageDialog.pathNameTextField.text= AddImageWizardAddingProgressVisual.progressTextArea.border.title=\u30b9\u30c6\u30fc\u30bf\u30b9 AddImageAction.wizard.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 -AddImageAction.ingestConfig.ongoingIngest.msg=\u4ed6\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u51e6\u7406\u4e2d\u3067\u3059\u3002\u4eca\u65b0\u898f\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3068\u5b9f\u884c\u4e2d\u306e\u51e6\u7406\u304c\u9045\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002
\u3053\u306e\u307e\u307e\u5b9f\u884c\u3057\u3001\u65b0\u898f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f -AddImageAction.ingestConfig.ongoingIngest.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d -AddImageTask.run.progress.adding=\u8ffd\u52a0\u4e2d\uff1a{0} +AddImageAction.ingestConfig.ongoingIngest.msg=\u5225\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u65b0\u898f\u30bd\u30fc\u30b9\u3092\u4eca\u8ffd\u52a0\u3059\u308b\u3068\u3001\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u51e6\u7406\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u7d9a\u884c\u3057\u3066\u65b0\u898f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4eca\u3059\u3050\u8ffd\u52a0\u3057\u307e\u3059\u304b? +AddImageAction.ingestConfig.ongoingIngest.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059 +AddImageTask.run.progress.adding=\u6b21\u3092\u8ffd\u52a0\u4e2d\u3067\u3059: {0} AddImageTask.interrupt.exception.msg=\u30a4\u30e1\u30fc\u30b8\u8ffd\u52a0\u30d7\u30ed\u30bb\u30b9\u306e\u505c\u6b62\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -AddImageWizardAddingProgressPanel.isValid.focusNext=\u6b21 > -AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*\u5927\u304d\u3044\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u5834\u5408\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -AddImageWizardAddingProgressVisual.addingDsComplete.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 - \u5b8c\u4e86 +AddImageWizardAddingProgressPanel.isValid.focusNext=\u6b21\u3078 > +AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u5927\u304d\u3044\u5834\u5408\u3001\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +AddImageWizardAddingProgressVisual.addingDsComplete.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u4e2d - \u5b8c\u4e86 AddImageWizardAddingProgressVisual.getName.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 -AddImageWizardAddingProgressVisual.showErrors.critText=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff08\u81f4\u547d\u7684\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff09\u3002\u4e0b\u8a18\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002 -AddImageWizardAddingProgressVisual.showErrors.nonCritText=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff08\u81f4\u547d\u7684\u3067\u306f\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff09\u3002\u4e0b\u8a18\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002 -AddImageWizardChooseDataSourcePanel.moveFocusNext=\u6b21 > -AddImageWizardChooseDataSourceVisual.getName.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u60c5\u5831\u3092\u5165\u529b -AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 +AddImageWizardAddingProgressVisual.showErrors.critText=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u306b\u5931\u6557\u3057\u307e\u3057\u305f(\u91cd\u5927\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f)\u3002\u6b21\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +AddImageWizardAddingProgressVisual.showErrors.nonCritText=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f(\u91cd\u5927\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u305b\u3093\u3067\u3057\u305f)\u3002\u6b21\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30ed\u30b0\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +AddImageWizardChooseDataSourcePanel.moveFocusNext=\u6b21\u3078 > +AddImageWizardChooseDataSourceVisual.getName.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e +AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002 AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -AddImageWizardIngestConfigVisual.getName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8a2d\u5b9a -AddImageWizardIterator.stepXofN=\u30b9\u30c6\u30c3\u30d7{0}\uff0f{1} -AddLocalFilesTask.localFileAdd.progress.text=\u8ffd\u52a0\u4e2d\uff1a{0}/{1} -Case.getCurCase.exception.noneOpen=\u4f5c\u696d\u4e2d\u306e\u30b1\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\uff1b\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\uff01 -Case.open.msgDlg.updated.msg=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002\n\u6b21\u306e\u30d1\u30b9\u3092\u6301\u3064\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b3\u30d4\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\uff1a\n\ - {0} -Case.open.msgDlg.updated.title=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u3092\u66f4\u65b0 -Case.checkImgExist.confDlg.doesntExist.title=\u6b20\u843d\u3057\u3066\u3044\u308b\u30a4\u30e1\u30fc\u30b8 +AddImageWizardIngestConfigVisual.getName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u69cb\u6210 +AddImageWizardIterator.stepXofN=\u624b\u9806 {0} / {1} +AddLocalFilesTask.localFileAdd.progress.text=\u6b21\u3092\u8ffd\u52a0\u4e2d\u3067\u3059: {0}/{1} +Case.getCurCase.exception.noneOpen=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u30b1\u30fc\u30b9\u304c\u958b\u304b\u308c\u3066\u3044\u307e\u305b\u3093\! +Case.open.msgDlg.updated.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002\n\u6b21\u306e\u30d1\u30b9\u3092\u6301\u3064\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b3\u30d4\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f:\n {0} +Case.open.msgDlg.updated.title=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u306e\u66f4\u65b0 +Case.checkImgExist.confDlg.doesntExist.msg=\u3053\u306e\u30b1\u30fc\u30b9\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\n\ +\u30a4\u30e1\u30fc\u30b8\u306e1\u3064\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u4eca\u3059\u3050\u691c\u7d22\u3057\u307e\u3059\u304b?\n\ +\u4ee5\u524d\u3001\u30a4\u30e1\u30fc\u30b8\u306f\u6b21\u306b\u3042\u308a\u307e\u3057\u305f:\n\ +{0}\n\ +\u4eca\u5f8c\u3082\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u53c2\u7167\u3057\u3066\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\u3067\u304d\u307e\u3059\n\ +\u305f\u3060\u3057\u3001[\u3044\u3044\u3048] \u3092\u9078\u629e\u3059\u308b\u3068\u3001\u30d5\u30a1\u30a4\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u8868\u793a\u3084\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u5b9f\u884c\u304c\u884c\u3048\u306a\u304f\u306a\u308a\u307e\u3059\u3002 +Case.checkImgExist.confDlg.doesntExist.title=\u30a4\u30e1\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 Case.addImg.exception.msg=\u30b1\u30fc\u30b9\u306b\u30a4\u30e1\u30fc\u30b8\u3092\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -Case.updateCaseName.exception.msg=\u30b1\u30fc\u30b9\u540d\u3092\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Case.updateExaminer.exception.msg=\u8abf\u67fb\u62c5\u5f53\u8005\u3092\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Case.updateCaseNum.exception.msg=\u30b1\u30fc\u30b9\u756a\u53f7\u3092\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Case.exception.errGetRootObj=\u30eb\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Case.createCaseDir.exception.existNotDir=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u65e2\u306b\u5b58\u5728\u3057\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a{0} -Case.createCaseDir.exception.existCantRW=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u65e2\u306b\u5b58\u5728\u3057\u3001\u8aad\u307f\u53d6\u308a\uff0f\u66f8\u304d\u8fbc\u307f\u304c\u3067\u304d\u307e\u305b\u3093\uff1a{0} -Case.createCaseDir.exception.cantCreateCaseDir=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a {0} -Case.createCaseDir.exception.cantCreateModDir=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -CaseDeleteAction.closeConfMsg.text=\u3053\u306e\u30b1\u30fc\u30b9\u3092\u672c\u5f53\u306b\u9589\u3058\u3001\u524a\u9664\u3057\u307e\u3059\u304b\uff1f\n\ - \u30b1\u30fc\u30b9\u540d\uff1a {0}\n\ - \u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\: {1} -CaseDeleteAction.closeConfMsg.title=\u8b66\u544a\uff1a\u4f5c\u696d\u4e2d\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u307e\u3059 -CaseDeleteAction.msgDlg.fileInUse.msg=\u5225\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u30d5\u30a9\u30eb\u30c0\u307e\u305f\u306f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u3044\u308b\u306e\u3067\u3001\u524a\u9664\u3092\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3002\n\n\ -\u30d5\u30a9\u30eb\u30c0\u307e\u305f\u306f\u30d5\u30a1\u30a4\u30eb\u3092\u9589\u3058\u3066\u304b\u3089\u518d\u5b9f\u884c\u3059\u308b\u304b\u3001\u624b\u52d5\u3067\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3057\u3066\u4e0b\u3055\u3044\u3002 -CaseDeleteAction.msgDlg.fileInUse.title=\u30a8\u30e9\u30fc\uff1a\u30d5\u30a9\u30eb\u30c0\u304c\u4f7f\u7528\u4e2d -CaseDeleteAction.msgDlg.caseDelete.msg=\u30b1\u30fc\u30b9\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 +Case.updateCaseName.exception.msg=\u30b1\u30fc\u30b9\u540d\u306e\u66f4\u65b0\u3092\u8a66\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Case.updateExaminer.exception.msg=\u8abf\u67fb\u54e1\u306e\u66f4\u65b0\u3092\u8a66\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Case.updateCaseNum.exception.msg=\u30b1\u30fc\u30b9\u756a\u53f7\u306e\u66f4\u65b0\u3092\u8a66\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Case.exception.errGetRootObj=\u30eb\u30fc\u30c8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Case.createCaseDir.exception.existNotDir=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u3059\u3067\u306b\u5b58\u5728\u3057\u3001\u6b21\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0} +Case.createCaseDir.exception.existCantRW=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u3059\u3067\u306b\u5b58\u5728\u3057\u3001\u6b21\u306e\u8aad\u307f\u8fbc\u307f/\u66f8\u304d\u8fbc\u307f\u304c\u3067\u304d\u307e\u305b\u3093: {0} +Case.createCaseDir.exception.cantCreate=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u306a\u3044\u304b\u3001\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059: {0} +Case.createCaseDir.exception.cantCreateCaseDir=\u6b21\u306e\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Case.createCaseDir.exception.cantCreateModDir=\u6b21\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Case.createCaseDir.exception.cantCreateReportsDir=\u6b21\u306e\u30ec\u30dd\u30fc\u30c8\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Case.CollaborationSetup.FailNotify.ErrMsg=\u3053\u306e\u30b1\u30fc\u30b9\u3067\u9023\u643a\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u305d\u306e\u4ed6\u306e\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +Case.CollaborationSetup.FailNotify.Title=\u63a5\u7d9a\u5931\u6557 +Case.GetCaseTypeGivenPath.Failure=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093 +Case.metaDataFileCorrupt.exception.msg=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb(.aut)\u304c\u7834\u640d\u3057\u3066\u3044\u307e\u3059\u3002 +Case.deleteReports.deleteFromDiskException.log.msg=\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30ec\u30dd\u30fc\u30c8\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002 +Case.deleteReports.deleteFromDiskException.msg=\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30ec\u30dd\u30fc\u30c8 {0} \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\n{1} \u304b\u3089\u624b\u52d5\u3067\u524a\u9664\u3067\u304d\u307e\u3059 +CaseDeleteAction.closeConfMsg.text=\u3053\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \n\ + \u30b1\u30fc\u30b9\u540d: {0}\n\ + \u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc: {1} +CaseDeleteAction.closeConfMsg.title=\u8b66\u544a: \u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059 +CaseDeleteAction.msgDlg.fileInUse.msg=\u5225\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u307e\u305f\u306f\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u3044\u308b\u305f\u3081\u3001\u524a\u9664\u64cd\u4f5c\u3092\u5b8c\u5168\u306b\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3002\n\n\ +\u30d5\u30a9\u30eb\u30c0\u30fc\u3068\u30d5\u30a1\u30a4\u30eb\u3092\u9589\u3058\u3066\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u306b\u306a\u308b\u304b\u3001\u624b\u52d5\u3067\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u3059\u3002 +CaseDeleteAction.msgDlg.fileInUse.title=\u30a8\u30e9\u30fc: \u30d5\u30a9\u30eb\u30c0\u30fc\u306f\u4f7f\u7528\u4e2d\u3067\u3059 +CaseDeleteAction.msgDlg.caseDelete.msg=\u30b1\u30fc\u30b9 {0} \u3092\u524a\u9664\u3057\u307e\u3057\u305f\u3002 CaseOpenAction.autFilter.title={0} \u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb ( {1}) -CaseOpenAction.msgDlg.cantOpenCase.title=\u30b1\u30fc\u30b9\u3092\u958b\u304f\u969b\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -CasePropertiesAction.window.title=\u30b1\u30fc\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3 -CueBannerPanel.title.text=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f -GeneralFilter.rawImageDesc.text=\u30ed\u30fc\u30a4\u30e1\u30fc\u30b8(*.img, *.dd, *.001, *.aa, *.raw, *.bin) -GeneralFilter.encaseImageDesc.text=\u30a8\u30f3\u30b1\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8(*.e01) -ImageDSProcessor.dsType.text=\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb -ImageDSProcessor.allDesc.text=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5168\u30bf\u30a4\u30d7 -ImageFilePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -ImageFilePanel.moduleErr.msg=ImageFilePanel\u306e\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\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 +CaseCreateAction.msgDlg.cantCreateCase.msg=\u30b1\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 +IntervalErrorReport.NewIssues=\u65b0\u898f\u554f\u984c +IntervalErrorReport.TotalIssues=\u554f\u984c\u306e\u5408\u8a08 +IntervalErrorReport.ErrorText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30a8\u30e9\u30fc +CaseDetailsAction.window.title=\u30b1\u30fc\u30b9\u8a73\u7d30 +CueBannerPanel.title.text=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u3092\u958b\u304f +ImageDSProcessor.dsType.text=\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u307e\u305f\u306fVM\u30d5\u30a1\u30a4\u30eb +ImageDSProcessor.allDesc.text=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u30bf\u30a4\u30d7 LocalDiskDSProcessor.dsType.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af -LocalDiskPanel.localDiskModel.loading.msg=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u30ed\u30fc\u30c9\u4e2d\u2026 -LocalDiskPanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -LocalDiskPanel.moduleErr.msg=LocalDiskPanel\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\u3092\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 -LocalDiskPanel.errLabel.disksNotDetected.text=\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\uff08\u3082\u3057\u304f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u300d\u304c\u5fc5\u8981\uff09\u3002 -LocalDiskPanel.errLabel.disksNotDetected.toolTipText=\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\uff08\u3082\u3057\u304f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u300d\u304c\u5fc5\u8981\uff09\u3002 -LocalDiskPanel.errLabel.drivesNotDetected.text=\u30ed\u30fc\u30ab\u30eb\u30c9\u30e9\u30a4\u30d6\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u81ea\u52d5\u691c\u51fa\u306f\u3053\u306eOS\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002 -LocalDiskPanel.errLabel.drivesNotDetected.toolTipText=\u30ed\u30fc\u30ab\u30eb\u30c9\u30e9\u30a4\u30d6\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u81ea\u52d5\u691c\u51fa\u306f\u3053\u306eOS\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002 -LocalDiskPanel.errLabel.someDisksNotDetected.text=\u4e00\u90e8\u306e\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\uff08\u3082\u3057\u304f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u300d\uff09\u3002 -LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText=\u4e00\u90e8\u306e\u30c7\u30a3\u30b9\u30af\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u306f\u7ba1\u7406\u8005\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\uff08\u3082\u3057\u304f\u306f\u300c\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u3059\u308b\u300d\uff09\u3002 -LocalFilesDSProcessor.dsType=\u30ed\u30b8\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb -LocalFilesDSProcessor.toString.text=\u30ed\u30b8\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb +LocalFilesDSProcessor.dsType=\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb +LocalFilesDSProcessor.toString.text=\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb LocalFilesPanel.contentType.text=\u30ed\u30fc\u30ab\u30eb LocalFilesPanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -LocalFilesPanel.moduleErr.msg=LocalFilesPanel\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\u3092\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 -MissingImageDialog.display.title=\u6b20\u843d\u30a4\u30e1\u30fc\u30b8\u3092\u691c\u7d22 -MissingImageDialog.confDlg.noFileSel.msg=\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30e1\u30fc\u30b8\u3092\u898b\u3064\u3051\u308b\n\u524d\u306b\u672c\u5f53\u306b\u7d42\u4e86\u3057\u307e\u3059\u304b\uff1f -MissingImageDialog.confDlg.noFileSel.title=\u6b20\u843d\u30a4\u30e1\u30fc\u30b8 +LocalFilesPanel.moduleErr.msg=LocalFilesPanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +MissingImageDialog.display.title=\u898b\u3064\u304b\u3089\u306a\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u691c\u7d22 +MissingImageDialog.confDlg.noFileSel.msg=\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30e1\u30fc\u30b8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u307e\u307e\n\u7d42\u4e86\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b? +MissingImageDialog.confDlg.noFileSel.title=\u30a4\u30e1\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +MissingImageDialog.ErrorSettingImage=\u30a4\u30e1\u30fc\u30b8\u30d1\u30b9\u306e\u8a2d\u5b9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 NewCaseVisualPanel1.getName.text=\u30b1\u30fc\u30b9\u60c5\u5831 NewCaseVisualPanel1.caseDirBrowse.selectButton.text=\u9078\u629e -NewCaseVisualPanel2.getName.text=\u4ed8\u52a0\u60c5\u5831 +NewCaseVisualPanel1.badCredentials.text=\u4e0d\u6b63\u306a\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a(\u30c4\u30fc\u30eb]\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3]\u3001[\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc] \u3092\u53c2\u7167)\u304b\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059\u3002 +NewCaseVisualPanel2.getName.text=\u4efb\u610f\u60c5\u5831 NewCaseWizardAction.newCase.windowTitle.text=\u65b0\u898f\u30b1\u30fc\u30b9\u60c5\u5831 NewCaseWizardAction.getName.text=\u65b0\u898f\u30b1\u30fc\u30b9\u30a6\u30a3\u30b6\u30fc\u30c9 -NewCaseWizardPanel1.validate.errMsg.invalidSymbols=\u30b1\u30fc\u30b9\u540d\u306b\u306f\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u307e\u305b\u3093\uff1a\\ / \: * ? " < > | -NewCaseWizardPanel1.validate.errMsg.dirExists=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea''{0}''\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 -NewCaseWizardPanel1.validate.confMsg.createDir.msg=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea''{0}''\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\n\n\ -\u3053\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u304b\uff1f -NewCaseWizardPanel1.validate.confMsg.createDir.title=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210 -NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=\u30a8\u30e9\u30fc\uff1a\u30b1\u30fc\u30b9\u30da\u30a2\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea{0}\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea{0}\u306e\u4f5c\u6210\u3092\u9632\u6b62\u3055\u308c\u307e\u3057\u305f -NewCaseWizardPanel1.validate.errMsg.cantCreateDir=\u30a8\u30e9\u30fc\uff1a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=\u30a8\u30e9\u30fc\uff1a\u5165\u529b\u3057\u305f\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\u6709\u52b9\u306a\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002 -NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=\u30a8\u30e9\u30fc\uff1a\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\u6709\u52b9\u306a\u30b1\u30fc\u30b9\u540d\u304a\u3088\u3073\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044\u3002 -NewCaseWizardPanel2.validate.errCreateCase.msg=\u30b1\u30fc\u30b9\u306e\u4f5c\u6210\u30a8\u30e9\u30fc +NewCaseWizardAction.databaseProblem1.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002\u30b1\u30fc\u30b9\u306e\u4f5c\u6210\u3092\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059\u3002 +NewCaseWizardAction.databaseProblem2.text=\u30a8\u30e9\u30fc +NewCaseWizardPanel1.validate.errMsg.invalidSymbols=\u30b1\u30fc\u30b9\u540d\u306b\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093: \\ / : * ? " < > | +NewCaseWizardPanel1.validate.errMsg.dirExists=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc ''{0}'' \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002 +NewCaseWizardPanel1.validate.confMsg.createDir.msg=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc "{0}" \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\n\n\ + \u305d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u304b? +NewCaseWizardPanel1.validate.confMsg.createDir.title=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210 +NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=\u30a8\u30e9\u30fc: \u30b1\u30fc\u30b9\u89aa\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u306e\u4f5c\u6210\u304c\u963b\u6b62\u3055\u308c\u307e\u3057\u305f +NewCaseWizardPanel1.validate.errMsg.cantCreateDir=\u30a8\u30e9\u30fc: \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=\u30a8\u30e9\u30fc: \u5165\u529b\u3057\u305f\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306f\u7121\u52b9\u3067\u3059\u3002\n\u6709\u52b9\u306a\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=\u30a8\u30e9\u30fc: \u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\u6709\u52b9\u306a\u30b1\u30fc\u30b9\u540d\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +NewCaseWizardPanel2.validate.errCreateCase.msg=\u30b1\u30fc\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f OpenRecentCasePanel.colName.caseName=\u30b1\u30fc\u30b9\u540d OpenRecentCasePanel.colName.path=\u30d1\u30b9 -RecentCases.exception.caseIdxOutOfRange.msg=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9{0}\u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002 -RecentCases.getName.text=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u30af\u30ea\u30a2 -RecentItems.openRecentCase.msgDlg.text=\u30a8\u30e9\u30fc\uff1a\u30b1\u30fc\u30b9{0}\u306f\u3082\u3046\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +OptionalCasePropertiesPanel.bnNewOrganization.text=\u7d44\u7e54\u3092\u7ba1\u7406 +OptionalCasePropertiesPanel.caseDisplayNameLabel.text=\u540d\u524d: +OptionalCasePropertiesPanel.caseNumberLabel.text=\u756a\u53f7: +OptionalCasePropertiesPanel.casePanel.border.title=\u30b1\u30fc\u30b9 +OptionalCasePropertiesPanel.errorDialog.emptyCaseNameMessage=\u30b1\u30fc\u30b9\u540d\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +OptionalCasePropertiesPanel.errorDialog.invalidCaseNameMessage=\u30b1\u30fc\u30b9\u540d\u306b\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093: \\, /, :, *, ?, ", <, >, | +OptionalCasePropertiesPanel.errorDialog.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +OptionalCasePropertiesPanel.examinerLabel.text=\u540d\u524d: +OptionalCasePropertiesPanel.examinerPanel.border.title=\u8abf\u67fb\u54e1 +OptionalCasePropertiesPanel.lbExaminerEmailLabel.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +OptionalCasePropertiesPanel.lbExaminerPhoneLabel.text=\u96fb\u8a71\u756a\u53f7: +OptionalCasePropertiesPanel.lbNotesLabel.text=\u5099\u8003: +OptionalCasePropertiesPanel.lbOrganizationNameLabel.text=\u6b21\u306b\u95a2\u3059\u308b\u7d44\u7e54\u5206\u6790\u3092\u5b9f\u884c\u4e2d\u3067\u3059: +OptionalCasePropertiesPanel.lbPointOfContactEmailLabel.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +OptionalCasePropertiesPanel.lbPointOfContactNameLabel.text=\u9023\u7d61\u5148: +OptionalCasePropertiesPanel.lbPointOfContactPhoneLabel.text=\u96fb\u8a71\u756a\u53f7: +OptionalCasePropertiesPanel.orgainizationPanel.border.title=\u7d44\u7e54 +RecentCases.exception.caseIdxOutOfRange.msg=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u7d22\u5f15 {0} \u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002 +RecentCases.getName.text=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u3092\u6d88\u53bb +# {0} - \u30b1\u30fc\u30b9\u540d +RecentItems.openRecentCase.msgDlg.text=\u30b1\u30fc\u30b9 {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +SelectDataSourceProcessorPanel.name.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u8ffd\u52a0 StartupWindow.title.text=\u3088\u3046\u3053\u305d -UpdateRecentCases.menuItem.clearRecentCases.text=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u30af\u30ea\u30a2 -UpdateRecentCases.menuItem.empty=-\u7a7a\u767d- -ImageFilePanel.noFatOrphansCheckbox.text=FAT\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30aa\u30fc\u30d5\u30a1\u30f3\u30d5\u30a1\u30a4\u30eb\u306f\u7121\u8996 -LocalDiskPanel.noFatOrphansCheckbox.text=FAT\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30aa\u30fc\u30d5\u30a1\u30f3\u30d5\u30a1\u30a4\u30eb\u306f\u7121\u8996 -AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=\u30ad\u30e3\u30f3\u30bb\u30eb -LocalFilesPanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb -ImageFilePanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb -NewCaseVisualPanel1.caseTypeLabel.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a -Case.open.exception.multiUserCaseNotEnabled=\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u306e\u30b1\u30fc\u30b9\u304c\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u3001\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u306e\u30b1\u30fc\u30b9\u306f\u958b\u3051\u307e\u305b\u3093\u3002\u30c4\u30fc\u30eb\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3001\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -Case.createCaseDir.exception.cantCreateReportsDir=\u30ec\u30dd\u30fc\u30c8\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -Case.CollaborationSetup.FailNotify.ErrMsg=\u3053\u306e\u30b1\u30fc\u30b9\u3067\u4f7f\u308f\u308c\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -Case.CollaborationSetup.FailNotify.Title=\u63a5\u7d9a\u306b\u5931\u6557 -Case.GetCaseTypeGivenPath.Failure=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Case.metaDataFileCorrupt.exception.msg=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb(.aut)\u304c\u7834\u640d\u3057\u3066\u3044\u307e\u3059\u3002 -Case.deleteReports.deleteFromDiskException.log.msg=\u30c7\u30a3\u30b9\u30af\u304b\u3089\u30ec\u30dd\u30fc\u30c8\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -Case.deleteReports.deleteFromDiskException.msg=\u30c7\u30a3\u30b9\u30af\u304b\u3089{0}\u30ec\u30dd\u30fc\u30c8\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n{1}\u304b\u3089\u624b\u52d5\u3067\u524a\u9664\u3067\u304d\u307e\u3059\u3002 -CaseCreateAction.msgDlg.cantCreateCase.msg=\u30b1\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 -IntervalErrorReport.NewIssues=\u65b0\u898f\u306e\u30a4\u30b7\u30e5\u30fc -IntervalErrorReport.TotalIssues=\u5168\u30a4\u30b7\u30e5\u30fc -IntervalErrorReport.ErrorText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9a\u30a8\u30e9\u30fc -GeneralFilter.virtualMachineImageDesc.text=\u4eee\u60f3\u30de\u30b7\u30f3(*.vmdk, *.vhd) -LocalDiskPanel.localDiskModel.nodrives.msg=\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u30c9\u30e9\u30a4\u30d6\u304c\u3042\u308a\u307e\u305b\u3093 -MissingImageDialog.ErrorSettingImage=\u30a4\u30e1\u30fc\u30b8\u30d1\u30b9\u3092\u8a2d\u5b9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -NewCaseVisualPanel1.badCredentials.text=\u4f7f\u3048\u306a\u3044\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u306e\u8a2d\u5b9a\uff08\u30c4\u30fc\u30eb\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u3001\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff09\u307e\u305f\u306f\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059\u3002 -NewCaseWizardAction.databaseProblem1.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002\u30b1\u30fc\u30b9\u4f5c\u6210\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u3066\u3044\u307e\u3059\u3002 -NewCaseWizardAction.databaseProblem2.text=\u30a8\u30e9\u30fc -DataSourceOnCDriveError.text=\u8b66\u544a\uff1a\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3078\u306e\u30d1\u30b9\u306f"C\:"\u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059 -NewCaseVisualPanel1.CaseFolderOnCDriveError.text=\u8b66\u544a\uff1a\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u306e\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u3078\u306e\u30d1\u30b9\u306f"C\:"\u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059 -CollaborationMonitor.addingDataSourceStatus.msg={0}\u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8ffd\u52a0\u4e2d -CollaborationMonitor.analyzingDataSourceStatus.msg={0}\u304c{1}\u3092\u89e3\u6790\u4e2d -NewCaseVisualPanel1.multiUserCaseRadioButton.text=\u8907\u6570\u30e6\u30fc\u30b6\u30fc -NewCaseVisualPanel1.singleUserCaseRadioButton.text=\u5358\u6570\u30e6\u30fc\u30b6\u30fc -SingleUserCaseConverter.BadDatabaseFileName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\uff01 -SingleUserCaseConverter.AlreadyMultiUser=\u30b1\u30fc\u30b9\u306f\u65e2\u306b\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u3067\u3059\uff01 -SingleUserCaseConverter.NonUniqueDatabaseName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u304c\u30e6\u30cb\u30fc\u30af\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -SingleUserCaseConverter.UnableToCopySourceImages=\u30bd\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -SingleUserCaseConverter.CanNotOpenDatabase=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f -CloseCaseWhileIngesting.Warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u3053\u306e\u30b1\u30fc\u30b9\u3092\u672c\u5f53\u306b\u9589\u3058\u307e\u3059\u304b\uff1f -CloseCaseWhileIngesting.Warning.title=\u8b66\u544a\uff1a\u3053\u308c\u3092\u5b9f\u884c\u3059\u308c\u3070\u4f5c\u696d\u4e2d\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u307e\u3059 -Case_caseType_multiUser=\u8907\u6570\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9 -Case_caseType_singleUser=\u5358\u6570\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9 -CasePropertiesForm.imagesTable.columnModel.title0=\u30d1\u30b9 +UnpackagePortableCaseDialog.title.text=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u3092\u958b\u5c01 +UnpackagePortableCaseDialog.UnpackagePortableCaseDialog.extensions=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u30d1\u30c3\u30b1\u30fc\u30b8(.zip, .zip.001) +UnpackagePortableCaseDialog.validatePaths.badExtension=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u306f .zip \u307e\u305f\u306f .zip.001 \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +# {0} - \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc +UnpackagePortableCaseDialog.validatePaths.caseFolderExists=\u30d5\u30a9\u30eb\u30c0\u30fc {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +UnpackagePortableCaseDialog.validatePaths.caseIsNotFile=\u9078\u629e\u3057\u305f\u30d1\u30b9\u306f\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +UnpackagePortableCaseDialog.validatePaths.caseNotFound=\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u305b\u3093 +UnpackagePortableCaseDialog.validatePaths.folderNotFound=\u30d5\u30a9\u30eb\u30c0\u30fc\u306f\u5b58\u5728\u3057\u307e\u305b\u3093 +UnpackagePortableCaseDialog.validatePaths.notAFolder=\u51fa\u529b\u5834\u6240\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +UnpackagePortableCaseProgressDialog.propertyChange.success=\u30b1\u30fc\u30b9\u3092\u6b63\u5e38\u306b\u958b\u5c01\u3057\u307e\u3057\u305f +UnpackagePortableCaseProgressDialog.title.text=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u306e\u958b\u5c01\u72b6\u6cc1 +UnpackageWorker.doInBackground.canceled=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u958b\u5c01\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f +UnpackageWorker.doInBackground.errorCompressingCase=\u30b1\u30fc\u30b9\u306e\u958b\u5c01\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +UnpackageWorker.doInBackground.errorFinding7zip=7-Zip\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +UpdateRecentCases.menuItem.clearRecentCases.text=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u3092\u6d88\u53bb +UpdateRecentCases.menuItem.empty=-\u7a7a(\u672a\u5165\u529b)- +AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=\u53d6\u308a\u6d88\u3057 +NewCaseVisualPanel1.CaseFolderOnCDriveError.text=\u8b66\u544a: \u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u30d1\u30b9\u306f \"C:\" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059 +NewCaseVisualPanel1.CaseFolderOnInternalDriveWindowsError.text=\u8b66\u544a: \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u30d1\u30b9\u306f \"C:\" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059\u3002\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u4e0a\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059 +NewCaseVisualPanel1.CaseFolderOnInternalDriveLinuxError.text=\u8b66\u544a: \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u30d1\u30b9\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u4e0a\u306b\u3042\u308a\u307e\u3059\u3002\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u30c9\u30e9\u30a4\u30d6\u5185\u306b\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 +CollaborationMonitor.addingDataSourceStatus.msg={0} \u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0\u4e2d\u3067\u3059 +CollaborationMonitor.analyzingDataSourceStatus.msg={0} \u5206\u6790\u4e2d {1} +MissingImageDialog.lbWarning.text= +MissingImageDialog.lbWarning.toolTipText= +NewCaseVisualPanel1.caseParentDirWarningLabel.text= +NewCaseVisualPanel1.multiUserCaseRadioButton.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc +NewCaseVisualPanel1.singleUserCaseRadioButton.text=\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc +NewCaseVisualPanel1.caseTypeLabel.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7: +SingleUserCaseConverter.BadDatabaseFileName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3057\u307e\u305b\u3093! +SingleUserCaseConverter.AlreadyMultiUser=\u30b1\u30fc\u30b9\u306f\u3059\u3067\u306b\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u3067\u3059! +SingleUserCaseConverter.NonUniqueDatabaseName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u304c\u4e00\u610f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +SingleUserCaseConverter.UnableToCopySourceImages=\u30bd\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093 +SingleUserCaseConverter.CanNotOpenDatabase=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093 +CloseCaseWhileIngesting.Warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +CloseCaseWhileIngesting.Warning.title=\u8b66\u544a: \u3053\u308c\u306b\u3088\u308a\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u304c\u9589\u3058\u307e\u3059\u3002 CasePropertiesForm.imagesTable.columnModel.title1=\u524a\u9664 -OptionalCasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a -OptionalCasePropertiesPanel.caseDisplayNameLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a -CueBannerPanel.openRecentCaseLabel.text=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f -CueBannerPanel.openAutoIngestCaseLabel.text=\u65e2\u5b58\u30b1\u30fc\u30b9\u3092\u958b\u304f -CueBannerPanel.newCaseLabel.text=\u65b0\u898f\u30b1\u30fc\u30b9\u3092\u4f5c\u6210 -CueBannerPanel.openCaseLabel.text=\u65e2\u5b58\u30b1\u30fc\u30b9\u3092\u958b\u304f -ImageFilePanel.sectorSizeLabel.text=\u30a4\u30f3\u30d7\u30c3\u30c8\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\uff1a +CasePropertiesForm.imagesTable.columnModel.title0=\u30d1\u30b9 +IngestJobInfoPanel.jLabel1.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +IngestJobInfoPanel.jLabel2.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6 +CaseInformationPanel.closeButton.text=\u9589\u3058\u308b +LocalDiskPanel.copyImageCheckbox.text=\u30c9\u30e9\u30a4\u30d6\u306e\u5206\u6790\u4e2d\u306bVHD\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210 +LocalDiskPanel.jLabel1.text=\u5b8c\u5168\u306a\u30b3\u30d4\u30fc\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +LocalDiskPanel.pathTextField.text= +LocalDiskPanel.browseButton.text=\u53c2\u7167 +LocalDiskPanel.changeDatabasePathCheckbox.text=\u5b8c\u4e86\u6642\u306bVHD\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u30b1\u30fc\u30b9\u3092\u66f4\u65b0 +CueBannerPanel.openRecentCaseButton.text= +CueBannerPanel.openRecentCaseLabel.text=\u6700\u8fd1\u306e\u30b1\u30fc\u30b9\u3092\u958b\u304f +ReviewModeCasePanel.cannotOpenCase=\u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093 +ReviewModeCasePanel.casePathNotFound=\u30b1\u30fc\u30b9\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +ReviewModeCasePanel.caseIsLocked=\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u304c\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +ReviewModeCasePanel.CaseHeaderText=\u30b1\u30fc\u30b9 +ReviewModeCasePanel.CreatedTimeHeaderText=\u4f5c\u6210\u6e08\u307f\u6642\u523b +ReviewModeCasePanel.StatusIconHeaderText=\u30b9\u30c6\u30fc\u30bf\u30b9 +ReviewModeCasePanel.OutputFolderHeaderText=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc +ReviewModeCasePanel.LastAccessedTimeHeaderText=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u6642\u523b +ReviewModeCasePanel.MetadataFileHeaderText=\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb +CueBannerPanel.newCaseLabel.text=\u65b0\u898f\u30b1\u30fc\u30b9 +CueBannerPanel.openCaseButton.text= +CueBannerPanel.openCaseLabel.text=\u30b1\u30fc\u30b9\u3092\u958b\u304f +CueBannerPanel.newCaseButton.text= +ImageFilePanel.sectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba: +LocalDiskPanel.sectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba: +LocalFilesPanel.displayNameLabel.text=\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u8868\u793a\u540d: \u30c7\u30d5\u30a9\u30eb\u30c8 LocalFilesPanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb -LocalFilesPanel.clearButton.toolTipText=\u73fe\u5728\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u304c\u30af\u30ea\u30a2\u3055\u308c\u307e\u3059 -LocalFilesPanel.clearButton.text=\u30af\u30ea\u30a2 +LocalFilesPanel.selectedPaths.toolTipText= +LocalFilesPanel.clearButton.toolTipText=\u73fe\u5728\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u6d88\u53bb +LocalFilesPanel.clearButton.text=\u6d88\u53bb LocalFilesPanel.selectButton.actionCommand=\u8ffd\u52a0 -LocalFilesPanel.selectButton.toolTipText=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30d5\u30a9\u30eb\u30c0\u3092\u30ed\u30b8\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u8ffd\u52a0\u3057\u307e\u3059 +LocalFilesPanel.selectButton.toolTipText=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u8ffd\u52a0 LocalFilesPanel.selectButton.text=\u8ffd\u52a0 -LocalFilesPanel.localFileChooser.dialogTitle=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e +LocalFilesPanel.localFileChooser.dialogTitle=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e +LocalFilesPanel.localFileChooser.approveButtonToolTipText= LocalFilesPanel.localFileChooser.approveButtonText=\u9078\u629e LogicalEvidenceFilePanel.selectButton.actionCommand=\u8ffd\u52a0 -LogicalEvidenceFilePanel.selectButton.toolTipText=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30d5\u30a9\u30eb\u30c0\u3092\u30ed\u30b8\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u8ffd\u52a0\u3057\u307e\u3059 -LogicalEvidenceFilePanel.selectButton.text=\u8ffd\u52a0 +LogicalEvidenceFilePanel.selectButton.toolTipText=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u8ffd\u52a0 +LogicalEvidenceFilePanel.selectButton.text=\u9078\u629e LogicalEvidenceFilePanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb -LogicalEvidenceFilePanel.logicalEvidenceFileChooser.dialogTitle=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e +LogicalEvidenceFilePanel.logicalEvidenceFileChooser.dialogTitle=\u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e +LogicalEvidenceFilePanel.logicalEvidenceFileChooser.approveButtonToolTipText= LogicalEvidenceFilePanel.logicalEvidenceFileChooser.approveButtonText=\u9078\u629e +LogicalEvidenceFilePanel.logicalEvidencePathField.text= +LocalFilesPanel.changeNameButton.text=\u5909\u66f4 +LocalDiskPanel.selectDiskButton.text=\u30c7\u30a3\u30b9\u30af\u3092\u9078\u629e +LocalDiskSelectionDialog.refreshLocalDisksButton.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u66f4\u65b0 LocalDiskSelectionDialog.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb -LocalDiskSelectionDialog.selectLocalDiskLabel.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u9078\u629e\uff1a -CaseDetailsPanel.crDateLabel.text=\u4f5c\u6210\u65e5\uff1a -CaseDetailsPanel.caseDirLabel.text=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff1a -CaseDetailsPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a -CaseDetailsPanel.lbDbName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff1a -CaseDetailsPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a -CaseDetailsPanel.caseNameLabel.text=\u30b1\u30fc\u30b9\u540d\uff1a -OpenMultiUserCasePanel.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb +LocalDiskSelectionDialog.selectLocalDiskLabel.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u9078\u629e: +LocalDiskSelectionDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +LocalDiskSelectionDialog.okButton.text=OK +LocalDiskPanel.localDiskLabel.text=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af: +LocalDiskPanel.imageWriterErrorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb +LocalDiskSelectionDialog.title=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u3092\u9078\u629e +ImageFilePanel.md5HashLabel.text=MD5: +ImageFilePanel.sha1HashLabel.text=SHA-1: +ImageFilePanel.sha256HashLabel.text=SHA-256: +ImageFilePanel.sha256HashTextField.text= +ImageFilePanel.sha1HashTextField.text= +ImageFilePanel.md5HashTextField.text= +ImageFilePanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb +ImageFilePanel.hashValuesNoteLabel.text=\u6ce8: \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u8ffd\u52a0\u6642\u306b\u3053\u308c\u3089\u306e\u5024\u306f\u691c\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002 +ImageFilePanel.hashValuesLabel.text=\u30cf\u30c3\u30b7\u30e5\u5024(\u4efb\u610f): +CaseDetailsPanel.crDateLabel.text=\u4f5c\u6210\u65e5: +CaseDetailsPanel.caseDirLabel.text=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc: +CaseDetailsPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7: +CaseDetailsPanel.lbDbName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d: +CaseDetailsPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7: +CaseDetailsPanel.caseNameLabel.text=\u30b1\u30fc\u30b9\u540d: +OpenMultiUserCasePanel.searchLabel.text=\u4efb\u610f\u306e\u30b1\u30fc\u30b9\u3092\u9078\u629e\u3057\u3001\u5165\u529b\u3092\u958b\u59cb\u3057\u3066\u30b1\u30fc\u30b9\u540d\u3067\u691c\u7d22 +OpenMultiUserCasePanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +OpenMultiUserCasePanel.openSingleUserCaseButton.tex=\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u958b\u304f... +OpenMultiUserCasePanel.openSelectedCaseButton.text=\u9078\u629e\u3057\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f +OpenMultiUserCasePanel.searchLabel.text=\u4efb\u610f\u306e\u30b1\u30fc\u30b9\u3092\u9078\u629e\u3057\u3001\u5165\u529b\u3092\u958b\u59cb\u3057\u3066\u30b1\u30fc\u30b9\u540d\u3067\u691c\u7d22 +UnpackagePortableCaseDialog.desc2Label.text=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002 +UnpackagePortableCaseDialog.desc1Label.text=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u3092\u958b\u5c01\u3057\u3066Autopsy\u3067\u958b\u3051\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u7d4c\u7531\u3067\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059 +UnpackagePortableCaseDialog.exitButton.text=\u7d42\u4e86 +UnpackagePortableCaseDialog.unpackageButton.text=\u958b\u5c01 +UnpackagePortableCaseDialog.caseSelectButton.text=\u53c2\u7167 +UnpackagePortableCaseDialog.outputSelectButton.text=\u53c2\u7167 +UnpackagePortableCaseDialog.caseTextField.text= +UnpackagePortableCaseDialog.outputTextField.text= +UnpackagePortableCaseDialog.caseErrorLabel.text=jLabel1 +UnpackagePortableCaseDialog.outputErrorLabel.text=jLabel1 +UnpackagePortableCaseProgressDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +UnpackagePortableCaseProgressDialog.okButton.text=OK +UnpackagePortableCaseProgressDialog.resultLabel.text=resultLabel +UnpackagePortableCaseDialog.extractLabel.text=\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u62bd\u51fa\u5148: +UnpackagePortableCaseDialog.caseLabel.text=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9: diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 3fe6c00f9c..f63cfa1a81 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -106,7 +106,7 @@ import org.sleuthkit.autopsy.coreutils.Version; import org.sleuthkit.autopsy.events.AutopsyEvent; import org.sleuthkit.autopsy.events.AutopsyEventException; import org.sleuthkit.autopsy.events.AutopsyEventPublisher; -import org.sleuthkit.autopsy.filequery.DiscoveryTopComponent; +import org.sleuthkit.autopsy.filequery.OpenFileDiscoveryAction; import org.sleuthkit.autopsy.ingest.IngestJob; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.ingest.IngestServices; @@ -1119,6 +1119,7 @@ public class Case { CallableSystemAction.get(OpenCommVisualizationToolAction.class).setEnabled(true); CallableSystemAction.get(CommonAttributeSearchAction.class).setEnabled(true); CallableSystemAction.get(OpenOutputFolderAction.class).setEnabled(false); + CallableSystemAction.get(OpenFileDiscoveryAction.class).setEnabled(true); /* * Add the case to the recent cases tracker that supplies a list @@ -1173,10 +1174,8 @@ public class Case { CallableSystemAction.get(OpenCommVisualizationToolAction.class).setEnabled(false); CallableSystemAction.get(OpenOutputFolderAction.class).setEnabled(false); CallableSystemAction.get(CommonAttributeSearchAction.class).setEnabled(false); - DiscoveryTopComponent discoveryTopComp = DiscoveryTopComponent.getTopComponent(); - if (discoveryTopComp != null){ - discoveryTopComp.resetTopComponent(); - } + CallableSystemAction.get(OpenFileDiscoveryAction.class).setEnabled(false); + /* * Clear the notifications in the notfier component in the lower * right hand corner of the main application window. diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseCloseAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseCloseAction.java index 19dc651f9a..960634d8f9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseCloseAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseCloseAction.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2017 Basis Technology Corp. + * Copyright 2011-2019 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -50,7 +50,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.casemodule.CaseCloseAction") @ActionRegistration(displayName = "#CTL_CaseCloseAct", lazy = false) @ActionReferences(value = { - @ActionReference(path = "Toolbars/Case", position = 104)}) + @ActionReference(path = "Toolbars/Case", position = 105)}) public final class CaseCloseAction extends CallableSystemAction implements Presenter.Toolbar { private static final long serialVersionUID = 1L; @@ -95,7 +95,7 @@ public final class CaseCloseAction extends CallableSystemAction implements Prese logger.log(Level.SEVERE, "Unexpected interrupt closing the current case", ex); } catch (ExecutionException ex) { logger.log(Level.SEVERE, "Error closing the current case", ex); - MessageNotifyUtil.Message.error(Bundle.Case_closeException_couldNotCloseCase(ex.getMessage())); + MessageNotifyUtil.Message.error(Bundle.Case_closeException_couldNotCloseCase(ex.getMessage())); } WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); StartupWindowProvider.getInstance().open(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/UnpackagePortableCaseProgressDialog.java b/Core/src/org/sleuthkit/autopsy/casemodule/UnpackagePortableCaseProgressDialog.java index 656b376432..fe26843e28 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/UnpackagePortableCaseProgressDialog.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/UnpackagePortableCaseProgressDialog.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.nio.file.Paths; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import javax.swing.JFrame; @@ -36,7 +37,10 @@ import org.openide.modules.InstalledFileLocator; import org.openide.util.NbBundle; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; +import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.PlatformUtil; +import org.sleuthkit.autopsy.coreutils.TimeStampUtils; import org.sleuthkit.datamodel.TskCoreException; /** @@ -46,6 +50,9 @@ import org.sleuthkit.datamodel.TskCoreException; class UnpackagePortableCaseProgressDialog extends javax.swing.JDialog implements PropertyChangeListener { private UnpackageWorker worker; + private final static String CASES_OPENED_LOG_FILE = "portable_cases_opened"; //NON-NLS + private final static String PORTABLE_CASE_NAME = "portable_case_name"; //NON-NLS + private final static String PORTABLE_CASE_DIR = "portable_case_dir_opened"; //NON-NLS /** * Creates new form UnpackagePortableCaseProgressDialog @@ -142,10 +149,23 @@ class UnpackagePortableCaseProgressDialog extends javax.swing.JDialog implements @NbBundle.Messages({ "UnpackageWorker.doInBackground.errorFinding7zip=Could not locate 7-Zip executable", "UnpackageWorker.doInBackground.errorCompressingCase=Error unpackaging case", - "UnpackageWorker.doInBackground.canceled=Unpackaging canceled by user",}) + "UnpackageWorker.doInBackground.canceled=Unpackaging canceled by user", + "UnpackageWorker.doInBackground.previousSeenCase=Case with name {0} has been previously opened do you want to open it again?"}) @Override protected Void doInBackground() throws Exception { + // Check to see if this case has been already opened before + String caseUnpackedBefore = getCaseIfUnpackedBefore(packagedCase); + if ((!caseUnpackedBefore.isEmpty()) + && (MessageNotifyUtil.Message.confirm(Bundle.UnpackageWorker_doInBackground_previousSeenCase(packagedCase)))) { + try { + Case.openAsCurrentCase(caseUnpackedBefore); + success.set(true); + return null; + } catch (CaseActionException ex) { + throw new TskCoreException("Error opening case after unpacking it.", ex); // NON-NLS + } + } // Find 7-Zip File sevenZipExe = locate7ZipExecutable(); if (sevenZipExe == null) { @@ -191,16 +211,27 @@ class UnpackagePortableCaseProgressDialog extends javax.swing.JDialog implements setDisplayError(Bundle.UnpackageWorker_doInBackground_errorCompressingCase()); throw new TskCoreException("Error unpackaging case", ex); // NON-NLS } - + try { String caseFileDirectory = FilenameUtils.getBaseName(packagedCase); String caseDirectory = StringUtils.substringBefore(caseFileDirectory, ".zip"); - Case.openAsCurrentCase(outputFolder + File.separator + caseDirectory + File.separator + caseDirectory + ".aut"); // NON-NLS + String caseFileToOpen = outputFolder + File.separator + caseDirectory + File.separator + caseDirectory + ".aut"; + Case.openAsCurrentCase(caseFileToOpen); // NON-NLS + String timestampFileOpened = TimeStampUtils.createTimeStamp(); + if (ModuleSettings.configExists(CASES_OPENED_LOG_FILE)) { + ModuleSettings.setConfigSetting(CASES_OPENED_LOG_FILE, timestampFileOpened + "-" + PORTABLE_CASE_NAME, packagedCase); + ModuleSettings.setConfigSetting(CASES_OPENED_LOG_FILE, timestampFileOpened + "-" + PORTABLE_CASE_DIR, caseFileToOpen); + } else { + ModuleSettings.makeConfigFile(CASES_OPENED_LOG_FILE); + ModuleSettings.setConfigSetting(CASES_OPENED_LOG_FILE, timestampFileOpened + "-" + PORTABLE_CASE_NAME, packagedCase); + ModuleSettings.setConfigSetting(CASES_OPENED_LOG_FILE, timestampFileOpened + "-" + PORTABLE_CASE_DIR, caseFileToOpen); + } } catch (CaseActionException ex) { throw new TskCoreException("Error opening case after unpacking it.", ex); // NON-NLS } - + success.set(true); + return null; } @@ -261,6 +292,33 @@ class UnpackagePortableCaseProgressDialog extends javax.swing.JDialog implements return exeFile; } + + /** + * Check to see if the case has been unpacked before + */ + private String getCaseIfUnpackedBefore(String packedCaseName) { + if (!ModuleSettings.configExists(CASES_OPENED_LOG_FILE)) { + return ""; + } + + Map configEntries = ModuleSettings.getConfigSettings(CASES_OPENED_LOG_FILE); + + for (Map.Entry entries : configEntries.entrySet()) { + if (entries.getValue().contains(packedCaseName)) { + String entryFound = entries.getKey().substring(0, entries.getKey().indexOf('-')); + String caseFileName = ModuleSettings.getConfigSetting(CASES_OPENED_LOG_FILE, entryFound + "-" + PORTABLE_CASE_DIR); + File caseFile = new File(caseFileName); + if (caseFile.exists()) { + return caseFileName; + } else { + return ""; + } + } + } + + return ""; + } + } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/Bundle_ja.properties new file mode 100644 index 0000000000..99fd24c7ef --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/datasourceSummary/Bundle_ja.properties @@ -0,0 +1,73 @@ +CTL_DataSourceSummaryAction=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.all.row=\u3059\u3079\u3066 +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.allocated.row=\u5272\u308a\u5f53\u3066\u6e08\u307f +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.count.header=\u30ab\u30a6\u30f3\u30c8 +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.directory.row=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.slack.row=Slack +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.type.header=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +DataSourceSummaryCountsPanel.FilesByCategoryTableModel.unallocated.row=\u672a\u4f7f\u7528 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.audio.row=\u97f3\u58f0 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.count.header=\u30ab\u30a6\u30f3\u30c8 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.documents.row=\u6587\u66f8 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.executables.row=\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.images.row=\u30a4\u30e1\u30fc\u30b8 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.type.header=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.videos.row=\u52d5\u753b +DataSourceSummaryDetailsPanel.getDataSources.error.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +DataSourceSummaryDetailsPanel.getDataSources.error.title=\u8aad\u307f\u8fbc\u307f\u5931\u6557 +DataSourceSummaryDetailsPanel.units.bytes=\ \u30d0\u30a4\u30c8 +DataSourceSummaryDetailsPanel.units.gigabytes=\ GB +DataSourceSummaryDetailsPanel.units.kilobytes=\ kB +DataSourceSummaryDetailsPanel.units.megabytes=\ MB +DataSourceSummaryDetailsPanel.units.petabytes=\ PB +DataSourceSummaryDetailsPanel.units.terabytes=\ TB +DataSourceSummaryDialog.closeButton.text=\u9589\u3058\u308b +DataSourceSummaryDetailsPanel.displayNameLabel.text=\u8868\u793a\u540d: +DataSourceSummaryDetailsPanel.originalNameLabel.text=\u540d\u524d: +DataSourceSummaryDetailsPanel.deviceIdLabel.text=\u30c7\u30d0\u30a4\u30b9ID: +DataSourceSummaryDetailsPanel.operatingSystemLabel.text=OS: +DataSourceSummaryDetailsPanel.dataSourceUsageLabel.text=\u4f7f\u7528\u91cf: +DataSourceSummaryDetailsPanel.timeZoneLabel.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: +DataSourceSummaryDetailsPanel.imageTypeLabel.text=\u30a4\u30e1\u30fc\u30b8\u30bf\u30a4\u30d7: +DataSourceSummaryDetailsPanel.sizeLabel.text=\u30b5\u30a4\u30ba: +DataSourceSummaryDetailsPanel.sectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba: +DataSourceSummaryDetailsPanel.md5HashLabel.text=MD5: +DataSourceSummaryDetailsPanel.sha1HashLabel.text=SHA1: +DataSourceSummaryDetailsPanel.sha256HashLabel.text=SHA256: +DataSourceSummaryDetailsPanel.filePathsLabel.text=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9: +DataSourceSummaryDetailsPanel.displayNameValue.text= +DataSourceSummaryDetailsPanel.originalNameValue.text= +DataSourceSummaryDetailsPanel.deviceIdValue.toolTipText= +DataSourceSummaryDetailsPanel.deviceIdValue.text= +DataSourceSummaryDetailsPanel.dataSourceUsageValue.text= +DataSourceSummaryDetailsPanel.operatingSystemValue.toolTipText= +DataSourceSummaryDetailsPanel.operatingSystemValue.text= +DataSourceSummaryDetailsPanel.timeZoneValue.text= +DataSourceSummaryDetailsPanel.imageTypeValue.toolTipText= +DataSourceSummaryDetailsPanel.imageTypeValue.text= +DataSourceSummaryDetailsPanel.sizeValue.text= +DataSourceSummaryDetailsPanel.sectorSizeValue.text= +DataSourceSummaryDetailsPanel.md5HashValue.toolTipText= +DataSourceSummaryDetailsPanel.md5HashValue.text= +DataSourceSummaryDetailsPanel.sha1HashValue.text= +DataSourceSummaryDetailsPanel.sha256HashValue.text= +DataSourceSummaryDetailsPanel.filePathsTable.columnModel.title0= +DataSourceSummaryDetailsPanel.acquisitionDetailsTextArea.text= +DataSourceSummaryDetailsPanel.acquisitionDetailsLabel.text=\u53d6\u5f97\u306e\u8a73\u7d30: +DataSourceSummaryDetailsPanel.unallocatedSizeLabel.text=\u672a\u4f7f\u7528\u9818\u57df: +DataSourceSummaryDetailsPanel.unallocatedSizeValue.text= +DataSourceSummaryCountsPanel.byMimeTypeLabel.text=MIME\u30bf\u30a4\u30d7\u5225\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryCountsPanel.byCategoryLabel.text=\u30ab\u30c6\u30b4\u30ea\u30fc\u5225\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryCountsPanel.jLabel1.text=\u30bf\u30a4\u30d7\u5225\u7d50\u679c +DataSourceSummaryDialog.countsTab.title=\u30ab\u30a6\u30f3\u30c8 +DataSourceSummaryDialog.detailsTab.title=\u8a73\u7d30 +DataSourceSummaryDialog.ingestHistoryTab.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5c65\u6b74 +DataSourceSummaryDialog.window.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +DataSourceSummaryNode.column.dataSourceName.header=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +DataSourceSummaryNode.column.files.header=\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryNode.column.results.header=\u7d50\u679c +DataSourceSummaryNode.column.status.header=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30c6\u30fc\u30bf\u30b9 +DataSourceSummaryNode.column.tags.header=\u30bf\u30b0 +DataSourceSummaryNode.column.type.header=\u30bf\u30a4\u30d7 +DataSourceSummaryNode.viewDataSourceAction.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u79fb\u52d5 +ViewSummaryInformationAction.name.text=\u30b5\u30de\u30ea\u30fc\u60c5\u5831\u3092\u8868\u793a diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ja.properties new file mode 100644 index 0000000000..c1f8d6b162 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/multiusercasesbrowser/Bundle_ja.properties @@ -0,0 +1,12 @@ +MultiUserCaseBrowserCustomizer.column.caseDbDeleteStatus=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3057\u305f +MultiUserCaseBrowserCustomizer.column.caseDirDeleteStatus=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u524a\u9664\u3057\u307e\u3057\u305f +MultiUserCaseBrowserCustomizer.column.createTime=\u6642\u523b\u3092\u4f5c\u6210 +MultiUserCaseBrowserCustomizer.column.dataSourcesDeleteStatus=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3057\u305f +MultiUserCaseBrowserCustomizer.column.directory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +MultiUserCaseBrowserCustomizer.column.displayName=\u540d\u524d +MultiUserCaseBrowserCustomizer.column.lastAccessTime=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u6642\u523b +MultiUserCaseBrowserCustomizer.column.manifestFileZNodesDeleteStatus=\u30de\u30cb\u30d5\u30a7\u30b9\u30c8Znode\u3092\u524a\u9664\u3057\u307e\u3057\u305f +MultiUserCaseBrowserCustomizer.column.textIndexDeleteStatus=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u524a\u9664\u3057\u307e\u3057\u305f +MultiUserCaseNode.column.createTime=False +MultiUserCaseNode.columnValue.true=True +MultiUserCasesBrowserPanel.waitNode.message=\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties index 41e871691b..c173a9e7de 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties @@ -1,3 +1,31 @@ -TagsManager.predefTagNames.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af -Blackboard.unableToIndexArtifact.error.msg=blackboard\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8{0}\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -TagOptionsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\uff01 +OptionsCategory_Name_TagNamesOptions=\u30bf\u30b0 +OptionsCategory_TagNames=TagNames +TagNameDefinition.predefTagNames.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af +TagNameDefinition.predefTagNames.followUp.text=\u30d5\u30a9\u30ed\u30fc\u30a2\u30c3\u30d7 +TagNameDefinition.predefTagNames.notableItem.text=\u9855\u8457\u306a\u9805\u76ee +TagNameDialog.descriptionLabel.text=\u8a18\u8ff0: +TagNameDialog.editTitle.text=\u30bf\u30b0\u3092\u7de8\u96c6 +TagNameDialog.JOptionPane.tagDescriptionIllegalCharacters.message=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u30ab\u30f3\u30de(,)\u3084\u30bb\u30df\u30b3\u30ed\u30f3(;)\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093 +TagNameDialog.JOptionPane.tagDescriptionIllegalCharacters.title=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059 +TagNameDialog.notableCheckbox.text=\u30bf\u30b0\u306f\u9805\u76ee\u304c\u9855\u8457\u3067\u3042\u308b\u3068\u793a\u5506\u3057\u3066\u3044\u307e\u3059\u3002 +TagNameDialog.title.text=\u65b0\u898f\u30bf\u30b0 +TagNameDialog.JOptionPane.tagNameIllegalCharacters.message=\u30bf\u30b0\u540d\u306b\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093: \\ : * ? " < > | , ; +TagNameDialog.JOptionPane.tagNameIllegalCharacters.title=\u30bf\u30b0\u540d\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059 +TagNameDialog.JOptionPane.tagNameEmpty.message=\u30bf\u30b0\u540d\u306f\u7a7a(\u672a\u5165\u529b)\u306e\u72b6\u614b\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +TagNameDialog.JOptionPane.tagNameEmpty.title=\u7a7a(\u672a\u5165\u529b)\u306e\u72b6\u614b\u306e\u30bf\u30b0\u540d +TagOptionsPanel.descriptionLabel.text=\u30bf\u30b0\u306e\u8a18\u8ff0: +TagOptionsPanel.editTagNameButton.text=\u30bf\u30b0\u3092\u7de8\u96c6 +TagOptionsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306f\u65e2\u5b58\u306e\u30bf\u30b0\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093! +TagOptionsPanel.isNotableLabel.text=\u30bf\u30b0\u306f\u9805\u76ee\u304c\u9855\u8457\u3067\u3042\u308b\u3068\u793a\u5506\u3057\u3066\u3044\u307e\u3059: +TagOptionsPanel.notableYesOrNoLabel.text= +TagOptionsPanel.panelDescriptionTextArea.text=\u30bf\u30b0\u3092\u4f5c\u6210\u3057\u3066\u7ba1\u7406\u3057\u307e\u3059\u3002\u30bf\u30b0\u3092\u30b1\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u7d50\u679c\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u3002\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u4f7f\u7528\u4e2d\u3001\u9855\u8457\u306a\u30bf\u30b0\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u9805\u76ee\u306b\u9855\u8457\u3068\u30d5\u30e9\u30b0\u304c\u7acb\u3066\u3089\u308c\u307e\u3059\u3002\u30bf\u30b0\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u5909\u66f4\u306f\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u9805\u76ee\u306b\u306e\u307f\u5f71\u97ff\u3057\u307e\u3059\u3002 +TagOptionsPanel.TagNameDialog.tagNameAlreadyExists.message=\u30bf\u30b0\u540d\u306f\u4e00\u610f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u540d\u524d\u306e\u30bf\u30b0\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +TagOptionsPanel.TagNameDialog.tagNameAlreadyExists.title=\u30bf\u30b0\u540d\u3092\u8907\u88fd +TagOptionsPanel.tagTypesListLabel.text=\u30bf\u30b0\u540d: +TagOptionsPanel.deleteTagNameButton.text=\u30bf\u30b0\u3092\u524a\u9664 +TagOptionsPanel.newTagNameButton.text=\u65b0\u898f\u30bf\u30b0 +TagNameDialog.okButton.text=OK +TagNameDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +TagNameDialog.tagNameTextField.text= +TagNameDialog.newTagNameLabel.text=\u540d\u524d: +TagsManager.notableTagEnding.text=\ (\u9855\u8457) diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle.properties-MERGED index 75866a79d0..007af703c5 100755 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle.properties-MERGED @@ -5,7 +5,10 @@ CentralRepoCommentDialog.title.addEditCentralRepoComment=Add/Edit Central Reposi OpenIDE-Module-Name=Central Repository OpenIDE-Module-Display-Category=Ingest Module OpenIDE-Module-Short-Description=Correlation Engine Ingest Module -OpenIDE-Module-Long-Description=Correlation Engine ingest module and central database. \n\nThe Correlation Engine ingest module stores attributes of artifacts matching selected correlation types into a central database.\nStored attributes are used in future cases to correlate and analyzes files and artifacts during ingest. +OpenIDE-Module-Long-Description=\ + Correlation Engine ingest module and central database. \n\n\ + The Correlation Engine ingest module stores attributes of artifacts matching selected correlation types into a central database.\n\ + Stored attributes are used in future cases to correlate and analyzes files and artifacts during ingest. CentralRepoCommentDialog.commentLabel.text=Comment: CentralRepoCommentDialog.okButton.text=&OK CentralRepoCommentDialog.cancelButton.text=C&ancel diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ja.properties new file mode 100644 index 0000000000..ed1195288f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/contentviewer/Bundle_ja.properties @@ -0,0 +1,53 @@ +DataContentViewerOtherCases.caseDetailsDialog.noCaseNameError=\u30a8\u30e9\u30fc +DataContentViewerOtherCases.caseDetailsDialog.noDetails=\u3053\u306e\u30b1\u30fc\u30b9\u306e\u8a73\u7d30\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.caseDetailsDialog.noDetailsReference=\u30b0\u30ed\u30fc\u30d0\u30eb\u30ec\u30d5\u30a1\u30ec\u30f3\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u30b1\u30fc\u30b9\u8a73\u7d30\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.caseDetailsDialog.notSelected=\u884c\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +# {0} - \u5171\u6709\u6027\u306e\u5272\u5408 +# {1} - \u76f8\u95a2\u5206\u6790\u30bf\u30a4\u30d7 +# {2} - \u76f8\u95a2\u5206\u6790\u5024 +DataContentViewerOtherCases.correlatedArtifacts.byType=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e {0}% \u306b {2} \u304c\u3042\u308a\u307e\u3059(\u30bf\u30a4\u30d7: {1})\n +DataContentViewerOtherCases.correlatedArtifacts.failed=\u983b\u5ea6\u306e\u8a73\u7d30\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +DataContentViewerOtherCases.correlatedArtifacts.isEmpty=\u76f8\u95a2\u5206\u6790\u3059\u308b\u305f\u3081\u306e\u30d5\u30a1\u30a4\u30eb\u3084\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.correlatedArtifacts.title=\u5c5e\u6027\u983b\u5ea6 +DataContentViewerOtherCases.dataSources.header.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +DataContentViewerOtherCases.earliestCaseNotAvailable=\ \u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.foundIn.text=%d \u306e\u30b1\u30fc\u30b9\u3068 %d \u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306b %d \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 +DataContentViewerOtherCases.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.showCaseDetailsMenuItem.text=\u30b1\u30fc\u30b9\u8a73\u7d30\u3092\u8868\u793a +DataContentViewerOtherCases.table.noArtifacts=\u9805\u76ee\u306b\u691c\u7d22\u306b\u5229\u7528\u3067\u304d\u308b\u5c5e\u6027\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.table.noResultsFound=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +DataContentViewerOtherCases.table.toolTip.text=\u5217\u540d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u30c6\u30fc\u30d6\u30eb\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u3055\u3089\u306a\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +DataContentViewerOtherCases.exportToCSVMenuItem.text=\u305d\u306e\u4ed6\u3059\u3079\u3066\u306e\u767a\u751f\u3092CSV\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +DataContentViewerOtherCases.showCommonalityMenuItem.text=\u983b\u5ea6\u3092\u8868\u793a +DataContentViewerOtherCases.earliestCaseDate.text=\u6700\u3082\u53e4\u3044\u30b1\u30fc\u30b9\u65e5\u4ed8 +DataContentViewerOtherCases.earliestCaseLabel.toolTipText= +DataContentViewerOtherCases.earliestCaseLabel.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u958b\u59cb\u65e5: +DataContentViewerOtherCases.foundInLabel.text= +DataContentViewerOtherCases.title=\u305d\u306e\u4ed6\u306e\u767a\u751f +DataContentViewerOtherCases.toolTip=\u305d\u306e\u4ed6\u306e\u767a\u751f\u304b\u3089\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb/\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +DataContentViewerOtherCasesModel.csvHeader.attribute=\u4e00\u81f4\u3057\u305f\u5c5e\u6027 +DataContentViewerOtherCasesModel.csvHeader.case=\u30b1\u30fc\u30b9 +DataContentViewerOtherCasesModel.csvHeader.comment=\u30b3\u30e1\u30f3\u30c8 +DataContentViewerOtherCasesModel.csvHeader.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +DataContentViewerOtherCasesModel.csvHeader.device=\u30c7\u30d0\u30a4\u30b9 +DataContentViewerOtherCasesModel.csvHeader.known=\u65e2\u77e5 +DataContentViewerOtherCasesModel.csvHeader.path=\u30d1\u30b9 +DataContentViewerOtherCasesModel.csvHeader.value=\u5c5e\u6027\u5024 +OccurrencePanel.caseCreatedDateLabel.text=\u4f5c\u6210\u65e5: +OccurrencePanel.caseDetails.text=\u30b1\u30fc\u30b9\u8a73\u7d30 +OccurrencePanel.caseNameLabel.text=\u540d\u524d: +OccurrencePanel.commonProperties.text=\u5171\u901a\u306e\u30d7\u30ed\u30d1\u30c6\u30a3 +OccurrencePanel.commonPropertyCommentLabel.text=\u30b3\u30e1\u30f3\u30c8: +OccurrencePanel.commonPropertyKnownStatusLabel.text=\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9: +OccurrencePanel.commonPropertyTypeLabel.text=\u30bf\u30a4\u30d7: +OccurrencePanel.commonPropertyValueLabel.text=\u5024: +OccurrencePanel.dataSourceDetails.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u8a73\u7d30 +OccurrencePanel.dataSourceNameLabel.text=\u540d\u524d: +OccurrencePanel.fileDetails.text=\u30d5\u30a1\u30a4\u30eb\u8a73\u7d30 +OccurrencePanel.filePathLabel.text=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9: +OtherOccurrencesCasesTableModel.case=\u30b1\u30fc\u30b9 +OtherOccurrencesCasesTableModel.noData=\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +OtherOccurrencesDataSourcesTableModel.dataSourceName=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +OtherOccurrencesDataSourcesTableModel.noData=\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +OtherOccurrencesFilesTableModel.fileName=\u30d5\u30a1\u30a4\u30eb\u540d +OtherOccurrencesFilesTableModel.noData=\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/CentralRepoIngestModule.java b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/CentralRepoIngestModule.java index 792a3f2ebb..bee0edfcaf 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/CentralRepoIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/CentralRepoIngestModule.java @@ -18,7 +18,6 @@ */ package org.sleuthkit.autopsy.centralrepository.ingestmodule; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -54,7 +53,6 @@ import org.sleuthkit.datamodel.BlackboardAttribute; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_COMMENT; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME; import org.sleuthkit.datamodel.HashUtility; -import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; @@ -276,7 +274,7 @@ final class CentralRepoIngestModule implements FileIngestModule { // Don't allow sqlite central repo databases to be used for multi user cases if ((autopsyCase.getCaseType() == Case.CaseType.MULTI_USER_CASE) - && (EamDbPlatformEnum.getSelectedPlatform() == EamDbPlatformEnum.SQLITE)) { + && (EamDbPlatformEnum.getSelectedPlatform() == EamDbPlatformEnum.SQLITE)) { logger.log(Level.SEVERE, "Cannot run correlation engine on a multi-user case with a SQLite central repository."); throw new IngestModuleException("Cannot run on a multi-user case with a SQLite central repository."); // NON-NLS } @@ -302,7 +300,7 @@ final class CentralRepoIngestModule implements FileIngestModule { } catch (EamDbException ex) { throw new IngestModuleException("Unable to get case from central repository database ", ex); } - + try { eamDataSource = CorrelationDataSource.fromTSKDataSource(eamCase, context.getDataSource()); } catch (EamDbException ex) { @@ -313,7 +311,7 @@ final class CentralRepoIngestModule implements FileIngestModule { // if we are the first thread / module for this job, then make sure the case // and image exist in the DB before we associate artifacts with it. if (refCounter.incrementAndGet(jobId) - == 1) { + == 1) { // ensure we have this data source in the EAM DB try { if (null == centralRepoDb.getDataSource(eamCase, eamDataSource.getDataSourceObjectID())) { @@ -355,7 +353,7 @@ final class CentralRepoIngestModule implements FileIngestModule { logger.log(Level.SEVERE, "Unable to index blackboard artifact " + tifArtifact.getArtifactID(), ex); //NON-NLS } // send inbox message - sendBadFileInboxMessage(tifArtifact, abstractFile.getName(), abstractFile.getMd5Hash()); + sendBadFileInboxMessage(tifArtifact, abstractFile.getName(), abstractFile.getMd5Hash(), caseDisplayNames); } } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Failed to create BlackboardArtifact.", ex); // NON-NLS @@ -364,50 +362,31 @@ final class CentralRepoIngestModule implements FileIngestModule { } } + @Messages({ + "CentralRepoIngestModule_notable_message_header=A file in this data source was previously seen and tagged as Notable.
", + "CentralRepoIngestModel_name_header=Name:
", + "CentralRepoIngestModel_previous_case_header=
Previous Cases:
" + + }) + /** * Post a message to the ingest inbox alerting the user that a bad file was * found. * - * @param artifact badFile Blackboard Artifact - * @param name badFile's name - * @param md5Hash badFile's md5 hash + * @param artifact badFile Blackboard Artifact + * @param name badFile's name + * @param md5Hash badFile's md5 hash + * @param caseDisplayNames List of cases that the artifact appears in. */ - @Messages({"CentralRepoIngestModule.postToBB.fileName=File Name", - "CentralRepoIngestModule.postToBB.md5Hash=MD5 Hash", - "CentralRepoIngestModule.postToBB.hashSetSource=Source of Hash", - "CentralRepoIngestModule.postToBB.eamHit=Central Repository", - "# {0} - Name of file that is Notable", - "CentralRepoIngestModule.postToBB.knownBadMsg=Notable: {0}"}) - public void sendBadFileInboxMessage(BlackboardArtifact artifact, String name, String md5Hash) { - StringBuilder detailsSb = new StringBuilder(); - //details - detailsSb.append(""); //NON-NLS - //hit - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - detailsSb.append(""); //NON-NLS - - detailsSb.append("
") //NON-NLS - .append(Bundle.CentralRepoIngestModule_postToBB_fileName()) - .append("") //NON-NLS - .append(name) - .append("
") //NON-NLS - .append(Bundle.CentralRepoIngestModule_postToBB_md5Hash()) - .append("").append(md5Hash).append("
") //NON-NLS - .append(Bundle.CentralRepoIngestModule_postToBB_hashSetSource()) - .append("").append(Bundle.CentralRepoIngestModule_postToBB_eamHit()).append("
"); //NON-NLS + private void sendBadFileInboxMessage(BlackboardArtifact artifact, String name, String md5Hash, List caseDisplayNames) { + StringBuilder detailsSb = new StringBuilder(1024); + detailsSb.append(Bundle.CentralRepoIngestModule_notable_message_header()).append(Bundle.CentralRepoIngestModel_name_header()); + detailsSb.append(name).append(Bundle.CentralRepoIngestModel_previous_case_header()); + for (String str : caseDisplayNames) { + detailsSb.append(str).append("
"); + } + detailsSb.append(""); services.postMessage(IngestMessage.createDataMessage(CentralRepoIngestModuleFactory.getModuleName(), Bundle.CentralRepoIngestModule_postToBB_knownBadMsg(name), detailsSb.toString(), diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ja.properties new file mode 100644 index 0000000000..96e0634149 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle_ja.properties @@ -0,0 +1,145 @@ +AddNewOrganizationDialog.addNewOrg.msg=\u65b0\u898f\u7d44\u7e54\u3092\u8ffd\u52a0 +AddNewOrganizationDialog.bnOk.addFailed.text=\u65b0\u898f\u7d44\u7e54\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +AddNewOrganizationDialog.validation.incompleteFields=\u7d44\u7e54\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +CasesTableModel.case=\u30b1\u30fc\u30b9\u540d +CasesTableModel.creationDate=\u4f5c\u6210\u65e5 +CasesTableModel.noData=\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093 +DataSourcesTableModel.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +DataSourcesTableModel.deviceId=\u30c7\u30d0\u30a4\u30b9ID +DataSourcesTableModel.noData=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093 +EamDbSettingsDialog.chooserPath.failedToGetDbPathMsg=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u7121\u52b9\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +EamDbSettingsDialog.fcDatabasePath.title=central_repository.db\u306e\u5834\u6240\u3092\u9078\u629e +EamDbSettingsDialog.lbDatabaseType.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30bf\u30a4\u30d7 : +EamDbSettingsDialog.lbSingleUserSqLite.text=SQLite\u306f\u4e00\u5ea6\u306b1\u4eba\u306e\u8abf\u67fb\u54e1\u306e\u307f\u304c\u4f7f\u7528\u3057\u307e\u3059\u3002 +EamDbSettingsDialog.okButton.connectionErrorMsg.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +EamDbSettingsDialog.okButton.corruptDatabaseExists.message=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u6b63\u3057\u3044\u5f62\u5f0f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u624b\u52d5\u3067\u524a\u9664\u3059\u308b\u304b\u5225\u306e\u30d1\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044(\u5fc5\u8981\u306b\u5fdc\u3058\u3066)\u3002 +EamDbSettingsDialog.okButton.corruptDatabaseExists.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +EamDbSettingsDialog.okButton.createDbDialog.message=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u4f5c\u6210\u3057\u307e\u3059\u304b? +EamDbSettingsDialog.okButton.createDbDialog.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093 +EamDbSettingsDialog.okButton.createDbError.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 +EamDbSettingsDialog.okButton.createPostgresDbError.message=Postgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002Postgres\u30b5\u30fc\u30d0\u30fc\u306e\u30a2\u30c9\u30ec\u30b9\u3001\u30dd\u30fc\u30c8\u3001\u30ed\u30b0\u30a4\u30f3\u8cc7\u683c\u60c5\u5831\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304b\u3089\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +EamDbSettingsDialog.okButton.createSQLiteDbError.message=SQLite\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u5834\u6240\u304c\u5b58\u5728\u3057\u3001\u66f8\u304d\u8fbc\u307f\u6a29\u9650\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +EamDbSettingsDialog.okButton.databaseConnectionFailed.message=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3002\u8a2d\u5b9a\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +EamDbSettingsDialog.okButton.databaseConnectionFailed.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f +EamDbSettingsDialog.okButton.errorMsg.text=Autopsy\u3092\u518d\u8d77\u52d5\u3057\u3066\u3001\u65b0\u898f\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u4f7f\u7528\u3092\u958b\u59cb\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +EamDbSettingsDialog.okButton.errorTitle.text=\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 +EamDbSettingsDialog.textPrompt.dbName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d +EamDbSettingsDialog.textPrompt.hostnameOrIP=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 +EamDbSettingsDialog.textPrompt.password=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 +EamDbSettingsDialog.textPrompt.port=\u30dd\u30fc\u30c8\u756a\u53f7 +EamDbSettingsDialog.textPrompt.user=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30e6\u30fc\u30b6\u30fc +EamDbSettingsDialog.title.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210 +EamDbSettingsDialog.validation.finished=[OK] \u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3] \u306b\u623b\u308a\u307e\u3059\u3002\u3042\u308b\u3044\u306f\u3001\u5225\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u307e\u3059\u3002 +EamDbSettingsDialog.validation.incompleteFields=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u3059\u3079\u3066\u306e\u5024\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +EamOptionsController.moduleErr=\u5024\u306e\u5909\u66f4\u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +EamOptionsController.moduleErr.msg=\u5024\u306e\u5909\u66f4\u306e\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +GlobalSettingsPanel.updateFailed.title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f +GlobalSettingsPanel.validationErrMsg.ingestRunning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306f\u8a2d\u5b9a\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002 +GlobalSettingsPanel.validationerrMsg.mustConfigure=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u69cb\u6210\u3057\u3066\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\u3002 +ManageCasesDialog.title.text=\u30b1\u30fc\u30b9\u3092\u7ba1\u7406 +ManageCorrelationPropertiesDialog.noneSelected=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002 +ManageCorrelationPropertiesDialog.okbutton.failure=\u66f4\u65b0\u3057\u305f\u9078\u629e\u306e\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ManageCorrelationPropertiesDialog.title=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u7ba1\u7406 +ManageOrganizationsDialog.closeButton.text=\u9589\u3058\u308b +ManageOrganizationsDialog.confirmDeletion.message=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u304b\u3089\u9078\u629e\u3057\u305f\u7d44\u7e54\u3092\u524a\u9664\u3057\u3066\u3082\u672c\u5f53\u306b\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +ManageOrganizationsDialog.confirmDeletion.title=\u524a\u9664\u3092\u78ba\u5b9a +ManageOrganizationsDialog.deleteButton.text=\u524a\u9664 +ManageOrganizationsDialog.editButton.text=\u7de8\u96c6 +ManageOrganizationsDialog.newButton.text=\u65b0\u898f +ManageOrganizationsDialog.orgDescriptionTextArea.text=\u7d44\u7e54\u306f\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u8ffd\u52a0\u306e\u9023\u7d61\u5148\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u969b\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 +ManageOrganizationsDialog.orgDetailsLabel.text=\u7d44\u7e54\u8a73\u7d30 +ManageOrganizationsDialog.orgListLabel.text=\u7d44\u7e54 +ManageOrganizationsDialog.orgNameLabel.text=\u7d44\u7e54\u540d: +ManageOrganizationsDialog.pocEmailLabel.text=\u9023\u7d61\u5148\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +ManageOrganizationsDialog.pocNameLabel.text=\u9023\u7d61\u5148\u540d: +ManageOrganizationsDialog.pocPhoneLabel.text=\u9023\u7d61\u5148\u306e\u96fb\u8a71\u756a\u53f7: +ManageOrganizationsDialog.title.text=\u7d44\u7e54\u3092\u7ba1\u7406 +ManageOrganizationsDialog.unableToDeleteOrg.message=\u9078\u629e\u3057\u305f\u7d44\u7e54\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002 +ManageOrganizationsDialog.unableToDeleteOrg.title=\u524a\u9664\u3067\u304d\u307e\u305b\u3093 +OptionsCategory_Name_Central_Repository_Options=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc +OptionsCategory_Keywords_Central_Repository_Options=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u8a2d\u5b9a +ImportHashDatabaseDialog.known.text=\u65e2\u77e5 +ImportHashDatabaseDialog.knownBad.text=\u9855\u8457 +EamPostgresSettingsDialog.lbUserPassword.text=\u30e6\u30fc\u30b6\u30fc\u30d1\u30b9\u30ef\u30fc\u30c9 : +EamPostgresSettingsDialog.lbUserName.text=\u30e6\u30fc\u30b6\u30fc\u540d : +EamPostgresSettingsDialog.bnCancel.text=\u53d6\u308a\u6d88\u3057 +EamPostgresSettingsDialog.lbPort.text=\u30dd\u30fc\u30c8 : +EamPostgresSettingsDialog.lbHostName.text=\u30db\u30b9\u30c8\u540d / IP : +EamPostgresSettingsDialog.bnTestConnection.text=\u30c6\u30b9\u30c8\u63a5\u7d9a +EamPostgresSettingsDialog.lbDatabaseName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d : +EamSqliteSettingsDialog.bnCancel.text=\u53d6\u308a\u6d88\u3057 +EamSqliteSettingsDialog.lbTestDatabase.text= +EamSqliteSettingsDialog.bnTestDatabase.text=\u30c6\u30b9\u30c8\u63a5\u7d9a +EamSqliteSettingsDialog.lbTestDatabaseWarning.text= +EamSqliteSettingsDialog.bnDatabasePathFileOpen.text=\u53c2\u7167... +EamSqliteSettingsDialog.tfDatabasePath.toolTipText=SQLite db\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u30d1\u30b9 +EamSqliteSettingsDialog.tfDatabasePath.text= +EamSqliteSettingsDialog.lbDatabasePath.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9 : +ImportHashDatabaseDialog.tfDatabaseName.tooltip=\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u540d\u524d +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +ImportHashDatabaseDialog.tfDatabaseName.tooltip=\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u540d\u524d +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +GlobalSettingsPanel.tbOops.text= +GlobalSettingsPanel.lbDatabaseSettings.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a +GlobalSettingsPanel.bnImportDatabase.label=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +AddNewOrganizationDialog.lbPocPhone.text=\u96fb\u8a71\u756a\u53f7: +AddNewOrganizationDialog.lbPocEmail.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +AddNewOrganizationDialog.lbPocName.text=\u540d\u524d: +AddNewOrganizationDialog.lbPocHeading.text=\u9023\u7d61\u5148: +AddNewOrganizationDialog.lbOrganizationName.text=\u7d44\u7e54\u540d: +AddNewOrganizationDialog.bnCancel.text=\u53d6\u308a\u6d88\u3057 +AddNewOrganizationDialog.bnOK.text=OK +AddNewOrganizationDialog.tfName.tooltip=POC\u540d +ManageTagsDialog.okButton.text=OK +ManageTagsDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +ManageArtifactTypesDialog.taInstructionsMsg.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u76f8\u95a2\u5206\u6790\u306b\u4f7f\u7528\u3059\u308b\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u30921\u3064\u4ee5\u4e0a\u6709\u52b9\u5316\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u3067\u3042\u308b\u305f\u3081\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u5f71\u97ff\u3057\u307e\u3059\u3002 +EamSqliteSettingsDialog.bnOk.text=OK +EamPostgresSettingsDialog.bnSave.text=\u4fdd\u5b58 +EamDbSettingsDialog.bnDatabasePathFileOpen.text=\u53c2\u7167... +EamDbSettingsDialog.tfDatabasePath.toolTipText=SQLite db\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u3068\u30d1\u30b9 +EamDbSettingsDialog.tfDatabasePath.text= +EamDbSettingsDialog.lbDatabasePath.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9 : +EamDbSettingsDialog.bnCancel.text=\u53d6\u308a\u6d88\u3057 +EamDbSettingsDialog.bnOk.text=OK +EamDbSettingsDialog.lbHostName.text=\u30db\u30b9\u30c8\u540d / IP : +EamDbSettingsDialog.lbUserPassword.text=\u30e6\u30fc\u30b6\u30fc\u30d1\u30b9\u30ef\u30fc\u30c9 : +EamDbSettingsDialog.lbUserName.text=\u30e6\u30fc\u30b6\u30fc\u540d : +EamDbSettingsDialog.lbPort.text=\u30dd\u30fc\u30c8 : +GlobalSettingsPanel.pnDatabaseConfiguration.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210 +GlobalSettingsPanel.lbDbPlatformTypeLabel.text=\u30bf\u30a4\u30d7: +GlobalSettingsPanel.lbDbNameLabel.text=\u540d\u524d: +GlobalSettingsPanel.bnDbConfigure.text=\u69cb\u6210 +GlobalSettingsPanel.lbDbLocationLabel.text=\u5834\u6240: +ManageCorrelationPropertiesDialog.lbWarningMsg.text=\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8 +ManageCorrelationPropertiesDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +ManageCorrelationPropertiesDialog.okButton.text=OK +GlobalSettingsPanel.bnManageProperties.text=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u7ba1\u7406 +EamDbSettingsDialog.lbDatabaseDesc.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb: +EamDbSettingsDialog.lbFullDbPath.text= +GlobalSettingsPanel.cbUseCentralRepo.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u4f7f\u7528 +GlobalSettingsPanel.organizationTextArea.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u5185\u3067\u7d44\u7e54\u60c5\u5831\u3092\u8ffd\u8de1\u3067\u304d\u307e\u3059\u3002 +GlobalSettingsPanel.manageOrganizationButton.text=\u7d44\u7e54\u3092\u7ba1\u7406 +GlobalSettingsPanel.lbCentralRepository.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30b1\u30fc\u30b9\u9593\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u7d50\u679c\u3092\u76f8\u95a2\u5206\u6790\u3067\u304d\u307e\u3059\u3002\u30b1\u30fc\u30b9\u304c\u958b\u3044\u3066\u3044\u308b\u9593\u306f\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u69cb\u6210\u3092\u4fee\u6b63\u3067\u304d\u307e\u305b\u3093\u3002 +GlobalSettingsPanel.pnCorrelationProperties.border.title=\u76f8\u95a2\u5206\u6790\u30d7\u30ed\u30d1\u30c6\u30a3 +GlobalSettingsPanel.organizationPanel.border.title=\u7d44\u7e54 +GlobalSettingsPanel.casesPanel.border.title=\u30b1\u30fc\u30b9\u8a73\u7d30 +GlobalSettingsPanel.showCasesButton.text=\u30b1\u30fc\u30b9\u3092\u7ba1\u7406 +ShowCasesDialog.closeButton.AccessibleContext.accessibleName=\u9589\u3058\u308b +ShowCasesDialog.closeButton.actionCommand=\u9589\u3058\u308b +ShowCasesDialog.closeButton.text=\u9589\u3058\u308b +ShowCasesDialog.caseDetailsTable.toolTipText=\u5217\u540d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002\u30c6\u30fc\u30d6\u30eb\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u3055\u3089\u306a\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ShowCasesDialog.title=\u30b1\u30fc\u30b9\u8a73\u7d30 +GlobalSettingsPanel.Case\ Details.AccessibleContext.accessibleName=\u30b1\u30fc\u30b9\u8a73\u7d30 +ShowCasesDialog.caseDetailsTable.AccessibleContext.accessibleDescription=\u5217\u540d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30bd\u30fc\u30c8\u3057\u307e\u3059\u3002 +GlobalSettingsPanel.casesTextArea.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u30b1\u30fc\u30b9\u8a73\u7d30\u3092\u4e00\u89a7\u8868\u793a\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +GlobalSettingsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306f\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u8a2d\u5b9a\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093! +GlobalSettingsPanel.correlationPropertiesTextArea.text=\u5f8c\u3067\u76f8\u95a2\u5206\u6790\u3067\u304d\u308b\u3088\u3046\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u3069\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u7d50\u679c\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4fdd\u7ba1\u3059\u308b\u304b\u9078\u629e\u3057\u307e\u3059\u3002\n +ManageCasesDialog.examinerPhoneLabel.text=\u8abf\u67fb\u54e1\u306e\u96fb\u8a71\u756a\u53f7: +ManageCasesDialog.examinerNameLabel.text=\u8abf\u67fb\u54e1\u540d: +ManageCasesDialog.examinerEmailLabel.text=\u8abf\u67fb\u54e1\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9: +ManageCasesDialog.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7: +ManageCasesDialog.orgLabel.text=\u7d44\u7e54: +ManageCasesDialog.closeButton.text=\u9589\u3058\u308b +ManageCasesDialog.notesLabel.text=\u5099\u8003: +ManageCasesDialog.dataSourcesLabel.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: +ManageCasesDialog.caseInfoLabel.text=\u30b1\u30fc\u30b9\u60c5\u5831: diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties new file mode 100644 index 0000000000..62c8f29e53 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties @@ -0,0 +1,17 @@ +OpenIDE-Module-Name=CommandLineAutopsy +OptionsCategory_Keywords_Command_Line_Ingest_Settings=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a +OptionsCategory_Keywords_General=\u30aa\u30d7\u30b7\u30e7\u30f3 +OptionsCategory_Name_Command_Line_Ingest=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +CommandLineIngestSettingsPanel.ResultsDirectoryUnspecified=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=\u30d1\u30b9\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +CommandLineIngestSettingsPanel.CannotAccess=\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093 +CommandLineIngestSettingsPanel.CheckPermissions=\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +CommandLineIngestSettingsPanel.jLabelSelectOutputFolder.text=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e: +CommandLineIngestSettingsPanel.jLabelInvalidResultsFolder.text=jLabelInvalidOutputFolder +CommandLineIngestSettingsPanel.outputPathTextField.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u7528\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc(\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u3067\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u308b\u5834\u6240)\u3067\u3059\u3002 +CommandLineIngestSettingsPanel.outputPathTextField.text= +CommandLineIngestSettingsPanel.browseOutputFolderButton.text=\u53c2\u7167 +CommandLineIngestSettingsPanel.bnEditIngestSettings.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3067\u3059\u3002 +CommandLineIngestSettingsPanel.bnEditIngestSettings.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a +CommandLinePanel.jLabel1.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d\u3067\u3059 +CommandLineStartupWindow.title.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u4e2d\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ja.properties new file mode 100644 index 0000000000..9247f0d4d0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/commonpropertiessearch/Bundle_ja.properties @@ -0,0 +1,116 @@ +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.all=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30ab\u30c6\u30b4\u30ea\u30fc +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.doc=\u6587\u66f8 +AbstractCommonFilesMetadataBuilder.buildCategorySelectionString.media=\u30e1\u30c7\u30a3\u30a2 +# {0} - \u3057\u304d\u3044\u5024\u306e\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8 +AbstractCommonFilesMetadataBuilder.getPercentFilter.thresholdPercent=, \u3057\u304d\u3044\u5024 {0}% +# {0} - \u5c5e\u6027\u30bf\u30a4\u30d7 +# {1} - \u3057\u304d\u3044\u5024\u306e\u6587\u5b57\u5217 +AllInterCaseCommonAttributeSearcher.buildTabTitle.titleInterAll=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3(\u3059\u3079\u3066\u306e\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30b1\u30fc\u30b9, {0}{1}) +# {0} - \u30d3\u30eb\u30c9\u30ab\u30c6\u30b4\u30ea\u30fc +# {1} - \u3057\u304d\u3044\u5024\u306e\u6587\u5b57\u5217 +AllIntraCaseCommonAttributeSearcher.buildTabTitle.titleIntraAll=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3(\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9, {0}{1}) +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u6570 +CommonAttributePanel.dataSourcesLabel.text=\u73fe\u5728\u306e\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u306f {0} \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +CommonAttributePanel.exception=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u4e88\u671f\u305b\u306c\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.frame.title=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22 +CommonAttributePanel.incompleteResults.continueText=\n\n \u305d\u308c\u3067\u3082\u3053\u306e\u691c\u7d22\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b? +CommonAttributePanel.incompleteResults.introText=\u7d50\u679c\u306f\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u73fe\u5728\u306e\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3055\u308c\u305f\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u6b21\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u51e6\u7406\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f: +CommonAttributePanel.incompleteResults.title=\u691c\u7d22\u306f\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059 +CommonAttributePanel.intraCasePanel.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u30aa\u30d7\u30b7\u30e7\u30f3 +CommonAttributePanel.search.done.exception=[\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22] \u306e\u5b9f\u884c\u4e2d\u306b\u4e88\u671f\u305b\u306c\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.search.done.interupted=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.search.done.noCurrentCaseException=\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3002 +CommonAttributePanel.search.done.noResults=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +CommonAttributePanel.search.done.searchProgressDisplay=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u691c\u7d22\u7d50\u679c\u3092\u8868\u793a\u4e2d\u3067\u3059\u3002 +CommonAttributePanel.search.done.searchProgressGathering=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u691c\u7d22\u7d50\u679c\u3092\u53ce\u96c6\u4e2d\u3067\u3059\u3002 +CommonAttributePanel.search.done.sqlException=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30af\u30a8\u30ea\u3057\u3066\u30d7\u30ed\u30d1\u30c6\u30a3\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u691c\u7d22\u3067\u304d\u307e\u305b\u3093\u3002 +CommonAttributePanel.search.done.tskCoreException=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +CommonAttributePanel.search.results.pathText=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u691c\u7d22\u7d50\u679c +CommonAttributePanel.setupCases.done.exeutionException=\u30b1\u30fc\u30b9\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u4e88\u671f\u305b\u306c\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.setupCases.done.interruptedException=[\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22] \u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.setupDataSources.done.exception=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u4e88\u671f\u305b\u306c\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.setupDataSources.done.interupted=[\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22] \u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CommonAttributePanel.setupDataSources.done.noCurrentCaseException=\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3002 +CommonAttributePanel.setupDataSources.done.sqlException=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30af\u30a8\u30ea\u3057\u3066\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u691c\u7d22\u3067\u304d\u307e\u305b\u3093\u3002 +CommonAttributePanel.setupDataSources.done.tskCoreException=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +CommonAttributePanel.setupDataSources.updateUi.noDataSources=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +CommonAttributePanel.title=[\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3] \u30d1\u30cd\u30eb +CommonAttributeSearchAction.getName.text=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u691c\u7d22 +CommonAttributeSearchAction.openPanel.caseNotInCentralRepo=\n - \u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306f\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +CommonAttributeSearchAction.openPanel.centralRepoDisabled=\n - \u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 +CommonAttributeSearchAction.openPanel.centralRepoInvalid=\n - \u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u69cb\u6210\u306f\u7121\u52b9\u3067\u3059\u3002 +CommonAttributeSearchAction.openPanel.intro=\u6b21\u306e\u7406\u7531\u306b\u3088\u308a\u3001\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3\u691c\u7d22\u6a5f\u80fd\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093: +CommonAttributeSearchAction.openPanel.noCaseOpen=\n - \u30b1\u30fc\u30b9\u306f\u958b\u304b\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +CommonAttributeSearchAction.openPanel.notEnoughCases=\n - \u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b2\u3064\u4ee5\u4e0b\u306e\u30b1\u30fc\u30b9\u304c\u5b58\u5728\u3057\u307e\u3059\u3002 +CommonAttributeSearchAction.openPanel.notEnoughDataSources=\n - \u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306b\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +CommonAttributeSearchAction.openPanel.resolution=\n\n\u3053\u308c\u3089\u306e\u554f\u984c\u306e1\u3064\u306b\u5bfe\u51e6\u3057\u3066\u3001\u3053\u306e\u6a5f\u80fd\u3092\u6709\u52b9\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +CommonAttributeValueNode.CommonAttributeValueNode.format=\u5024: %s +CommonFilesNode.getName.text=\u5171\u901a\u30d5\u30a1\u30a4\u30eb +CommonFilesPanel.commonFilesSearchLabel.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u307e\u3059\u3002 +CommonFilesPanel.text=\u91cd\u8907\u306e\u691c\u7d22\u4e2d\u306b\u3069\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u691c\u8a0e\u3059\u3079\u304d\u304b\u3092\u793a\u3057\u307e\u3059: +CommonFilesPanel.jRadioButton1.text=jRadioButton1 +CommonFilesPanel.jRadioButton2.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3068\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u30b1\u30fc\u30b9\u9593 +CommonFilesPanel.intraCaseRadio.label=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u3067\u306e\u307f\u76f8\u95a2\u5206\u6790 +CommonFilesPanel.interCaseRadio.label=\u65e2\u77e5\u306e\u30b1\u30fc\u30b9\u9593\u3067\u76f8\u95a2(\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u4f7f\u7528) +CommonFilesSearchResultsViewerTable.caseColLbl=\u30b1\u30fc\u30b9 +CommonFilesSearchResultsViewerTable.dataSourceColLbl=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +CommonFilesSearchResultsViewerTable.instancesColLbl=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +CommonFilesSearchResultsViewerTable.localPath=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u89aa\u30d1\u30b9 +CommonFilesSearchResultsViewerTable.noDescText=\ +CommonFilesSearchResultsViewerTable.pathColLbl=\u89aa\u30d1\u30b9 +CommonFilesSearchResultsViewerTable.valueColLbl=\u5024 +InstanceCountNode.createSheet.noDescription=\ +InstanceCountNode.displayName=%s \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9(%s)\u306b\u5b58\u5728 +IntraCasePanel.selectDataSourceComboBox.actionCommand= +CommonAttributePanel.jCheckBox1.text=\u6b21\u306e\u7bc4\u56f2\u3067\u898b\u3064\u304b\u3063\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a +CommonAttributePanel.jLabel1.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e% \u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +CommonAttributePanel.percentageThresholdCheck.text_1=\u6b21\u306e\u7bc4\u56f2\u3067\u898b\u3064\u304b\u3063\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a +CommonAttributePanel.jCheckBox1.text=\u6b21\u306e\u7bc4\u56f2\u3067\u898b\u3064\u304b\u3063\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a +CommonAttributePanel.jLabel1.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e% \u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +CommonAttributePanel.percentageThreshold.text=20 +CommonAttributePanel.jLabel1.text_1=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e% \u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +InterCasePanel.correlationTypeComboBox.toolTipText=\u9078\u629e\u3057\u305f\u76f8\u95a2\u5206\u6790\u30bf\u30a4\u30d7 +IntraCasePanel.selectedFileCategoriesButton.text=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u307f: +IntraCasePanel.categoriesLabel.text=\u8868\u793a\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: +IntraCasePanel.allFileCategoriesRadioButton.toolTipText=\u7d50\u679c\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u304c\u9069\u7528\u3055\u308c\u3066\u3044\u307e\u305b\u3093... +IntraCasePanel.allFileCategoriesRadioButton.text=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +IntraCasePanel.documentsCheckbox.text=\u6587\u66f8 +IntraCasePanel.pictureVideoCheckbox.text=\u5199\u771f\u3068\u52d5\u753b +IntraCasePanel.selectedFileCategoriesButton.toolTipText=\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304b\u3089\u9078\u629e... +CommonAttributePanel.percentageThresholdTextTwo.text_1=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e% \u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +CommonAttributePanel.percentageThresholdCheck.text_1_1=\u6b21\u306e\u7bc4\u56f2\u3067\u898b\u3064\u304b\u3063\u305f\u9805\u76ee\u3092\u975e\u8868\u793a +CommonAttributePanel.intraCaseRadio.text=\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9593 +CommonAttributePanel.errorText.text=\u691c\u7d22\u3059\u308b\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u30ab\u30c6\u30b4\u30ea\u30fc\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +CommonAttributePanel.searchButton.text=\u691c\u7d22 +InterCasePanel.categoriesLabel.text=\u8868\u793a\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: +InterCasePanel.documentsCheckbox.text=\u6587\u66f8 +InterCasePanel.pictureVideoCheckbox.text=\u5199\u771f\u3068\u52d5\u753b +InterCasePanel.selectedFileCategoriesButton.toolTipText=\u4ee5\u4e0b\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304b\u3089\u9078\u629e... +InterCasePanel.selectedFileCategoriesButton.text=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u307f: +InterCasePanel.allFileCategoriesRadioButton.toolTipText=\u7d50\u679c\u306b\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u304c\u9069\u7528\u3055\u308c\u3066\u3044\u307e\u305b\u3093... +InterCasePanel.allFileCategoriesRadioButton.text=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +InterCasePanel.specificCentralRepoCaseCheckbox.text=\u5171\u901a\u9805\u76ee\u306f\u7279\u5b9a\u306e\u30b1\u30fc\u30b9\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: +IntraCasePanel.onlySpecificDataSourceCheckbox.text=\u5171\u901a\u9805\u76ee\u306f\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: +CommonAttributePanel.interCasePanel.border.title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30aa\u30d7\u30b7\u30e7\u30f3 +CommonAttributePanel.intraCasePanel.border.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u30aa\u30d7\u30b7\u30e7\u30f3 +CommonAttributePanel.commonItemSearchDescription.text=\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u307e\u305f\u306f\u30b1\u30fc\u30b9\u306b\u5b58\u5728\u3059\u308b\u9805\u76ee\u3092\u691c\u7d22 +CommonAttributePanel.scopeLabel.text=\u691c\u7d22\u7bc4\u56f2: +InterCasePanel.correlationComboBoxLabel.text=\u4e00\u81f4\u3059\u308b\u30d7\u30ed\u30d1\u30c6\u30a3\u30bf\u30a4\u30d7: +CommonAttributePanel.percentageThresholdInputBox.text=20 +CommonAttributePanel.resultsDisplayLabel.text_2=\u6b21\u306b\u3088\u3063\u3066\u6574\u7406\u3055\u308c\u305f\u7d50\u679c\u3092\u8868\u793a: +CommonAttributePanel.organizeByCaseRadio.text=\u30b1\u30fc\u30b9 +CommonAttributePanel.organizeByCountRadio.text=\u767a\u751f\u6570 +CommonAttributePanel.caseResultsRadioButton.text=\u30b1\u30fc\u30b9 +CommonAttributePanel.countResultsRadioButton.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u6570 +CommonAttributePanel.displayResultsLabel.text_2=\u6b21\u306b\u3088\u3063\u3066\u6574\u7406\u3055\u308c\u305f\u7d50\u679c\u3092\u8868\u793a: +# {0} - \u30b1\u30fc\u30b9\u540d +# {1} - \u5c5e\u6027\u30bf\u30a4\u30d7 +# {2} - \u3057\u304d\u3044\u5024\u306e\u6587\u5b57\u5217 +SingleInterCaseCommonAttributeSearcher.buildTabTitle.titleInterSingle=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3(\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30b1\u30fc\u30b9: {0}, {1}{2}) +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +# {1} - \u30d3\u30eb\u30c9\u30ab\u30c6\u30b4\u30ea\u30fc +# {2} - \u3057\u304d\u3044\u5024\u306e\u6587\u5b57\u5217 +SingleIntraCaseCommonAttributeSearcher.buildTabTitle.titleIntraSingle=\u5171\u901a\u30d7\u30ed\u30d1\u30c6\u30a3(\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: {0}, {1}{2}) +UserInputErrorManager.categories=\u691c\u7d22\u306b\u30d5\u30a1\u30a4\u30eb\u30ab\u30c6\u30b4\u30ea\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +UserInputErrorManager.frequency=\u7121\u52b9\u306a\u983b\u5ea6\u306e\u5272\u5408: 0 < % < 100\u3002 +ValueNode.createSheet.noDescription=\ diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties new file mode 100644 index 0000000000..728fa8179f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties @@ -0,0 +1,97 @@ +AccountNode.accountName=\u30a2\u30ab\u30a6\u30f3\u30c8 +AccountNode.accountType=\u30bf\u30a4\u30d7 +AccountNode.device=\u30c7\u30d0\u30a4\u30b9 +AccountNode.messageCount=\u9805\u76ee +applyText=\u9069\u7528 +CTL_OpenCVTAction=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3 +CVTTopComponent.name=\ \u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u53ef\u8996\u5316 +CVTTopComponent.TabConstraints.tabTitle=\u53ef\u8996\u5316 +CVTTopComponent.accountsBrowser.TabConstraints.tabTitle=\u53c2\u7167 +FiltersPanel.applyFiltersButton.text=\u9069\u7528 +FiltersPanel.devicesLabel.text=\u30c7\u30d0\u30a4\u30b9: +FiltersPanel.accountTypesLabel.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30a4\u30d7: +FiltersPanel.filtersTitleLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc +FiltersPanel.unCheckAllAccountTypesButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3059 +FiltersPanel.checkAllAccountTypesButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af +FiltersPanel.unCheckAllDevicesButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3059 +FiltersPanel.checkAllDevicesButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af +FiltersPanel.dateRangeLabel.text=\u65e5\u4ed8\u7bc4\u56f2: +FiltersPanel.startCheckBox.text=\u958b\u59cb: +FiltersPanel.endCheckBox.text=\u7d42\u4e86: +FiltersPanel.refreshButton.text=\u66f4\u65b0 +FiltersPanel.deviceRequiredLabel.text=\u5c11\u306a\u304f\u3068\u30821\u3064\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +FiltersPanel.accountTypeRequiredLabel.text=\u5c11\u306a\u304f\u3068\u30821\u3064\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +FiltersPanel.needsRefreshLabel.text=\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u30c7\u30fc\u30bf\u306f\u53e4\u3044\u3067\u3059\u3002[\u66f4\u65b0] \u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +OpenCVTAction.displayName=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3 +PinAccountsAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53ef\u8996\u5316\u306b\u8ffd\u52a0 +PinAccountsAction.singularText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53ef\u8996\u5316\u306b\u8ffd\u52a0 +refreshText=\u7d50\u679c\u3092\u66f4\u65b0 +ResetAndPinAccountsAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u307f\u3092\u53ef\u8996\u5316 +ResetAndPinAccountsAction.singularText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u307f\u3092\u53ef\u8996\u5316 +UnpinAccountsAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664 +UnpinAccountsAction.singularText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664 +VisalizationPanel.paintingError=\u53ef\u8996\u5316\u306e\u63cf\u753b\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +# {0} - \u30c7\u30d5\u30a9\u30eb\u30c8\u540d +VisualizationPane_accept_defaultName=\u30ec\u30dd\u30fc\u30c8\u540d\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3057\u305f\u3002[OK] \u3092\u62bc\u3057\u3066\u6b21\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ec\u30dd\u30fc\u30c8\u540d\u3092\u8a31\u53ef\u3057\u3066\u304f\u3060\u3055\u3044: {0} +VisualizationPane_blank_report_title=\u7a7a(\u672a\u5165\u529b)\u306e\u72b6\u614b\u306e\u30ec\u30dd\u30fc\u30c8\u540d +VisualizationPane_DisplayName=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f +VisualizationPane_fileName_prompt=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8\u306e\u540d\u524d\u3092\u5165\u529b: +VisualizationPane_MessageBoxTitle=\u30ec\u30dd\u30fc\u30c8\u30aa\u30fc\u30d7\u30f3\u5931\u6557 +VisualizationPane_MissingReportFileMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +VisualizationPane_NoAssociatedEditorMessage=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30ec\u30dd\u30fc\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a8\u30c7\u30a3\u30bf\u30fc\u304c\u306a\u3044\u304b\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +VisualizationPane_NoOpenInEditorSupportMessage=\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0(\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0)\u306f\u3053\u306e\u65b9\u6cd5\u3067\u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 +VisualizationPane_Open_Report=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f +# {0} - \u30ec\u30dd\u30fc\u30c8\u540d +VisualizationPane_overrite_exiting=\u65e2\u5b58\u306e\u30ec\u30dd\u30fc\u30c8\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b?\n{0} +VisualizationPane_Report_OK_Button=OK +# {0} - \u30ec\u30dd\u30fc\u30c8\u30d1\u30b9 +VisualizationPane_Report_Success=\u6b21\u306e\u5834\u6240\u306b\u30ec\u30dd\u30fc\u30c8\u304c\u6b63\u5e38\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f:\n{0} +VisualizationPane_ReportFileOpenPermissionDeniedMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u8a31\u53ef\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 +VisualizationPane_reportName=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +VisualizationPanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +VisualizationPanel.computingLayout=\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u8a08\u7b97\u4e2d\u3067\u3059 +VisualizationPanel.jButton1.text=\u8fc5\u901f\u304b\u3064\u6709\u6a5f\u7684 +CVTTopComponent.vizPanel.TabConstraints.tabTitle=\u53ef\u8996\u5316 +CVTTopComponent.accountsBrowser.TabConstraints.tabTitle_1=\u53c2\u7167 +CVTTopComponent.browseVisualizeTabPane.AccessibleContext.accessibleName=\u53ef\u8996\u5316 +CVTTopComponent.vizPanel.TabConstraints.tabTitle_1=\u53ef\u8996\u5316 +VisualizationPanel.fitGraphButton.text= +VisualizationPanel.jTextArea1.text=[\u30a2\u30ab\u30a6\u30f3\u30c8\u53c2\u7167] \u30c6\u30fc\u30d6\u30eb\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001[\u53ef\u8996\u5316] \u3092\u9078\u629e\u3057\u3066\u958b\u59cb\u3057\u307e\u3059\u3002 +# {0} - \u30ec\u30a4\u30a2\u30a6\u30c8\u540d +VisualizationPanel.layoutFail.text={0} \u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u5225\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +# {0} - \u30ec\u30a4\u30a2\u30a6\u30c8\u540d +VisualizationPanel.layoutFailWithLockedVertices.text=\u9802\u70b9\u304c\u30ed\u30c3\u30af\u3055\u308c\u305f {0} \u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u4e00\u90e8\u306e\u9802\u70b9\u306e\u30ed\u30c3\u30af\u3092\u89e3\u9664\u3059\u308b\u304b\u3001\u5225\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +VisualizationPanel.lockAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af +VisualizationPanel.lockAction.singularText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af +VisualizationPanel.unlockAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30ed\u30c3\u30af\u3092\u89e3\u9664 +VisualizationPanel.unlockAction.singularText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af +VisualizationPanel.zoomLabel.text=100% +VisualizationPanel.jLabel2.text=\u30ba\u30fc\u30e0: +VisualizationPanel.fitZoomButton.toolTipText=\u53ef\u8996\u5316\u3092\u9069\u5408 +VisualizationPanel.fitZoomButton.text= +VisualizationPanel.zoomActualButton.toolTipText=\u30ba\u30fc\u30e0\u3092\u30ea\u30bb\u30c3\u30c8 +VisualizationPanel.zoomActualButton.text= +VisualizationPanel.zoomInButton.toolTipText=\u30ba\u30fc\u30e0\u30a4\u30f3 +VisualizationPanel.zoomInButton.text= +VisualizationPanel.zoomOutButton.toolTipText=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8 +VisualizationPanel.zoomOutButton.text= +VisualizationPanel.fastOrganicLayoutButton.text= +VisualizationPanel.backButton.text_1= +VisualizationPanel.circleLayoutButton.text=\u5186\u5f62 +VisualizationPanel.organicLayoutButton.text=\u6709\u6a5f\u7684 +VisualizationPanel.hierarchyLayoutButton.text=\u968e\u5c64\u7684 +VisualizationPanel.clearVizButton.text_1= +VisualizationPanel.snapshotButton.text_1=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8 +VisualizationPanel.clearVizButton.actionCommand= +VisualizationPanel.backButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u623b\u308b +VisualizationPanel.forwardButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u9032\u3080 +VisualizationPanel.fastOrganicLayoutButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c1\u30e3\u30fc\u30c8\u3092\u518d\u63cf\u753b +VisualizationPanel.clearVizButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c1\u30e3\u30fc\u30c8\u3092\u6d88\u53bb +FiltersPanel.limitHeaderLabel.text=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u9650\u754c\u5024: +FiltersPanel.mostRecentLabel.text=\u6700\u65b0: +FiltersPanel.limitErrorMsgLabel.text=\u7121\u52b9\u306a\u6574\u6570\u5024\u3067\u3059\u3002 +VisualizationPanel.forwardButton.text= +VisualizationPanel_action_dialogs_title=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3 +VisualizationPanel_action_name_text=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8 +VisualizationPanel_module_name=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3 +VisualizationPanel_snapshot_report_failure=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8\u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties new file mode 100644 index 0000000000..b0cfe25214 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties @@ -0,0 +1,58 @@ +ContactDetailsPane.nameLabel.text=\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc +ContactNode_Email=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ContactNode_Home_Number=\u81ea\u5b85\u96fb\u8a71\u756a\u53f7 +ContactNode_Mobile_Number=\u643a\u5e2f\u96fb\u8a71\u756a\u53f7 +ContactNode_Name=\u540d\u524d +ContactNode_Office_Number=\u4f1a\u793e\u96fb\u8a71\u756a\u53f7 +ContactNode_Phone=\u96fb\u8a71\u756a\u53f7 +ContactNode_URL=URL +ContactsViewer_columnHeader_Email=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ContactsViewer_columnHeader_Name=\u540d\u524d +ContactsViewer_columnHeader_Phone=\u96fb\u8a71\u756a\u53f7 +ContactsViewer_noContacts_message=<\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u9023\u7d61\u5148\u306f\u3042\u308a\u307e\u305b\u3093> +ContactsViewer_tabTitle=\u9023\u7d61\u5148 +MediaViewer_Name=\u30e1\u30c7\u30a3\u30a2\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +MessageNode_Node_Property_Attms=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +MessageNode_Node_Property_Date=\u65e5\u4ed8 +MessageNode_Node_Property_From=\u5dee\u51fa\u4eba +MessageNode_Node_Property_Subject=\u4ef6\u540d +MessageNode_Node_Property_To=\u5b9b\u5148 +MessageNode_Node_Property_Type=\u30bf\u30a4\u30d7 +MessageViewer_columnHeader_Attms=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +MessageViewer_columnHeader_Date=\u65e5\u4ed8 +MessageViewer_columnHeader_EarlyDate=\u6700\u3082\u53e4\u3044\u30e1\u30c3\u30bb\u30fc\u30b8 +MessageViewer_columnHeader_From=\u5dee\u51fa\u4eba +MessageViewer_columnHeader_Subject=\u4ef6\u540d +MessageViewer_columnHeader_To=\u5b9b\u5148 +MessageViewer_no_messages=<\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3042\u308a\u307e\u305b\u3093> +MessageViewer_tabTitle=\u30e1\u30c3\u30bb\u30fc\u30b8 +MessageViewer_viewMessage_all=\u3059\u3079\u3066 +MessageViewer_viewMessage_calllogs=\u901a\u8a71\u30ed\u30b0 +MessageViewer_viewMessage_selected=\u9078\u629e\u6e08\u307f +MessageViewer_viewMessage_unthreaded=\u30b9\u30ec\u30c3\u30c9\u89e3\u9664\u6e08\u307f +SummaryViewer.countsPanel.border.title=\u30ab\u30a6\u30f3\u30c8 +SummaryViewer.contactsLabel.text=\u9023\u7d61\u5148: +SummaryViewer.attachmentsLabel.text=\u30e1\u30c7\u30a3\u30a2\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb: +OutlineViewPanel.messageLabel.text=<\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f> +SummaryViewer.messagesDataLabel.text=\u30e1\u30c3\u30bb\u30fc\u30b8 +SummaryViewer.callLogsDataLabel.text=callLogs +SummaryViewer.contactsDataLabel.text=\u9023\u7d61\u5148 +SummaryViewer.attachmentsDataLabel.text=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +SummaryViewer.messagesLabel.text=\u30e1\u30c3\u30bb\u30fc\u30b8: +SummaryViewer.callLogsLabel.text=\u901a\u8a71\u30ed\u30b0: +SummaryViewer_CaseRefNameColumn_Title=\u30b1\u30fc\u30b9\u540d +SummaryViewer_CentralRepository_Message=<\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3057\u3066\u305d\u306e\u4ed6\u306e\u767a\u751f\u3092\u8868\u793a> +SummaryViewer_Creation_Date_Title=\u4f5c\u6210\u65e5 +SummaryViewer_FileRefNameColumn_Title=\u30d1\u30b9 +SummaryViewer_TabTitle=\u30b5\u30de\u30ea\u30fc +SummeryViewer_FileRef_Message=<\u30a2\u30ab\u30a6\u30f3\u30c8\u30921\u3064\u9078\u629e\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u30ec\u30d5\u30a1\u30ec\u30f3\u30b9\u3092\u8868\u793a> +ThreadRootMessagePanel.showAllCheckBox.text=\u3059\u3079\u3066\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a +ThreadPane.backButton.text=<--- +SummaryViewer.caseReferencesPanel.border.title=\u305d\u306e\u4ed6\u306e\u767a\u751f +SummaryViewer.fileReferencesPanel.border.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u30ec\u30d5\u30a1\u30ec\u30f3\u30b9 +MessageViewer.threadsLabel.text=\u30b9\u30ec\u30c3\u30c9\u3092\u9078\u629e\u3057\u3066\u8868\u793a +MessageViewer.threadNameLabel.text= +MessageViewer.showingMessagesLabel.text=\u6b21\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u4e2d\u3067\u3059: +MessageViewer.backButton.AccessibleContext.accessibleDescription= +MessageViewer.backButton.text=\u30b9\u30ec\u30c3\u30c9 +MessageViewer.showAllButton.text=\u3059\u3079\u3066\u306e\u30e1\u30c3\u30bb\u30fc\u30b8 diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/RelationshipBrowser.java b/Core/src/org/sleuthkit/autopsy/communications/relationships/RelationshipBrowser.java index f1ef86d244..229a0067de 100755 --- a/Core/src/org/sleuthkit/autopsy/communications/relationships/RelationshipBrowser.java +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/RelationshipBrowser.java @@ -61,6 +61,7 @@ public final class RelationshipBrowser extends JPanel implements Lookup.Provider */ public void setSelectionInfo(SelectionInfo info) { currentSelection = info; + tabPane.setSelectedIndex(0); ((RelationshipsViewer) tabPane.getSelectedComponent()).setSelectionInfo(info); } diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties index b3a384ce48..f8119b88da 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties @@ -93,3 +93,7 @@ MediaPlayerPanel.playButton.text=\u25ba MediaPlayerPanel.infoLabel.text=No Errors MediaPlayerPanel.VolumeIcon.text=Volume MediaPlayerPanel.playBackSpeedLabel.text=Speed: +ContextViewer.jSourceGoToResultButton.text=Go to Result +ContextViewer.jSourceNameLabel.text=jSourceNameLabel +ContextViewer.jSourceTextLabel.text=jLabel2 +ContextViewer.jSourceLabel.text=Source diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED index 2d9df0ae33..ceec760a69 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle.properties-MERGED @@ -10,6 +10,17 @@ AnnotationsContentViewer.title=Annotations AnnotationsContentViewer.toolTip=Displays tags and comments associated with the selected content. ApplicationContentViewer.title=Application ApplicationContentViewer.toolTip=Displays file contents. +ContextViewer.attachmentSource=Attached to: +ContextViewer.downloadedOn=On +ContextViewer.downloadSource=Downloaded from: +ContextViewer.downloadURL=URL +ContextViewer.email=Email +ContextViewer.message=Message +ContextViewer.messageFrom=From +ContextViewer.messageOn=On +ContextViewer.messageTo=From +ContextViewer.title=Context Viewer +ContextViewer.toolTip=Displays context for selected file. FXVideoPanel.pauseButton.infoLabel.playbackErr=Unable to play video. FXVideoPanel.progress.bufferingCancelled=media buffering was canceled FXVideoPanel.progress.bufferingInterrupted=media buffering was interrupted @@ -164,6 +175,10 @@ MediaPlayerPanel.playButton.text=\u25ba MediaPlayerPanel.infoLabel.text=No Errors MediaPlayerPanel.VolumeIcon.text=Volume MediaPlayerPanel.playBackSpeedLabel.text=Speed: +ContextViewer.jSourceGoToResultButton.text=Go to Result +ContextViewer.jSourceNameLabel.text=jSourceNameLabel +ContextViewer.jSourceTextLabel.text=jLabel2 +ContextViewer.jSourceLabel.text=Source # {0} - tableName SQLiteViewer.readTable.errorText=Error getting rows for table: {0} # {0} - tableName diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties index 0be94476e6..f7b7844e60 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties @@ -1,36 +1,81 @@ -FXVideoPanel.pauseButton.infoLabel.playbackErr=\u30d3\u30c7\u30aa\u3092\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -FXVideoPanel.progress.bufferingCancelled=\u30e1\u30c7\u30a3\u30a2\u306e\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f -FXVideoPanel.progress.bufferingInterrupted=\u30e1\u30c7\u30a3\u30a2\u306e\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f -FXVideoPanel.progress.errorWritingVideoToDisk=\u30d3\u30c7\u30aa\u3092\u30c7\u30a3\u30b9\u30af\u3078\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -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 +AnnotationsContentViewer.centralRepositoryEntryDataLabel.case=\u30b1\u30fc\u30b9: +AnnotationsContentViewer.centralRepositoryEntryDataLabel.comment=\u30b3\u30e1\u30f3\u30c8: +AnnotationsContentViewer.centralRepositoryEntryDataLabel.path=\u30d1\u30b9: +AnnotationsContentViewer.centralRepositoryEntryDataLabel.type=\u30bf\u30a4\u30d7: +AnnotationsContentViewer.tagEntryDataLabel.comment=\u30b3\u30e1\u30f3\u30c8: +AnnotationsContentViewer.tagEntryDataLabel.tag=\u30bf\u30b0: +AnnotationsContentViewer.tagEntryDataLabel.tagUser=\u30bf\u30b0\u30e6\u30fc\u30b6\u30fc: +AnnotationsContentViewer.title=\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3 +AnnotationsContentViewer.toolTip=\u9078\u629e\u3057\u305f\u30b3\u30f3\u30c6\u30f3\u30c4\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30bf\u30b0\u3068\u30b3\u30e1\u30f3\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ApplicationContentViewer.title=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 +ApplicationContentViewer.toolTip=\u30d5\u30a1\u30a4\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +FXVideoPanel.pauseButton.infoLabel.playbackErr=\u52d5\u753b\u3092\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3002 +FXVideoPanel.progress.bufferingCancelled=\u30e1\u30c7\u30a3\u30a2\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +FXVideoPanel.progress.bufferingInterrupted=\u30e1\u30c7\u30a3\u30a2\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002 +FXVideoPanel.progress.errorWritingVideoToDisk=\u52d5\u753b\u3092\u30c7\u30a3\u30b9\u30af\u306b\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +FXVideoPanel.mediaPane.infoLabel=\u524a\u9664\u3057\u305f\u52d5\u753b\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\u304f\u3060\u3055\u3044\u3002 +FXVideoPanel.progress.bufferingFile={0} \u3092\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u3067\u3059 +FXVideoPanel.progressLabel.buffering=\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u3067\u3059... FXVideoPanel.media.unsupportedFormat=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3059\u3002 -GstVideoPanel.cannotProcFile.err=\u30e1\u30c7\u30a4\u30a2\u30d7\u30ec\u30fc\u30e4\u30fc\u3067\u306f\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.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\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\u3002\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 -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 -GstVideoPanel.progress.infoLabel.updateErr=\u30d3\u30c7\u30aa\u30d7\u30ed\u30b0\u30ec\u30b9\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} -GstVideoPanel.ExtractMedia.progress.buffering={0}\u3092\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d +GstVideoPanel.cannotProcFile.err=\u30e1\u30c7\u30a3\u30a2\u30d7\u30ec\u30a4\u30e4\u30fc\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002 +GstVideoPanel.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +Html_text_display_error=HTML\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3067\u304d\u307e\u305b\u3093\u3002 \u6b63\u3057\u304f\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3055\u308c\u305fHTML\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +HtmlPanel_showImagesToggleButton_hide=\u30a4\u30e1\u30fc\u30b8\u3092\u975e\u8868\u793a\u306b\u3059\u308b +HtmlPanel_showImagesToggleButton_show=\u30a4\u30e1\u30fc\u30b8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +HtmlViewer_file_error=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u89e3\u8aad\u3067\u304d\u307e\u305b\u3093\u3002 +MediaFileViewer.initGst.gstException.msg=\u30aa\u30fc\u30c7\u30a3\u30aa/\u52d5\u753b\u8996\u8074\u6a5f\u80fd\u3068\u30d5\u30ec\u30fc\u30e0\u62bd\u51fa\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306bGstreamer\u3092\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30aa\u30fc\u30c7\u30a3\u30aa/\u52d5\u753b\u8996\u8074\u304c\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u3002 +GstVideoPanel.setupVideo.infoLabel.text=\u524a\u9664\u3057\u305f\u52d5\u753b\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\u304f\u3060\u3055\u3044\u3002 +GstVideoPanel.exception.problemFile.msg=\u3053\u306e\u30d5\u30a1\u30a4\u30eb({0})\u304b\u3089\u30d5\u30ec\u30fc\u30e0\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 +GstVideoPanel.exception.problemPlay.msg=\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u7dcf\u518d\u751f\u6642\u9593\u306e\u53d6\u5f97\u4e2d\u306b\u518d\u751f\u3092\u8a66\u307f\u308b\u3068\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +GstVideoPanel.exception.problemPause.msg=\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u7dcf\u518d\u751f\u6642\u9593\u306e\u53d6\u5f97\u4e2d\u306b\u4e00\u6642\u505c\u6b62\u3092\u8a66\u307f\u308b\u3068\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +GstVideoPanel.exception.problemPauseCaptFrame.msg=\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u4e2d\u306b\u4e00\u6642\u505c\u6b62\u3092\u8a66\u307f\u308b\u3068\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +GstVideoPanel.exception.problemPlayCaptFrame.msg=\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u4e2d\u306b\u518d\u751f\u3092\u8a66\u307f\u308b\u3068\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +GstVideoPanel.exception.problemStopCaptFrame.msg=\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059\u3002\u30d5\u30ec\u30fc\u30e0\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u4e2d\u306b\u505c\u6b62\u3092\u8a66\u307f\u308b\u3068\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002 +GstVideoPanel.progress.buffering=\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u3067\u3059... +GstVideoPanel.progressLabel.bufferingErr=\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +GstVideoPanel.progress.infoLabel.updateErr=\u6b21\u306e\u52d5\u753b\u306e\u9032\u6357\u72b6\u6cc1\u3092\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +GstVideoPanel.ExtractMedia.progress.buffering={0} \u3092\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u4e2d\u3067\u3059 +MediaFileViewer.AccessibleContext.accessibleDescription= MediaFileViewer.title=\u30e1\u30c7\u30a3\u30a2 -MediaFileViewer.toolTip=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\uff08\u30a4\u30e1\u30fc\u30b8\u3001\u30d3\u30c7\u30aa\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\uff09\u3092\u8868\u793a\u3057\u307e\u3059\u3002 -MediaViewImagePanel.imgFileTooLarge.msg=\u30a4\u30e1\u30fc\u30b8\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} +MediaFileViewer.toolTip=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb(\u30a4\u30e1\u30fc\u30b8\u3001\u52d5\u753b\u3001\u30aa\u30fc\u30c7\u30a3\u30aa)\u3092\u8868\u793a\u3057\u307e\u3059 +MediaPlayerPanel.noSupport=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +MediaPlayerPanel.timeFormat=%02d:%02d:%02d +MediaPlayerPanel.unknownTime=\u4e0d\u660e +MediaViewImagePanel.createTagOption=\u4f5c\u6210 +MediaViewImagePanel.deleteTagOption=\u524a\u9664 +MediaViewImagePanel.errorLabel.OOMText=\u30e1\u30c7\u30a3\u30a2\u30d3\u30e5\u30fc\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30e1\u30e2\u30ea\u30fc\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002 +MediaViewImagePanel.errorLabel.text=\u30e1\u30c7\u30a3\u30a2\u30d3\u30e5\u30fc\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +MediaViewImagePanel.exportSaveText=\u4fdd\u5b58 +MediaViewImagePanel.exportTagOption=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +MediaViewImagePanel.externalViewerButton.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +MediaViewImagePanel.fileChooserTitle=\u4fdd\u5b58\u5834\u6240\u3092\u9078\u629e +MediaViewImagePanel.hideTagOption=\u975e\u8868\u793a +MediaViewImagePanel.successfulExport=\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u304c\u6b63\u5e38\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002 +MediaViewImagePanel.unsuccessfulExport=\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8\u3092\u30c7\u30a3\u30b9\u30af\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3002 MediaViewVideoPanel.pauseButton.text=\u25ba -MediaViewVideoPanel.progressLabel.text=00\:00 -MediaViewVideoPanel.infoLabel.text=\u60c5\u5831 +MediaViewVideoPanel.progressLabel.text=00:00 +MediaViewVideoPanel.infoLabel.text=\u4fdd\u5b58 +MediaViewImagePanel.imgFileTooLarge.msg=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f(\u5927\u304d\u3059\u304e\u3066): {0} +MessageContentViewer.AtrachmentsPanel.title=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +MessageContentViewer.title=\u30e1\u30c3\u30bb\u30fc\u30b8 +MessageContentViewer.toolTip=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +Metadata.nodeText.none=\u306a\u3057 +Metadata.nodeText.truncated=(\u4e00\u62ec\u524a\u9664\u3055\u308c\u305f\u7d50\u679c) +Metadata.nodeText.unknown=\u4e0d\u660e +Metadata.tableRowTitle.acquisitionDetails=\u53d6\u5f97\u306e\u8a73\u7d30 +Metadata.tableRowTitle.deviceId=\u30c7\u30d0\u30a4\u30b9ID +Metadata.tableRowTitle.downloadSource=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5143 +Metadata.tableRowTitle.imageType=\u30bf\u30a4\u30d7 +Metadata.tableRowTitle.mimeType=MIME\u30bf\u30a4\u30d7 Metadata.tableRowTitle.name=\u540d\u524d +Metadata.tableRowTitle.sectorSize=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba +Metadata.tableRowTitle.sha1=SHA1 +Metadata.tableRowTitle.sha256=SHA256 Metadata.tableRowTitle.size=\u30b5\u30a4\u30ba -Metadata.tableRowTitle.fileNameAlloc=\u30d5\u30a1\u30a4\u30eb\u540d\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 -Metadata.tableRowTitle.metadataAlloc=\u30e1\u30bf\u30c7\u30fc\u30bf\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 +Metadata.tableRowTitle.fileNameAlloc=\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u5272\u308a\u5f53\u3066 +Metadata.tableRowTitle.metadataAlloc=\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u5272\u308a\u5f53\u3066 Metadata.tableRowTitle.modified=\u4fee\u6b63\u6e08\u307f Metadata.tableRowTitle.accessed=\u30a2\u30af\u30bb\u30b9\u6e08\u307f Metadata.tableRowTitle.created=\u4f5c\u6210\u6e08\u307f @@ -40,9 +85,82 @@ 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=\u30d5\u30a1\u30a4\u30eb\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.tableRowTitle.timezone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 Metadata.tableRowTitle.type=\u30bf\u30a4\u30d7 -Metadata.nodeText.exceptionNotice.text=\u30d5\u30a1\u30a4\u30eb\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a -Metadata.nodeText.text=Sleuth Kit istat\u30c4\u30fc\u30eb\u304b\u3089\uff1a -Metadata.nodeText.nonFilePassedIn=\u5165\u529b\u3055\u308c\u305f\u3082\u306e\u306f\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +Metadata.title=\u30d5\u30a1\u30a4\u30eb\u306e\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=\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306e\u3082\u306e\u304c\u901a\u904e\u3057\u307e\u3057\u305f +Metadata.nodeText.text=\u9001\u4fe1\u5143\u306eSleuth Kit\u306eistat\u30c4\u30fc\u30eb: +Metadata.nodeText.exceptionNotice.text=\u30d5\u30a1\u30a4\u30eb\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: +MessageContentViewer.rtfbodyScrollPane.TabConstraints.tabTitle=RTF +MessageContentViewer.headersScrollPane.TabConstraints.tabTitle=\u30d8\u30c3\u30c0\u30fc +MessageContentViewer.textbodyScrollPane.TabConstraints.tabTitle=\u30c6\u30ad\u30b9\u30c8 +MessageContentViewer.htmlPane.TabConstraints.tabTitle=HTML +MessageContentViewer.fromText.text=\u9001\u4fe1\u5143\u30a2\u30c9\u30ec\u30b9\u3092\u3053\u3053\u306b\u8868\u793a +MessageContentViewer.fromLabel.text=\u5dee\u51fa\u4eba: +MessageContentViewer.datetimeText.text=\u65e5\u4ed8\u3092\u3053\u3053\u306b\u8868\u793a +MessageContentViewer.toText.text=\u5b9b\u5148\u306eTO\u30ea\u30b9\u30c8\u3092\u3053\u3053\u306b\u8868\u793a +MessageContentViewer.toLabel.text=\u5b9b\u5148: +MessageContentViewer.ccText.text=\u5b9b\u5148\u306eCC\u30ea\u30b9\u30c8\u3092\u3053\u3053\u306b\u8868\u793a +MessageContentViewer.subjectLabel.text=\u4ef6\u540d: +MessageContentViewer.subjectText.text=\u4ef6\u540d\u3092\u3053\u3053\u306b\u8868\u793a +MessageContentViewer.directionText.text=\u9001\u53d7\u4fe1\u306e\u7a2e\u5225 +MessageContentViewer.ccLabel.text=CC: +MessageContentViewer.attachmentsPanel.TabConstraints.tabTitle=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +MessageContentViewer.viewInNewWindowButton.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +JPEGViewerDummy.jLabel1.text=JPEG\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059: +JPEGViewerDummy.jTextField1.text=jTextField1 +PListNode.KeyCol=\u30ad\u30fc +PListNode.TypeCol=\u30bf\u30a4\u30d7 +PListNode.ValueCol=\u5024 +PListViewer.DataType.message=\u30d0\u30a4\u30ca\u30ea\u30fc\u30c7\u30fc\u30bf\u5024\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PListViewer.ExportFailed.message=Plist\u30d5\u30a1\u30a4\u30eb\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +PListViewer.ExportSuccess.message=Plist\u30d5\u30a1\u30a4\u30eb\u304c\u6b63\u5e38\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f +PListViewer.processPlist.errorMessage=plist\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790/\u8868\u793a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +PListViewer.processPlist.interruptedMessage=plist\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790/\u8868\u793a\u4e2d\u306b\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002 +SQLiteTableView.DisplayAs.text=\u5225\u540d\u3067\u8868\u793a +SQLiteTableView.DisplayAsMenuItem.Date=\u65e5\u4ed8 +SQLiteTableView.DisplayAsMenuItem.RawData=\u30ed\u30fc\u30c7\u30fc\u30bf +SQLiteViewer.comboBox.noTableEntry=\u30c6\u30fc\u30d6\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +SQLiteViewer.csvExport.confirm.msg=\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? +SQLiteViewer.csvExport.fileName.empty=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +SQLiteViewer.csvExport.title=CSV\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +SQLiteViewer.errorMessage.failedToExtractFile=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +SQLiteViewer.errorMessage.failedToinitJDBCDriver=SQLite\u306eJDBC\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +SQLiteViewer.errorMessage.failedToQueryDatabase=\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c6\u30fc\u30d6\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +SQLiteViewer.errorMessage.interrupted=\u30d5\u30a1\u30a4\u30eb\u306e\u51e6\u7406\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\u3002 +SQLiteViewer.errorMessage.noCurrentCase=\u30b1\u30fc\u30b9\u304c\u9589\u3058\u3089\u308c\u307e\u3057\u305f\u3002 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +SQLiteViewer.errorMessage.unexpectedError=\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f:\n{0)\u3002 +SQLiteViewer.exportTableToCsv.FileName=\u30d5\u30a1\u30a4\u30eb\u540d: +SQLiteViewer.exportTableToCsv.TableName=\u30c6\u30fc\u30d6\u30eb\u540d: +SQLiteViewer.exportTableToCsv.write.errText=\u30c6\u30fc\u30d6\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092CSV\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +SQLiteViewer.nextPageButton.text= +SQLiteViewer.prevPageButton.text= +SQLiteViewer.numPagesLabel.text=N +SQLiteViewer.jLabel3.text=/ +SQLiteViewer.currPageLabel.text=x +SQLiteViewer.jLabel2.text=\u30da\u30fc\u30b8 +SQLiteViewer.numEntriesField.text=num Entries +SQLiteViewer.jLabel1.text=\u30c6\u30fc\u30d6\u30eb +PListViewer.exportButton.text=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +SQLiteViewer.exportCsvButton.text=CSV\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +MediaViewImagePanel.rotateLeftButton.text= +MediaViewImagePanel.zoomInButton.text= +MediaViewImagePanel.rotateRightButton.text= +MediaViewImagePanel.zoomOutButton.text= +MediaViewImagePanel.zoomResetButton.text=\u30ea\u30bb\u30c3\u30c8 +MediaViewImagePanel.zoomTextField.text= +MediaViewImagePanel.rotationTextField.text= +MediaViewImagePanel.rotateLeftButton.toolTipText= +HtmlPanel.showImagesToggleButton.text=\u30a4\u30e1\u30fc\u30b8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +MediaPlayerPanel.audioSlider.toolTipText= +MediaPlayerPanel.VolumeIcon.text=\ \ \ \ \ \u30dc\u30ea\u30e5\u30fc\u30e0 +MediaPlayerPanel.progressLabel.text=00:00:00/00:00:00 +MediaPlayerPanel.playButton.text=\u25ba +MediaPlayerPanel.infoLabel.text=\u30a8\u30e9\u30fc\u306a\u3057 +MediaViewImagePanel.tagsMenu.text_1=\u30bf\u30b0\u30e1\u30cb\u30e5\u30fc +# {0} - tableName +SQLiteViewer.readTable.errorText=\u6b21\u306e\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +# {0} - tableName +SQLiteViewer.selectTable.errorText=\u6b21\u306e\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u30ab\u30a6\u30f3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.form b/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.form new file mode 100644 index 0000000000..e1f171ad36 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.form @@ -0,0 +1,108 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.java b/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.java new file mode 100644 index 0000000000..212321e178 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/ContextViewer.java @@ -0,0 +1,442 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.contentviewers; + +import java.awt.Component; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import org.apache.commons.lang.StringUtils; +import org.openide.nodes.Node; +import org.openide.util.NbBundle; +import org.openide.util.lookup.ServiceProvider; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; +import org.sleuthkit.datamodel.AbstractFile; +import org.sleuthkit.datamodel.BlackboardArtifact; +import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT; +import org.sleuthkit.datamodel.BlackboardAttribute; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Displays additional context for the selected file, such as its source, and + * usage, if known. + * + */ +@ServiceProvider(service = DataContentViewer.class, position = 7) +public final class ContextViewer extends javax.swing.JPanel implements DataContentViewer { + + private static final long serialVersionUID = 1L; + private static final Logger logger = Logger.getLogger(ContextViewer.class.getName()); + private static final int ARTIFACT_STR_MAX_LEN = 1024; + private static final int ATTRIBUTE_STR_MAX_LEN = 200; + + // defines a list of artifacts that provide context for a file + private static final List SOURCE_CONTEXT_ARTIFACTS = new ArrayList<>(); + + static { + SOURCE_CONTEXT_ARTIFACTS.add(TSK_ASSOCIATED_OBJECT); + } + + private BlackboardArtifact sourceContextArtifact; + + /** + * Creates new form ContextViewer + */ + public ContextViewer() { + + initComponents(); + } + + /** + * 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 + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + javax.swing.JButton jSourceGoToResultButton = new javax.swing.JButton(); + javax.swing.JLabel jSourceLabel = new javax.swing.JLabel(); + jSourceNameLabel = new javax.swing.JLabel(); + jSourceTextLabel = new javax.swing.JLabel(); + + setBackground(new java.awt.Color(255, 255, 255)); + + org.openide.awt.Mnemonics.setLocalizedText(jSourceGoToResultButton, org.openide.util.NbBundle.getMessage(ContextViewer.class, "ContextViewer.jSourceGoToResultButton.text")); // NOI18N + jSourceGoToResultButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jSourceGoToResultButtonActionPerformed(evt); + } + }); + + jSourceLabel.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jSourceLabel, org.openide.util.NbBundle.getMessage(ContextViewer.class, "ContextViewer.jSourceLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jSourceNameLabel, org.openide.util.NbBundle.getMessage(ContextViewer.class, "ContextViewer.jSourceNameLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jSourceTextLabel, org.openide.util.NbBundle.getMessage(ContextViewer.class, "ContextViewer.jSourceTextLabel.text")); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jSourceLabel) + .addGroup(layout.createSequentialGroup() + .addGap(6, 6, 6) + .addComponent(jSourceNameLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jSourceTextLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE))) + .addGap(36, 36, 36)) + .addGroup(layout.createSequentialGroup() + .addComponent(jSourceGoToResultButton) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jSourceLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jSourceNameLabel) + .addComponent(jSourceTextLabel)) + .addGap(18, 18, 18) + .addComponent(jSourceGoToResultButton) + .addGap(0, 203, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void jSourceGoToResultButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSourceGoToResultButtonActionPerformed + + final DirectoryTreeTopComponent dtc = DirectoryTreeTopComponent.findInstance(); + + // Navigate to the source context artifact. + if (sourceContextArtifact != null) { + dtc.viewArtifact(sourceContextArtifact); + } + + }//GEN-LAST:event_jSourceGoToResultButtonActionPerformed + + @Override + public void setNode(Node selectedNode) { + if ((selectedNode == null) || (!isSupported(selectedNode))) { + resetComponent(); + return; + } + + AbstractFile file = selectedNode.getLookup().lookup(AbstractFile.class); + try { + populateSourceContextData(file); + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Exception displaying context for file %s", file.getName()), ex); //NON-NLS + } + } + + @NbBundle.Messages({ + "ContextViewer.title=Context", + "ContextViewer.toolTip=Displays context for selected file." + }) + + @Override + public String getTitle() { + return Bundle.ContextViewer_title(); + } + + @Override + public String getToolTip() { + return Bundle.ContextViewer_toolTip(); + } + + @Override + public DataContentViewer createInstance() { + return new ContextViewer(); + } + + @Override + public Component getComponent() { + return this; + } + + @Override + public void resetComponent() { + setSourceName(""); + setSourceText(""); + } + + @Override + public boolean isSupported(Node node) { + + // check if the node has an abstract file and the file has any context defining artifacts. + if (node.getLookup().lookup(AbstractFile.class) != null) { + AbstractFile abstractFile = node.getLookup().lookup(AbstractFile.class); + for (BlackboardArtifact.ARTIFACT_TYPE artifactType : SOURCE_CONTEXT_ARTIFACTS) { + List artifactsList; + try { + artifactsList = abstractFile.getArtifacts(artifactType); + if (!artifactsList.isEmpty()) { + return true; + } + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Exception while looking up context artifacts for file %s", abstractFile), ex); //NON-NLS + } + } + + } + + return false; + } + + @Override + public int isPreferred(Node node) { + // this is a low preference viewer. + return 1; + } + + /** + * Looks for context providing artifacts for the given file and populates + * the source context. + * + * @param sourceFile File for which to show the context. + * + * @throws NoCurrentCaseException + * @throws TskCoreException + */ + private void populateSourceContextData(AbstractFile sourceFile) throws NoCurrentCaseException, TskCoreException { + + SleuthkitCase tskCase = Case.getCurrentCaseThrows().getSleuthkitCase(); + + // Check for all context artifacts + boolean foundASource = false; + for (BlackboardArtifact.ARTIFACT_TYPE artifactType : SOURCE_CONTEXT_ARTIFACTS) { + List artifactsList = tskCase.getBlackboardArtifacts(artifactType, sourceFile.getId()); + + foundASource = !artifactsList.isEmpty(); + for (BlackboardArtifact contextArtifact : artifactsList) { + addSourceEntry(contextArtifact); + } + } + if (foundASource == false) { + setSourceName("Unknown"); + showSourceText(false); + } + } + + + + /** + * Adds a source context entry for the selected file based on the given context + * providing artifact. + * + * @param artifact Artifact that may provide context. + * + * @throws NoCurrentCaseException + * @throws TskCoreException + */ + private void addSourceEntry(BlackboardArtifact artifact) throws TskCoreException { + if (BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getTypeID() == artifact.getArtifactTypeID()) { + BlackboardAttribute associatedArtifactAttribute = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT)); + if (associatedArtifactAttribute != null) { + long artifactId = associatedArtifactAttribute.getValueLong(); + BlackboardArtifact associatedArtifact = artifact.getSleuthkitCase().getBlackboardArtifact(artifactId); + + //save the artifact for "Go to Result" button + sourceContextArtifact = associatedArtifact; + + setSourceFields(associatedArtifact); + } + } + } + + /** + * Sets the source label and text fields based on the given associated + * artifact. + * + * @param associatedArtifact - associated artifact + * + * @throws TskCoreException + */ + @NbBundle.Messages({ + "ContextViewer.attachmentSource=Attached to: ", + "ContextViewer.downloadSource=Downloaded from: " + }) + private void setSourceFields(BlackboardArtifact associatedArtifact) throws TskCoreException { + if (BlackboardArtifact.ARTIFACT_TYPE.TSK_MESSAGE.getTypeID() == associatedArtifact.getArtifactTypeID() + || BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID() == associatedArtifact.getArtifactTypeID()) { + + setSourceName(Bundle.ContextViewer_attachmentSource()); + setSourceText(msgArtifactToAbbreviatedString(associatedArtifact)); + + } else if (BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID() == associatedArtifact.getArtifactTypeID() + || BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID() == associatedArtifact.getArtifactTypeID()) { + + setSourceName(Bundle.ContextViewer_downloadSource()); + setSourceText(webDownloadArtifactToString(associatedArtifact)); + } + } + + /** + * Sets the source label string. + * + * @param nameLabel String value for source label. + */ + private void setSourceName(String nameLabel) { + jSourceNameLabel.setText(nameLabel); + } + + /** + * Sets the source text string. + * + * @param nameLabel String value for source text. + */ + private void setSourceText(String text) { + jSourceTextLabel.setText(text); + showSourceText(true); + } + + private void showSourceText(boolean isVisible) { + jSourceTextLabel.setVisible(isVisible); + } + + /** + * Returns a display string with download source URL from the given + * artifact. + * + * @param artifact artifact to get download source URL from. + * + * @return Display string with download URL and date/time. + * + * @throws TskCoreException + */ + @NbBundle.Messages({ + "ContextViewer.downloadURL=URL", + "ContextViewer.downloadedOn=On" + }) + private String webDownloadArtifactToString(BlackboardArtifact artifact) throws TskCoreException { + StringBuilder sb = new StringBuilder(ARTIFACT_STR_MAX_LEN); + Map attributesMap = getAttributesMap(artifact); + + if (BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID() == artifact.getArtifactTypeID() + || BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID() == artifact.getArtifactTypeID()) { + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL, attributesMap, Bundle.ContextViewer_downloadURL()); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_CREATED, attributesMap, Bundle.ContextViewer_downloadedOn()); + } + return sb.toString(); + } + + /** + * Returns a abbreviated display string for a message artifact. + * + * @param artifact artifact to get download source URL from. + * + * @return Display string for message artifact. + * + * @throws TskCoreException + */ + @NbBundle.Messages({ + "ContextViewer.message=Message", + "ContextViewer.email=Email", + "ContextViewer.messageFrom=From", + "ContextViewer.messageTo=To", + "ContextViewer.messageOn=On", + }) + private String msgArtifactToAbbreviatedString(BlackboardArtifact artifact) throws TskCoreException { + + StringBuilder sb = new StringBuilder(ARTIFACT_STR_MAX_LEN); + Map attributesMap = getAttributesMap(artifact); + + if (BlackboardArtifact.ARTIFACT_TYPE.TSK_MESSAGE.getTypeID() == artifact.getArtifactTypeID()) { + sb.append(Bundle.ContextViewer_message()).append(' '); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_FROM, attributesMap, Bundle.ContextViewer_messageFrom()); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PHONE_NUMBER_TO, attributesMap, Bundle.ContextViewer_messageTo()); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME, attributesMap, Bundle.ContextViewer_messageOn()); + } else if (BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID() == artifact.getArtifactTypeID()) { + sb.append(Bundle.ContextViewer_email()).append(' '); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_EMAIL_FROM, attributesMap, Bundle.ContextViewer_messageFrom()); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_EMAIL_TO, attributesMap, Bundle.ContextViewer_messageTo()); + appendAttributeString(sb, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_SENT, attributesMap, Bundle.ContextViewer_messageOn()); + } + return sb.toString(); + } + + /** + * Looks up specified attribute in the given map and, if found, appends its + * value to the given string builder. + * + * @param sb String builder to append to. + * @param attribType Attribute type to look for. + * @param attributesMap Attributes map. + * @param prependStr Optional string that is prepended before the attribute + * value. + */ + private void appendAttributeString(StringBuilder sb, BlackboardAttribute.ATTRIBUTE_TYPE attribType, + Map attributesMap, String prependStr) { + + BlackboardAttribute attribute = attributesMap.get(attribType); + if (attribute != null) { + String attrVal = attribute.getDisplayString(); + if (!StringUtils.isEmpty(attrVal)) { + if (!StringUtils.isEmpty(prependStr)) { + sb.append(prependStr).append(' '); + } + sb.append(StringUtils.abbreviate(attrVal, ATTRIBUTE_STR_MAX_LEN)).append(' '); + } + } + } + + /** + * Gets all attributes for the given artifact, and returns a map of + * attributes keyed by attribute type. + * + * @param artifact Artifact for which to get the attributes. + * + * @return Map of attribute type and value. + * + * @throws TskCoreException + */ + private Map getAttributesMap(BlackboardArtifact artifact) throws TskCoreException { + Map attributeMap = new HashMap<>(); + + List attributeList = artifact.getAttributes(); + for (BlackboardAttribute attribute : attributeList) { + BlackboardAttribute.ATTRIBUTE_TYPE type = BlackboardAttribute.ATTRIBUTE_TYPE.fromID(attribute.getAttributeType().getTypeID()); + attributeMap.put(type, attribute); + } + + return attributeMap; + } + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jSourceNameLabel; + private javax.swing.JLabel jSourceTextLabel; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java index 126299f120..796386a5b3 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Metadata.java @@ -191,12 +191,14 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer { } try { - List sourceArtifacts = file.getArtifacts(ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - if (!sourceArtifacts.isEmpty()) { - BlackboardArtifact artifact = sourceArtifacts.get(0); - BlackboardAttribute urlAttr = artifact.getAttribute(new BlackboardAttribute.Type(ATTRIBUTE_TYPE.TSK_URL)); - if (urlAttr != null) { - addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.downloadSource"), urlAttr.getValueString()); + List associatedObjectArtifacts = file.getArtifacts(ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + if (!associatedObjectArtifacts.isEmpty()) { + BlackboardArtifact artifact = associatedObjectArtifacts.get(0); + BlackboardAttribute associatedArtifactAttribute = artifact.getAttribute(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT)); + if (associatedArtifactAttribute != null) { + long artifactId = associatedArtifactAttribute.getValueLong(); + BlackboardArtifact associatedArtifact = artifact.getSleuthkitCase().getBlackboardArtifact(artifactId); + addDownloadSourceRow(sb, associatedArtifact); } } } catch (TskCoreException ex) { @@ -292,6 +294,26 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer { this.setCursor(null); } + /** + * Adds a row for download source from the given associated artifact, + * if the associated artifacts specifies a source. + * + * @param sb string builder. + * @param associatedArtifact + * + * @throws TskCoreException if there is an error + */ + private void addDownloadSourceRow(StringBuilder sb, BlackboardArtifact associatedArtifact ) throws TskCoreException { + if (associatedArtifact != null && + ((associatedArtifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_WEB_DOWNLOAD.getTypeID()) || + (associatedArtifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_WEB_CACHE.getTypeID())) ) { + BlackboardAttribute urlAttr = associatedArtifact.getAttribute(new BlackboardAttribute.Type(ATTRIBUTE_TYPE.TSK_URL)); + if (urlAttr != null) { + addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.downloadSource"), urlAttr.getValueString()); + } + } + } + /** * Add the acquisition details to the results (if applicable) * diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ja.properties index f139f20a19..8ce5b3ba54 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/textcontentviewer/Bundle_ja.properties @@ -1,15 +1,23 @@ -StringsTextViewer.goToPageTextField.msgDlg=\uff11\u304b\u3089{0}\u306e\u9593\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u6570\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044 -StringsTextViewer.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u6570 -StringsTextViewer.setDataView.errorText=\uff08\u30aa\u30d5\u30bb\u30c3\u30c8{0}-{1}\u306f\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff09 -StringsTextViewer.title=\u30b9\u30c8\u30ea\u30f3\u30b0 -StringsTextViewer.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 +StringsTextViewer.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +StringsTextViewer.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 +StringsTextViewer.setDataView.errorText=(\u30aa\u30d5\u30bb\u30c3\u30c8 {0}-{1} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f) +StringsTextViewer.setDataView.errorNoText=(\u30aa\u30d5\u30bb\u30c3\u30c8 {0}-{1} \u306b\u306f\u30c6\u30ad\u30b9\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093) +StringsTextViewer.title=\u6587\u5b57\u5217 +StringsTextViewer.toolTip=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u62bd\u51fa\u3057\u305fASCII\u6587\u5b57\u5217\u3068Unicode\u6587\u5b57\u5217\u3092\u8868\u793a StringsContentPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e StringsContentPanel.currentPageLabel.text_1=1 StringsContentPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -StringsContentPanel.ofLabel.text_1=of +StringsContentPanel.ofLabel.text_1=/ StringsContentPanel.totalPageLabel.text_1=100 -StringsContentPanel.languageLabel.text=\u30b9\u30af\u30ea\u30d7\u30c8\uff1a -StringsContentPanel.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\u306b\u4f7f\u7528\u3059\u308b\u8a00\u8a9e -StringsContentPanel.goToPageLabel.text=\u6b21\u306e\u30da\u30fc\u30b8\u3078\u79fb\u52d5\uff1a +StringsContentPanel.languageLabel.toolTipText= +StringsContentPanel.languageLabel.text=\u30b9\u30af\u30ea\u30d7\u30c8: +StringsContentPanel.languageCombo.toolTipText=\u30d0\u30a4\u30ca\u30ea\u30fc\u30c7\u30fc\u30bf\u306e\u6587\u5b57\u5217\u306e\u89e3\u91c8(\u62bd\u51fa\u304a\u3088\u3073\u30c7\u30b3\u30fc\u30c9)\u4e2d\u306b\u8a66\u3059\u8a00\u8a9e +StringsContentPanel.goToPageTextField.text= +StringsContentPanel.goToPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: +StringsContentPanel.prevPageButton.text= StringsContentPanel.pageLabel2.text=\u30da\u30fc\u30b8 -StringsContentPanel.pageLabel.text_1=\u30da\u30fc\u30b8\uff1a +StringsContentPanel.nextPageButton.text= +StringsContentPanel.pageLabel.text_1=\u30da\u30fc\u30b8: +TextContentViewer.title=\u30c6\u30ad\u30b9\u30c8 +TextContentViewer.tooltip=\u9078\u629e\u3057\u305f\u9805\u76ee\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a +TextContentViewerPanel.defaultName=\u30c6\u30ad\u30b9\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties index 7bd07e089b..3bda55e29c 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties @@ -1,30 +1,33 @@ +Installer.closing.confirmationDialog.message=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u7d42\u4e86\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +Installer.closing.confirmationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 +Installer.closing.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} OpenIDE-Module-Display-Category=\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u30fc OpenIDE-Module-Long-Description=\ - \u3053\u308c\u304cAutopsy\u306e\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\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\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\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30a2\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\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\u306a\u3044\u3067\u304f\u3060\u3055\u3044\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\u3053\u3061\u3089\u3067\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002http\://www.sleuthkit.org/autopsy/ -OpenIDE-Module-Name=Autopsy-\u30b3\u30a2 + \u3053\u308c\u306fAutopsy\u306e\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n\ + \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u3001RCP\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u4f5c\u6210GUI\u3001sleuthkit\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb / \u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\u3001\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u306a\u3069\u306e\u30b3\u30a2\u30c4\u30fc\u30eb\u3068\u3044\u3063\u305f\u3001\u30d9\u30a2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\n\ + \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u542b\u307e\u308c\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3001\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u4f5c\u6210\u7528API\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \ + \u30e2\u30b8\u30e5\u30fc\u30eb\u306fAutopsy\u30d7\u30e9\u30b0\u30a4\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u7528\u3044\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u3057\u3066\u5c55\u958b\u3067\u304d\u307e\u3059\u3002\n\ + \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u306a\u3044\u3068Autopsy\u304c\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002\n\n\ + \u8a73\u7d30\u306f\u3001http://www.sleuthkit.org/autopsy/ \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 +OpenIDE-Module-Name=Autopsy-Core OpenIDE-Module-Short-Description=Autopsy\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb -org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates_ja.xml +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 -ServicesMonitor.failedService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u505c\u6b62\u3057\u3066\u3044\u307e\u3059 -ServicesMonitor.failedService.notify.msg={0}\u3078\u306e\u63a5\u7d9a\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 -ServicesMonitor.restoredService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u7a3c\u50cd\u4e2d\u3067\u3059 -ServicesMonitor.restoredService.notify.msg={0}\u3078\u306e\u63a5\u7d9a\u304c\u5229\u7528\u3067\u304d\u307e\u3059 -ServicesMonitor.statusChange.notify.title=\u30b5\u30fc\u30d3\u30b9\u30b9\u30c6\u30fc\u30bf\u30b9\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8 -ServicesMonitor.statusChange.notify.msg={0}\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f{1} -ServicesMonitor.nullServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u306f\u30cc\u30eb\u3067\u3059 -ServicesMonitor.unknownServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9{0}\u306f\u4e0d\u660e\u3067\u3059 -TextConverter.convert.exception.txt=\u30c6\u30ad\u30b9\u30c8{0}\u3092hex\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -TextConverter.convertFromHex.exception.txt=hex\u30c6\u30ad\u30b9\u30c8\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -ServicesMonitor.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u3092\u898b\u3064\u3051\u308c\u307e\u305b\u3093\u3067\u3057\u305f -ServicesMonitor.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7 -ServicesMonitor.remoteCaseDatabase.displayName.text=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9 -ServicesMonitor.remoteKeywordSearch.displayName.text=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 -ServicesMonitor.messaging.displayName.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9 -ServicesMonitor.databaseConnectionInfo.error.msg=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9a\u60c5\u5831\u3092\u5165\u624b\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -ServicesMonitor.messagingService.connErr.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u306e\u63a5\u7d9a\u60c5\u5831\u3092\u5165\u624b\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f \ No newline at end of file +Installer.errorInitJavafx.msg=JavaFX\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Installer.errorInitJavafx.details=\ \u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002 \u9069\u5207\u306aJRE\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u304f\u3060\u3055\u3044(Oracle JRE 1.7.10\u4ee5\u964d)\u3002 +ServicesMonitor.failedService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ServicesMonitor.failedService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ServicesMonitor.restoredService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u5b9f\u884c\u4e2d\u3067\u3059 +ServicesMonitor.restoredService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u5b9f\u884c\u4e2d\u3067\u3059 +ServicesMonitor.statusChange.notify.title=\u30b5\u30fc\u30d3\u30b9\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0 +ServicesMonitor.statusChange.notify.msg={0} \u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f {1} \u3067\u3059 +ServicesMonitor.nullServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d\u306fnull\u3067\u3059 +ServicesMonitor.unknownServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d {0} \u306f\u4e0d\u660e\u3067\u3059 +ServicesMonitor.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +ServicesMonitor.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +ServicesMonitor.remoteCaseDatabase.displayName.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9 +ServicesMonitor.remoteKeywordSearch.displayName.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 +ServicesMonitor.messaging.displayName.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9 +ServicesMonitor.databaseConnectionInfo.error.msg=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ServicesMonitor.messagingService.connErr.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java index b65d0873fe..409e27f080 100644 --- a/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java +++ b/Core/src/org/sleuthkit/autopsy/core/UserPreferences.java @@ -81,6 +81,7 @@ public final class UserPreferences { private static final String GEO_TILE_OPTION = "GeolocationTileOption"; private static final String GEO_OSM_TILE_ZIP_PATH = "GeolocationOsmZipPath"; private static final String GEO_OSM_SERVER_ADDRESS = "GeolocationOsmServerAddress"; + private static final String GEO_MBTILES_FILE_PATH = "GeolcoationMBTilesFilePath"; // Prevent instantiation. private UserPreferences() { @@ -576,7 +577,7 @@ public final class UserPreferences { } /** - * Sets the address of the OSM tile server. + * Sets the address of geolocation window user defined OSM server data source. * * @param address */ @@ -592,4 +593,22 @@ public final class UserPreferences { public static String getGeolocationOsmServerAddress() { return preferences.get(GEO_OSM_SERVER_ADDRESS, ""); } + + /** + * Sets the path for Geolocation MBTiles data source file. + * + * @param absolutePath + */ + public static void setGeolocationMBTilesFilePath(String absolutePath) { + preferences.put(GEO_MBTILES_FILE_PATH, absolutePath); + } + + /** + * Retrieves the path for the Geolocation MBTiles data source file. + * + * @return Absolute path to MBTiles file or empty string if none was found. + */ + public static String getGeolocationMBTilesFilePath() { + return preferences.get(GEO_MBTILES_FILE_PATH, ""); + } } diff --git a/Core/src/org/sleuthkit/autopsy/core/discoveryWsmode.xml b/Core/src/org/sleuthkit/autopsy/core/discoveryWsmode.xml new file mode 100644 index 0000000000..ef5da81277 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/core/discoveryWsmode.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/core/layer.xml b/Core/src/org/sleuthkit/autopsy/core/layer.xml index 630af198a2..e853720824 100644 --- a/Core/src/org/sleuthkit/autopsy/core/layer.xml +++ b/Core/src/org/sleuthkit/autopsy/core/layer.xml @@ -448,6 +448,7 @@ + diff --git a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties index a2727c5700..91f27d6210 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponentinterfaces/Bundle_ja.properties @@ -1,3 +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\u30C4\u30EA\u30FC -CoreComponentControl.CTL_FavoritesTopComponent=\u304A\u6C17\u306B\u5165\u308A \ No newline at end of file +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\u30c4\u30ea\u30fc +CoreComponentControl.CTL_FavoritesTopComponent=\u304a\u6c17\u306b\u5165\u308a diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties index 3f1c8c2ac5..6f941632c8 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties @@ -1,117 +1,274 @@ -CTL_DataContentAction=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4 -OptionsCategory_Keywords_General=Autopsy\u30aa\u30d7\u30b7\u30e7\u30f3 -CTL_CustomAboutAction=Autopsy\u306b\u3064\u3044\u3066 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidImageSpecified.text=\u7121\u52b9\u306e\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=\u30d1\u30b9\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.pathNotSet.text=\u30a8\u30fc\u30b8\u30a7\u30f3\u30b7\u30fc\u30ed\u30b4\u30d1\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +AutopsyOptionsPanel.invalidImageFile.msg=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30fc\u30b8\u30a7\u30f3\u30b7\u30fc\u30ed\u30b4\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +AutopsyOptionsPanel.invalidImageFile.title=\u7121\u52b9\u306a\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3067\u3059 +AutopsyOptionsPanel.logNumAlert.invalidInput.text=\u3053\u3053\u3067\u306f\u6b63\u306e\u6574\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002 +AutopsyOptionsPanel.memFieldValidationLabel.developerMode.text=\u958b\u767a\u8005\u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u4e2d\u306f\u30e1\u30e2\u30ea\u30fc\u8a2d\u5b9a\u304c\u5229\u7528\u3067\u304d\u307e\u305b\u3093 +AutopsyOptionsPanel.memFieldValidationLabel.invalidCharacters.text=\u7121\u52b9\u306a\u6587\u5b57\u3067\u3059\u3002\u5024\u306f\u6b63\u306e\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +AutopsyOptionsPanel.memFieldValidationLabel.not64BitInstall.text=JVM\u30e1\u30e2\u30ea\u30fc\u8a2d\u5b9a\u306f64\u30d3\u30c3\u30c8\u7248\u306b\u306e\u307f\u6709\u52b9\u3067\u3059 +AutopsyOptionsPanel.memFieldValidationLabel.noValueEntered.text=\u5024\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +# {0} - systemMemory +AutopsyOptionsPanel.memFieldValidationLabel.overMaxMemory.text=\u5024\u306f\u5408\u8a08\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u30fc\u306e {0}GB\u4ee5\u4e0b\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +# {0} - minimumMemory +AutopsyOptionsPanel.memFieldValidationLabel.underMinMemory.text=\u5024\u306f\u5c11\u306a\u304f\u3068\u3082 {0}GB\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +CTL_DataContentAction=DataContent 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 +CTL_CustomAboutAction=\u6982\u8981 +CTL_OfflineHelpAction=Autopsy\u30aa\u30d5\u30e9\u30a4\u30f3\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +CTL_OnlineHelpAction=Autopsy\u30aa\u30f3\u30e9\u30a4\u30f3\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +DataContentViewerArtifact.attrsTableHeader.sources=\u30bd\u30fc\u30b9 +DataContentViewerArtifact.attrsTableHeader.type=\u30bf\u30a4\u30d7 +DataContentViewerArtifact.attrsTableHeader.value=\u5024 +DataContentViewerArtifact.failedToGetAttributes.message=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u4e00\u90e8\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u5c5e\u6027\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +DataContentViewerArtifact.failedToGetSourcePath.message=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +DataContentViewerHex.copyingFile=HxD\u3067\u958b\u304f\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u4e2d\u3067\u3059... +DataContentViewerHex.launchError=HxD\u30a8\u30c7\u30a3\u30bf\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3002[\u30c4\u30fc\u30eb] -> [\u30aa\u30d7\u30b7\u30e7\u30f3] -> [\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc] \u3067HxD\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5834\u6240\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044 +DataResultViewerTable.commentRender.name=C +DataResultViewerTable.commentRender.toolTip=C(\u30b3\u30e1\u30f3\u30c8)\u306f\u9805\u76ee\u306b\u30b3\u30e1\u30f3\u30c8\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u3066\u3044\u307e\u3059 +DataResultViewerTable.commentRenderer.crAndTagComment.toolTip=\u30b3\u30e1\u30f3\u30c8\u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30bf\u30b0\u306e\u4e21\u65b9\u306b\u5b58\u5728\u3057\u307e\u3059 +DataResultViewerTable.commentRenderer.crComment.toolTip=\u30b3\u30e1\u30f3\u30c8\u304c\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u5b58\u5728\u3057\u307e\u3059 +DataResultViewerTable.commentRenderer.noComment.toolTip=\u30b3\u30e1\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +DataResultViewerTable.commentRenderer.tagComment.toolTip=\u30b3\u30e1\u30f3\u30c8\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30bf\u30b0\u306b\u5b58\u5728\u3057\u307e\u3059 +DataResultViewerTable.countRender.name=O +DataResultViewerTable.countRender.toolTip=O(\u767a\u751f)\u306f\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u9805\u76ee\u3092\u542b\u3080\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6570\u3092\u793a\u3057\u3066\u3044\u307e\u3059 +DataResultViewerTable.exportCSVButtonActionPerformed.empty=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u30c7\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093 +DataResultViewerTable.firstColLbl=\u540d\u524d +DataResultViewerTable.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 +# {0} - totalPages +DataResultViewerTable.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +# {0} - currentPage +# {1} - totalPages +DataResultViewerTable.pageNumbers.curOfTotal={0} / {1} +DataResultViewerTable.scoreRender.name=S +DataResultViewerTable.scoreRender.toolTip=S(\u30b9\u30b3\u30a2)\u306f\u9805\u76ee\u304c\u8208\u5473\u6df1\u3044\u304b\u9855\u8457\u306a\u3082\u306e\u3067\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u3066\u3044\u307e\u3059 +DataResultViewerTable.title=\u30c6\u30fc\u30d6\u30eb +DataResultViewerThumbnail.sortLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8: --- +# {0} - \u30bd\u30fc\u30c8\u6761\u4ef6 +DataResultViewerThumbnail.sortLabel.textTemplate=\u6b21\u3067\u30bd\u30fc\u30c8: {0} +DataResultViewerThumbnail.thumbnailSizeComboBox.large=\u5927\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +DataResultViewerThumbnail.thumbnailSizeComboBox.medium=\u4e2d\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +DataResultViewerThumbnail.thumbnailSizeComboBox.small=\u5c0f\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +OptionsCategory_Name_General=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 +OptionsCategory_Keywords_General=Autopsy\u30aa\u30d7\u30b7\u30e7\u30f3 +HINT_DataContentTopComponent=\u3053\u308c\u306fDataContent\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059 +HINT_NodeTableTopComponent=\u3053\u308c\u306fDataResult\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059 +OpenIDE-Module-Name=CoreComponents +DataContentViewerHex.prevPageButton.text= +DataContentViewerHex.nextPageButton.text= +DataContentViewerHex.pageLabel.text_1=\u30da\u30fc\u30b8: DataContentViewerHex.currentPageLabel.text_1=1 +DataContentViewerHex.ofLabel.text_1=/ DataContentViewerHex.totalPageLabel.text_1=100 DataContentViewerHex.pageLabel2.text=\u30da\u30fc\u30b8 -Format_OperatingSystem_Value={0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3 {2} + +# \u88fd\u54c1\u60c5\u5831\u30d1\u30cd\u30eb +LBL_Description=
\n \u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3: {0} ({9})
Sleuth Kit\u30d0\u30fc\u30b8\u30e7\u30f3: {7}
Netbeans RCP\u30d3\u30eb\u30c9: {8}
Java: {1}; {2}
\u30b7\u30b9\u30c6\u30e0: {3}; {4}; {5}
Userdir: {6}
+Format_OperatingSystem_Value={2} \u4e0a\u3067 {0} \u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u304c\u5b9f\u884c\u4e2d\u3067\u3059 +LBL_Copyright=
Autopsy™ \u306fSleuth Kit&trade\u3068\u305d\u306e\u4ed6\u30c4\u30fc\u30eb\u3092\u30d9\u30fc\u30b9\u3068\u3057\u305f\u30c7\u30b8\u30bf\u30eb\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30fb\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002
\u8457\u4f5c\u6a29 © 2003-2018.
+SortChooser.dialogTitle=\u30bd\u30fc\u30c8\u6761\u4ef6\u3092\u9078\u629e +ThumbnailViewChildren.progress.cancelling=(\u53d6\u308a\u6d88\u3057\u4e2d) +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +ThumbnailViewNode.progressHandle.text={0} \u306e\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u3067\u3059 +URL_ON_IMG=http://www.sleuthkit.org/ +FILE_FOR_LOCAL_HELP=file:/// +INDEX_FOR_LOCAL_HELP=/docs/index.html LBL_Close=\u9589\u3058\u308b DataContentViewerHex.copyMenuItem.text=\u30b3\u30d4\u30fc -DataContentViewerHex.selectAllMenuItem.text=\u5168\u3066\u9078\u629e +DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e DataContentViewerArtifact.totalPageLabel.text=100 +DataContentViewerArtifact.prevPageButton.text= DataContentViewerArtifact.pageLabel2.text=\u7d50\u679c +DataContentViewerArtifact.nextPageButton.text= DataContentViewerArtifact.currentPageLabel.text=1 +DataContentViewerArtifact.ofLabel.text=/ DataContentViewerArtifact.copyMenuItem.text=\u30b3\u30d4\u30fc -DataContentViewerArtifact.selectAllMenuItem.text=\u5168\u3066\u9078\u629e -DataContentViewerArtifact.pageLabel.text=\u7d50\u679c\uff1a +DataContentViewerArtifact.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e +DataContentViewerArtifact.pageLabel.text=\u7d50\u679c: AdvancedConfigurationDialog.applyButton.text=OK -DataContentViewerHex.goToPageLabel.text=\u6b21\u306e\u30da\u30fc\u30b8\u3078\u79fb\u52d5\uff1a -DataResultViewerThumbnail.pageLabel.text=\u30da\u30fc\u30b8\uff1a -DataResultViewerThumbnail.pagesLabel.text=\u30da\u30fc\u30b8\uff1a -DataResultViewerThumbnail.imagesLabel.text=\u30a4\u30e1\u30fc\u30b8\uff1a +DataContentViewerHex.goToPageTextField.text= +DataContentViewerHex.goToPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: +DataResultViewerThumbnail.pageLabel.text=\u30da\u30fc\u30b8: +DataResultViewerThumbnail.pagesLabel.text=\u30da\u30fc\u30b8: +DataResultViewerThumbnail.pagePrevButton.text= +DataResultViewerThumbnail.pageNextButton.text= +DataResultViewerThumbnail.imagesLabel.text=\u30a4\u30e1\u30fc\u30b8: DataResultViewerThumbnail.imagesRangeLabel.text=- DataResultViewerThumbnail.pageNumLabel.text=- -DataResultViewerThumbnail.goToPageLabel.text=\u6b21\u306e\u30da\u30fc\u30b8\u306b\u79fb\u52d5\uff1a -AdvancedConfigurationDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -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... -DataContentViewerArtifact.errorText=\u7d50\u679c\u3092\u53d6\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +DataResultViewerThumbnail.filePathLabel.text=\ \ \ +DataResultViewerThumbnail.goToPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: +DataResultViewerThumbnail.goToPageField.text= +AdvancedConfigurationDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +DataContentViewerArtifact.waitText=\u30c7\u30fc\u30bf\u3092\u691c\u7d22\u3057\u3066\u6e96\u5099\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +DataContentViewerArtifact.errorText=\u7d50\u679c\u306e\u691c\u7d22\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 -DataResultPanel.pleasewaitNodeDisplayName=\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u2026 -DataResultViewerTable.firstColLbl=\u540d\u524d -DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5b9a\u3055\u308c\u305f\u30da\u30a2\u30ec\u30f3\u30c8\u304b\u3089\u30c1\u30e3\u30a4\u30eb\u30c9\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\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.pleasewaitNodeDisplayName=\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u2026 +DataContentViewerArtifact.toolTip=\u30d5\u30a1\u30a4\u30eb\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u7d50\u679c\u3092\u8868\u793a +DataContentViewerHex.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +DataContentViewerHex.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 +DataContentViewerHex.setDataView.errorText=(\u30aa\u30d5\u30bb\u30c3\u30c8 {0}-{1} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f) +DataContentViewerHex.title=16\u9032\u6570 +DataContentViewerHex.toolTip=\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30a4\u30ca\u30ea\u30fc\u30b3\u30f3\u30c6\u30f3\u30c4\u309216\u9032\u6570\u3068\u3057\u3066\u8868\u793a\u3057\u307e\u3059\u3002\u53f3\u5074\u306bASCII\u6587\u5b57\u3068\u3057\u3066\u8868\u793a\u53ef\u80fd\u306a\u30d0\u30a4\u30c8\u304c\u793a\u3055\u308c\u307e\u3059\u3002 +DataResultPanel.pleasewaitNodeDisplayName=\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5b9a\u3057\u305f\u89aa\u304b\u3089\u5b50\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u5b50\u30ce\u30fc\u30c9\u306b\u306f\u6b63\u898f\u306ePropertySet\u304c\u3042\u308a\u307e\u305b\u3093\u3002 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}\u76ee +DataResultViewerThumbnail.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 +DataResultViewerThumbnail.genThumbs=\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u3067\u3059... +DataResultViewerThumbnail.pageNumbers.curOfTotal={0} / {1} 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\u3092\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 -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.
-ProductInformationPanel.verbLoggingEnabled.text=Verbose\u30ed\u30b0\u304c\u6709\u52b9\u3067\u3059 +GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +ProductInformationPanel.verbLoggingEnabled.text=\u8a73\u7d30\u30ed\u30ae\u30f3\u30b0\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059 ProductInformationPanel.propertyUnknown.text=\u4e0d\u660e ProductInformationPanel.getVMValue.text={0} {1} TableFilterNode.displayName.text=\u540d\u524d -DataContentViewerHex.ofLabel.text_1=of -DataContentViewerArtifact.ofLabel.text=of -DataContentViewerString.setDataView.errorNoText=\uff08\u30aa\u30d5\u30bb\u30c3\u30c8{0}-{1}\u306b\u306f\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\uff09 -DataResultViewerThumbnail.comboBox.smallThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5c0f\uff09 -DataResultViewerThumbnail.comboBox.mediumThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u4e2d\uff09 -DataResultViewerThumbnail.comboBox.largeThumbnails=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5927\uff09 -DataResultViewerThumbnail.switchPage.done.errMsg=\u30b5\u30e0\u30cd\u30a4\u30eb\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} -AboutWindowPanel.actVerboseLogging.text=Verbose\u30ed\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8 -OptionsCategory_Name_Multi_User_Settings=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc -OptionsCategory_Keywords_Multi_User_Options=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u30aa\u30d7\u30b7\u30e7\u30f3 +DataResultViewerThumbnail.comboBox.smallThumbnails=\u5c0f\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +DataResultViewerThumbnail.comboBox.mediumThumbnails=\u4e2d\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +DataResultViewerThumbnail.comboBox.largeThumbnails=\u5927\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb +DataResultViewerThumbnail.switchPage.done.errMsg=\u6b21\u306e\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +AboutWindowPanel.actVerboseLogging.text=\u8a73\u7d30\u30ed\u30ae\u30f3\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316 +OptionsCategory_Name_Multi_User_Settings=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc +OptionsCategory_Keywords_Multi_User_Options=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a MultiUserSettingsPanel.lbSolrSettings.text=Solr\u8a2d\u5b9a -MultiUserSettingsPanel.cbEnableMultiUser.text=\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u6709\u52b9\u5316 +MultiUserSettingsPanel.cbEnableMultiUser.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u6709\u52b9\u5316 MultiUserSettingsPanel.lbDatabaseSettings.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a -MultiUserSettingsPanel.validationErrMsg.incomplete=\u5168\u3066\u306e\u30d0\u30ea\u30e5\u30fc\u3092\u5165\u529b -MultiUserSettingsPanel.nonWindowsOs.msg=Windows\u3067\u3057\u304b\u8907\u6570\u306e\u30e6\u30fc\u30b6\u30fc\u7248\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 -MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=\u7121\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=\u7121\u52b9\u306aSolr\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.validationErrMsg.invalidMessgeServiceURI=\u7121\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u30db\u30b9\u30c8\u3084\u30dd\u30fc\u30c8\u756a\u53f7 +MultiUserSettingsPanel.validationErrMsg.incomplete=\u3059\u3079\u3066\u306e\u5024\u3092\u5165\u529b +MultiUserSettingsPanel.nonWindowsOs.msg=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u306fWindows\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0a\u3067\u306e\u307f\u5229\u7528\u3067\u304d\u307e\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=\u7121\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=\u7121\u52b9\u306aSolr \u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidMessgeServiceURI=\u6709\u52b9\u3067\u306f\u306a\u3044\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u30db\u30b9\u30c8\u304a\u3088\u3073/\u307e\u305f\u306f\u30dd\u30fc\u30c8\u3067\u3059 DataContentViewerHex.goToOffsetLabel.text=\u30aa\u30d5\u30bb\u30c3\u30c8\u306b\u30b8\u30e3\u30f3\u30d7 -DataContentViewerHex.goToOffsetTextField.msgDlg=\u7121\u52b9\u306a\u30aa\u30d5\u30bb\u30c3\u30c8\uff1a{0} -DataContentViewerHex.setDataView.invalidOffset.negativeOffsetValue=\u8a08\u7b97\u3055\u308c\u305f\u30aa\u30d5\u30bb\u30c3\u30c8\u306b\u30b8\u30e3\u30f3\u30d7\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +DataContentViewerHex.goToOffsetTextField.text= +DataContentViewerHex.goToOffsetTextField.msgDlg=\u7121\u52b9\u306a\u30aa\u30d5\u30bb\u30c3\u30c8: {0} +DataContentViewerHex.setDataView.invalidOffset.negativeOffsetValue=\u7d50\u679c\u3068\u3057\u3066\u751f\u3058\u305f\u30aa\u30d5\u30bb\u30c3\u30c8\u306b\u30b8\u30e3\u30f3\u30d7\u3067\u304d\u307e\u305b\u3093 +MultiUserSettingsPanel.tbOops.text= +MultiUserSettingsPanel.lbTestDatabase.text= MultiUserSettingsPanel.bnTestDatabase.text=\u30c6\u30b9\u30c8 MultiUserSettingsPanel.tbDbHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 +MultiUserSettingsPanel.tbDbHostname.text= MultiUserSettingsPanel.tbDbPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.tbDbUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d +MultiUserSettingsPanel.tbDbPort.text= +MultiUserSettingsPanel.tbDbUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d +MultiUserSettingsPanel.tbDbUsername.text= MultiUserSettingsPanel.tbDbPassword.toolTipText=\u30d1\u30b9\u30ef\u30fc\u30c9 +MultiUserSettingsPanel.tbDbPassword.text= +MultiUserSettingsPanel.lbTestSolr.text= MultiUserSettingsPanel.bnTestSolr.text=\u30c6\u30b9\u30c8 MultiUserSettingsPanel.tbSolrHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 MultiUserSettingsPanel.tbSolrPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 +MultiUserSettingsPanel.lbTestMessageService.text= MultiUserSettingsPanel.bnTestMessageService.text=\u30c6\u30b9\u30c8 MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u8a2d\u5b9a MultiUserSettingsPanel.tbMsgPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.tbMsgUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d\uff08\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff09 -MultiUserSettingsPanel.tbMsgPassword.toolTipText=\u30d1\u30b9\u30ef\u30fc\u30c9\uff08\u30aa\u30d7\u30b7\u30e7\u30ca\u30eb\uff09 +MultiUserSettingsPanel.tbMsgPort.text= +MultiUserSettingsPanel.tbMsgUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d(\u4efb\u610f) +MultiUserSettingsPanel.tbMsgUsername.text= +MultiUserSettingsPanel.tbMsgPassword.toolTipText=\u30d1\u30b9\u30ef\u30fc\u30c9(\u4efb\u610f) +MultiUserSettingsPanel.tbMsgPassword.text= MultiUserSettingsPanel.tbMsgHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 -MultiUserSettingsPanel.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u3092\u898b\u3064\u3051\u308c\u3089\u308c\u307e\u305b\u3093 -MultiUserSettingsPanel.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7 -CTL_OfflineHelpAction=\u30aa\u30d5\u30e9\u30a4\u30f3Autopsy\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 -CTL_OnlineHelpAction=\u30aa\u30f3\u30e9\u30a4\u30f3Autopsy\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 -DataResultViewerThumbnail.thumbnailSizeComboBox.large=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5927\uff09 -DataResultViewerThumbnail.thumbnailSizeComboBox.medium=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u4e2d\uff09 -DataResultViewerThumbnail.thumbnailSizeComboBox.small=\u30b5\u30e0\u30cd\u30a4\u30eb\uff08\u5c0f\uff09 -MediaViewImagePanel.errorLabel.OOMText=\u30d5\u30a1\u30a4\u30eb\u3092\u30e1\u30c7\u30a3\u30a2\u30d3\u30e5\u30fc\u306b\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\uff1a\u30e1\u30e2\u30ea\u4e0d\u8db3\u3002 -MediaViewImagePanel.errorLabel.text=\u30d5\u30a1\u30a4\u30eb\u3092\u30e1\u30c7\u30a3\u30a2\u30d3\u30e5\u30fc\u306b\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -MediaViewImagePanel.externalViewerButton.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u30fc\u3067\u958b\u304f +MultiUserSettingsPanel.tbMsgHostname.text= +MultiUserSettingsPanel.lbTestMessageWarning.text= +MultiUserSettingsPanel.lbTestSolrWarning.text= +MultiUserSettingsPanel.lbTestDbWarning.text= +MultiUserSettingsPanel.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +MultiUserSettingsPanel.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 +AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText= +AutopsyOptionsPanel.agencyLogoPathField.text= +SortChooserDialog.label=\u524a\u9664 +SortChooser.addCriteriaButton.text=\u30bd\u30fc\u30c8\u6761\u4ef6\u3092\u8ffd\u52a0 +DataResultViewerThumbnail.sortButton.text=\u30bd\u30fc\u30c8 +CriterionChooser.ascendingRadio.text=\u25b2 \u6607\u9806\n +CriterionChooser.removeButton.text=\u524a\u9664 +CriterionChooser.descendingRadio.text=\u25bc \u964d\u9806 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.text= +AutopsyOptionsPanel.logNumAlert.text= +AutopsyOptionsPanel.totalMemoryLabel.text=\u5408\u8a08\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u30fc: +AutopsyOptionsPanel.maxMemoryLabel.text=\u6700\u5927JVM\u30e1\u30e2\u30ea\u30fc: +AutopsyOptionsPanel.maxLogFileCount.text=\u6700\u5927\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u6570: +AutopsyOptionsPanel.maxMemoryUnitsLabel.text=GB +AutopsyOptionsPanel.restartNecessaryWarning.text=\u30e1\u30e2\u30ea\u30fc\u5909\u66f4\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 +AutopsyOptionsPanel.browseLogosButton.text=\u53c2\u7167 +AutopsyOptionsPanel.defaultLogoRB.text=\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528 +AutopsyOptionsPanel.specifyLogoRB.text=\u30ed\u30b4\u3092\u6307\u5b9a +AutopsyOptionsPanel.agencyLogoPreview.text=
\u30ed\u30b4\u304c\u3042\u308a\u307e\u305b\u3093
selected
+AutopsyOptionsPanel.logoPanel.border.title=\u30ed\u30b4 +AutopsyOptionsPanel.runtimePanel.border.title=\u30e9\u30f3\u30bf\u30a4\u30e0 DataResultPanel.matchLabel.text=\u7d50\u679c DataResultPanel.numberOfChildNodesLabel.text=0 -DataResultPanel.descriptionLabel.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d1\u30b9 +DataResultPanel.descriptionLabel.text=directoryPath +ViewOptionsController.moduleErr=\u5024\u306e\u5909\u66f4\u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ViewOptionsController.moduleErr.msg=\u5024\u306e\u5909\u66f4\u306e\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +ViewPreferencesPanel.groupByDataSourceCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316 +ViewPreferencesPanel.currentCaseSettingsPanel.border.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u8a2d\u5b9a +OptionsCategory_Name_View=\u8868\u793a +OptionsCategory_Keywords_View=\u8868\u793a +ViewPreferencesPanel.currentSessionSettingsPanel.border.title=\u73fe\u5728\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a +ViewPreferencesPanel.hideRejectedResultsCheckbox.text=\u62d2\u5426\u3055\u308c\u305f\u7d50\u679c\u3092\u975e\u8868\u793a\u306b\u3059\u308b +ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u9078\u629e\u6642: +ViewPreferencesPanel.globalSettingsPanel.border.title=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +ViewPreferencesPanel.translateTextLabel.text=\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33: +ViewPreferencesPanel.hideOtherUsersTagsLabel.text=\u6b21\u306e\u305d\u306e\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30bf\u30b0\u3092\u975e\u8868\u793a\u306b\u3059\u308b: +ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=\u30c4\u30ea\u30fc\u5185\u306e\u30bf\u30b0\u9818\u57df +ViewPreferencesPanel.useAnotherTimeRadioButton.text=\u5225\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 ViewPreferencesPanel.useLocalTimeRadioButton.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 -ViewPreferencesPanel.displayTimeLabel.text=\u6642\u9593\u3092\u8868\u793a\u3059\u308b\u5834\u5408\uff1a -ViewPreferencesPanel.viewsHideKnownCheckbox.text=\u30d3\u30e5\u30fc\u30a8\u30ea\u30a2 -ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a8\u30ea\u30a2\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u968e\u5c64\uff09 -ViewPreferencesPanel.hideKnownFilesLabel.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NIST NSRL\u5185\u306e\uff09\u3092\u6b21\u306b\u96a0\u3059\uff1a -ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u305d\u306e\u307e\u307eHEX\u30d3\u30e5\u30fc\u3092\u4f7f\u7528\u3002 -ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u305d\u306e\u307e\u307e\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u3092\u4f7f\u7528 -ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u4f8b\u3048\u3070\u3001JPEG\u304c\u9078\u629e\u3055\u308c\u305f\u5834\u5408\u306b\u306fHEX\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5909\u66f4\u3059\u308b\u3002 -ViewPreferencesPanel.useBestViewerRadioButton.text=\u6700\u3082\u5c02\u9580\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u30a2\u306b\u5909\u66f4 -ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5834\u5408\uff1a +ViewPreferencesPanel.displayTimeLabel.text=\u6642\u523b\u8868\u793a\u6642: +ViewPreferencesPanel.viewsHideSlackCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df +ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) +ViewPreferencesPanel.hideSlackFilesLabel.text=\u6b21\u306e\u30b9\u30e9\u30c3\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a\u306b\u3059\u308b: +ViewPreferencesPanel.viewsHideKnownCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df +ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) +ViewPreferencesPanel.hideKnownFilesLabel.text=\u6b21\u306e\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb(NIST NSRL\u5185\u306e\u30d5\u30a1\u30a4\u30eb)\u3092\u975e\u8868\u793a\u306b\u3059\u308b: +ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002 +ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3059\u308b +ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002 +ViewPreferencesPanel.useBestViewerRadioButton.text=\u6700\u3082\u56fa\u6709\u306e\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u306b\u5207\u308a\u66ff\u3048\u308b +ViewPreferencesPanel.fileNameTranslationColumnCheckbox.text=\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u306b\u30d5\u30a1\u30a4\u30eb\u540d\u7ffb\u8a33\u7528\u5217\u3092\u8ffd\u52a0 +DataContentViewerHex.launchHxDButton.text=HxD\u3067\u8d77\u52d5 +ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.newRuleButton.text=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=\u53c2\u7167 +ExternalViewerGlobalSettingsPanel.jLabel2.text=\u8d77\u52d5\u53ef\u80fd\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u306e\u62e1\u5f35\u5b50\u3092\u8a2d\u5b9a +ExternalViewerGlobalSettingsPanel.jLabel1.text=HxD\u30a8\u30c7\u30a3\u30bf\u30fc\u30d1\u30b9: +ExternalViewerGlobalSettingsPanel.editRuleButton.text=\u30eb\u30fc\u30eb\u3092\u7de8\u96c6 +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=\u30eb\u30fc\u30eb\u3092\u524a\u9664 +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=\u7279\u5b9a\u306eMIME\u30bf\u30a4\u30d7/\u62e1\u5f35\u5b50\u3092\u3082\u3064\u30d5\u30a1\u30a4\u30eb\u306b\u4f7f\u7528\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d3\u30e5\u30fc\u30ef\u30fc\u3092\u8a2d\u5b9a: +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0=MIME\u30bf\u30a4\u30d7/\u62e1\u5f35\u5b50 +AddExternalViewerRulePanel.nameLabel.text=MIME\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50 +AddExternalViewerRulePanel.browseButton.text=\u53c2\u7167 +AddExternalViewerRulePanel.exePathTextField.text= +AddExternalViewerRulePanel.exePathLabel.text=\u3053\u306e\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d1\u30b9 +AddExternalViewerRulePanel.extRadioButton.text=\u62e1\u5f35\u5b50 +AddExternalViewerRulePanel.mimeRadioButton.text=MIME\u30bf\u30a4\u30d7 +AddExternalViewerRulePanel.nameTextField.text= +ExternalViewerGlobalSettingsPanel.jButton2.text_1=jButton2 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text_1=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.newRuleButton.text_1=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text_1=\u53c2\u7167 +ExternalViewerGlobalSettingsPanel.jLabel2.text_1=\u8d77\u52d5\u53ef\u80fd\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u306e\u62e1\u5f35\u5b50\u3092\u8a2d\u5b9a +ExternalViewerGlobalSettingsPanel.jLabel1.text_1=HxD\u30a8\u30c7\u30a3\u30bf\u30fc\u30d1\u30b9: +ExternalViewerGlobalSettingsPanel.HxDPath.text=C:/Program Files/HxD/HxD.exe +ExternalViewerGlobalSettingsPanel.editRuleButton.text_1=\u30eb\u30fc\u30eb\u3092\u7de8\u96c6 +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text_1=\u30eb\u30fc\u30eb\u3092\u524a\u9664 +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text_1=\u7279\u5b9a\u306eMIME\u30bf\u30a4\u30d7/\u62e1\u5f35\u5b50\u3092\u3082\u3064\u30d5\u30a1\u30a4\u30eb\u306b\u4f7f\u7528\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d3\u30e5\u30fc\u30ef\u30fc\u3092\u8a2d\u5b9a: +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title1_1=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title0_1=MIME\u30bf\u30a4\u30d7/\u62e1\u5f35\u5b50 +AutopsyOptionsPanel.maxSolrMemoryLabel.text=\u6700\u5927SolrJVM\u30e1\u30e2\u30ea\u30fc: +AutopsyOptionsPanel.maxMemoryUnitsLabel2.text=MB +AutopsyOptionsPanel.solrJVMHeapWarning.text=\u6ce8: \u3053\u308c\u3092\u3042\u307e\u308a\u306b\u3082\u5927\u304d\u304f\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5168\u4f53\u306b\u5f71\u97ff\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +DataResultViewerTable.gotoPageTextField.text= +DataResultViewerTable.gotoPageLabel.AccessibleContext.accessibleName= +DataResultViewerTable.gotoPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: +DataResultViewerTable.pageNextButton.text= +DataResultViewerTable.pagePrevButton.text= +DataResultViewerTable.pagesLabel.text=\u30da\u30fc\u30b8: +DataResultViewerTable.pageNumLabel.text= +DataResultViewerTable.pageLabel.text=\u30da\u30fc\u30b8: +ViewPreferencesPanel.maxResultsLabel.text=\u30c6\u30fc\u30d6\u30eb\u3067\u8868\u793a\u3059\u308b\u6700\u5927\u7d50\u679c\u6570: +ViewPreferencesPanel.maxResultsLabel.toolTipText=\n\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u7d50\u679c\u304c\u7d50\u679c\u30c6\u30fc\u30d6\u30eb\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\n
\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u7d50\u679c\u6570\u304c\u591a\u3044\u5834\u5408UI\u306e\u5fdc\u7b54\u6027\u304c\u60aa\u304f\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059 \u3002\n +DataResultViewerTable.exportCSVButton.text=\u30c6\u30fc\u30d6\u30eb\u3092CSV\u3068\u3057\u3066\u4fdd\u5b58 +ViewPreferencesPanel.scoColumnsCheckbox.text=S(\u30b9\u30b3\u30a2)\u3001C(\u30b3\u30e1\u30f3\u30c8)\u3001O(\u767a\u751f) +ViewPreferencesPanel.scoColumnsWrapAroundText.text=\u975e\u8868\u793a\u306b\u3059\u308b\u3068\u8aad\u8fbc\u307f\u304c\u65e9\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +ViewPreferencesPanel.scoColumnsLabel.text=\u6b21\u306e\u305f\u3081\u306e\u5217\u3092\u8ffd\u52a0\u3057\u306a\u3044: diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ja.properties index 861bb54da9..5f460a7c53 100644 --- a/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/coreutils/Bundle_ja.properties @@ -1,27 +1,35 @@ -OpenIDE-Module-Name=\u4E3B\u8981\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3 -JLNK.noPrefPath.text=\u512A\u5148\u7684\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -PlatformUtil.nameUnknown=\u4E0D\u660E -PlatformUtil.verUnknown=\u4E0D\u660E -PlatformUtil.archUnknown=\u4E0D\u660E -PlatformUtil.jrePath.jreDir.msg=\u57CB\u3081\u8FBC\u307E\u308C\u305FJRE\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u767A\u898B\u3055\u308C\u307E\u3057\u305F\uFF1A{0} -PlatformUtil.jrePath.usingJavaPath.msg=JAVA\u30D0\u30A4\u30CA\u30EA\u30D1\u30B9\u3092\u4F7F\u7528\uFF1A{0} -PlatformUtil.getPID.sigarNotInit.msg=PID\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -PlatformUtil.getPID.gen.msg=PID\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001{0} -PlatformUtil.getJavaPID.sigarNotInit.msg=JAVA\u30D7\u30ED\u30BB\u30B9\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -PlatformUtil.getJavaPID.gen.msg=\u30AF\u30A8\u30EA\u30FC\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\uFF1A{0}, {1} -PlatformUtil.getJavaPIDs.sigarNotInit=JAVA\u30D7\u30ED\u30BB\u30B9\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -PlatformUtil.getJavaPIDs.gen.msg=\u30AF\u30A8\u30EA\u30FC\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\uFF1A{0}, {1} -PlatformUtil.killProcess.sigarNotInit.msg=PID\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30ED\u30BB\u30B9\u3092\u5F37\u5236\u7D42\u4E86\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 -PlatformUtil.killProcess.gen.msg=\u30D7\u30ED\u30BB\u30B9\u3092\u5F37\u5236\u7D42\u4E86\u3067\u304D\u307E\u305B\u3093\uFF1A {0}, {1} -PlatformUtil.getProcVmUsed.sigarNotInit.msg=\u4F7F\u7528\u4E2D\u306E\u4EEE\u60F3\u30E1\u30E2\u30EA\u91CF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 -PlatformUtil.getProcVmUsed.gen.msg=\u4F7F\u7528\u4E2D\u306E\u4EEE\u60F3\u30E1\u30E2\u30EA\u91CF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001{0} -PlatformUtil.getJvmMemInfo.usageText=JVM\u30D2\u30FC\u30D7\u4F7F\u7528\u72B6\u6CC1\uFF1A{0}\u3001JVM\u975E\u30D2\u30FC\u30D7\u4F7F\u7528\u72B6\u6CC1\uFF1A{1} -PlatformUtil.getPhysicalMemInfo.usageText=\u7269\u7406\u30E1\u30E2\u30EA\u4F7F\u7528\u72B6\u6CC1\uFF08\u6700\u5927\u3001\u5408\u8A08\u3001\u5229\u7528\u53EF\u80FD\uFF09\uFF1A {0}, {1}, {2} +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +GetOrGenerateThumbnailTask.generatingPreviewFor={0} \u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u3092\u751f\u6210\u4e2d\u3067\u3059 +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +GetOrGenerateThumbnailTask.loadingThumbnailFor={0} \u306e\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059 +ImageUtils.ffmpegLoadedError.msg=OpenCV FFMpeg\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u304c\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 +ImageUtils.ffmpegLoadedError.title=OpenCV FFMpeg +OpenIDE-Module-Name=CoreUtils +JLNK.noPrefPath.text=\u63a8\u5968\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +PlatformUtil.nameUnknown=\u4e0d\u660e +PlatformUtil.verUnknown=\u4e0d\u660e +PlatformUtil.archUnknown=\u4e0d\u660e +PlatformUtil.jrePath.jreDir.msg=\u57cb\u3081\u8fbc\u307fjre\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304c\u691c\u51fa\u3055\u308c\u305f\u5834\u6240: {0} +PlatformUtil.jrePath.usingJavaPath.msg=\u6b21\u306ejava\u30d0\u30a4\u30ca\u30ea\u30fc\u30d1\u30b9\u3092\u4f7f\u7528\u4e2d\u3067\u3059: {0} +PlatformUtil.getPID.sigarNotInit.msg=PID\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002Sigar\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PlatformUtil.getPID.gen.msg=PID,{0} \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093 +PlatformUtil.getJavaPID.sigarNotInit.msg=java\u30d7\u30ed\u30bb\u30b9\u306ePID\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002Sigar\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PlatformUtil.getJavaPID.gen.msg=\u6b21\u306e\u30af\u30a8\u30ea\u306ePID\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093: {0}\u3001{1} +PlatformUtil.getJavaPIDs.sigarNotInit=java\u30d7\u30ed\u30bb\u30b9\u306ePID\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002Sigar\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PlatformUtil.getJavaPIDs.gen.msg=\u6b21\u306e\u30af\u30a8\u30ea\u306ePID\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093: {0}\u3001{1} +PlatformUtil.killProcess.sigarNotInit.msg=PID\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u5f37\u5236\u7d42\u4e86\u3067\u304d\u307e\u305b\u3093\u3002Sigar\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PlatformUtil.killProcess.gen.msg=\u6b21\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u5f37\u5236\u7d42\u4e86\u3067\u304d\u307e\u305b\u3093: {0}\u3001{1} +PlatformUtil.getProcVmUsed.sigarNotInit.msg=\u4f7f\u7528\u3057\u3066\u3044\u308b\u4eee\u60f3\u30e1\u30e2\u30ea\u30fc\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002Sigar\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +PlatformUtil.getProcVmUsed.gen.msg=\u4f7f\u7528\u3057\u3066\u3044\u308b\u4eee\u60f3\u30e1\u30e2\u30ea\u30fc\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3001{0} +PlatformUtil.getJvmMemInfo.usageText=JVM \u30d2\u30fc\u30d7\u4f7f\u7528\u7387: {0}\u3001\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044JVM\u30d2\u30fc\u30d7\u9818\u57df: {1} +PlatformUtil.getPhysicalMemInfo.usageText=\u7269\u7406\u30e1\u30e2\u30ea\u30fc\u4f7f\u7528\u7387\uff08\u6700\u5927\u3001\u5408\u8a08\u3001\u7a7a\u304d\uff09: {0}\u3001{1}\u3001{2} PlatformUtil.getAllMemUsageInfo.usageText={0}\n\ {1}\n\ -\u30D7\u30ED\u30BB\u30B9\u4EEE\u60F3\u30E1\u30E2\u30EA\uFF1A{2} -StringExtract.illegalStateException.cannotInit.msg=\u30E6\u30CB\u30B3\u30FC\u30C9\u30C6\u30FC\u30D6\u30EB\u304C\u6B63\u3057\u304F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3001StringExtract\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093 -ImageUtils.GetOrGenerateThumbnailTask.loadingThumbnailFor={0}\u306E\u30B5\u30E0\u30CD\u30FC\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D -ImageUtils.GetOrGenerateThumbnailTask.generatingPreviewFor={0}\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u4F5C\u6210\u4E2D -ImageUtils.ReadImageTask.mesage.text={0}\u3092\u8AAD\u307F\u53D6\u308A\u4E2D -VideoUtils.genVideoThumb.progress.text=\u4E00\u6642\u30D5\u30A1\u30A4\u30EB{0}\u3092\u62BD\u51FA\u4E2D \ No newline at end of file +\u6b21\u306e\u4eee\u60f3\u30e1\u30e2\u30ea\u30fc\u3092\u51e6\u7406: {2} +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +ReadImageTask.mesageText=\u6b21\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059: {0} +StringExtract.illegalStateException.cannotInit.msg=Unicode\u30c6\u30fc\u30d6\u30eb\u304c\u6b63\u3057\u304f\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002StringExtract\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093 +TextConverter.convert.exception.txt=\u30c6\u30ad\u30b9\u30c8 {0} \u309216\u9032\u6570\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093 +TextConverter.convertFromHex.exception.txt=16\u9032\u6570\u30c6\u30ad\u30b9\u30c8\u3092\u30c6\u30ad\u30b9\u30c8\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093 +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +VideoUtils.genVideoThumb.progress.text=\u4e00\u6642\u30d5\u30a1\u30a4\u30eb {0} \u3092\u62bd\u51fa\u4e2d\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED index 0e0df5a58c..ae4211741a 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED @@ -268,10 +268,10 @@ ImageNode.getActions.viewInNewWin.text=View in New Window ImageNode.createSheet.name.name=Name ImageNode.createSheet.name.displayName=Name ImageNode.createSheet.name.desc=no description -Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI test call returned without error, but version string was null! -Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI test call returned without error, but version string was ""! -Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed!\n\nDetails: {0} -Installer.tskLibErr.err=Fatal Error! +Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI test call returned without error, but version string was null\! +Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI test call returned without error, but version string was ""\! +Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\n\nDetails: {0} +Installer.tskLibErr.err=Fatal Error\! InterestingHits.interestingItems.text=INTERESTING ITEMS InterestingHits.displayName.text=Interesting Items InterestingHits.createSheet.name.name=Name @@ -301,6 +301,15 @@ OpenReportAction.actionPerformed.NoAssociatedEditorMessage=There is no associate OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=This platform (operating system) does not support opening a file in an editor this way. OpenReportAction.actionPerformed.MissingReportFileMessage=The report file no longer exists. OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=Permission to open the report file was denied. +PoolNode.createSheet.name.desc=no description +PoolNode.createSheet.name.displayName=Name +PoolNode.createSheet.name.name=Name +PoolNode.createSheet.offset.desc=no description +PoolNode.createSheet.offset.displayName=Starting offset +PoolNode.createSheet.offset.name=Starting offset +PoolNode.createSheet.type.desc=no description +PoolNode.createSheet.type.displayName=Type +PoolNode.createSheet.type.name=Type RecentFiles.aut0DayFilter.displayName.text=Final Day RecentFiles.aut1dayFilter.displayName.text=Final Day - 1 RecentFiles.aut2dayFilter.displayName.text=Final Day - 2 diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties index 2f91dfb27a..ee9b6fb4b6 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties @@ -1,26 +1,179 @@ -OpenIDE-Module-Name=\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb -AbstractAbstractFileNode.nameColLbl=\u540d\u524d -AbstractAbstractFileNode.locationColLbl=\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 -AbstractAbstractFileNode.modifiedTimeColLbl=\u4fee\u6b63\u65e5\u6642 -AbstractAbstractFileNode.changeTimeColLbl=\u5909\u66f4\u65e5\u6642 -AbstractAbstractFileNode.accessTimeColLbl=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -AbstractAbstractFileNode.createdTimeColLbl=\u4f5c\u6210\u65e5\u6642 -AbstractAbstractFileNode.sizeColLbl=\u30b5\u30a4\u30ba -AbstractAbstractFileNode.modeColLbl=\u30e2\u30fc\u30c9 -AbstractAbstractFileNode.useridColLbl=\u30e6\u30fc\u30b6ID +AbstractAbstractFileNode.accessTimeColLbl=\u30a2\u30af\u30bb\u30b9\u6642\u523b +AbstractAbstractFileNode.attrAddrColLbl=\u5c5e\u6027\u30a2\u30c9\u30ec\u30b9 +AbstractAbstractFileNode.changeTimeColLbl=\u6642\u523b\u5909\u66f4 +AbstractAbstractFileNode.createdTimeColLbl=\u4f5c\u6210\u3057\u305f\u6642\u523b +AbstractAbstractFileNode.createSheet.comment.displayName=C +AbstractAbstractFileNode.createSheet.comment.name=C +# {0} - occurrenceCount +AbstractAbstractFileNode.createSheet.count.description=MD5\u76f8\u95a2\u5024\u304c\u767a\u751f\u3057\u305f {0} \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f +AbstractAbstractFileNode.createSheet.count.displayName=O +AbstractAbstractFileNode.createSheet.count.hashLookupNotRun.description=\u5217\u304c\u5165\u529b\u3055\u308c\u305f\u3068\u304d\u306b\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u4e0a\u3067\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f +AbstractAbstractFileNode.createSheet.count.name=O +AbstractAbstractFileNode.createSheet.interestingResult.description=\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u8208\u5473\u6df1\u3044\u7d50\u679c\u304c\u3042\u308a\u307e\u3059\u3002 +AbstractAbstractFileNode.createSheet.noScore.description=\u30b9\u30b3\u30a2\u306a\u3057 +AbstractAbstractFileNode.createSheet.notableFile.description=\u9855\u8457\u3068\u8a8d\u8b58\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +AbstractAbstractFileNode.createSheet.notableTaggedFile.description=\u9855\u8457\u30bf\u30b0\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +AbstractAbstractFileNode.createSheet.score.displayName=S +AbstractAbstractFileNode.createSheet.score.name=S +AbstractAbstractFileNode.createSheet.taggedFile.description=\u30d5\u30a1\u30a4\u30eb\u304c\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3057\u305f\u3002 +AbstractAbstractFileNode.extensionColLbl=\u62e1\u5f35\u5b50 +AbstractAbstractFileNode.flagsDirColLbl=\u30d5\u30e9\u30b0(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc) +AbstractAbstractFileNode.flagsMetaColLbl=\u30d5\u30e9\u30b0(\u30e1\u30bf) AbstractAbstractFileNode.groupidColLbl=\u30b0\u30eb\u30fc\u30d7ID AbstractAbstractFileNode.knownColLbl=\u65e2\u77e5 +AbstractAbstractFileNode.locationColLbl=\u5834\u6240 AbstractAbstractFileNode.md5HashColLbl=MD5\u30cf\u30c3\u30b7\u30e5 -AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg=\u6307\u5b9a\u3055\u308c\u305fSleuthkitItem\u306e\u30ce\u30fc\u30c9\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg=\u6307\u5b9a\u3055\u308c\u305f\u8868\u793a\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0(DisplayableItem)\u306e\u30ce\u30fc\u30c9\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +AbstractAbstractFileNode.metaAddrColLbl=\u30e1\u30bf\u30a2\u30c9\u30ec\u30b9 +AbstractAbstractFileNode.mimeType=MIME\u30bf\u30a4\u30d7 +AbstractAbstractFileNode.modeColLbl=\u30e2\u30fc\u30c9 +AbstractAbstractFileNode.modifiedTimeColLbl=MFT\u5909\u66f4\u6642\u523b +AbstractAbstractFileNode.nameColLbl=\u540d\u524d +AbstractAbstractFileNode.objectId=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID +AbstractAbstractFileNode.originalName=\u30aa\u30ea\u30b8\u30ca\u30eb\u540d +AbstractAbstractFileNode.sizeColLbl=\u30b5\u30a4\u30ba +AbstractAbstractFileNode.tagsProperty.displayName=\u30bf\u30b0 +AbstractAbstractFileNode.typeDirColLbl=\u30bf\u30a4\u30d7(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc) +AbstractAbstractFileNode.typeMetaColLbl=\u30bf\u30a4\u30d7(\u30e1\u30bf) +AbstractAbstractFileNode.useridColLbl=\u30e6\u30fc\u30b6\u30fcID +AbstractContentNode.nodescription=\u8aac\u660e\u306a\u3057 +AbstractContentNode.valueLoading=\u5024\u306e\u8aad\u307f\u8fbc\u307f\u4e2d +AbstractFsContentNode.noDesc.text=\u8aac\u660e\u306a\u3057 +ArtifactStringContent.attrsTableHeader.sources=\u30bd\u30fc\u30b9 +ArtifactStringContent.attrsTableHeader.type=\u30bf\u30a4\u30d7 +ArtifactStringContent.attrsTableHeader.value=\u5024 +ArtifactStringContent.failedToGetAttributes.message=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u4e00\u90e8\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u5c5e\u6027\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +ArtifactStringContent.failedToGetSourcePath.messagee=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u30e2\u30fc\u30c9\u540d +BaseChildFactory.NoSuchEventBusException.message=\u6b21\u306e\u30ce\u30fc\u30c9\u306e\u30a4\u30d9\u30f3\u30c8\u30d0\u30b9\u306f\u3042\u308a\u307e\u305b\u3093: {0} +BlackboardArtifactNode.createSheet.artifactDetails.displayName=\u7d50\u679c\u8a73\u7d30 +BlackboardArtifactNode.createSheet.artifactDetails.name=\u7d50\u679c\u8a73\u7d30 +BlackboardArtifactNode.createSheet.artifactMD5.displayName=MD5\u30cf\u30c3\u30b7\u30e5 +BlackboardArtifactNode.createSheet.artifactMD5.name=MD5\u30cf\u30c3\u30b7\u30e5 +BlackboardArtifactNode.createSheet.artifactType.displayName=\u7d50\u679c\u30bf\u30a4\u30d7 +BlackboardArtifactNode.createSheet.artifactType.name=\u7d50\u679c\u30bf\u30a4\u30d7 +BlackboardArtifactNode.createSheet.comment.displayName=C +BlackboardArtifactNode.createSheet.comment.name=C +# {0} - occurrenceCount +# {1} - attributeType +BlackboardArtifactNode.createSheet.count.description=\u30bf\u30a4\u30d7 {1} \u306e\u76f8\u95a2\u5024\u304c\u767a\u751f\u3057\u305f {0} \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f +BlackboardArtifactNode.createSheet.count.displayName=O +BlackboardArtifactNode.createSheet.count.name=O +BlackboardArtifactNode.createSheet.count.noCorrelationAttributes.description=\u76f8\u95a2\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +BlackboardArtifactNode.createSheet.count.noCorrelationValues.description=\u5229\u7528\u53ef\u80fd\u306a\u76f8\u95a2\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u5b58\u5728\u3057\u306a\u3044\u305f\u3081\u3001\u305d\u306e\u4ed6\u306e\u767a\u751f\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +BlackboardArtifactNode.createSheet.fileSize.displayName=\u30b5\u30a4\u30ba +BlackboardArtifactNode.createSheet.fileSize.name=\u30b5\u30a4\u30ba +BlackboardArtifactNode.createSheet.interestingResult.description=\u7d50\u679c\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u8208\u5473\u6df1\u3044\u7d50\u679c\u304c\u3042\u308a\u307e\u3059\u3002 +BlackboardArtifactNode.createSheet.noScore.description=\u30b9\u30b3\u30a2\u306a\u3057 +BlackboardArtifactNode.createSheet.notableTaggedItem.description=\u9855\u8457\u3068\u8a8d\u8b58\u3055\u308c\u305f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +BlackboardArtifactNode.createSheet.notableTaggedItem.description=\u7d50\u679c\u307e\u305f\u306f\u9855\u8457\u3068\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +BlackboardArtifactNode.createSheet.path.displayName=\u30d1\u30b9 +BlackboardArtifactNode.createSheet.path.name=\u30d1\u30b9 +BlackboardArtifactNode.createSheet.score.displayName=S +BlackboardArtifactNode.createSheet.score.name=S +BlackboardArtifactNode.createSheet.taggedItem.description=\u7d50\u679c\u307e\u305f\u306f\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u30bf\u30b0\u4ed8\u3051\u307e\u3057\u305f\u3002 +BlackboardArtifactNode.createSheet.tags.displayName=\u30bf\u30b0 +# {0} - artifactDisplayName +BlackboardArtifactNode.displayName.artifact={0} \u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8 +BlackboardArtifactNode.getAction.errorTitle=\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +BlackboardArtifactNode.getAction.linkedFileMessage=\u9078\u629e\u3057\u305f\u7d50\u679c\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 [\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a] \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +BlackboardArtifactNode.getAction.resultErrorMessage=\u9078\u629e\u3057\u305f\u7d50\u679c\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 [\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u7d50\u679c\u3092\u8868\u793a] \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +BlackboardArtifactTagNode.createSheet.userName.text=\u30e6\u30fc\u30b6\u30fc\u540d +BlackboardArtifactTagNode.viewSourceArtifact.text=\u30bd\u30fc\u30b9\u7d50\u679c\u3092\u8868\u793a +Category.five=CAT-5: \u95a2\u9023\u6027\u306a\u3057 +Category.four=CAT-4: \u4e8b\u4f8b/\u6bd4\u8f03(\u793e\u5185\u4f7f\u7528\u9650\u5b9a) +Category.one=CAT-1: \u5150\u7ae5\u52b4\u50cd(\u9055\u6cd5) +Category.three=CAT-3: CGI/\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3(\u5150\u7ae5\u52b4\u50cd) +Category.two=CAT-2: \u5150\u7ae5\u52b4\u50cd(\u9055\u6cd5\u3067\u306f\u306a\u3044/\u96e3\u3057\u3044\u5e74\u9f62) +Category.zero=CAT-0: \u672a\u5206\u985e +ContentTagNode.createSheet.artifactMD5.displayName=MD5\u30cf\u30c3\u30b7\u30e5 +ContentTagNode.createSheet.artifactMD5.name=MD5\u30cf\u30c3\u30b7\u30e5 +ContentTagNode.createSheet.userName.text=\u30e6\u30fc\u30b6\u30fc\u540d +DeletedContent.allDelFilter.text=\u3059\u3079\u3066 +DeletedContent.createSheet.filterType.desc=\u8aac\u660e\u306a\u3057 +DeletedContent.createSheet.filterType.displayName=\u30bf\u30a4\u30d7 +DeletedContent.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +DeletedContent.createSheet.name.displayName=\u540d\u524d +DeletedContent.deletedContentsNode.name=\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +DeletedContent.fsDelFilter.text=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0 +DeleteReportAction.showConfirmDialog.errorMsg=\u30ec\u30dd\u30fc\u30c8\u306e\u524a\u9664\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +DeleteReportAction.showConfirmDialog.multiple.explanation=\u30c7\u30a3\u30b9\u30af\u4e0a\u306b\u30ec\u30dd\u30fc\u30c8\u304c\u6b8b\u308a\u307e\u3059\u3002 +DeleteReportAction.showConfirmDialog.single.explanation=\u30c7\u30a3\u30b9\u30af\u4e0a\u306b\u30ec\u30dd\u30fc\u30c8\u304c\u6b8b\u308a\u307e\u3059\u3002 +FileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +FileNode.getActions.searchFilesSameMD5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +FileNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +FileNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +FileTypeExtensionFilters.tskDatabaseFilter.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 +FileTypes.bgCounting.placeholder=\ (\u30ab\u30a6\u30f3\u30c8\u4e2d...) +FileTypes.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +FileTypes.createSheet.name.displayName=\u540d\u524d +FileTypes.createSheet.name.name=\u540d\u524d +FileTypes.name.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +FileTypesByMimeType.name.text=MIME\u30bf\u30a4\u30d7\u5225 +FileTypesByMimeTypeNode.createSheet.mediaSubtype.desc=\u8aac\u660e\u306a\u3057 +FileTypesByMimeTypeNode.createSheet.mediaSubtype.displayName=\u30b5\u30d6\u30bf\u30a4\u30d7 +FileTypesByMimeTypeNode.createSheet.mediaSubtype.name=\u30b5\u30d6\u30bf\u30a4\u30d7 +FileTypesByMimeTypeNode.createSheet.mediaType.desc=\u8aac\u660e\u306a\u3057 +FileTypesByMimeTypeNode.createSheet.mediaType.displayName=\u30bf\u30a4\u30d7 +FileTypesByMimeTypeNode.createSheet.mediaType.name=\u30bf\u30a4\u30d7 +GetSCOTask.occurrences.defaultDescription=\u76f8\u95a2\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +GetSCOTask.occurrences.multipleProperties=\u3053\u306e\u7d50\u679c\u306b\u8907\u6570\u306e\u7570\u306a\u308b\u76f8\u95a2\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u5b58\u5728\u3057\u307e\u3059 +ImageNode.action.runIngestMods.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c +ImageNode.createSheet.deviceId.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30c7\u30d0\u30a4\u30b9ID +ImageNode.createSheet.deviceId.displayName=\u30c7\u30d0\u30a4\u30b9ID +ImageNode.createSheet.deviceId.name=\u30c7\u30d0\u30a4\u30b9ID +ImageNode.createSheet.sectorSize.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30b9(\u30d0\u30a4\u30c8)\u3067\u3059\u3002 +ImageNode.createSheet.sectorSize.displayName=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30b9(\u30d0\u30a4\u30c8) +ImageNode.createSheet.sectorSize.name=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30b9(\u30d0\u30a4\u30c8) +ImageNode.createSheet.size.desc=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8)\u3067\u3059\u3002 +ImageNode.createSheet.size.displayName=\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8) +ImageNode.createSheet.size.name=\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8) +ImageNode.createSheet.timezone.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +ImageNode.createSheet.timezone.displayName=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +ImageNode.createSheet.timezone.name=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +ImageNode.createSheet.type.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002 +ImageNode.createSheet.type.displayName=\u30bf\u30a4\u30d7 +ImageNode.createSheet.type.name=\u30bf\u30a4\u30d7 +ImageNode.createSheet.type.text=\u30a4\u30e1\u30fc\u30b8 +ImageNode.getActions.openFileSearchByAttr.text=\u5c5e\u6027\u5225\u306b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u3092\u958b\u304f +KeyValueNode.menuItemText.viewFileInDir=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +KeywordHits.createNodeForKey.accessTime.desc=\u30a2\u30af\u30bb\u30b9\u6642\u523b +KeywordHits.createNodeForKey.accessTime.displayName=\u30a2\u30af\u30bb\u30b9\u6642\u523b +KeywordHits.createNodeForKey.accessTime.name=AccessTime +KeywordHits.createNodeForKey.chgTime.desc=\u6642\u523b\u5909\u66f4 +KeywordHits.createNodeForKey.chgTime.displayName=\u5909\u66f4\u6642\u523b +KeywordHits.createNodeForKey.chgTime.name=ChangeTime +KeywordHits.createNodeForKey.modTime.desc=MFT\u5909\u66f4\u6642\u523b +KeywordHits.createNodeForKey.modTime.displayName=MFT\u5909\u66f4\u6642\u523b +KeywordHits.createNodeForKey.modTime.name=ModifiedTime +KeywordHits.createSheet.filesWithHits.desc=\u8aac\u660e\u306a\u3057 +KeywordHits.createSheet.filesWithHits.displayName=\u30d2\u30c3\u30c8\u306e\u3042\u308b\u30d5\u30a1\u30a4\u30eb +KeywordHits.createSheet.filesWithHits.name=\u30d2\u30c3\u30c8\u306e\u3042\u308b\u30d5\u30a1\u30a4\u30eb +KeywordHits.createSheet.listName.desc=\u8aac\u660e\u306a\u3057 +KeywordHits.createSheet.listName.displayName=\u30ea\u30b9\u30c8\u540d +KeywordHits.createSheet.listName.name=\u30ea\u30b9\u30c8\u540d +KeywordHits.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +KeywordHits.createSheet.name.displayName=\u540d\u524d +KeywordHits.createSheet.name.name=\u540d\u524d +KeywordHits.createSheet.numChildren.desc=\u8aac\u660e\u306a\u3057 +KeywordHits.createSheet.numChildren.displayName=\u5b50\u306e\u6570 +KeywordHits.createSheet.numChildren.name=\u5b50\u306e\u6570 +KeywordHits.kwHits.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8 +KeywordHits.simpleLiteralSearch.text=\u5358\u72ec\u30ea\u30c6\u30e9\u30eb\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +KeywordHits.singleRegexSearch.text=\u5358\u72ec\u6b63\u898f\u8868\u73fe\u691c\u7d22 +LayoutFileNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +OpenIDE-Module-Name=DataModel +AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg=\u6307\u5b9a\u3057\u305fSleuthkitItem\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ce\u30fc\u30c9\u306f\u3042\u308a\u307e\u305b\u3093 +AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg=\u6307\u5b9a\u3057\u305fDisplayableItem\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30ce\u30fc\u30c9\u306f\u3042\u308a\u307e\u305b\u3093 AbstractContentNode.exception.cannotChangeSysName.msg=\u30b7\u30b9\u30c6\u30e0\u540d\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002 -AbstractFsContentNode.noDesc.text=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 ArtifactStringContent.getStr.srcFilePath.text=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 -ArtifactStringContent.getStr.err=\u30b3\u30f3\u30c6\u30f3\u30c4\u53d6\u5f97\u30a8\u30e9\u30fc -ArtifactTypeNode.createSheet.artType.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -ArtifactTypeNode.createSheet.childCnt.name=\u30c1\u30e3\u30a4\u30eb\u30c9\u6570 -ArtifactTypeNode.createSheet.childCnt.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -BlackboardArtifactNode.noDesc.text=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +ArtifactStringContent.getStr.err=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ArtifactTypeNode.createSheet.artType.name=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 +ArtifactTypeNode.createSheet.artType.displayNamee=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 +ArtifactTypeNode.createSheet.artType.desc=\u8aac\u660e\u306a\u3057 +ArtifactTypeNode.createSheet.childCnt.name=\u5b50\u306e\u30ab\u30a6\u30f3\u30c8 +ArtifactTypeNode.createSheet.childCnt.displayName=\u5b50\u306e\u30ab\u30a6\u30f3\u30c8 +ArtifactTypeNode.createSheet.childCnt.desc=\u8aac\u660e\u306a\u3057 +BlackboardArtifactNode.noDesc.text=\u8aac\u660e\u306a\u3057 BlackboardArtifactNode.createSheet.srcFile.name=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb BlackboardArtifactNode.createSheet.srcFile.displayName=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb BlackboardArtifactNode.createSheet.ext.name=\u62e1\u5f35\u5b50 @@ -32,7 +185,7 @@ BlackboardArtifactNode.createSheet.filePath.displayName=\u30d5\u30a1\u30a4\u30eb BlackboardArtifactNode.createSheet.dataSrc.name=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 BlackboardArtifactNode.createSheet.dataSrc.displayName=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 BlackboardArtifactTagNode.createSheet.srcFile.text=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb -BlackboardArtifactTagNode.createSheet.unavail.text=\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 +BlackboardArtifactTagNode.createSheet.unavail.text=\u5229\u7528\u3067\u304d\u307e\u305b\u3093 BlackboardArtifactTagNode.createSheet.srcFilePath.text=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 BlackboardArtifactTagNode.createSheet.resultType.text=\u7d50\u679c\u30bf\u30a4\u30d7 BlackboardArtifactTagNode.createSheet.comment.text=\u30b3\u30e1\u30f3\u30c8 @@ -41,154 +194,145 @@ BlackboardArtifactTagTypeNode.createSheet.name.name=\u540d\u524d BlackboardArtifactTagTypeNode.createSheet.name.displayName=\u540d\u524d ContentTagNode.createSheet.file.name=\u30d5\u30a1\u30a4\u30eb ContentTagNode.createSheet.file.displayName=\u30d5\u30a1\u30a4\u30eb -ContentTagNode.createSheet.unavail.path=\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 +ContentTagNode.createSheet.unavail.path=\u5229\u7528\u3067\u304d\u307e\u305b\u3093 ContentTagNode.createSheet.filePath.name=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 ContentTagNode.createSheet.filePath.displayName=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 ContentTagNode.createSheet.comment.name=\u30b3\u30e1\u30f3\u30c8 ContentTagNode.createSheet.comment.displayName=\u30b3\u30e1\u30f3\u30c8 +ContentTagNode.createSheet.fileModifiedTime.nam=MFT\u5909\u66f4\u6642\u523b +ContentTagNode.createSheet.fileModifiedTime.displayName=MFT\u5909\u66f4\u6642\u523b +ContentTagNode.createSheet.fileChangedTime.name=\u5909\u66f4\u3055\u308c\u305f\u523b\u523b +ContentTagNode.createSheet.fileChangedTime.displayName=\u5909\u66f4\u3055\u308c\u305f\u523b\u523b +ContentTagNode.createSheet.fileAccessedTime.name=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u6642\u523b +ContentTagNode.createSheet.fileAccessedTime.displayName=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u6642\u523b +ContentTagNode.createSheet.fileCreatedTime.name=\u4f5c\u6210\u3057\u305f\u6642\u523b +ContentTagNode.createSheet.fileCreatedTime.displayName=\u4f5c\u6210\u3057\u305f\u6642\u523b +ContentTagNode.createSheet.fileSize.name=\u30b5\u30a4\u30ba +ContentTagNode.createSheet.fileSize.displayName=\u30b5\u30a4\u30ba ContentTagTypeNode.displayName.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0 ContentTagTypeNode.createSheet.name.name=\u540d\u524d ContentTagTypeNode.createSheet.name.displayName=\u540d\u524d -ContentUtils.exception.msg={0}\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093 -DataModelActionsFactory.srcFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -DataModelActionsFactory.fileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -DataModelActionsFactory.viewNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a -DataModelActionsFactory.openExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u306b\u8868\u793a +ContentUtils.exception.msg={0} \u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093 +DataModelActionsFactory.srcFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +DataModelActionsFactory.fileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +DataModelActionsFactory.viewNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +DataModelActionsFactory.openExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E DataSourcesNode.name=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 DataSourcesNode.group_by_datasource.name=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb DataSourcesNode.createSheet.name.name=\u540d\u524d DataSourcesNode.createSheet.name.displayName=\u540d\u524d -DataSourcesNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -DeletedContent.fsDelFilter.text=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0 -DeletedContent.allDelFilter.text=\u3059\u3079\u3066 -DeletedContent.deletedContentsNode.name=\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb -DeletedContent.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -DeletedContent.createSheet.filterType.name=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 -DeletedContent.createSheet.filterType.displayName=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 -DeletedContent.createSheet.filterType.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -DeletedContent.createKeys.maxObjects.msg=\u8868\u793a\u53ef\u80fd\u306a\u6570\u3088\u308a\u3082\u591a\u304f\u306e\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u6700\u521d\u306e{0}\u306e\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 -DeletedContent.createNodeForKey.typeNotSupported.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff1a{0} -DirectoryNode.parFolder.text=[\u30da\u30a2\u30ec\u30f3\u30c8\u30d5\u30a9\u30eb\u30c0] -DirectoryNode.curFolder.text=[\u73fe\u5728\u306e\u30d5\u30a9\u30eb\u30c0] -DirectoryNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -DirectoryNode.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a +DataSourcesNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +DirectoryNode.parFolder.text=[\u89aa\u30d5\u30a9\u30eb\u30c0\u30fc] +DirectoryNode.curFolder.text=[\u73fe\u5728\u306e\u30d5\u30a9\u30eb\u30c0\u30fc] +DirectoryNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +DirectoryNode.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a EmailExtracted.mailAccount.text=\u30a2\u30ab\u30a6\u30f3\u30c8 -EmailExtracted.mailFolder.text=\u30d5\u30a9\u30eb\u30c0 +EmailExtracted.mailFolder.text=\u30d5\u30a9\u30eb\u30c0\u30fc EmailExtracted.defaultAcct.text=\u30c7\u30d5\u30a9\u30eb\u30c8 EmailExtracted.defaultFolder.text=\u30c7\u30d5\u30a9\u30eb\u30c8 EmailExtracted.createSheet.name.name=\u540d\u524d EmailExtracted.createSheet.name.displayName=\u540d\u524d -EmailExtracted.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +EmailExtracted.createSheet.name.desc=\u8aac\u660e\u306a\u3057 ExtractedContentNode.name.text=\u62bd\u51fa\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30f3\u30c4 ExtractedContentNode.createSheet.name.name=\u540d\u524d ExtractedContentNode.createSheet.name.displayName=\u540d\u524d -ExtractedContentNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -FileNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -FileNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a -FileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f -FileNode.getActions.searchFilesSameMD5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +ExtractedContentNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +LocalFileNode.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a FileSize.fileSizeRootNode.name=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba -FileSize.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -FileSize.createSheet.filterType.name=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 -FileSize.createSheet.filterType.displayName=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 -FileSize.createSheet.filterType.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -FileSize.exception.notSupported.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff1a{0} -FileTypeChildren.exception.notSupported.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u30a2\u30a4\u30c6\u30e0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff1a{0} -FileTypeExtensionFilters.tskImgFilter.text=\u30a4\u30e1\u30fc\u30b8 -FileTypeExtensionFilters.tskVideoFilter.text=\u30d3\u30c7\u30aa -FileTypeExtensionFilters.tskAudioFilter.text=\u30aa\u30fc\u30c7\u30a3\u30aa -FileTypeExtensionFilters.tskArchiveFilter.text=\u30a2\u30fc\u30ab\u30a4\u30d6 -FileTypeExtensionFilters.tskDocumentFilter.text=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 -FileTypeExtensionFilters.tskExecFilter.text=\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb -FileTypeExtensionFilters.autDocHtmlFilter.text=HTML -FileTypeExtensionFilters.autDocOfficeFilter.text=\u30aa\u30d5\u30a3\u30b9 -FileTypeExtensionFilters.autoDocPdfFilter.text=PDF -FileTypeExtensionFilters.autDocTxtFilter.text=\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8 -FileTypeExtensionFilters.autDocRtfFilter.text=\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8 -FileTypesByExtNode.createSheet.filterType.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +FileSize.createSheet.name.name=\u540d\u524d +FileSize.createSheet.name.displayName=\u540d\u524d +FileSize.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +FileSize.createSheet.filterType.name=\u30b5\u30a4\u30ba\u7bc4\u56f2 +FileSize.createSheet.filterType.displayName=\u30b5\u30a4\u30ba\u7bc4\u56f2 +FileSize.createSheet.filterType.desc=\u8aac\u660e\u306a\u3057 +FileSize.exception.notSupported.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u9805\u76ee\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0} +FileTypeChildren.exception.notSupported.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u9805\u76ee\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0} +FileTypesByExtNode.createSheet.filterType.name=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +FileTypesByExtNode.createSheet.filterType.displayName=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +FileTypesByExtNode.createSheet.filterType.desc=\u8aac\u660e\u306a\u3057 FileTypesByExtNode.createSheet.fileExt.name=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50 FileTypesByExtNode.createSheet.fileExt.displayName=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50 -FileTypesByExtNode.createSheet.fileExt.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +FileTypesByExtNode.createSheet.fileExt.desc=\u8aac\u660e\u306a\u3057 +FileTypesByExtNode.fname.text=\u62e1\u5f35\u5b50\u5225 FileTypesByExtNode.createSheet.name.name=\u540d\u524d FileTypesByExtNode.createSheet.name.displayName=\u540d\u524d -FileTypesByExtNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +FileTypesByExtNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 HashsetHits.createSheet.name.name=\u540d\u524d HashsetHits.createSheet.name.displayName=\u540d\u524d -HashsetHits.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -ImageNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a -ImageNode.getActions.openFileSearchByAttr.text=\u5c5e\u6027\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u3092\u958b\u304f +HashsetHits.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +ImageNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a ImageNode.createSheet.name.name=\u540d\u524d ImageNode.createSheet.name.displayName=\u540d\u524d -ImageNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI\u30c6\u30b9\u30c8\u30b3\u30fc\u30eb\u3067\u306f\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30b9\u30c8\u30ea\u30f3\u30b0\u306f\u30cc\u30eb\u3067\u3057\u305f\uff01 -Installer.tskLibErr.msg=Sleuth Kit JNI\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30c6\u30b9\u30c8\u30b3\u30fc\u30eb\u304c\u5931\u6557\u3057\u307e\u3057\u305f\uff01\n\n\u8a73\u7d30\uff1a {0} -Installer.tskLibErr.err=\u81f4\u547d\u7684\u30a8\u30e9\u30fc\uff01 -InterestingHits.interestingItems.text=\u7591\u308f\u3057\u3044\u30a2\u30a4\u30c6\u30e0 -InterestingHits.displayName.text=\u7591\u308f\u3057\u3044\u30a2\u30a4\u30c6\u30e0 +ImageNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +Installer.exception.tskVerStringNull.msg=Sleuth Kit\u306eJNI\u30c6\u30b9\u30c8\u30b3\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u306a\u3057\u3067\u8fd4\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u6587\u5b57\u5217\u304cnull\u3067\u3057\u305f\! +Installer.exception.taskVerStringBang.msg=Sleuth Kit\u306eJNI\u30c6\u30b9\u30c8\u30b3\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u306a\u3057\u3067\u8fd4\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u6587\u5b57\u5217\u304c""\u3067\u3057\u305f\! +Installer.tskLibErr.msg=Problem with Sleuth Kit\u306eJNI\u3067\u3059\u3002 Test call failed\!\n\nDetails: {0} +Installer.tskLibErr.err=\u81f4\u547d\u7684\u306a\u30a8\u30e9\u30fc\u3067\u3059\! +InterestingHits.interestingItems.text=\u8208\u5473\u6df1\u3044\u9805\u76ee +InterestingHits.displayName.text=\u8208\u5473\u6df1\u3044\u9805\u76ee InterestingHits.createSheet.name.name=\u540d\u524d InterestingHits.createSheet.name.displayName=\u540d\u524d -InterestingHits.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +InterestingHits.createSheet.name.desc=\u8aac\u660e\u306a\u3057 KeyValueNode.createSheet.name.name=\u540d\u524d KeyValueNode.createSheet.name.displayName=\u540d\u524d -KeyValueNode.createSheet.name.desc=\u8a72\u5f53\u306a\u3057 -KeyValueNode.createSheet.map.desc=\u8a72\u5f53\u306a\u3057 -KeywordHits.kwHits.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8 -KeywordHits.createSheet.name.name=\u540d\u524d -KeywordHits.createSheet.name.displayName=\u540d\u524d -KeywordHits.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -KeywordHits.createSheet.listName.name=\u30ea\u30b9\u30c8\u540d -KeywordHits.createSheet.listName.displayName=\u30ea\u30b9\u30c8\u540d -KeywordHits.createSheet.listName.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -KeywordHits.createSheet.numChildren.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -KeywordHits.createSheet.filesWithHits.name=\u30d2\u30c3\u30c8\u3057\u305f\u30d5\u30a1\u30a4\u30eb -KeywordHits.createSheet.filesWithHits.displayName=\u30d2\u30c3\u30c8\u3057\u305f\u30d5\u30a1\u30a4\u30eb -KeywordHits.createSheet.filesWithHits.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -KeywordHits.createNodeForKey.modTime.displayName=\u4fee\u6b63\u65e5\u6642 -KeywordHits.createNodeForKey.modTime.desc=\u4fee\u6b63\u65e5\u6642 -KeywordHits.createNodeForKey.accessTime.displayName=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -KeywordHits.createNodeForKey.accessTime.desc=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -KeywordHits.createNodeForKey.chgTime.displayName=\u5909\u66f4\u65e5\u6642 -KeywordHits.createNodeForKey.chgTime.desc=\u5909\u66f4\u65e5\u6642 -KeywordHits.createNodeForKey.chgTime.name=\u5909\u66f4\u65e5\u6642 -KeywordHits.createNodeForKey.accessTime.name=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -KeywordHits.createNodeForKey.modTime.name=\u4fee\u6b63\u65e5\u6642 -KnownFileFilterNode.selectionContext.dataSources=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 -KnownFileFilterNode.selectionContext.views=\u30d3\u30e5\u30fc +KeyValueNode.createSheet.name.desc=n/a +KeyValueNode.createSheet.map.desc=n/a LayoutFileNode.propertyType.parts=\u30d1\u30fc\u30c4 LayoutFileNode.createSheet.name.name=\u540d\u524d LayoutFileNode.createSheet.name.displayName=\u540d\u524d -LayoutFileNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -LayoutFileNode.createSheet.noDescr.text=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -LayoutFileNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a -LayoutFileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f +LayoutFileNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +LayoutFileNode.createSheet.noDescr.text=\u8aac\u660e\u306a\u3057 +LayoutFileNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +LayoutFileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E LocalFileNode.createSheet.name.name=\u540d\u524d LocalFileNode.createSheet.name.displayName=\u540d\u524d -LocalFileNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -LocalFileNode.createSheet.noDescr.text=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -LocalFileNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a -LocalFileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f -LocalFileNode.getActions.searchFilesSameMd5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +LocalFileNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +LocalFileNode.createSheet.noDescr.text=\u8aac\u660e\u306a\u3057 +LocalFileNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +LocalFileNode.getActions.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +LocalFileNode.getActions.searchFilesSameMd5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +OpenReportAction.actionDisplayName=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f +OpenReportAction.actionPerformed.MessageBoxTitle=\u30ec\u30dd\u30fc\u30c8\u30aa\u30fc\u30d7\u30f3\u5931\u6557 +OpenReportAction.actionPerformed.NoAssociatedEditorMessage=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30ec\u30dd\u30fc\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a8\u30c7\u30a3\u30bf\u30fc\u304c\u306a\u3044\u304b\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0(\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0)\u306f\u3053\u306e\u65b9\u6cd5\u3067\u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 +OpenReportAction.actionPerformed.MissingReportFileMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u8a31\u53ef\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 RecentFiles.aut0DayFilter.displayName.text=\u6700\u7d42\u65e5 RecentFiles.aut1dayFilter.displayName.text=\u6700\u7d42\u65e5 - 1 -RecentFiles.aut2dayFilter.displayName.text=\u6700\u7d42\u65e5 - \uff12 -RecentFiles.aut3dayFilter.displayName.text=\u6700\u7d42\u65e5 - \uff13 -RecentFiles.aut4dayFilter.displayName.text=\u6700\u7d42\u65e5 - \uff14 -RecentFiles.aut5dayFilter.displayName.text=\u6700\u7d42\u65e5 - \uff15 -RecentFiles.aut6dayFilter.displayName.text=\u6700\u7d42\u65e5 - \uff16 -RecentFilesFilterChildren.exception.defaultVisit.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u3067\u304d\u308b\u30a2\u30a4\u30c6\u30e0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff1a{0} -Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI\u30c6\u30b9\u30c8\u30b3\u30fc\u30eb\u3067\u306f\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30b9\u30c8\u30ea\u30f3\u30b0\u306f""\u3067\u3057\u305f\uff01 +RecentFiles.aut2dayFilter.displayName.text=\u6700\u7d42\u65e5 - 2 +RecentFiles.aut3dayFilter.displayName.text=\u6700\u7d42\u65e5 - 3 +RecentFiles.aut4dayFilter.displayName.text=\u6700\u7d42\u65e5 - 4 +RecentFiles.aut5dayFilter.displayName.text=\u6700\u7d42\u65e5 - 5 +RecentFiles.aut6dayFilter.displayName.text=\u6700\u7d42\u65e5 - 6 +RecentFilesFilterChildren.exception.defaultVisit.msg=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u8868\u793a\u53ef\u80fd\u306a\u9805\u76ee\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0} RecentFilesFilterNode.createSheet.filterType.name=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 RecentFilesFilterNode.createSheet.filterType.displayName=\u30d5\u30a3\u30eb\u30bf\u30fc\u30bf\u30a4\u30d7 -RecentFilesFilterNode.createSheet.filterType.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +RecentFilesFilterNode.createSheet.filterType.desc=\u8aac\u660e\u306a\u3057 RecentFilesNode.createSheet.name.name=\u540d\u524d RecentFilesNode.createSheet.name.displayName=\u540d\u524d -RecentFilesNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -RecentFilesNode.name.text=\u6700\u8fd1\u4f7f\u7528\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb -ResultsNode.name.text=\u7d50\u679c -ResultsNode.createSheet.name.name=\u540d\u524d +RecentFilesNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +RecentFilesNode.name.text=\u6700\u8fd1\u306e\u30d5\u30a1\u30a4\u30eb +ReportNode.sourceModuleNameProperty.name=\u30bd\u30fc\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d +ReportNode.sourceModuleNameProperty.displayName=\u30bd\u30fc\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d +ReportNode.sourceModuleNameProperty.desc=\u30ec\u30dd\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u540d +ReportNode.createdTimeProperty.name=\u4f5c\u6210\u3057\u305f\u6642\u523b +ReportNode.createdTimeProperty.displayName=\u4f5c\u6210\u3057\u305f\u6642\u523b +ReportNode.createdTimeProperty.desc=\u30ec\u30dd\u30fc\u30c8\u304c\u4f5c\u6210\u3055\u308c\u305f\u6642\u523b +ReportNode.pathProperty.name= \u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 +ReportNode.pathProperty.displayName= \u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 +ReportNode.pathProperty.desc=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9 +ReportNode.reportNameProperty.name=\u30ec\u30dd\u30fc\u30c8\u540d +ReportNode.reportNameProperty.displayName=\u30ec\u30dd\u30fc\u30c8\u540d +ReportNode.reportNameProperty.desc=\u30ec\u30dd\u30fc\u30c8\u540d +ReportsListNode.displayName=\u30ec\u30dd\u30fc\u30c8 +ResultsNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 ResultsNode.createSheet.name.displayName=\u540d\u524d -ResultsNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -TagNameNode.namePlusTags.text={0}\u30bf\u30b0 +ResultsNode.createSheet.name.name=\u540d\u524d +ResultsNode.name.text=\u7d50\u679c +SlackFileNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +SlackFileNode.getActions.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +SpecialDirectoryNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +TagNameNode.namePlusTags.text={0} \u30bf\u30b0 TagNameNode.contentTagTypeNodeKey.text=\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30b0 TagNameNode.bbArtTagTypeNodeKey.text=\u7d50\u679c\u30bf\u30b0 TagNameNode.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af @@ -196,81 +340,62 @@ TagNameNode.createSheet.name.name=\u540d\u524d TagNameNode.createSheet.name.displayName=\u540d\u524d TagsNode.displayName.text=\u30bf\u30b0 TagsNode.createSheet.name.name=\u540d\u524d -AbstractAbstractFileNode.flagsDirColLbl=\u30d5\u30e9\u30b0\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff09 -AbstractAbstractFileNode.flagsMetaColLbl=\u30d5\u30e9\u30b0\uff08\u30e1\u30bf\u30c7\u30fc\u30bf\uff09 -AbstractAbstractFileNode.metaAddrColLbl=\u30e1\u30bf\u30c7\u30fc\u30bf\u30a2\u30c9\u30ec\u30b9 -AbstractAbstractFileNode.attrAddrColLbl=\u5c5e\u6027\u30a2\u30c9\u30ec\u30b9 -AbstractAbstractFileNode.typeDirColLbl=\u30bf\u30a4\u30d7\uff08\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff09 -AbstractAbstractFileNode.typeMetaColLbl=\u30bf\u30a4\u30d7\uff08\u30e1\u30bf\u30c7\u30fc\u30bf\uff09 -ArtifactTypeNode.createSheet.childCnt.displayName=\u30c1\u30e3\u30a4\u30eb\u30c9\u6570 TagsNode.createSheet.name.displayName=\u540d\u524d ViewsNode.name.text=\u30d3\u30e5\u30fc ViewsNode.createSheet.name.name=\u540d\u524d ViewsNode.createSheet.name.displayName=\u540d\u524d -ViewsNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -VirtualDirectoryNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a +ViewsNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +ImageNode.createSheet.deviceId.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30c7\u30d0\u30a4\u30b9ID +VirtualDirectoryNode.createSheet.deviceId.displayName=\u30c7\u30d0\u30a4\u30b9ID +VirtualDirectoryNode.createSheet.deviceId.name=\u30c7\u30d0\u30a4\u30b9ID +VirtualDirectoryNode.createSheet.size.desc=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8)\u3067\u3059\u3002 +VirtualDirectoryNode.createSheet.size.displayName=\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8) +VirtualDirectoryNode.createSheet.size.name=\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8) +VirtualDirectoryNode.createSheet.timezone.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +VirtualDirectoryNode.createSheet.timezone.displayName=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +VirtualDirectoryNode.createSheet.timezone.name=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +ImageNode.createSheet.type.desc=\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30a4\u30d7\u3067\u3059\u3002 +VirtualDirectoryNode.createSheet.type.displayName=\u30bf\u30a4\u30d7 +VirtualDirectoryNode.createSheet.type.name=\u30bf\u30a4\u30d7 +VirtualDirectoryNode.createSheet.type.text=\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8 +VirtualDirectoryNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a VirtualDirectoryNode.createSheet.name.name=\u540d\u524d VirtualDirectoryNode.createSheet.name.displayName=\u540d\u524d -VirtualDirectoryNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -VirtualDirectoryNode.createSheet.noDesc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -VolumeNode.getActions.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a +VirtualDirectoryNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 +VirtualDirectoryNode.createSheet.noDesc=\u8aac\u660e\u306a\u3057 +VolumeNode.getActions.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a VolumeNode.createSheet.name.name=\u540d\u524d VolumeNode.createSheet.name.displayName=\u540d\u524d -VolumeNode.createSheet.name.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +VolumeNode.createSheet.name.desc=\u8aac\u660e\u306a\u3057 VolumeNode.createSheet.id.name=ID VolumeNode.createSheet.id.displayName=ID -VolumeNode.createSheet.id.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -VolumeNode.createSheet.startSector.name=\u6700\u521d\u306e\u30bb\u30af\u30bf\u30fc -VolumeNode.createSheet.startSector.displayName=\u6700\u521d\u306e\u30bb\u30af\u30bf\u30fc -VolumeNode.createSheet.startSector.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -VolumeNode.createSheet.lenSectors.name=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055 -VolumeNode.createSheet.lenSectors.displayName=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055 -VolumeNode.createSheet.lenSectors.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +VolumeNode.createSheet.id.desc=\u8aac\u660e\u306a\u3057 +VolumeNode.createSheet.startSector.name=\u30bb\u30af\u30bf\u30fc\u3092\u958b\u59cb\u4e2d\u3067\u3059 +VolumeNode.createSheet.startSector.displayName=\u30bb\u30af\u30bf\u30fc\u3092\u958b\u59cb\u4e2d\u3067\u3059 +VolumeNode.createSheet.startSector.desc=\u8aac\u660e\u306a\u3057 +VolumeNode.createSheet.lenSectors.name=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055: +VolumeNode.createSheet.lenSectors.displayName=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055: +VolumeNode.createSheet.lenSectors.desc=\u8aac\u660e\u306a\u3057 VolumeNode.createSheet.description.name=\u8aac\u660e VolumeNode.createSheet.description.displayName=\u8aac\u660e -VolumeNode.createSheet.description.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 +VolumeNode.createSheet.description.desc=\u8aac\u660e\u306a\u3057 VolumeNode.createSheet.flags.name=\u30d5\u30e9\u30b0 VolumeNode.createSheet.flags.displayName=\u30d5\u30e9\u30b0 -VolumeNode.createSheet.flags.desc=\u8aac\u660e\u304c\u3042\u308a\u307e\u305b\u3093 -ArtifactTypeNode.createSheet.artType.name=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 -ArtifactTypeNode.createSheet.artType.displayName=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 -KeywordHits.createSheet.numChildren.name=\u30c1\u30e3\u30a4\u30eb\u30c9\u6570 -KeywordHits.createSheet.numChildren.displayName=\u30c1\u30e3\u30a4\u30eb\u30c9\u6570 -KeywordHits.simpleLiteralSearch.text=\u30b7\u30f3\u30b0\u30eb\u30ea\u30c6\u30e9\u30eb\u691c\u7d22 -KeywordHits.singleRegexSearch.text=\u30b7\u30f3\u30b0\u30eb\u6b63\u898f\u8868\u73fe\u691c\u7d22 -AbstractAbstractFileNode.objectId=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID +VolumeNode.createSheet.flags.desc=\u8aac\u660e\u306a\u3057 ArtifactStringContent.getStr.artifactId.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8ID -OpenReportAction.actionDisplayName=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f -OpenReportAction.actionPerformed.MessageBoxTitle=\u5931\u6557\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f -OpenReportAction.actionPerformed.MissingReportFileMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306f\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002 -OpenReportAction.actionPerformed.NoAssociatedEditorMessage=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30ec\u30dd\u30fc\u30c8\u306b\u95a2\u9023\u3059\u308b\u30a8\u30c7\u30a3\u30bf\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u306f\u3001\u95a2\u9023\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u59cb\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\uff08\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\uff09\u306f\u3053\u306e\u65b9\u6cd5\u3067\u3001\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30c7\u30a3\u30bf\u30fc\u306b\u3066\u958b\u304f\u306e\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 -OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 -ReportNode.createdTimeProperty.desc=\u30bf\u30a4\u30e0\u30ec\u30dd\u30fc\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 -ReportNode.createdTimeProperty.displayName=\u4f5c\u6210\u65e5\u6642 -ReportNode.createdTimeProperty.name=\u4f5c\u6210\u65e5\u6642 -ReportNode.pathProperty.desc=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9 -ReportNode.pathProperty.displayName=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u30ec\u30dd\u30fc\u30c8 -ReportNode.pathProperty.name=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u30ec\u30dd\u30fc\u30c8 -ReportNode.sourceModuleNameProperty.desc=\u30ec\u30dd\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u540d -ReportNode.sourceModuleNameProperty.displayName=\u30bd\u30fc\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d -ReportNode.sourceModuleNameProperty.name=\u30bd\u30fc\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d -ReportsListNode.displayName=\u30ec\u30dd\u30fc\u30c8 -AbstractAbstractFileNode.mimeType=MIME\u30bf\u30a4\u30d7 -ContentTagNode.createSheet.fileModifiedTime.name=\u4fee\u6b63\u65e5\u6642 -ContentTagNode.createSheet.fileModifiedTime.displayName=\u4fee\u6b63\u65e5\u6642 -ContentTagNode.createSheet.fileChangedTime.name=\u5909\u66f4\u65e5\u6642 -ContentTagNode.createSheet.fileChangedTime.displayName=\u5909\u66f4\u65e5\u6642 -ContentTagNode.createSheet.fileAccessedTime.name=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -ContentTagNode.createSheet.fileAccessedTime.displayName=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 -ContentTagNode.createSheet.fileCreatedTime.name=\u4f5c\u6210\u65e5\u6642 -ContentTagNode.createSheet.fileCreatedTime.displayName=\u4f5c\u6210\u65e5\u6642 -ContentTagNode.createSheet.fileSize.name=\u30b5\u30a4\u30ba -ContentTagNode.createSheet.fileSize.displayName=\u30b5\u30a4\u30ba -LocalFileNode.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -ReportNode.reportNameProperty.name=\u30ec\u30dd\u30fc\u30c8\u540d -ReportNode.reportNameProperty.displayName=\u30ec\u30dd\u30fc\u30c8\u540d -ReportNode.reportNameProperty.desc=\u30ec\u30dd\u30fc\u30c8\u306e\u540d\u524d DeleteReportAction.actionDisplayName.singleReport=\u30ec\u30dd\u30fc\u30c8\u3092\u524a\u9664 DeleteReportAction.actionDisplayName.multipleReports=\u30ec\u30dd\u30fc\u30c8\u3092\u524a\u9664 -DeleteReportAction.actionPerformed.showConfirmDialog.title=\u524a\u9664\u3092\u78ba\u5b9a\u3059\u308b \ No newline at end of file +DeleteReportAction.actionPerformed.showConfirmDialog.title=\u524a\u9664\u3092\u78ba\u5b9a +DeleteReportAction.actionPerformed.showConfirmDialog.single.msg=\u30b1\u30fc\u30b9\u304b\u3089\u30ec\u30dd\u30fc\u30c8\u30921\u4ef6\u524a\u9664\u3057\u307e\u3059\u304b? +DeleteReportAction.actionPerformed.showConfirmDialog.multiple.msg=\u30b1\u30fc\u30b9\u304b\u3089\u30ec\u30dd\u30fc\u30c8\u3092 {0} \u4ef6\u524a\u9664\u3057\u307e\u3059\u304b? +FileTypeExtensionFilters.tskImgFilter.text=\u30a4\u30e1\u30fc\u30b8 +FileTypeExtensionFilters.tskVideoFilter.text=\u52d5\u753b +FileTypeExtensionFilters.tskAudioFilter.text=\u30aa\u30fc\u30c7\u30a3\u30aa +FileTypeExtensionFilters.tskArchiveFilter.text=\u30a2\u30fc\u30ab\u30a4\u30d6 +FileTypeExtensionFilters.tskDocumentFilter.text=\u6587\u66f8 +FileTypeExtensionFilters.tskExecFilter.text=\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb +FileTypeExtensionFilters.autDocHtmlFilter.text=HTML +FileTypeExtensionFilters.autDocOfficeFilter.text=Office +FileTypeExtensionFilters.autoDocPdfFilter.text=PDF +FileTypeExtensionFilters.autDocTxtFilter.text=\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8 +FileTypeExtensionFilters.autDocRtfFilter.text=\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeVisitor.java index 2277cb4b56..af7eb3a249 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeVisitor.java @@ -35,6 +35,8 @@ interface ContentNodeVisitor { T visit(LocalDirectoryNode ldn); T visit(VolumeNode vn); + + T visit(PoolNode pn); T visit(DirectoryNode dn); @@ -85,6 +87,11 @@ interface ContentNodeVisitor { public T visit(VolumeNode vn) { return defaultVisit(vn); } + + @Override + public T visit(PoolNode pn) { + return defaultVisit(pn); + } @Override public T visit(LayoutFileNode lcn) { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/CreateSleuthkitNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/CreateSleuthkitNodeVisitor.java index d9ff5fc33b..b5d808153d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/CreateSleuthkitNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/CreateSleuthkitNodeVisitor.java @@ -28,6 +28,7 @@ import org.sleuthkit.datamodel.Image; import org.sleuthkit.datamodel.LayoutFile; import org.sleuthkit.datamodel.LocalDirectory; import org.sleuthkit.datamodel.LocalFile; +import org.sleuthkit.datamodel.Pool; import org.sleuthkit.datamodel.SlackFile; import org.sleuthkit.datamodel.SleuthkitItemVisitor; import org.sleuthkit.datamodel.SleuthkitVisitableItem; @@ -58,6 +59,11 @@ public class CreateSleuthkitNodeVisitor extends SleuthkitItemVisitor.Default visit(Volume volume) { return new VolumeNode(volume); } + + @Override + public AbstractContentNode visit(Pool pool) { + return new PoolNode(pool); + } @Override public AbstractContentNode visit(LayoutFile lf) { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java index 541cbc38f3..24f437251f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DisplayableItemNodeVisitor.java @@ -59,6 +59,8 @@ public interface DisplayableItemNodeVisitor { T visit(ImageNode in); T visit(VolumeNode vn); + + T visit(PoolNode pn); T visit(SlackFileNode sfn); @@ -262,6 +264,11 @@ public interface DisplayableItemNodeVisitor { public T visit(ImageNode in) { return defaultVisit(in); } + + @Override + public T visit(PoolNode pn) { + return defaultVisit(pn); + } @Override public T visit(VolumeNode vn) { diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java index e52e50c31c..d97e980a8b 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ExtractedContent.java @@ -43,6 +43,7 @@ import org.sleuthkit.datamodel.Blackboard; import org.sleuthkit.datamodel.BlackboardArtifact; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_ACCOUNT; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT; +import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_DATA_SOURCE_USAGE; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO; @@ -229,7 +230,7 @@ public class ExtractedContent implements AutopsyVisitableItem { TypeFactory() { super(); - // these are shown in other parts of the UI tree + // these are shown in other parts of the UI doNotShow.add(new BlackboardArtifact.Type(TSK_GEN_INFO)); doNotShow.add(new BlackboardArtifact.Type(TSK_EMAIL_MSG)); doNotShow.add(new BlackboardArtifact.Type(TSK_HASHSET_HIT)); @@ -239,6 +240,9 @@ public class ExtractedContent implements AutopsyVisitableItem { doNotShow.add(new BlackboardArtifact.Type(TSK_ACCOUNT)); doNotShow.add(new BlackboardArtifact.Type(TSK_DATA_SOURCE_USAGE)); doNotShow.add(new BlackboardArtifact.Type(TSK_DOWNLOAD_SOURCE)); + doNotShow.add(new BlackboardArtifact.Type(TSK_TL_EVENT)); + + //This is not meant to be shown in the UI at all. It is more of a meta artifact. doNotShow.add(new BlackboardArtifact.Type(TSK_ASSOCIATED_OBJECT)); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PoolNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PoolNode.java new file mode 100644 index 0000000000..9bc7736952 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PoolNode.java @@ -0,0 +1,204 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel; + +import java.util.ArrayList; +import java.util.List; +import javax.swing.Action; +import org.apache.commons.lang3.tuple.Pair; +import org.openide.nodes.Sheet; +import org.openide.util.NbBundle; +import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttributeInstance; +import org.sleuthkit.autopsy.corecomponents.DataResultViewerTable; +import static org.sleuthkit.autopsy.datamodel.AbstractContentNode.NO_DESCR; +import org.sleuthkit.datamodel.Pool; +import org.sleuthkit.datamodel.Tag; + +/** + * This class is used to represent the "Node" for the pool. + */ +public class PoolNode extends AbstractContentNode { + + /** + * Helper so that the display name and the name used in building the path + * are determined the same way. + * + * @param pool Pool to get the name of + * + * @return short name for the pool + */ + static String nameForPool(Pool pool) { + return pool.getType().getName(); + } + + /** + * + * @param pool underlying Content instance + */ + public PoolNode(Pool pool) { + super(pool); + + // set name, display name, and icon + String poolName = nameForPool(pool); + this.setDisplayName(poolName); + + this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/pool-icon.png"); //NON-NLS + } + + /** + * Right click action for volume node + * + * @param popup + * + * @return + */ + @Override + public Action[] getActions(boolean popup) { + List actionsList = new ArrayList<>(); + + for (Action a : super.getActions(true)) { + actionsList.add(a); + } + + return actionsList.toArray(new Action[actionsList.size()]); + + } + + @NbBundle.Messages({ + "PoolNode.createSheet.name.name=Name", + "PoolNode.createSheet.name.displayName=Name", + "PoolNode.createSheet.name.desc=no description", + "PoolNode.createSheet.type.name=Type", + "PoolNode.createSheet.type.displayName=Type", + "PoolNode.createSheet.type.desc=no description", + }) + @Override + protected Sheet createSheet() { + Sheet sheet = super.createSheet(); + Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES); + if (sheetSet == null) { + sheetSet = Sheet.createPropertiesSet(); + sheet.put(sheetSet); + } + + Pool pool = this.getContent(); + sheetSet.put(new NodeProperty<>(Bundle.PoolNode_createSheet_name_name(), + Bundle.PoolNode_createSheet_name_displayName(), + Bundle.PoolNode_createSheet_name_desc(), + this.getDisplayName())); + sheetSet.put(new NodeProperty<>(Bundle.PoolNode_createSheet_type_name(), + Bundle.PoolNode_createSheet_type_displayName(), + Bundle.PoolNode_createSheet_type_desc(), + pool.getType().getName())); + + return sheet; + } + + @Override + public T accept(ContentNodeVisitor visitor) { + return visitor.visit(this); + } + + @Override + public boolean isLeafTypeNode() { + return false; + } + + @Override + public T accept(DisplayableItemNodeVisitor visitor) { + return visitor.visit(this); + } + + @Override + public String getItemType() { + return getClass().getName(); + } + + /** + * Reads and returns a list of all tags associated with this content node. + * + * Null implementation of an abstract method. + * + * @return list of tags associated with the node. + */ + @Override + protected List getAllTagsFromDatabase() { + return new ArrayList<>(); + } + + /** + * Returns correlation attribute instance for the underlying content of the + * node. + * + * Null implementation of an abstract method. + * + * @return correlation attribute instance for the underlying content of the + * node. + */ + @Override + protected CorrelationAttributeInstance getCorrelationAttributeInstance() { + return null; + } + + /** + * Returns Score property for the node. + * + * Null implementation of an abstract method. + * + * @param tags list of tags. + * + * @return Score property for the underlying content of the node. + */ + @Override + protected Pair getScorePropertyAndDescription(List tags) { + return Pair.of(DataResultViewerTable.Score.NO_SCORE, NO_DESCR); + } + + /** + * Returns comment property for the node. + * + * Null implementation of an abstract method. + * + * @param tags list of tags + * @param attribute correlation attribute instance + * + * @return Comment property for the underlying content of the node. + */ + @Override + protected DataResultViewerTable.HasCommentStatus getCommentProperty(List tags, CorrelationAttributeInstance attribute) { + return DataResultViewerTable.HasCommentStatus.NO_COMMENT; + } + + /** + * Returns occurrences/count property for the node. + * + * Null implementation of an abstract method. + * + * @param attributeType the type of the attribute to count + * @param attributeValue the value of the attribute to coun + * @param defaultDescription a description to use when none is determined by + * the getCountPropertyAndDescription method + * + * @return count property for the underlying content of the node. + */ + @Override + protected Pair getCountPropertyAndDescription(CorrelationAttributeInstance.Type attributeType, String attributeValue, String defaultDescription) { + return Pair.of(-1L, NO_DESCR); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ja.properties new file mode 100644 index 0000000000..1e28a40973 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/accounts/Bundle_ja.properties @@ -0,0 +1,28 @@ +Accounts.BINNode.accountsProperty.displayName=\u30a2\u30ab\u30a6\u30f3\u30c8 +Accounts.BINNode.bankCityProperty.displayName=\u9280\u884c\u6240\u5728\u5730\u5e02\u753a\u6751\u533a +Accounts.BINNode.bankCountryProperty.displayName=\u9280\u884c\u6240\u5728\u56fd +Accounts.BINNode.bankPhoneProperty.displayName=\u9280\u884c\u96fb\u8a71\u756a\u53f7# +Accounts.BINNode.bankProperty.displayName=\u9280\u884c +Accounts.BINNode.bankURLProperty.displayName=\u9280\u884cURL +Accounts.BINNode.binProperty.displayName=\u9280\u884c\u8b58\u5225\u756a\u53f7 +Accounts.BINNode.brandProperty.displayName=\u30d6\u30e9\u30f3\u30c9 +Accounts.BINNode.cardTypeProperty.displayName=\u652f\u6255\u3044\u30ab\u30fc\u30c9\u306e\u7a2e\u985e +Accounts.BINNode.noDescription=\u8aac\u660e\u306a\u3057 +Accounts.BINNode.schemeProperty.displayName=\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u30b9\u30ad\u30fc\u30e0 +# {0} - \u5b50\u306e\u6570 +Accounts.ByBINNode.displayName=BIN\u5225 ({0}) +Accounts.ByBINNode.name=BIN\u5225 +# {0} - \u5b50\u306e\u6570 +Accounts.ByFileNode.displayName=\u30d5\u30a1\u30a4\u30eb\u5225 ({0}) +Accounts.FileWithCCNNode.accountsProperty.displayName=\u30a2\u30ab\u30a6\u30f3\u30c8 +Accounts.FileWithCCNNode.nameProperty.displayName=\u30d5\u30a1\u30a4\u30eb +Accounts.FileWithCCNNode.noDescription=\u8aac\u660e\u306a\u3057 +Accounts.FileWithCCNNode.statusProperty.displayName=\u30b9\u30c6\u30fc\u30bf\u30b9 +# {0} - \u30ed\u30fc\u30d5\u30a1\u30a4\u30eb\u540d +# {1} - Solr\u30c1\u30e3\u30f3\u30afID +Accounts.FileWithCCNNode.unallocatedSpaceFile.displayName={0}_\u30c1\u30e3\u30f3\u30af_{1} +Accounts.RootNode.displayName=\u30a2\u30ab\u30a6\u30f3\u30c8 +AccountsRootNode.name=\u30a2\u30ab\u30a6\u30f3\u30c8 +ApproveAccountsAction.name=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u627f\u8a8d +RejectAccountsAction.name=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u62d2\u5426 +ToggleShowRejected.name=\u62d2\u5426\u3055\u308c\u305f\u7d50\u679c\u3092\u8868\u793a diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/utils/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datamodel/utils/Bundle_ja.properties new file mode 100644 index 0000000000..b3e4e61e7d --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/utils/Bundle_ja.properties @@ -0,0 +1,7 @@ +FileTypeCategory.Audio.displayName=\u30aa\u30fc\u30c7\u30a3\u30aa +FileTypeCategory.Documents.displayName=\u6587\u66f8 +FileTypeCategory.Executables.displayName=\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb +FileTypeCategory.Image.displayName=\u30a4\u30e1\u30fc\u30b8 +FileTypeCategory.Media.displayName=\u30e1\u30c7\u30a3\u30a2 +FileTypeCategory.Video.displayName=\u52d5\u753b +FileTypeCategory.Visual.displayName=\u30d3\u30b8\u30e5\u30a2\u30eb diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ja.properties new file mode 100644 index 0000000000..7086b898db --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/Bundle_ja.properties @@ -0,0 +1,21 @@ +# \u3053\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3] \u3067 [\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc] \u3092\u9078\u629e\u3057\u307e\u3059\u3002 +# \u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb | \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] \u3092\u9078\u629e\u3057\u3001 +# \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u958b\u304d\u307e\u3059\u3002 + +AddRawImageTask.for.device=\u30c7\u30d0\u30a4\u30b9\u7528 +AddRawImageTask.image.critical.error.adding=\u8ffd\u52a0\u4e2d\u306e\u91cd\u5927\u306a\u30a8\u30e9\u30fc +AddRawImageTask.image.critical.error.adding=\u8ffd\u52a0\u4e2d\u306e\u91cd\u5927\u3067\u306f\u306a\u3044\u30a8\u30e9\u30fc +AddRawImageTask.image.notExisting=\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +AddRawImageTask.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AddRawImageTask.progress.add.text=\u6b21\u306e\u30ed\u30fc\u30a4\u30e1\u30fc\u30b8\u3092\u8ffd\u52a0\u4e2d\u3067\u3059: +RawDSInputPanel.error.text=\u30de\u30eb\u30c1\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30d1\u30b9\u306f "C:" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059 +RawDSInputPanel.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +RawDSInputPanel.pathLabel.text=\u672a\u4f7f\u7528\u9818\u57df\u306e\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167: +RawDSInputPanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb +RawDSInputPanel.browseButton.text=\u53c2\u7167 +RawDSInputPanel.pathTextField.text= +RawDSInputPanel.jBreakFileUpLabel.text=\u6b21\u307e\u3067\u30a4\u30e1\u30fc\u30b8\u3092\u7d30\u5206\u5316: +RawDSInputPanel.jNoBreakupRadioButton.text=\u7d30\u5206\u5316\u3057\u306a\u3044 +RawDSInputPanel.j2GBBreakupRadioButton.text=2GB\u30c1\u30e3\u30f3\u30af +RawDSInputPanel.timeZoneLabel.text=\u5165\u529b\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044: +RawDSProcessor.dataSourceType=\u672a\u4f7f\u7528\u9818\u57df\u306e\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties index 05c5199962..54024e1025 100755 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties @@ -1,4 +1,4 @@ XRYDataSourceProcessorConfigPanel.fileBrowserButton.text=Browse XRYDataSourceProcessorConfigPanel.filePathTextField.text= -XRYDataSourceProcessorConfigPanel.xrySelectFolderLabel.text=Select an XRY Folder +XRYDataSourceProcessorConfigPanel.xrySelectFolderLabel.text=Select a folder containing exported XRY text files XRYDataSourceProcessorConfigPanel.errorLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties-MERGED index 2084998a0a..c3b75fd3c4 100755 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/Bundle.properties-MERGED @@ -1,16 +1,16 @@ XRYDataSourceProcessor.childNotReadable=Top level path [ %s ] is not readable -XRYDataSourceProcessor.dataSourceType=XRY Logical Report +XRYDataSourceProcessor.dataSourceType=XRY Text Export XRYDataSourceProcessor.fileAdded=Added %s to the case database -XRYDataSourceProcessor.ioError=I/O error occured trying to test the XRY report folder +XRYDataSourceProcessor.ioError=I/O error occured trying to test the selected folder XRYDataSourceProcessor.noCurrentCase=No case is open. -XRYDataSourceProcessor.noPathSelected=Please select a XRY folder +XRYDataSourceProcessor.noPathSelected=Please select a folder containing exported XRY text files XRYDataSourceProcessor.notAFolder=The selected path is not a folder XRYDataSourceProcessor.notReadable=Selected path is not readable -XRYDataSourceProcessor.notXRYFolder=Selected folder did not contain any XRY files +XRYDataSourceProcessor.notXRYFolder=Selected folder did not contain any XRY text files XRYDataSourceProcessor.preppingFiles=Preparing to add files to the case database XRYDataSourceProcessor.processingFiles=Processing all XRY files... XRYDataSourceProcessor.unexpectedError=Internal error occurred while processing XRY report XRYDataSourceProcessorConfigPanel.fileBrowserButton.text=Browse XRYDataSourceProcessorConfigPanel.filePathTextField.text= -XRYDataSourceProcessorConfigPanel.xrySelectFolderLabel.text=Select an XRY Folder +XRYDataSourceProcessorConfigPanel.xrySelectFolderLabel.text=Select a folder containing exported XRY text files XRYDataSourceProcessorConfigPanel.errorLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYDataSourceProcessor.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYDataSourceProcessor.java index 0f890469bd..83ddbc1f5b 100755 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYDataSourceProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYDataSourceProcessor.java @@ -77,7 +77,7 @@ public class XRYDataSourceProcessor implements DataSourceProcessor, AutoIngestDa @Override @NbBundle.Messages({ - "XRYDataSourceProcessor.dataSourceType=XRY Logical Report" + "XRYDataSourceProcessor.dataSourceType=XRY Text Export" }) public String getDataSourceType() { return Bundle.XRYDataSourceProcessor_dataSourceType(); @@ -96,10 +96,10 @@ public class XRYDataSourceProcessor implements DataSourceProcessor, AutoIngestDa */ @Override @NbBundle.Messages({ - "XRYDataSourceProcessor.noPathSelected=Please select a XRY folder", + "XRYDataSourceProcessor.noPathSelected=Please select a folder containing exported XRY text files", "XRYDataSourceProcessor.notReadable=Selected path is not readable", - "XRYDataSourceProcessor.notXRYFolder=Selected folder did not contain any XRY files", - "XRYDataSourceProcessor.ioError=I/O error occured trying to test the XRY report folder", + "XRYDataSourceProcessor.notXRYFolder=Selected folder did not contain any XRY text files", + "XRYDataSourceProcessor.ioError=I/O error occured trying to test the selected folder", "XRYDataSourceProcessor.childNotReadable=Top level path [ %s ] is not readable", "XRYDataSourceProcessor.notAFolder=The selected path is not a folder" }) @@ -306,7 +306,7 @@ public class XRYDataSourceProcessor implements DataSourceProcessor, AutoIngestDa .collect(Collectors.toList()); LocalFilesDataSource dataSource = fileManager.addLocalFilesDataSource( uniqueUUID, - "XRY Report", //Name + "XRY Text Export", //Name "", //Timezone filePaths, new ProgressMonitorAdapter(progressMonitor)); diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYFileReader.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYFileReader.java index bc3c04259b..726c86f170 100755 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYFileReader.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/xry/XRYFileReader.java @@ -52,7 +52,11 @@ final class XRYFileReader implements AutoCloseable { //Assume UTF_16LE private static final Charset CHARSET = StandardCharsets.UTF_16LE; - //Assume all XRY reports have the type on the 3rd line. + //Assume the header begins with 'xry export'. + private static final String START_OF_HEADER = "xry export"; + + //Assume all XRY reports have the type on the 3rd line + //relative to the start of the header. private static final int LINE_WITH_REPORT_TYPE = 3; //Assume all headers are 5 lines in length. @@ -91,8 +95,12 @@ final class XRYFileReader implements AutoCloseable { reader = Files.newBufferedReader(xryFile, CHARSET); xryFilePath = xryFile; - //Advance the reader to the start of the first XRY entity. - for (int i = 0; i < HEADER_LENGTH_IN_LINES; i++) { + //Advance the reader to the start of the header. + advanceToHeader(reader); + + //Advance the reader past the header to the start + //of the first XRY entity. + for (int i = 1; i < HEADER_LENGTH_IN_LINES; i++) { reader.readLine(); } @@ -298,8 +306,11 @@ final class XRYFileReader implements AutoCloseable { */ private static Optional getType(Path file) throws IOException { try (BufferedReader reader = Files.newBufferedReader(file, CHARSET)) { + //Header may not start at the beginning of the file. + advanceToHeader(reader); + //Advance the reader to the line before the report type. - for (int i = 0; i < LINE_WITH_REPORT_TYPE - 1; i++) { + for (int i = 1; i < LINE_WITH_REPORT_TYPE - 1; i++) { reader.readLine(); } @@ -310,4 +321,51 @@ final class XRYFileReader implements AutoCloseable { return Optional.empty(); } } + + /** + * Advances the reader to the start of the header. The XRY Export header may + * not be the first n lines of the file. It may be preceded by new lines or + * white space. + * + * This function will consume the first line of the header, which will be + * 'XRY Export'. + * + * @param reader BufferedReader pointing to the xry file + * @throws IOException if an I/O error occurs + */ + private static void advanceToHeader(BufferedReader reader) throws IOException { + String line; + if((line = reader.readLine()) == null) { + return; + } + + String normalizedLine = line.trim().toLowerCase(); + if (normalizedLine.equals(START_OF_HEADER)) { + return; + } + + /** + * The first line may have 0xFFFE BOM prepended to it, which will cause + * the equality check to fail. This bit a logic will try to remove those + * bytes and attempt another check. + */ + byte[] normalizedBytes = normalizedLine.getBytes(CHARSET); + if (normalizedBytes.length > 2) { + normalizedLine = new String(normalizedBytes, 2, + normalizedBytes.length - 2, CHARSET); + if (normalizedLine.equals(START_OF_HEADER)) { + return; + } + } + + /** + * All other lines will need to match completely. + */ + while ((line = reader.readLine()) != null) { + normalizedLine = line.trim().toLowerCase(); + if (normalizedLine.equals(START_OF_HEADER)) { + return; + } + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ja.properties index 860af87697..c21e75e73c 100644 --- a/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/diagnostics/Bundle_ja.properties @@ -1,22 +1,29 @@ -CTL_PerformancePanelAction=\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u8A3A\u65AD -PerformancePanel.cpuTest.basemsg=CPU\u30C6\u30B9\u30C8\u5B9F\u884C\u4E2D -PerformancePanel.cpuTest.cpuLabel.MBHashedPerSec.text=\uFF11\u79D2\u3054\u3068\u306B{0}MB\u30CF\u30C3\u30B7\u30E5\u5B8C\u4E86 -PerformancePanel.cpuTest.cpuLabel.md5AlgNotFound.text=MD5\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F -PerformancePanel.dbTest.dbLabel.errPerformQuery.text=\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -PerformancePanel.dbTest.dbLabel.recordsPerSec.text=\uFF11\u79D2\u3054\u3068\u306B{0}\u30EC\u30B3\u30FC\u30C9 -PerformancePanel.dbTest.status.running=DB\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u4E2D -PerformancePanel.done.statusMsg.err.text=\u30A8\u30E9\u30FC\uFF1A{0} -PerformancePanel.fileReadLabel.errMakeFileReader.text=\u30D5\u30A1\u30A4\u30EB\u30EA\u30FC\u30C0\u30FC\u3092\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -PerformancePanel.fileReadLabel.imgPathNotExist.text=\u30A4\u30E1\u30FC\u30B8\u30D1\u30B9\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 -PerformancePanel.FileReadTest.fileReadLabel.skipped.text=\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F -PerformancePanel.FileReadTest.statusMsg.runningFileReadTest.text=\u30D5\u30A1\u30A4\u30EB\u30EA\u30FC\u30C7\u30A3\u30F3\u30B0\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u4E2D -PerformancePanel.imgTest.statusMsg.runningImgReadTest.text=\u30A4\u30E1\u30FC\u30B8\u30EA\u30FC\u30C7\u30A3\u30F3\u30B0\u30C6\u30B9\u30C8\u5B9F\u884C\u4E2D -PerformancePanel.jLabel1.text=\u30A4\u30E1\u30FC\u30B8\u30EA\u30FC\u30C7\u30A3\u30F3\u30B0\uFF1A -PerformancePanel.jLabel2.text=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30EA\u30FC\u30C7\u30A3\u30F3\u30B0\uFF1A -PerformancePanel.jLabel3.text=CPU\uFF1A -PerformancePanel.jLabel4.text=\u30D5\u30A1\u30A4\u30EB\u30EA\u30FC\u30C7\u30A3\u30F3\u30B0\uFF1A -PerformancePanel.jLabel5.text=\u30B7\u30B9\u30C6\u30E0\u306E\u30DC\u30C8\u30EB\u30CD\u30C3\u30AF\u3092\u7279\u5B9A\u3059\u308B\u4E00\u9023\u306E\u30C6\u30B9\u30C8\u3092\u884C\u3046\u30D1\u30CD\u30EB\u3067\u3059\u3002 -PerformancePanel.label.caseNotOpen.text=\u30B1\u30FC\u30B9\u304C\u958B\u3044\u3066\u3044\u307E\u305B\u3093 -PerformancePanel.label.noImgInCase.text=\u30B1\u30FC\u30B9\u306B\u30A4\u30E1\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093 -PerformancePanel.startButton.text=\u958B\u59CB -PerformancePanel.title=\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u8A3A\u65AD \ No newline at end of file +CTL_PerformancePanelAction=\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a3a\u65ad +PerformancePanel.jLabel1.text=\u30a4\u30e1\u30fc\u30b8\u306e\u8aad\u307f\u8fbc\u307f: +PerformancePanel.jLabel2.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8aad\u307f\u8fbc\u307f: +PerformancePanel.jLabel3.text=CPU: +PerformancePanel.imgReadLabel.text=\ +PerformancePanel.dbReadLabel.text=\ +PerformancePanel.cpuTimeLabel.text=\ +PerformancePanel.startButton.text=\u958b\u59cb +PerformancePanel.statusLabel.text=\ +PerformancePanel.jLabel4.text=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f: +PerformancePanel.fileReadLabel.text=\ +PerformancePanel.jLabel5.text=\u3053\u306e\u30d1\u30cd\u30eb\u306f\u4e00\u9023\u306e\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3059\u308b\u3053\u3068\u3067\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a\u3092\u652f\u63f4\u3057\u307e\u3059\u3002 +PerformancePanel.title=\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8a3a\u65ad +PerformancePanel.cpuTest.basemsg=CPU\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +PerformancePanel.cpuTest.cpuLabel.md5AlgNotFound.text=MD5\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +PerformancePanel.cpuTest.cpuLabel.MBHashedPerSec.text=\u30cf\u30c3\u30b7\u30e5\u6e08\u307f {0} MB / \u79d2 +PerformancePanel.imgTest.statusMsg.runningImgReadTest.text=\u30a4\u30e1\u30fc\u30b8\u8aad\u307f\u8fbc\u307f\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +PerformancePanel.label.caseNotOpen.text=\u30b1\u30fc\u30b9\u304c\u958b\u3044\u3066\u3044\u307e\u305b\u3093 +PerformancePanel.label.noImgInCase.text=\u30b1\u30fc\u30b9\u306b\u30a4\u30e1\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093 +PerformancePanel.ImgTest.imgLabel.MBReadPerSec.text=\u8aad\u307f\u53d6\u308a\u6e08\u307f {0} MB / \u79d2({1}) +PerformancePanel.FileReadTest.fileReadLabel.skipped.text=\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f +PerformancePanel.FileReadTest.statusMsg.runningFileReadTest.text=\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +PerformancePanel.fileReadLabel.imgPathNotExist.text=\u30a4\u30e1\u30fc\u30b8\u30d1\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093 +PerformancePanel.fileReadLabel.errMakeFileReader.text=\u30d5\u30a1\u30a4\u30eb\u30ea\u30fc\u30c0\u30fc\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PerformancePanel.ImgTest.fileReadLabel.MBReadPerSec.text=\u8aad\u307f\u53d6\u308a\u6e08\u307f {0} MB / \u79d2({1}) +PerformancePanel.dbTest.status.running=DB\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 +PerformancePanel.dbTest.dbLabel.recordsPerSec.text={0} \u30ec\u30b3\u30fc\u30c9 / \u79d2 +PerformancePanel.dbTest.dbLabel.errPerformQuery.text=\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PerformancePanel.done.statusMsg.err.text=\u30a8\u30e9\u30fc: {0} diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties index 567e7b1478..1d92def2e4 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties @@ -1,8 +1,44 @@ -CTL_DirectoryTreeTopComponent=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc -HINT_DirectoryTreeTopComponent=\u3053\u308c\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059 -OpenIDE-Module-Name=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc -FileSystemDetailsPanel.imgOffsetLabel.text=\u30a4\u30e1\u30fc\u30b8\u30aa\u30d5\u30bb\u30c3\u30c8\uff1a -FileSystemDetailsPanel.fsTypeLabel.text=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u30bf\u30a4\u30d7\uff1a +CSVWriter.done.notifyMsg.error=CSV \u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - \u51fa\u529b\u30d5\u30a1\u30a4\u30eb +CSVWriter.done.notifyMsg.success={0} \u306b\u66f8\u304d\u8fbc\u307f\u307e\u3057\u305f +CSVWriter.progress.cancelling=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059 +CSVWriter.progress.extracting=CSV \u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u3067\u3059 +CTL_DirectoryTreeTopComponent=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u30d5\u30a1\u30a4\u30eb +DataResultFilterNode.viewSourceArtifact.text=\u30bd\u30fc\u30b9\u7d50\u679c\u3092\u8868\u793a +# {0} - dataSourceCount +DirectoryTreeTopComponent.componentOpened.groupDataSources.text=\u3053\u306e\u30b1\u30fc\u30b9\u306b\u306f {0} \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u8aad\u307f\u8fbc\u307f\u3092\u65e9\u304f\u3057\u307e\u3059\u304b? +DirectoryTreeTopComponent.componentOpened.groupDataSources.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u307e\u3059\u304b? +DirectoryTreeTopComponent.emptyMimeNode.text=\u30c7\u30fc\u30bf\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +DirectoryTreeTopComponent.resultsView.title=\u30ea\u30c3\u30b9\u30f3\u4e2d\u3067\u3059 +ExportCSV.saveNodesToCSV.empty=\u30c7\u30fc\u30bf\u306f\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u51fa\u529b\u30d5\u30a1\u30a4\u30eb +ExportCSV.saveNodesToCSV.fileExists=\u30d5\u30a1\u30a4\u30eb {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +ExportCSV.saveNodesToCSV.noCurrentCase=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093 +ExportCSV.title.text=\u9078\u629e\u3057\u305f\u884c\u3092CSV\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +ExternalViewerAction.actionPerformed.failure.exe.message=\u30d5\u30a1\u30a4\u30eb\u306f\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308b\u305f\u3081\u958b\u304d\u307e\u305b\u3093\u3002 +ExternalViewerAction.actionPerformed.failure.IO.message=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a8\u30c7\u30a3\u30bf\u30fc\u304c\u306a\u3044\u304b\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ExternalViewerAction.actionPerformed.failure.missingFile.message=\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +ExternalViewerAction.actionPerformed.failure.open.url=URL\u3092\u958b\u3051\u307e\u305b\u3093 +ExternalViewerAction.actionPerformed.failure.permission.message=\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u8a31\u53ef\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 +ExternalViewerAction.actionPerformed.failure.support.message=\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0(\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0)\u306f\u3053\u306e\u65b9\u6cd5\u3067\u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +ExternalViewerAction.actionPerformed.failure.title=\u30d5\u30a1\u30a4\u30eb\u30aa\u30fc\u30d7\u30f3\u5931\u6557 {0} +ExternalViewerAction.actionPerformed.urlFailure.title=URL\u30aa\u30fc\u30d7\u30f3\u5931\u6557 +ExternalViewerShortcutAction.title.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +ExtractAction.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +ExtractUnallocAction.imageError=\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u672a\u4f7f\u7528\u9818\u57df\u306e\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractUnallocAction.noFiles=\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +ExtractUnallocAction.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +ExtractUnallocAction.volumeError=\u30dc\u30ea\u30e5\u30fc\u30e0\u304b\u3089\u672a\u4f7f\u7528\u9818\u57df\u306e\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - fileName +ExtractUnallocAction.volumeInProgress=\u672a\u4f7f\u7528\u9818\u57df\u3092\u3059\u3067\u306b {0} \u306b\u62bd\u51fa\u4e2d\u3067\u3059 - \u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059 +FileSystemDetailsAction.title.text=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u8a73\u7d30 +# {0} - dataSourceCount +GroupDataSourcesDialog.groupDataSources.text=\u3053\u306e\u30b1\u30fc\u30b9\u306b\u306f {0} \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +HINT_DirectoryTreeTopComponent=\u3053\u308c\u306fDirectoryTree\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059 +OpenIDE-Module-Name=DirectoryTree +FileSystemDetailsPanel.imgOffsetLabel.text=\u30a4\u30e1\u30fc\u30b8\u30aa\u30d5\u30bb\u30c3\u30c8: +FileSystemDetailsPanel.fsTypeLabel.text=FileSystem\u30bf\u30a4\u30d7: FileSystemDetailsPanel.jLabel2.text=\u30d0\u30a4\u30c8 FileSystemDetailsPanel.jLabel3.text=\u30d0\u30a4\u30c8 FileSystemDetailsPanel.fsTypeValue.text=... @@ -13,73 +49,123 @@ FileSystemDetailsPanel.blockCountValue.text=... FileSystemDetailsPanel.rootInumValue.text=... FileSystemDetailsPanel.firstInumValue.text=... FileSystemDetailsPanel.lastInumValue.text=... -FileSystemDetailsPanel.volumeIDLabel.text=\u30dc\u30ea\u30e5\u30fc\u30e0ID\uff1a -FileSystemDetailsPanel.blockSizeLabel.text=\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba\uff1a -FileSystemDetailsPanel.blockCountLabel.text=\u30d6\u30ed\u30c3\u30af\u6570\uff1a -FileSystemDetailsPanel.rootInumLabel.text=\u30eb\u30fc\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u30fc\uff1a -FileSystemDetailsPanel.firstInumLabel.text=\u6700\u521d\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u30fc\uff1a -FileSystemDetailsPanel.lastInumLabel.text=\u6700\u5f8c\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u30fc\uff1a +FileSystemDetailsPanel.volumeIDLabel.text=\u30dc\u30ea\u30e5\u30fc\u30e0ID: +FileSystemDetailsPanel.blockSizeLabel.text=\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba: +FileSystemDetailsPanel.blockCountLabel.text=\u30d6\u30ed\u30c3\u30af\u30ab\u30a6\u30f3\u30c8: +FileSystemDetailsPanel.rootInumLabel.text=\u30eb\u30fc\u30c8\u30e1\u30bf\u30c7\u30fc\u30bf\u5165\u529b: +FileSystemDetailsPanel.firstInumLabel.text=\u6700\u521d\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u5165\u529b: +FileSystemDetailsPanel.lastInumLabel.text=\u6700\u5f8c\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u5165\u529b: FileSystemDetailsPanel.OKButton.text=OK -VolumeDetailsPanel.volumeIDLabel.text=\u30dc\u30ea\u30e5\u30fc\u30e0ID\uff1a +SelectionContext.dataSourceFiles=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb +SelectionContext.dataSources=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +SelectionContext.views=\u30d3\u30e5\u30fc +ViewContextAction.errorMessage.cannotFindDirectory=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ViewContextAction.errorMessage.cannotFindNode=\u30c4\u30ea\u30fc\u5185\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30ce\u30fc\u30c9\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ViewContextAction.errorMessage.cannotSelectDirectory=\u30c4\u30ea\u30fc\u5185\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u9078\u629e\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +VolumeDetailsPanel.volumeIDLabel.text=\u30dc\u30ea\u30e5\u30fc\u30e0ID: VolumeDetailsPanel.volumeIDValue.text=... VolumeDetailsPanel.startValue.text=... VolumeDetailsPanel.lengthValue.text=... VolumeDetailsPanel.descValue.text=... VolumeDetailsPanel.flagsValue.text=... -VolumeDetailsPanel.startLabel.text=\u6700\u521d\u306e\u30bb\u30af\u30bf\u30fc\uff1a -VolumeDetailsPanel.lengthLabel.text=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055\uff1a -VolumeDetailsPanel.descLabel.text=\u8aac\u660e\uff1a -VolumeDetailsPanel.flagsLabel.text=\u30d5\u30e9\u30b0\uff1a -VolumeDetailsPanel.jLabel1.text=\u30dc\u30ea\u30e5\u30fc\u30e0\u4e00\u822c\u60c5\u5831 +VolumeDetailsPanel.startLabel.text=\u30bb\u30af\u30bf\u30fc\u3092\u958b\u59cb\u4e2d\u3067\u3059: +VolumeDetailsPanel.lengthLabel.text=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055: +VolumeDetailsPanel.descLabel.text=\u8a18\u8ff0: +VolumeDetailsPanel.flagsLabel.text=\u30d5\u30e9\u30b0: +VolumeDetailsPanel.jLabel1.text=\u30dc\u30ea\u30e5\u30fc\u30e0\u60c5\u5831\u5168\u822c VolumeDetailsPanel.OKButton.text=OK ImageDetailsPanel.imageInfoLabel.text=\u30a4\u30e1\u30fc\u30b8\u60c5\u5831 -ImageDetailsPanel.imgNameLabel.text=\u540d\u524d\uff1a +ImageDetailsPanel.imgNameLabel.text=\u540d\u524d: ImageDetailsPanel.imgNameValue.text=... -ImageDetailsPanel.imgTypeLabel.text=\u30bf\u30a4\u30d7\uff1a +ImageDetailsPanel.imgTypeLabel.text=\u30bf\u30a4\u30d7: ImageDetailsPanel.imgTypeValue.text=... ImageDetailsPanel.OKButton.text=OK -ImageDetailsPanel.imgSectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba\uff1a +ImageDetailsPanel.imgSectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba: ImageDetailsPanel.imgSectorSizeValue.text=... +DirectoryTreeTopComponent.backButton.text= +DirectoryTreeTopComponent.forwardButton.text= ImageDetailsPanel.imgTotalSizeValue.text=... -ImageDetailsPanel.imgTotalSizeLabel.text=\u5408\u8a08\u30b5\u30a4\u30ba\uff1a +ImageDetailsPanel.imgTotalSizeLabel.text=\u5408\u8a08\u30b5\u30a4\u30ba: ImageDetailsPanel.imgHashValue.text=... -ImageDetailsPanel.imgHashLabel.text=\u30cf\u30c3\u30b7\u30e5\u5024\uff1a -DataResultFilterNode.action.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -DataResultFilterNode.action.viewSrcFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a -DataResultFilterNode.action.viewInNewWin.text=\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a -DataResultFilterNode.action.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f -DataResultFilterNode.action.searchFilesSameMd5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 -DataResultFilterNode.action.viewInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u8868\u793a -DirectoryTreeFilterNode.action.openFileSrcByAttr.text=\u5c5e\u6027\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u3092\u958b\u304f +ImageDetailsPanel.imgHashLabel.text=\u30cf\u30c3\u30b7\u30e5\u5024: +DataResultFilterNode.action.viewFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +DataResultFilterNode.action.viewSrcFileInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +DataResultFilterNode.action.viewInNewWin.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a +DataResultFilterNode.action.openInExtViewer.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +DataResultFilterNode.action.searchFilesSameMd5.text=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +DataResultFilterNode.action.viewInDir.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3067\u8868\u793a +DirectoryTreeFilterNode.action.collapseAll.text=\u3059\u3079\u3066\u3092\u6298\u308a\u305f\u305f\u3080 +DirectoryTreeFilterNode.action.openFileSrcByAttr.text=\u5c5e\u6027\u5225\u306b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u3092\u958b\u304f DirectoryTreeFilterNode.action.runIngestMods.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c -DirectoryTreeTopComponent.action.viewArtContent.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8868\u793a +DirectoryTreeTopComponent.action.viewArtContent.text=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u5185\u5bb9\u3092\u8868\u793a ExplorerNodeActionVisitor.action.imgDetails.title=\u30a4\u30e1\u30fc\u30b8\u8a73\u7d30 -ExplorerNodeActionVisitor.action.extUnallocToSingleFiles=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u5185\u306e\u30c7\u30fc\u30bf\u3092\u30b7\u30f3\u30b0\u30eb\u30d5\u30a1\u30a4\u30eb\u306b\u62bd\u51fa +ExplorerNodeActionVisitor.action.extUnallocToSingleFiles=\u672a\u4f7f\u7528\u9818\u57df\u3092\u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306b\u62bd\u51fa ExplorerNodeActionVisitor.action.fileSystemDetails.title=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u8a73\u7d30 ExplorerNodeActionVisitor.action.volumeDetails.title=\u30dc\u30ea\u30e5\u30fc\u30e0\u8a73\u7d30 -ExplorerNodeActionVisitor.action.extUnallocToSingleFile=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u5185\u306e\u30c7\u30fc\u30bf\u3092\u30b7\u30f3\u30b0\u30eb\u30d5\u30a1\u30a4\u30eb\u306b\u62bd\u51fa -ExplorerNodeActionVisitor.volDetail.noVolMatchErr=\u30a8\u30e9\u30fc\uff1a\u4e00\u81f4\u3059\u308b\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -ExplorerNodeActionVisitor.imgDetail.noVolMatchesErr=\u30a8\u30e9\u30fc\uff1a\u4e00\u81f4\u3059\u308b\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -ExplorerNodeActionVisitor.exception.probGetParent.text={0}\: {1}\u304b\u3089\u30da\u30a2\u30ec\u30f3\u30c8\u3092\u53d6\u5f97\u3059\u308b\u969b\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExplorerNodeActionVisitor.action.extUnallocToSingleFile=\u672a\u4f7f\u7528\u9818\u57df\u3092\u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u306b\u62bd\u51fa +ExplorerNodeActionVisitor.volDetail.noVolMatchErr=\u30a8\u30e9\u30fc: \u4e00\u81f4\u3059\u308b\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +ExplorerNodeActionVisitor.imgDetail.noVolMatchesErr=\u30a8\u30e9\u30fc: \u4e00\u81f4\u3059\u308b\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +ExplorerNodeActionVisitor.exception.probGetParent.text={0} \u304b\u3089\u6b21\u306e\u89aa\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {1} ExtractAction.title.extractFiles.text=\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa -ExtractAction.extractFiles.cantCreateFolderErr.msg=\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -ExtractAction.confDlg.destFileExist.msg=\u4fdd\u5b58\u5148\u306e\u30d5\u30a1\u30a4\u30eb{0}\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3001\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f +ExtractAction.extractFiles.cantCreateFolderErr.msg=\u9078\u629e\u3057\u305f\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ExtractAction.confDlg.destFileExist.msg=\u5b9b\u5148\u30d5\u30a1\u30a4\u30eb {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? ExtractAction.confDlg.destFileExist.title=\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u3059 -ExtractAction.msgDlg.cantOverwriteFile.msg=\u65e2\u5b58\u30d5\u30a1\u30a4\u30eb{0}\u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -ExtractAction.notifyDlg.noFileToExtr.msg=\u62bd\u51fa\u3067\u304d\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -ExtractAction.progress.extracting=\u62bd\u51fa\u4e2d -ExtractAction.progress.cancellingExtraction={0}\uff08\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026\uff09 +ExtractAction.msgDlg.cantOverwriteFile.msg=\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb {0} \u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +ExtractAction.notifyDlg.noFileToExtr.msg=\u62bd\u51fa\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +ExtractAction.progress.extracting=\u62bd\u51fa\u4e2d\u3067\u3059 +ExtractAction.progress.cancellingExtraction={0} (\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) ExtractAction.done.notifyMsg.fileExtr.text=\u30d5\u30a1\u30a4\u30eb\u304c\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 -ExtractUnallocAction.notifyMsg.unallocAlreadyBeingExtr.msg=\u3053\u306e\u30a4\u30e1\u30fc\u30b8\u306e\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u30c7\u30fc\u30bf\u306f\u65e2\u306b\u62bd\u51fa\u4e2d\u3067\u3059\u3002\u5225\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002 -ExtractUnallocAction.msgDlg.folderDoesntExist.msg=\u30d5\u30a9\u30eb\u30c0\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u7d9a\u884c\u3059\u308b\u524d\u306b\u6709\u52b9\u306a\u30d5\u30a9\u30eb\u30c0\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002 -ExtractUnallocAction.dlgTitle.selectDirToSaveTo.msg=\u4fdd\u5b58\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044 -ExtractUnallocAction.confDlg.unallocFileAlreadyExist.msg=\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u30d5\u30a1\u30a4\u30eb{0}\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f -ExtractUnallocAction.progress.extractUnalloc.title=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u4e2d -ExtractUnallocAction.progress.displayName.cancelling.text=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u4e2d\uff08\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026\uff09 -ExtractUnallocAction.processing.counter.msg={0}\uff0f{1} MBs\u3092\u51e6\u7406\u4e2d -ExtractUnallocAction.done.notifyMsg.completedExtract.title=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u62bd\u51fa\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 -ExtractUnallocAction.done.notifyMsg.completedExtract.msg=\u30d5\u30a1\u30a4\u30eb\u306f{0}\u3078\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f -ExtractUnallocAction.done.errMsg.title=\u62bd\u51fa\u30a8\u30e9\u30fc -ExtractUnallocAction.done.errMsg.msg=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u3092\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a{0} -DirectoryTreeFilterNode.action.collapseAll.text=\u3059\u3079\u3066\u30b3\u30e9\u30d7\u30b9 -ExtractAction.done.notifyMsg.extractErr=\u4e0b\u8a18\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} +ExtractUnallocAction.notifyMsg.unallocAlreadyBeingExtr.msg=\u672a\u4f7f\u7528\u9818\u57df\u306f\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u4e0a\u3067\u3059\u3067\u306b\u62bd\u51fa\u4e2d\u3067\u3059\u3002\u5225\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ExtractUnallocAction.msgDlg.folderDoesntExist.msg=\u30d5\u30a9\u30eb\u30c0\u30fc\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u6709\u52b9\u306a\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e\u3057\u3066\u7d9a\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ExtractUnallocAction.dlgTitle.selectDirToSaveTo.msg=\u4fdd\u5b58\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u9078\u629e +ExtractUnallocAction.confDlg.unallocFileAlreadyExist.msg=\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u306eUnalloc\u30d5\u30a1\u30a4\u30eb {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b? +ExtractUnallocAction.progress.extractUnalloc.title=\u672a\u4f7f\u7528\u9818\u57df\u3092\u62bd\u51fa\u4e2d\u3067\u3059 +ExtractUnallocAction.progress.displayName.cancelling.text=\u672a\u4f7f\u7528\u9818\u57df\u3092\u62bd\u51fa\u4e2d\u3067\u3059(\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) +ExtractUnallocAction.processing.counter.msg=\u30e1\u30e2\u30ea\u30fc {1} MB\u306e {0} \u3092\u51e6\u7406\u4e2d\u3067\u3059 +ExtractUnallocAction.done.notifyMsg.completedExtract.title=\u672a\u4f7f\u7528\u9818\u57df\u306e\u62bd\u51fa\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 +ExtractUnallocAction.done.notifyMsg.completedExtract.msg=\u30d5\u30a1\u30a4\u30eb\u3092 {0} \u306b\u62bd\u51fa\u3057\u307e\u3057\u305f +ExtractUnallocAction.done.errMsg.title=\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractUnallocAction.done.errMsg.msg=\u6b21\u306e\u672a\u4f7f\u7528\u9818\u57df\u306e\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +ExtractAction.done.notifyMsg.extractErr=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +OptionsCategory_Name_ExternalViewer=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc +OptionsCategory_Keywords_ExternalViewer=ExternalViewer +ExternalViewerGlobalSettingsPanel.exePathLabel.MIME.text=\u3053\u306eMIME\u30bf\u30a4\u30d7\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d7\u30ed\u30b0\u30e9\u30e0 +ExternalViewerGlobalSettingsPanel.exePathLabel.EXT.text=\u3053\u306e\u62e1\u5f35\u5b50\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30d7\u30ed\u30b0\u30e9\u30e0 +ExternalViewerGlobalSettingsPanel.exePathLabel.empty.text=MIME\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +AddExternalViewerRuleDialog.saveButton.title=\u4fdd\u5b58 +AddExternalViewerRuleDialog.cancelButton.title=\u53d6\u308a\u6d88\u3057 +AddExternalViewerRuleDialog.title=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidMime.message=MIME \u30bf\u30a4\u30d7\u304c\u7121\u52b9\u3067\u3059\u3002[\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u30aa\u30d7\u30b7\u30e7\u30f3] \u30d1\u30cd\u30eb\u306b\u30ab\u30b9\u30bf\u30e0\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidMime.title=\u7121\u52b9\u306aMIME\u30bf\u30a4\u30d7 +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExt.message=\u62e1\u5f35\u5b50\u304c\u7121\u52b9\u3067\u3059\u3002 +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExt.title=\u7121\u52b9\u306a\u62e1\u5f35\u5b50 +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExePath.message=\u5b9f\u884c\u53ef\u80fd\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u3078\u306e\u30d1\u30b9\u304c\u7121\u52b9\u3067\u3059 +ExternalViewerGlobalSettingsPanel.JOptionPane.invalidExePath.title=\u7121\u52b9\u306a\u30d1\u30b9 +ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.message=\u3053\u306eMIME\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50\u306e\u30eb\u30fc\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u30eb\u30fc\u30eb\u3092\u7de8\u96c6\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.title=\u30eb\u30fc\u30eb\u306f\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +AddExternalViewerRulePanel.mimeRadioButton.text=MIME\u30bf\u30a4\u30d7 +AddExternalViewerRulePanel.nameTextField.text= +AddExternalViewerRulePanel.nameLabel.text=MIME\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50 +AddExternalViewerRulePanel.browseButton.text=\u53c2\u7167 +AddExternalViewerRulePanel.exePathTextField.text= +AddExternalViewerRulePanel.exePathLabel.text=\u3053\u306e\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d1\u30b9 +AddExternalViewerRulePanel.extRadioButton.text=\u62e1\u5f35\u5b50 +GroupDataSourcesDialog.dataSourceCountLabel.text=jLabel1 +GroupDataSourcesDialog.queryLabel.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u8aad\u307f\u8fbc\u307f\u3092\u65e9\u304f\u3057\u307e\u3059\u304b? +GroupDataSourcesDialog.yesButton.text=\u306f\u3044 +GroupDataSourcesDialog.noButton.text=\u3044\u3044\u3048 +GroupDataSourcesDialog.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u307e\u3059\u304b? +DirectoryTreeTopComponent.openViewPreferencesButton.text= +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title3=\u30bf\u30a4\u30c8\u30eb4 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title2=\u30bf\u30a4\u30c8\u30eb3 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title3_1=\u30bf\u30a4\u30c8\u30eb4 +ExternalViewerGlobalSettingsPanel.jTable1.columnModel.title2_1=\u30bf\u30a4\u30c8\u30eb3 +ExternalViewerGlobalSettingsPanel.newRuleButton1.text=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.editRuleButton.text=\u30eb\u30fc\u30eb\u3092\u7de8\u96c6 +ExternalViewerGlobalSettingsPanel.deleteRuleButton.text=\u30eb\u30fc\u30eb\u3092\u524a\u9664 +ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u306e\u30ab\u30b9\u30bf\u30e0\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0: +ExternalViewerGlobalSettingsPanel.newRuleButton.text=\u65b0\u898f\u30eb\u30fc\u30eb +ExternalViewerGlobalSettingsPanel.jButton2.text=jButton2 +ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text=\u53c2\u7167 +ExternalViewerGlobalSettingsPanel.HxDLabel.text=HxD\u30a8\u30c7\u30a3\u30bf\u30fc\u30d1\u30b9: +ExternalViewerGlobalSettingsPanel.ContentViewerExtensionLabel.text=\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u306e\u62e1\u5f35\u5b50\u3092\u8ffd\u52a0: diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java b/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java index 11d61460a6..548fb881be 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DataResultFilterNode.java @@ -291,6 +291,9 @@ public class DataResultFilterNode extends FilterNode { for (Action a : ban.getActions(true)) { actionsList.add(a); } + + //Add seperator between the decorated actions and the actions from the node itself. + actionsList.add(null); BlackboardArtifact ba = ban.getLookup().lookup(BlackboardArtifact.class); final int artifactTypeID = ba.getArtifactTypeID(); diff --git a/Core/src/org/sleuthkit/autopsy/events/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/events/Bundle_ja.properties index ec61e857ea..e00b218ce5 100644 --- a/Core/src/org/sleuthkit/autopsy/events/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/events/Bundle_ja.properties @@ -1,10 +1,10 @@ -MessageServiceConnectionInfo.ConnectionCheck.Everything=\u30DB\u30B9\u30C8\u540D\u3001\u30DD\u30FC\u30C8\u756A\u53F7\u3001\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059 -MessageServiceConnectionInfo.ConnectionCheck.Hostname=\u7121\u52B9\u306A\u30DB\u30B9\u30C8\u540D -MessageServiceConnectionInfo.ConnectionCheck.Port=\u7121\u52B9\u306A\u30DD\u30FC\u30C8\u756A\u53F7 -MessageServiceConnectionInfo.ConnectionCheck.Username=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D -MessageServiceConnectionInfo.ConnectionCheck.Password=\u7121\u52B9\u306A\u30D1\u30B9\u30EF\u30FC\u30C9 -MessageServiceConnectionInfo.ConnectionCheck.UsernameAndPassword=\u7121\u52B9\u306A\u30E6\u30FC\u30B6\u30FC\u540D\u307E\u305F\u306F\u30D1\u30B9\u30EF\u30FC\u30C9 -MessageServiceConnectionInfo.ConnectionCheck.HostnameOrPort=\u7121\u52B9\u306A\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306F\u30DD\u30FC\u30C8\u756A\u53F7 -MessageServiceConnectionInfo.MissingHostname=\u30DB\u30B9\u30C8\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002 -MessageServiceConnectionInfo.MissingUsername=\u30E6\u30FC\u30B6\u30FC\u540D\u304C\u5FC5\u8981\u3067\u3059\u3002 -MessageServiceConnectionInfo.MissingPassword=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u5FC5\u8981\u3067\u3059\u3002 \ No newline at end of file +MessageServiceConnectionInfo.ConnectionCheck.Everything=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u3001\u30dd\u30fc\u30c8\u756a\u53f7\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3001\u304a\u3088\u3073/\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.Hostname=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.Port=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.Username=\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u540d\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.Password=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.UsernameAndPassword=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u304a\u3088\u3073/\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 +MessageServiceConnectionInfo.ConnectionCheck.HostnameOrPort=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u304a\u3088\u3073/\u307e\u305f\u306f\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +MessageServiceConnectionInfo.MissingHostname=\u30db\u30b9\u30c8\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +MessageServiceConnectionInfo.MissingUsername=\u30e6\u30fc\u30b6\u30fc\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +MessageServiceConnectionInfo.MissingPassword=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/examples/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/examples/Bundle_ja.properties new file mode 100644 index 0000000000..8fc0db1332 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/examples/Bundle_ja.properties @@ -0,0 +1,6 @@ +SampleContentViewer.jLabel1.text=jLabel1 +SampleIngestModuleFactory.moduleName=\u30b5\u30f3\u30d7\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +SampleIngestModuleFactory.moduleDescription=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u8005\u306e\u30b5\u30f3\u30d7\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002 +SampleIngestModuleIngestJobSettingsPanel.skipKnownFilesCheckBox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb(NSRL)\u3092\u30b9\u30ad\u30c3\u30d7 +SampleIngestModuleFactory.moduleName=\u30b5\u30f3\u30d7\u30eb\u5b9f\u884c\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +SampleExecutableIngestModuleFactory.moduleDescription=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u8005\u306e\u30b5\u30f3\u30d7\u30eb\u5b9f\u884c\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties b/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties index b4f11c01de..9a408d5c24 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties @@ -15,26 +15,22 @@ FileSearchDialog.orderAttrRadioButton.text=Attribute FileSearchDialog.orderSizeRadioButton.text=Group Size FileSearchDialog.jLabel5.text=Order files by: FileSearchDialog.parentCheckBox.text=Parent -ResultsDialog.exitButton.text=Exit -ResultsDialog.searchButton.text=Run another search -FileSearchPanel.sortingPanel.border.title=Sorting +FileSearchPanel.sortingPanel.border.title=Grouping FileSearchPanel.searchButton.text=Show FileSearchPanel.addButton.text=Add FileSearchPanel.substringRadioButton.text=Substring FileSearchPanel.fullRadioButton.text=Full -FileSearchPanel.parentCheckbox.text=Parent: +FileSearchPanel.parentCheckbox.text=Parent Folder: FileSearchPanel.keywordCheckbox.text=Keyword: -FileSearchPanel.crFrequencyCheckbox.text=CR Frequency: -FileSearchPanel.dataSourceCheckbox.text=Data source: -FileSearchPanel.groupSizeRadioButton.text=Group size -FileSearchPanel.sizeCheckbox.text=Size: -FileSearchPanel.attributeRadioButton.text=Attribute -FileSearchPanel.orderGroupsByLabel.text=Order groups by: +FileSearchPanel.crFrequencyCheckbox.text=Past Occurrences: +FileSearchPanel.dataSourceCheckbox.text=Data Source: +FileSearchPanel.sizeCheckbox.text=File Size: +FileSearchPanel.orderGroupsByLabel.text=Order Groups By: FileSearchPanel.filtersScrollPane.border.title=Filters FileSearchPanel.parentLabel.text=(All will be used) FileSearchPanel.deleteButton.text=Delete -FileSearchPanel.orderByLabel.text=Order by: -FileSearchPanel.groupByLabel.text=Group by: +FileSearchPanel.orderByLabel.text=Order Within Groups By: +FileSearchPanel.groupByLabel.text=Group By: FileSearchDialog.searchButton.text=Search FileSearchDialog.hashCheckBox.text=Hash Set FileSearchDialog.intCheckBox.text=Interesting Items @@ -45,16 +41,16 @@ FileSearchDialog.notableCheckBox.text=Must have been tagged as notable FileSearchDialog.scoreCheckBox.text=Has score FileSearchPanel.cancelButton.text=Cancel FileSearchPanel.hashSetCheckbox.text=Hash Set: -FileSearchPanel.tagsCheckbox.text=Tags: -FileSearchPanel.interestingItemsCheckbox.text=Interesting Items: +FileSearchPanel.tagsCheckbox.text=Tag: +FileSearchPanel.interestingItemsCheckbox.text=Interesting Item: FileSearchPanel.scoreCheckbox.text=Has Score: FileSearchPanel.exifCheckbox.text=Possibly User Created FileSearchPanel.notableCheckbox.text=Must have been tagged as notable -FileSearchPanel.objectsCheckbox.text=Objects: +FileSearchPanel.objectsCheckbox.text=Object Detected: ResultsPanel.currentPageLabel.text=Page: - ResultsPanel.pageControlsLabel.text=Pages: ResultsPanel.gotoPageLabel.text=Go to Page: -ResultsPanel.pageSizeLabel.text=Page size: +ResultsPanel.pageSizeLabel.text=Page Size: ResultsPanel.instancesList.border.title=Instances DiscoveryExtractAction.title.extractFiles.text=Extract File FileSearchPanel.includeRadioButton.text=Include @@ -64,3 +60,7 @@ FileSearchPanel.knownFilesCheckbox.text=Hide known files GroupListPanel.groupKeyList.border.title=Groups DiscoveryTopComponent.imagesButton.text=Images DiscoveryTopComponent.videosButton.text=Videos +ResultsPanel.resultsSplitPane.toolTipText= +FileSearchPanel.stepTwoLabel.text=Step 2: Filter which images to show +FileSearchPanel.stepThreeLabel.text=Step 3: Choose display settings +DiscoveryTopComponent.stepOneLabel.text=Step 1: Pick File Type diff --git a/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties-MERGED index 49e1c98f21..a36a61b825 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/filequery/Bundle.properties-MERGED @@ -1,5 +1,13 @@ -CTL_FileDiscoveryTestAction=Test file discovery +CTL_OpenFileDiscoveryAction=File Discovery +# {0} - dataSourceName +DataSourceModuleWrapper.exifModule.text=Exif Parser module was not run on data source: {0}\n +# {0} - dataSourceName +DataSourceModuleWrapper.fileTypeModule.text=File Type Identification module was not run on data source: {0}\n +# {0} - dataSourceName +DataSourceModuleWrapper.hashModule.text=Hash Lookup module was not run on data source: {0}\n DiscoveryTopComponent.name=\ File Discovery +FileGroup.groupSortingAlgorithm.groupName.text=Group Name +FileGroup.groupSortingAlgorithm.groupSize.text=Group Size # {0} - Data source name # {1} - Data source ID FileSearch.DataSourceGroupKey.datasourceAndID={0}(ID: {1}) @@ -8,51 +16,49 @@ FileSearch.DataSourceGroupKey.idOnly=Data source (ID: {0}) FileSearch.FileTagGroupKey.noSets=None # {0} - file name FileSearch.genVideoThumb.progress.text=extracting temporary file {0} -FileSearch.GroupingAttributeType.datasource.displayName=Data source -FileSearch.GroupingAttributeType.fileType.displayName=File type -FileSearch.GroupingAttributeType.frequency.displayName=Past occurrences -FileSearch.GroupingAttributeType.hash.displayName=Hash set -FileSearch.GroupingAttributeType.interestingItem.displayName=Interesting item set -FileSearch.GroupingAttributeType.keywordList.displayName=Keyword list names +FileSearch.GroupingAttributeType.datasource.displayName=Data Source +FileSearch.GroupingAttributeType.fileType.displayName=File Type +FileSearch.GroupingAttributeType.frequency.displayName=Past Occurrences +FileSearch.GroupingAttributeType.hash.displayName=Hash Set +FileSearch.GroupingAttributeType.interestingItem.displayName=Interesting Item +FileSearch.GroupingAttributeType.keywordList.displayName=Keyword FileSearch.GroupingAttributeType.none.displayName=None -FileSearch.GroupingAttributeType.object.displayName=Object detected -FileSearch.GroupingAttributeType.parent.displayName=Parent folder -FileSearch.GroupingAttributeType.size.displayName=Size -FileSearch.GroupingAttributeType.tag.displayName=File tag +FileSearch.GroupingAttributeType.object.displayName=Object Detected +FileSearch.GroupingAttributeType.parent.displayName=Parent Folder +FileSearch.GroupingAttributeType.size.displayName=File Size +FileSearch.GroupingAttributeType.tag.displayName=Tag FileSearch.HashHitsGroupKey.noHashHits=None FileSearch.InterestingItemGroupKey.noSets=None FileSearch.KeywordListGroupKey.noKeywords=None FileSearch.NoGroupingGroupKey.allFiles=All Files FileSearch.ObjectDetectedGroupKey.noSets=None -FileSearchData.FileSize.OVER_100KB.displayName=100 KB - 1 MB -FileSearchData.FileSize.OVER_10GB.displayName=10 GB+ -FileSearchData.FileSize.OVER_16KB.displayName=16 KB - 100 KB -FileSearchData.FileSize.OVER_1GB_IMAGE.displayName=1 GB+ -FileSearchData.FileSize.OVER_1GB_VIDEO.displayName=1 - 5 GB -FileSearchData.FileSize.OVER_1MB.displayName=1 - 50 MB -FileSearchData.FileSize.OVER_200MB.displayName=200 MB - 1 GB -FileSearchData.FileSize.OVER_50MB.displayName=50 - 200 MB -FileSearchData.FileSize.OVER_5GB.displayName=5 - 10 GB -FileSearchData.FileSize.UNDER_100KB.displayName=Under 100 KB -FileSearchData.FileSize.UNDER_16KB.displayName=Under 16 KB +FileSearchData.FileSize.LARGE_IMAGE.displayName=Large: 1-50MB +FileSearchData.FileSize.LARGE_VIDEO.displayName=Large: 1-5GB +FileSearchData.FileSize.MEDIUM_IMAGE.displayName=Medium: 100KB-1MB +FileSearchData.FileSize.MEDIUM_VIDEO.displayName=Medium: 100MB-1GB +FileSearchData.FileSize.SMALL_IMAGE.displayName=Small: 16-100KB +FileSearchData.FileSize.SMALL_VIDEO.displayName=Small: 500KB-100MB +FileSearchData.FileSize.XLARGE_IMAGE.displayName=XLarge: 50-200MB +FileSearchData.FileSize.XLARGE_VIDEO.displayName=XLarge: 5-10GB +FileSearchData.FileSize.XSMALL_IMAGE.displayName=XSmall: 0-16KB +FileSearchData.FileSize.XSMALL_VIDEO.displayName=XSmall: 0-500KB +FileSearchData.FileSize.XXLARGE_IMAGE.displayName=XXLarge: 200MB+ +FileSearchData.FileSize.XXLARGE_VIDEO.displayName=XXLarge: 10GB+ FileSearchData.FileType.Audio.displayName=Audio FileSearchData.FileType.Documents.displayName=Documents FileSearchData.FileType.Executables.displayName=Executables FileSearchData.FileType.Image.displayName=Image FileSearchData.FileType.Other.displayName=Other/Unknown FileSearchData.FileType.Video.displayName=Video -FileSearchData.Frequency.common.displayName=Common -FileSearchData.Frequency.count_10.displayName=6 - 10 -FileSearchData.Frequency.count_100.displayName=51 - 100 -FileSearchData.Frequency.count_20.displayName=11 - 20 -FileSearchData.Frequency.count_50.displayName=21 - 50 -FileSearchData.Frequency.rare.displayName=Rare (2-5) +FileSearchData.Frequency.common.displayName=Common (11 - 100) +FileSearchData.Frequency.known.displayName=Known (NSRL) +FileSearchData.Frequency.rare.displayName=Rare (2-10) FileSearchData.Frequency.unique.displayName=Unique (1) FileSearchData.Frequency.unknown.displayName=Unknown +FileSearchData.Frequency.verycommon.displayName=Very Common (100+) FileSearchData.Score.interesting.displayName=Interesting FileSearchData.Score.notable.displayName=Notable FileSearchData.Score.unknown.displayName=Unknown -FileSearchDialog.dialogTitle.text=Test file search FileSearchDialog.jLabel1.text=File Type FileSearchDialog.dsCheckBox.text=Data source FileSearchDialog.cancelButton.text=Cancel @@ -115,43 +121,22 @@ FileSearchFiltering.SizeFilter.range=({0} to {1}) FileSearchFiltering.TagsFilter.desc=Files that have been tagged {0} FileSearchFiltering.TagsFilter.or=\ or FileSearchPanel.dialogTitle.text=Test file search -FileSorter.SortingMethod.datasource.displayName=By data source -FileSorter.SortingMethod.filename.displayName=By file name -FileSorter.SortingMethod.filesize.displayName=By file size -FileSorter.SortingMethod.filetype.displayName=By file type -FileSorter.SortingMethod.frequency.displayName=By central repo frequency -FileSorter.SortingMethod.fullPath.displayName=By full path -FileSorter.SortingMethod.keywordlist.displayName=By keyword list names -# {0} - numberOfInstances -ImageThumbnailPanel.countLabel.text=Number of Instances: {0} -ImageThumbnailPanel.isDeleted.text=All instances of file are deleted. -# {0} - fileSize -ImageThumbnailPanel.sizeLabel.text=Size: {0} bytes -ResultFile.score.interestingResult.description=At least one instance of the file has an interesting result associated with it. -ResultFile.score.notableFile.description=At least one instance of the file was recognized as notable. -ResultFile.score.notableTaggedFile.description=At least one instance of the file is tagged with a notable tag. -ResultFile.score.taggedFile.description=At least one instance of the file has been tagged. -ResultsDialog.dialogTitle.text=File search results -ResultsDialog.exitButton.text=Exit -ResultsDialog.searchButton.text=Run another search -FileSearchPanel.sortingPanel.border.title=Sorting +FileSearchPanel.sortingPanel.border.title=Grouping FileSearchPanel.searchButton.text=Show FileSearchPanel.addButton.text=Add FileSearchPanel.substringRadioButton.text=Substring FileSearchPanel.fullRadioButton.text=Full -FileSearchPanel.parentCheckbox.text=Parent: +FileSearchPanel.parentCheckbox.text=Parent Folder: FileSearchPanel.keywordCheckbox.text=Keyword: -FileSearchPanel.crFrequencyCheckbox.text=CR Frequency: -FileSearchPanel.dataSourceCheckbox.text=Data source: -FileSearchPanel.groupSizeRadioButton.text=Group size -FileSearchPanel.sizeCheckbox.text=Size: -FileSearchPanel.attributeRadioButton.text=Attribute -FileSearchPanel.orderGroupsByLabel.text=Order groups by: +FileSearchPanel.crFrequencyCheckbox.text=Past Occurrences: +FileSearchPanel.dataSourceCheckbox.text=Data Source: +FileSearchPanel.sizeCheckbox.text=File Size: +FileSearchPanel.orderGroupsByLabel.text=Order Groups By: FileSearchPanel.filtersScrollPane.border.title=Filters FileSearchPanel.parentLabel.text=(All will be used) FileSearchPanel.deleteButton.text=Delete -FileSearchPanel.orderByLabel.text=Order by: -FileSearchPanel.groupByLabel.text=Group by: +FileSearchPanel.orderByLabel.text=Order Within Groups By: +FileSearchPanel.groupByLabel.text=Group By: FileSearchDialog.searchButton.text=Search FileSearchDialog.hashCheckBox.text=Hash Set FileSearchDialog.intCheckBox.text=Interesting Items @@ -162,12 +147,37 @@ FileSearchDialog.notableCheckBox.text=Must have been tagged as notable FileSearchDialog.scoreCheckBox.text=Has score FileSearchPanel.cancelButton.text=Cancel FileSearchPanel.hashSetCheckbox.text=Hash Set: -FileSearchPanel.tagsCheckbox.text=Tags: -FileSearchPanel.interestingItemsCheckbox.text=Interesting Items: +FileSearchPanel.tagsCheckbox.text=Tag: +FileSearchPanel.interestingItemsCheckbox.text=Interesting Item: FileSearchPanel.scoreCheckbox.text=Has Score: FileSearchPanel.exifCheckbox.text=Possibly User Created FileSearchPanel.notableCheckbox.text=Must have been tagged as notable -FileSearchPanel.objectsCheckbox.text=Objects: +FileSearchPanel.objectsCheckbox.text=Object Detected: +FileSorter.SortingMethod.datasource.displayName=Data Source +FileSorter.SortingMethod.filename.displayName=File Name +FileSorter.SortingMethod.filesize.displayName=File Size +FileSorter.SortingMethod.filetype.displayName=File Type +FileSorter.SortingMethod.frequency.displayName=Central Repo Frequency +FileSorter.SortingMethod.fullPath.displayName=Full Path +FileSorter.SortingMethod.keywordlist.displayName=Keyword List Names +GroupsListPanel.noResults.message.text=No results were found for the selected filters. +GroupsListPanel.noResults.title.text=No results found +ImageThumbnailPanel.bytes.text=bytes +# {0} - numberOfInstances +ImageThumbnailPanel.countLabel.text=Number of Instances: {0} +ImageThumbnailPanel.gigaBytes.text=GB +ImageThumbnailPanel.isDeleted.text=All instances of file are deleted. +ImageThumbnailPanel.kiloBytes.text=KB +ImageThumbnailPanel.megaBytes.text=MB +# {0} - fileSize +# {1} - units +ImageThumbnailPanel.sizeLabel.text=Size: {0} {1} +ImageThumbnailPanel.terraBytes.text=TB +OpenFileDiscoveryAction.resultsIncomplete.text=Results may be incomplete +ResultFile.score.interestingResult.description=At least one instance of the file has an interesting result associated with it. +ResultFile.score.notableFile.description=At least one instance of the file was recognized as notable. +ResultFile.score.notableTaggedFile.description=At least one instance of the file is tagged with a notable tag. +ResultFile.score.taggedFile.description=At least one instance of the file has been tagged. # {0} - currentPage # {1} - totalPages ResultsPanel.currentPage.displayValue=Page: {0} of {1} @@ -179,7 +189,7 @@ ResultsPanel.invalidPageNumber.title=Invalid Page Number ResultsPanel.openInExternalViewer.name=Open in External Viewer ResultsPanel.pageControlsLabel.text=Pages: ResultsPanel.gotoPageLabel.text=Go to Page: -ResultsPanel.pageSizeLabel.text=Page size: +ResultsPanel.pageSizeLabel.text=Page Size: ResultsPanel.instancesList.border.title=Instances DiscoveryExtractAction.title.extractFiles.text=Extract File FileSearchPanel.includeRadioButton.text=Include @@ -189,10 +199,19 @@ FileSearchPanel.knownFilesCheckbox.text=Hide known files GroupListPanel.groupKeyList.border.title=Groups DiscoveryTopComponent.imagesButton.text=Images DiscoveryTopComponent.videosButton.text=Videos +ResultsPanel.resultsSplitPane.toolTipText= +FileSearchPanel.stepTwoLabel.text=Step 2: Filter which images to show +FileSearchPanel.stepThreeLabel.text=Step 3: Choose display settings +DiscoveryTopComponent.stepOneLabel.text=Step 1: Pick File Type ResultsPanel.viewFileInDir.name=View File in Directory -SearchNode.getName.text=Search Result +VideoThumbnailPanel.bytes.text=bytes # {0} - numberOfInstances VideoThumbnailPanel.countLabel.text=Number of Instances: {0} VideoThumbnailPanel.deleted.text=All instances of file are deleted. +VideoThumbnailPanel.gigaBytes.text=GB +VideoThumbnailPanel.kiloBytes.text=KB +VideoThumbnailPanel.megaBytes.text=MB # {0} - fileSize -VideoThumbnailPanel.sizeLabel.text=Size: {0} bytes +# {1} - units +VideoThumbnailPanel.sizeLabel.text=Size: {0} {1} +VideoThumbnailPanel.terraBytes.text=TB diff --git a/Core/src/org/sleuthkit/autopsy/filequery/DataSourceModulesWrapper.java b/Core/src/org/sleuthkit/autopsy/filequery/DataSourceModulesWrapper.java new file mode 100644 index 0000000000..53cabedfb3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/filequery/DataSourceModulesWrapper.java @@ -0,0 +1,125 @@ +/* + * Autopsy + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.filequery; + +import org.openide.util.NbBundle.Messages; +import org.sleuthkit.autopsy.modules.exif.ExifParserModuleFactory; +import org.sleuthkit.autopsy.modules.filetypeid.FileTypeIdModuleFactory; +import org.sleuthkit.autopsy.modules.hashdatabase.HashLookupModuleFactory; +import org.sleuthkit.datamodel.IngestJobInfo; +import org.sleuthkit.datamodel.IngestModuleInfo; + +/** + * Wrapper class to keep track of which modules were run on each data source. + */ +class DataSourceModulesWrapper { + + private boolean hashModuleRun = false; + private boolean fileTypeModuleRun = false; + private boolean exifModuleRun = false; + private final String dataSourceName; + + /** + * Create a new DataSourceModulesWrapper object + * + * @param dsName The name of the data source being kept track of. + */ + DataSourceModulesWrapper(String dsName) { + dataSourceName = dsName; + } + + @Messages({"# {0} - dataSourceName", + "DataSourceModuleWrapper.hashModule.text=Hash Lookup module was not run on data source: {0}\n", + "# {0} - dataSourceName", + "DataSourceModuleWrapper.fileTypeModule.text=File Type Identification module was not run on data source: {0}\n", + "# {0} - dataSourceName", + "DataSourceModuleWrapper.exifModule.text=Exif Parser module was not run on data source: {0}\n" + }) + /** + * Get the message which indicates which modules were not run on this data + * source. + */ + String getMessage() { + String message = ""; + if (!hashModuleRun) { + message += Bundle.DataSourceModuleWrapper_hashModule_text(dataSourceName); + } + if (!fileTypeModuleRun) { + message += Bundle.DataSourceModuleWrapper_fileTypeModule_text(dataSourceName); + } + if (!exifModuleRun) { + message += Bundle.DataSourceModuleWrapper_exifModule_text(dataSourceName); + } + return message; + } + + /** + * Update which modules were run for this data source based on the specified + * ingest job. + * + * @param jobInfo The IngestJobInfo for the job which was run on this data + * source. + */ + void updateModulesRun(IngestJobInfo jobInfo) { + for (IngestModuleInfo moduleInfo : jobInfo.getIngestModuleInfo()) { + if (hashModuleRun && fileTypeModuleRun && exifModuleRun) { + return; + } + updateHashModuleStatus(moduleInfo); + updateFileTypeStatus(moduleInfo); + updateExifStatus(moduleInfo); + } + } + + /** + * Update whether the Hash Lookup module was run for this data source. + * + * @param moduleInfo Information regarding a module which was run on this + * data source. + */ + private void updateHashModuleStatus(IngestModuleInfo moduleInfo) { + if (!hashModuleRun && moduleInfo.getDisplayName().equals(HashLookupModuleFactory.getModuleName())) { + hashModuleRun = true; + } + } + + /** + * Update whether the File Type ID module was run for this data source. + * + * @param moduleInfo Information regarding a module which was run on this + * data source. + */ + private void updateFileTypeStatus(IngestModuleInfo moduleInfo) { + if (!fileTypeModuleRun && moduleInfo.getDisplayName().equals(FileTypeIdModuleFactory.getModuleName())) { + fileTypeModuleRun = true; + } + } + + /** + * Update whether the Exif module was run for this data source. + * + * @param moduleInfo Information regarding a module which was run on this + * data source. + */ + private void updateExifStatus(IngestModuleInfo moduleInfo) { + if (!exifModuleRun && moduleInfo.getDisplayName().equals(ExifParserModuleFactory.getModuleName())) { + exifModuleRun = true; + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEvents.java b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEventUtils.java similarity index 99% rename from Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEvents.java rename to Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEventUtils.java index d3dad4b24f..f73cf4171e 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEvents.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryEventUtils.java @@ -28,7 +28,7 @@ import org.sleuthkit.autopsy.filequery.FileSearchData.FileType; /** * Class to handle event bus and events for file discovery tool. */ -final class DiscoveryEvents { +final class DiscoveryEventUtils { private final static EventBus discoveryEventBus = new EventBus(); @@ -41,7 +41,7 @@ final class DiscoveryEvents { return discoveryEventBus; } - private DiscoveryEvents() { + private DiscoveryEventUtils() { } /** diff --git a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.form b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.form index c3ad04da7d..b8486b8ae6 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.form @@ -3,7 +3,7 @@
- + @@ -16,15 +16,17 @@ - + - - + + + + @@ -40,11 +42,10 @@ - + - - + @@ -57,9 +58,12 @@ - + + + + @@ -86,17 +90,40 @@ - + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + @@ -113,66 +140,93 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.java b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.java index 4a4060410a..6e6fcf7cec 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/DiscoveryTopComponent.java @@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.filequery; import com.google.common.eventbus.Subscribe; import java.awt.Color; +import java.util.List; +import java.util.stream.Collectors; import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -57,7 +59,7 @@ public final class DiscoveryTopComponent extends TopComponent { * Creates new form FileDiscoveryDialog */ @ThreadConfined(type = ThreadConfined.ThreadType.AWT) - DiscoveryTopComponent() { + public DiscoveryTopComponent() { initComponents(); setName(Bundle.DiscoveryTopComponent_name()); fileSearchPanel = new FileSearchPanel(); @@ -85,26 +87,7 @@ public final class DiscoveryTopComponent extends TopComponent { } } }); - } - /** - * Open the instance of the DiscoveryTopComponent which exists. - */ - static void openTopComponent() { - final DiscoveryTopComponent tc = (DiscoveryTopComponent) WindowManager.getDefault().findTopComponent(PREFERRED_ID); - if (tc != null) { - WindowManager.getDefault().isTopComponentFloating(tc); - if (tc.isOpened() == false) { - Mode mode = WindowManager.getDefault().findMode("discovery"); // NON-NLS - if (mode != null) { - mode.dockInto(tc); - } - tc.open(); - tc.updateSearchSettings(); - } - tc.toFront(); - - } } /** @@ -127,11 +110,13 @@ public final class DiscoveryTopComponent extends TopComponent { /** * Update the search settings to a default state. */ - private void updateSearchSettings() { + void updateSearchSettings() { + resetTopComponent(); fileSearchPanel.resetPanel(); imagesButton.setSelected(true); imagesButton.setEnabled(false); imagesButton.setBackground(SELECTED_COLOR); + imagesButton.setForeground(Color.BLACK); videosButton.setSelected(false); videosButton.setEnabled(true); videosButton.setBackground(UNSELECTED_COLOR); @@ -142,19 +127,19 @@ public final class DiscoveryTopComponent extends TopComponent { public void componentOpened() { super.componentOpened(); WindowManager.getDefault().setTopComponentFloating(this, true); - DiscoveryEvents.getDiscoveryEventBus().register(this); - DiscoveryEvents.getDiscoveryEventBus().register(resultsPanel); - DiscoveryEvents.getDiscoveryEventBus().register(groupListPanel); - DiscoveryEvents.getDiscoveryEventBus().register(fileSearchPanel); + DiscoveryEventUtils.getDiscoveryEventBus().register(this); + DiscoveryEventUtils.getDiscoveryEventBus().register(resultsPanel); + DiscoveryEventUtils.getDiscoveryEventBus().register(groupListPanel); + DiscoveryEventUtils.getDiscoveryEventBus().register(fileSearchPanel); } @Override protected void componentClosed() { fileSearchPanel.cancelSearch(); - DiscoveryEvents.getDiscoveryEventBus().unregister(this); - DiscoveryEvents.getDiscoveryEventBus().unregister(fileSearchPanel); - DiscoveryEvents.getDiscoveryEventBus().unregister(groupListPanel); - DiscoveryEvents.getDiscoveryEventBus().unregister(resultsPanel); + DiscoveryEventUtils.getDiscoveryEventBus().unregister(this); + DiscoveryEventUtils.getDiscoveryEventBus().unregister(fileSearchPanel); + DiscoveryEventUtils.getDiscoveryEventBus().unregister(groupListPanel); + DiscoveryEventUtils.getDiscoveryEventBus().unregister(resultsPanel); super.componentClosed(); } @@ -173,23 +158,25 @@ public final class DiscoveryTopComponent extends TopComponent { javax.swing.JPanel toolBarPanel = new javax.swing.JPanel(); javax.swing.JToolBar toolBar = new javax.swing.JToolBar(); imagesButton = new javax.swing.JButton(); + javax.swing.JLabel stepOneLabel = new javax.swing.JLabel(); videosButton = new javax.swing.JButton(); + javax.swing.Box.Filler filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(62, 0), new java.awt.Dimension(62, 0), new java.awt.Dimension(62, 32767)); - setPreferredSize(new java.awt.Dimension(1100, 700)); + setPreferredSize(new java.awt.Dimension(1400, 900)); setLayout(new java.awt.BorderLayout()); - mainSplitPane.setDividerLocation(550); - mainSplitPane.setResizeWeight(0.2); + mainSplitPane.setDividerLocation(450); + mainSplitPane.setPreferredSize(new java.awt.Dimension(1400, 828)); - leftSplitPane.setDividerLocation(430); + leftSplitPane.setDividerLocation(325); leftSplitPane.setToolTipText(""); - leftSplitPane.setLastDividerLocation(430); - leftSplitPane.setPreferredSize(new java.awt.Dimension(530, 25)); + leftSplitPane.setPreferredSize(new java.awt.Dimension(400, 828)); mainSplitPane.setLeftComponent(leftSplitPane); - rightSplitPane.setDividerLocation(400); + rightSplitPane.setDividerLocation(475); rightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); rightSplitPane.setResizeWeight(0.5); + rightSplitPane.setPreferredSize(new java.awt.Dimension(1000, 828)); mainSplitPane.setRightComponent(rightSplitPane); add(mainSplitPane, java.awt.BorderLayout.CENTER); @@ -210,7 +197,8 @@ public final class DiscoveryTopComponent extends TopComponent { imagesButtonActionPerformed(evt); } }); - toolBar.add(imagesButton); + + org.openide.awt.Mnemonics.setLocalizedText(stepOneLabel, org.openide.util.NbBundle.getMessage(DiscoveryTopComponent.class, "DiscoveryTopComponent.stepOneLabel.text")); // NOI18N videosButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/video-icon.png"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(videosButton, org.openide.util.NbBundle.getMessage(DiscoveryTopComponent.class, "DiscoveryTopComponent.videosButton.text")); // NOI18N @@ -226,22 +214,39 @@ public final class DiscoveryTopComponent extends TopComponent { videosButtonActionPerformed(evt); } }); - toolBar.add(videosButton); javax.swing.GroupLayout toolBarPanelLayout = new javax.swing.GroupLayout(toolBarPanel); toolBarPanel.setLayout(toolBarPanelLayout); toolBarPanelLayout.setHorizontalGroup( toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(toolBarPanelLayout.createSequentialGroup() - .addContainerGap(459, Short.MAX_VALUE) + .addContainerGap(486, Short.MAX_VALUE) + .addGroup(toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, toolBarPanelLayout.createSequentialGroup() + .addComponent(imagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, toolBarPanelLayout.createSequentialGroup() + .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) + .addComponent(stepOneLabel) + .addGap(62, 62, 62))) .addComponent(toolBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(459, Short.MAX_VALUE)) + .addContainerGap(486, Short.MAX_VALUE)) ); toolBarPanelLayout.setVerticalGroup( toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, toolBarPanelLayout.createSequentialGroup() - .addComponent(toolBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGap(0, 0, 0)) + .addComponent(toolBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(toolBarPanelLayout.createSequentialGroup() + .addGap(4, 4, 4) + .addGroup(toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(stepOneLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(filler1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(toolBarPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(videosButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(imagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(5, 5, 5)) ); add(toolBarPanel, java.awt.BorderLayout.PAGE_START); @@ -252,6 +257,7 @@ public final class DiscoveryTopComponent extends TopComponent { imagesButton.setSelected(true); imagesButton.setEnabled(false); imagesButton.setBackground(SELECTED_COLOR); + imagesButton.setForeground(Color.BLACK); videosButton.setSelected(false); videosButton.setEnabled(true); videosButton.setBackground(UNSELECTED_COLOR); @@ -266,6 +272,7 @@ public final class DiscoveryTopComponent extends TopComponent { videosButton.setSelected(true); videosButton.setEnabled(false); videosButton.setBackground(SELECTED_COLOR); + videosButton.setForeground(Color.BLACK); fileSearchPanel.setSelectedType(FileSearchData.FileType.VIDEO); }//GEN-LAST:event_videosButtonActionPerformed @@ -275,7 +282,7 @@ public final class DiscoveryTopComponent extends TopComponent { * @param searchCancelledEvent The SearchCancelledEvent received. */ @Subscribe - void handleSearchCancelledEvent(DiscoveryEvents.SearchCancelledEvent searchCancelledEvent) { + void handleSearchCancelledEvent(DiscoveryEventUtils.SearchCancelledEvent searchCancelledEvent) { SwingUtilities.invokeLater(() -> { if (fileSearchPanel.getSelectedType() == FileType.VIDEO) { imagesButton.setEnabled(true); @@ -291,7 +298,7 @@ public final class DiscoveryTopComponent extends TopComponent { * @param searchCompletedEvent The SearchCompletedEvent received. */ @Subscribe - void handleSearchCompletedEvent(DiscoveryEvents.SearchCompleteEvent searchCompletedEvent) { + void handleSearchCompletedEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompletedEvent) { SwingUtilities.invokeLater(() -> { if (fileSearchPanel.getSelectedType() == FileType.VIDEO) { imagesButton.setEnabled(true); @@ -301,13 +308,24 @@ public final class DiscoveryTopComponent extends TopComponent { }); } + @Override + public List availableModes(List modes) { + /* + * This looks like the right thing to do, but online discussions seems + * to indicate this method is effectively deprecated. A break point + * placed here was never hit. + */ + return modes.stream().filter(mode -> mode.getName().equals("discovery")) + .collect(Collectors.toList()); + } + /** * Update the user interface in response to a search being started. * * @param searchStartedEvent The SearchStartedEvent received. */ @Subscribe - void handleSearchStartedEvent(DiscoveryEvents.SearchStartedEvent searchStartedEvent) { + void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) { SwingUtilities.invokeLater(() -> { imagesButton.setEnabled(false); videosButton.setEnabled(false); diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileDiscoveryTestAction.java b/Core/src/org/sleuthkit/autopsy/filequery/FileDiscoveryTestAction.java deleted file mode 100644 index 2962ec6fe5..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileDiscoveryTestAction.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Autopsy - * - * Copyright 2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.filequery; - -import org.openide.awt.ActionID; -import org.openide.awt.ActionReference; -import org.openide.awt.ActionRegistration; -import org.openide.util.HelpCtx; -import org.openide.util.NbBundle; -import org.openide.util.actions.CallableSystemAction; -import org.sleuthkit.autopsy.casemodule.Case; - -/** - * Class to test the file search API. Allows the user to run searches and see - * results. - */ -@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.newpackage.FileDiscoveryTestAction") -@ActionReference(path = "Menu/Tools", position = 1854, separatorBefore = 1853) -@ActionRegistration(displayName = "#CTL_FileDiscoveryTestAction", lazy = false) -@NbBundle.Messages({"CTL_FileDiscoveryTestAction=Test file discovery"}) -public final class FileDiscoveryTestAction extends CallableSystemAction { - - private static final String DISPLAY_NAME = "Test file discovery"; - private static final long serialVersionUID = 1L; - - @Override - public boolean isEnabled() { - return Case.isCaseOpen(); - } - - @Override - @SuppressWarnings("fallthrough") - public void performAction() { - DiscoveryTopComponent.openTopComponent(); - } - - @Override - public String getName() { - return DISPLAY_NAME; - } - - @Override - public HelpCtx getHelpCtx() { - return HelpCtx.DEFAULT_HELP; - } - - @Override - public boolean asynchronous() { - return false; // run on edt - } -} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileGroup.java b/Core/src/org/sleuthkit/autopsy/filequery/FileGroup.java index 3fead9ffcd..3c69c4c8f3 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileGroup.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileGroup.java @@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.filequery; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.filequery.FileSearch.GroupKey; /** @@ -78,15 +79,6 @@ class FileGroup implements Comparable { return groupKey; } - /** - * Pull the AbstractFile objects out of the ResultFile objects. - * - * @return List of abstract files - */ - List getAbstractFiles() { - return Collections.unmodifiableList(files); - } - /** * Sort all the files in the group */ @@ -94,15 +86,6 @@ class FileGroup implements Comparable { Collections.sort(files, sorter); } - /** - * Get the list of ResultFile objects in the group - * - * @return List of ResultFile objects - */ - List getResultFiles() { - return Collections.unmodifiableList(files); - } - /** * Compare this group to another group for sorting. Uses the algorithm * specified in groupSortingType. @@ -118,7 +101,7 @@ class FileGroup implements Comparable { switch (groupSortingType) { case BY_GROUP_SIZE: return compareGroupsBySize(this, otherGroup); - case BY_GROUP_KEY: + case BY_GROUP_NAME: default: return compareGroupsByGroupKey(this, otherGroup); } @@ -133,7 +116,7 @@ class FileGroup implements Comparable { * @return -1 if group1 should be displayed before group2, 1 otherwise */ private static int compareGroupsByGroupKey(FileGroup group1, FileGroup group2) { - return group1.groupKey.compareTo(group2.groupKey); + return group1.getGroupKey().compareTo(group2.getGroupKey()); } /** @@ -146,10 +129,10 @@ class FileGroup implements Comparable { * @return -1 if group1 should be displayed before group2, 1 otherwise */ private static int compareGroupsBySize(FileGroup group1, FileGroup group2) { - if (group1.files.size() != group2.files.size()) { - return -1 * Long.compare(group1.files.size(), group2.files.size()); // High to low + if (group1.getFiles().size() != group2.getFiles().size()) { + return -1 * Long.compare(group1.getFiles().size(), group2.getFiles().size()); // High to low } else { - // If the groups have the same size, fall through to the BY_GROUP_KEY sorting + // If the groups have the same size, fall through to the BY_GROUP_NAME sorting return compareGroupsByGroupKey(group1, group2); } } @@ -157,9 +140,37 @@ class FileGroup implements Comparable { /** * Enum to specify how to sort the group. */ + @Messages({"FileGroup.groupSortingAlgorithm.groupSize.text=Group Size", + "FileGroup.groupSortingAlgorithm.groupName.text=Group Name"}) enum GroupSortingAlgorithm { - BY_GROUP_SIZE, // Sort from largest to smallest group - BY_GROUP_KEY // Sort using the group key (for example, if grouping by size sort from largest to smallest value) + BY_GROUP_NAME(Bundle.FileGroup_groupSortingAlgorithm_groupName_text()), // Sort using the group key (for example, if grouping by size sort from largest to smallest value) + BY_GROUP_SIZE(Bundle.FileGroup_groupSortingAlgorithm_groupSize_text()); // Sort from largest to smallest group + + private final String displayName; + + /** + * Construct a GroupSortingAlgorithm enum value. + * + * @param name The name to display to the user for the enum value. + */ + GroupSortingAlgorithm(String name) { + displayName = name; + } + + @Override + public String toString() { + return displayName; + } + + } + + /** + * Get the list of ResultFile objects in the group + * + * @return List of ResultFile objects + */ + List getFiles() { + return Collections.unmodifiableList(files); } } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearch.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSearch.java index 64339944da..648eb6457a 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearch.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSearch.java @@ -803,6 +803,16 @@ class FileSearch { parent = null; } } + setParentPathAndID(parent, file); + } + + /** + * Helper method to set the parent path and parent ID. + * + * @param parent The parent content object. + * @param file The ResultFile object. + */ + private void setParentPathAndID(Content parent, ResultFile file) { if (parent != null) { try { parentPath = parent.getUniquePath(); @@ -1207,29 +1217,41 @@ class FileSearch { } } } else { - // Set frequency in batches - List currentFiles = new ArrayList<>(); - Set hashesToLookUp = new HashSet<>(); - for (ResultFile file : files) { - if (file.getFirstInstance().getKnown() == TskData.FileKnown.KNOWN) { - file.setFrequency(Frequency.KNOWN); - } - if (file.getFrequency() == Frequency.UNKNOWN - && file.getFirstInstance().getMd5Hash() != null - && !file.getFirstInstance().getMd5Hash().isEmpty()) { - hashesToLookUp.add(file.getFirstInstance().getMd5Hash()); - currentFiles.add(file); - } - if (hashesToLookUp.size() >= BATCH_SIZE) { - computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); - - hashesToLookUp.clear(); - currentFiles.clear(); - } - } - computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); + processResultFilesForCR(files, centralRepoDb); } } + + /** + * Private helper method for adding Frequency attribute when CR is + * enabled. + * + * @param files The list of ResultFiles to caluclate frequency + * for. + * @param centralRepoDb The central repository currently in use. + */ + private void processResultFilesForCR(List files, + EamDb centralRepoDb) { + List currentFiles = new ArrayList<>(); + Set hashesToLookUp = new HashSet<>(); + for (ResultFile file : files) { + if (file.getFirstInstance().getKnown() == TskData.FileKnown.KNOWN) { + file.setFrequency(Frequency.KNOWN); + } + if (file.getFrequency() == Frequency.UNKNOWN + && file.getFirstInstance().getMd5Hash() != null + && !file.getFirstInstance().getMd5Hash().isEmpty()) { + hashesToLookUp.add(file.getFirstInstance().getMd5Hash()); + currentFiles.add(file); + } + if (hashesToLookUp.size() >= BATCH_SIZE) { + computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); + + hashesToLookUp.clear(); + currentFiles.clear(); + } + } + computeFrequency(hashesToLookUp, currentFiles, centralRepoDb); + } } /** @@ -2011,16 +2033,16 @@ class FileSearch { * Enum for the attribute types that can be used for grouping. */ @NbBundle.Messages({ - "FileSearch.GroupingAttributeType.fileType.displayName=File type", - "FileSearch.GroupingAttributeType.frequency.displayName=Past occurrences", - "FileSearch.GroupingAttributeType.keywordList.displayName=Keyword list names", - "FileSearch.GroupingAttributeType.size.displayName=Size", - "FileSearch.GroupingAttributeType.datasource.displayName=Data source", - "FileSearch.GroupingAttributeType.parent.displayName=Parent folder", - "FileSearch.GroupingAttributeType.hash.displayName=Hash set", - "FileSearch.GroupingAttributeType.interestingItem.displayName=Interesting item set", - "FileSearch.GroupingAttributeType.tag.displayName=File tag", - "FileSearch.GroupingAttributeType.object.displayName=Object detected", + "FileSearch.GroupingAttributeType.fileType.displayName=File Type", + "FileSearch.GroupingAttributeType.frequency.displayName=Past Occurrences", + "FileSearch.GroupingAttributeType.keywordList.displayName=Keyword", + "FileSearch.GroupingAttributeType.size.displayName=File Size", + "FileSearch.GroupingAttributeType.datasource.displayName=Data Source", + "FileSearch.GroupingAttributeType.parent.displayName=Parent Folder", + "FileSearch.GroupingAttributeType.hash.displayName=Hash Set", + "FileSearch.GroupingAttributeType.interestingItem.displayName=Interesting Item", + "FileSearch.GroupingAttributeType.tag.displayName=Tag", + "FileSearch.GroupingAttributeType.object.displayName=Object Detected", "FileSearch.GroupingAttributeType.none.displayName=None"}) enum GroupingAttributeType { FILE_SIZE(new FileSizeAttribute(), Bundle.FileSearch_GroupingAttributeType_size_displayName()), diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchData.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchData.java index 1859a45126..93d17b21bb 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchData.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchData.java @@ -29,7 +29,7 @@ import org.sleuthkit.autopsy.coreutils.FileTypeUtils; /** * Utility enums for FileSearch */ -class FileSearchData { +final class FileSearchData { private final static long BYTES_PER_MB = 1000000; @@ -38,23 +38,18 @@ class FileSearchData { */ @NbBundle.Messages({ "FileSearchData.Frequency.unique.displayName=Unique (1)", - "FileSearchData.Frequency.rare.displayName=Rare (2-5)", - "FileSearchData.Frequency.count_10.displayName=6 - 10", - "FileSearchData.Frequency.count_20.displayName=11 - 20", - "FileSearchData.Frequency.count_50.displayName=21 - 50", - "FileSearchData.Frequency.count_100.displayName=51 - 100", - "FileSearchData.Frequency.common.displayName=Common", + "FileSearchData.Frequency.rare.displayName=Rare (2-10)", + "FileSearchData.Frequency.common.displayName=Common (11 - 100)", + "FileSearchData.Frequency.verycommon.displayName=Very Common (100+)", + "FileSearchData.Frequency.known.displayName=Known (NSRL)", "FileSearchData.Frequency.unknown.displayName=Unknown",}) enum Frequency { UNIQUE(0, 1, Bundle.FileSearchData_Frequency_unique_displayName()), - RARE(1, 5, Bundle.FileSearchData_Frequency_rare_displayName()), - COUNT_10(2, 10, Bundle.FileSearchData_Frequency_count_10_displayName()), - COUNT_20(3, 20, Bundle.FileSearchData_Frequency_count_20_displayName()), - COUNT_50(4, 50, Bundle.FileSearchData_Frequency_count_50_displayName()), - COUNT_100(5, 100, Bundle.FileSearchData_Frequency_count_100_displayName()), - COMMON(6, 0, Bundle.FileSearchData_Frequency_common_displayName()), - KNOWN(7, 0, "Known (NSRL)"), - UNKNOWN(8, 0, Bundle.FileSearchData_Frequency_unknown_displayName()); + RARE(1, 10, Bundle.FileSearchData_Frequency_rare_displayName()), + COMMON(2, 100, Bundle.FileSearchData_Frequency_common_displayName()), + VERY_COMMON(3, 0, Bundle.FileSearchData_Frequency_common_displayName()), + KNOWN(4, 0, Bundle.FileSearchData_Frequency_known_displayName()), + UNKNOWN(5, 0, Bundle.FileSearchData_Frequency_unknown_displayName()); private final int ranking; private final String displayName; @@ -87,16 +82,10 @@ class FileSearchData { return UNIQUE; } else if (count <= RARE.getMaxOccur()) { return RARE; - } else if (count <= COUNT_10.getMaxOccur()) { - return COUNT_10; - } else if (count <= COUNT_20.getMaxOccur()) { - return COUNT_20; - } else if (count <= COUNT_50.getMaxOccur()) { - return COUNT_50; - } else if (count <= COUNT_100.getMaxOccur()) { - return COUNT_100; + } else if (count <= COMMON.getMaxOccur()) { + return COMMON; } - return COMMON; + return VERY_COMMON; } /** @@ -106,7 +95,7 @@ class FileSearchData { * @return enums that can be used to filter with a CR. */ static List getOptionsForFilteringWithCr() { - return Arrays.asList(UNIQUE, RARE, COUNT_10, COUNT_20, COUNT_50, COUNT_100, COMMON, KNOWN); + return Arrays.asList(UNIQUE, RARE, COMMON, VERY_COMMON, KNOWN); } /** @@ -136,29 +125,31 @@ class FileSearchData { * Enum representing the file size */ @NbBundle.Messages({ - "FileSearchData.FileSize.OVER_10GB.displayName=10 GB+", - "FileSearchData.FileSize.OVER_5GB.displayName=5 - 10 GB", - "FileSearchData.FileSize.OVER_1GB_VIDEO.displayName=1 - 5 GB", - "FileSearchData.FileSize.OVER_1GB_IMAGE.displayName=1 GB+", - "FileSearchData.FileSize.OVER_200MB.displayName=200 MB - 1 GB", - "FileSearchData.FileSize.OVER_50MB.displayName=50 - 200 MB", - "FileSearchData.FileSize.OVER_1MB.displayName=1 - 50 MB", - "FileSearchData.FileSize.OVER_100KB.displayName=100 KB - 1 MB", - "FileSearchData.FileSize.UNDER_100KB.displayName=Under 100 KB", - "FileSearchData.FileSize.OVER_16KB.displayName=16 KB - 100 KB", - "FileSearchData.FileSize.UNDER_16KB.displayName=Under 16 KB",}) + "FileSearchData.FileSize.XXLARGE_IMAGE.displayName=XXLarge: 200MB+", + "FileSearchData.FileSize.XLARGE_IMAGE.displayName=XLarge: 50-200MB", + "FileSearchData.FileSize.LARGE_IMAGE.displayName=Large: 1-50MB", + "FileSearchData.FileSize.MEDIUM_IMAGE.displayName=Medium: 100KB-1MB", + "FileSearchData.FileSize.SMALL_IMAGE.displayName=Small: 16-100KB", + "FileSearchData.FileSize.XSMALL_IMAGE.displayName=XSmall: 0-16KB", + "FileSearchData.FileSize.XXLARGE_VIDEO.displayName=XXLarge: 10GB+", + "FileSearchData.FileSize.XLARGE_VIDEO.displayName=XLarge: 5-10GB", + "FileSearchData.FileSize.LARGE_VIDEO.displayName=Large: 1-5GB", + "FileSearchData.FileSize.MEDIUM_VIDEO.displayName=Medium: 100MB-1GB", + "FileSearchData.FileSize.SMALL_VIDEO.displayName=Small: 500KB-100MB", + "FileSearchData.FileSize.XSMALL_VIDEO.displayName=XSmall: 0-500KB",}) enum FileSize { - OVER_10GB(0, 10000 * BYTES_PER_MB, -1, Bundle.FileSearchData_FileSize_OVER_10GB_displayName()), - OVER_5GB(1, 5000 * BYTES_PER_MB, 10000 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_OVER_5GB_displayName()), - OVER_1GB_VIDEO(2, 1000 * BYTES_PER_MB, -1, Bundle.FileSearchData_FileSize_OVER_1GB_VIDEO_displayName()), - OVER_1GB_IMAGE(3, 1000 * BYTES_PER_MB, -1, Bundle.FileSearchData_FileSize_OVER_1GB_IMAGE_displayName()), - OVER_200MB(4, 200 * BYTES_PER_MB, 1000 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_OVER_200MB_displayName()), - OVER_50MB(5, 50 * BYTES_PER_MB, 200 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_OVER_50MB_displayName()), - OVER_1MB(6, 1 * BYTES_PER_MB, 50 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_OVER_1MB_displayName()), - OVER_100KB(7, 100000, 1 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_OVER_100KB_displayName()), - UNDER_100KB(8, 0, 1 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_UNDER_100KB_displayName()), - OVER_16KB(9, 16000, 100000, Bundle.FileSearchData_FileSize_OVER_16KB_displayName()), - UNDER_16KB(10, 0, 16000, Bundle.FileSearchData_FileSize_UNDER_16KB_displayName()); + XXLARGE_VIDEO(0, 10000 * BYTES_PER_MB, -1, Bundle.FileSearchData_FileSize_XXLARGE_VIDEO_displayName()), + XLARGE_VIDEO(1, 5000 * BYTES_PER_MB, 10000 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_XLARGE_VIDEO_displayName()), + LARGE_VIDEO(2, 1000 * BYTES_PER_MB, 5000 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_LARGE_VIDEO_displayName()), + MEDIUM_VIDEO(3, 100 * BYTES_PER_MB, 1000 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_MEDIUM_VIDEO_displayName()), + SMALL_VIDEO(4, 500000, 100 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_SMALL_VIDEO_displayName()), + XSMALL_VIDEO(5, 0, 500000, Bundle.FileSearchData_FileSize_XSMALL_VIDEO_displayName()), + XXLARGE_IMAGE(6, 200 * BYTES_PER_MB, -1, Bundle.FileSearchData_FileSize_XXLARGE_IMAGE_displayName()), + XLARGE_IMAGE(7, 50 * BYTES_PER_MB, 200 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_XLARGE_IMAGE_displayName()), + LARGE_IMAGE(8, 1 * BYTES_PER_MB, 50 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_LARGE_IMAGE_displayName()), + MEDIUM_IMAGE(9, 100000, 1 * BYTES_PER_MB, Bundle.FileSearchData_FileSize_MEDIUM_IMAGE_displayName()), + SMALL_IMAGE(10, 16000, 100000, Bundle.FileSearchData_FileSize_SMALL_IMAGE_displayName()), + XSMALL_IMAGE(11, 0, 16000, Bundle.FileSearchData_FileSize_XSMALL_IMAGE_displayName()); private final int ranking; // Must be unique for each value private final long minBytes; // Note that the size must be strictly greater than this to match @@ -186,20 +177,18 @@ class FileSearchData { * @return the enum whose range contains the file size */ static FileSize fromImageSize(long size) { - if (size > OVER_1GB_IMAGE.getMinBytes()) { - return OVER_1GB_IMAGE; - } else if (size > OVER_200MB.getMinBytes()) { - return OVER_200MB; - } else if (size > OVER_50MB.getMinBytes()) { - return OVER_50MB; - } else if (size > OVER_1MB.getMinBytes()) { - return OVER_1MB; - } else if (size > OVER_100KB.getMinBytes()) { - return OVER_100KB; - } else if (size > OVER_16KB.getMinBytes()) { - return OVER_16KB; + if (size > XXLARGE_IMAGE.getMinBytes()) { + return XXLARGE_IMAGE; + } else if (size > XLARGE_IMAGE.getMinBytes()) { + return XLARGE_IMAGE; + } else if (size > LARGE_IMAGE.getMinBytes()) { + return LARGE_IMAGE; + } else if (size > MEDIUM_IMAGE.getMinBytes()) { + return MEDIUM_IMAGE; + } else if (size > SMALL_IMAGE.getMinBytes()) { + return SMALL_IMAGE; } else { - return UNDER_16KB; + return XSMALL_IMAGE; } } @@ -212,22 +201,18 @@ class FileSearchData { * @return the enum whose range contains the file size */ static FileSize fromVideoSize(long size) { - if (size > OVER_10GB.getMinBytes()) { - return OVER_10GB; - } else if (size > OVER_5GB.getMinBytes()) { - return OVER_5GB; - } else if (size > OVER_1GB_VIDEO.getMinBytes()) { - return OVER_1GB_VIDEO; - } else if (size > OVER_200MB.getMinBytes()) { - return OVER_200MB; - } else if (size > OVER_50MB.getMinBytes()) { - return OVER_50MB; - } else if (size > OVER_1MB.getMinBytes()) { - return OVER_1MB; - } else if (size > OVER_100KB.getMinBytes()) { - return OVER_100KB; + if (size > XXLARGE_VIDEO.getMinBytes()) { + return XXLARGE_VIDEO; + } else if (size > XLARGE_VIDEO.getMinBytes()) { + return XLARGE_VIDEO; + } else if (size > LARGE_VIDEO.getMinBytes()) { + return LARGE_VIDEO; + } else if (size > MEDIUM_VIDEO.getMinBytes()) { + return MEDIUM_VIDEO; + } else if (size > SMALL_VIDEO.getMinBytes()) { + return SMALL_VIDEO; } else { - return UNDER_100KB; + return XSMALL_VIDEO; } } @@ -269,7 +254,7 @@ class FileSearchData { * @return enums that can be used to filter images by size. */ static List getOptionsForImages() { - return Arrays.asList(OVER_1GB_IMAGE, OVER_200MB, OVER_50MB, OVER_1MB, OVER_100KB, OVER_16KB, UNDER_16KB); + return Arrays.asList(XXLARGE_IMAGE, XLARGE_IMAGE, LARGE_IMAGE, MEDIUM_IMAGE, SMALL_IMAGE, XSMALL_IMAGE); } /** @@ -278,7 +263,7 @@ class FileSearchData { * @return enums that can be used to filter videos by size. */ static List getOptionsForVideos() { - return Arrays.asList(OVER_10GB, OVER_5GB, OVER_1GB_VIDEO, OVER_200MB, OVER_50MB, OVER_1MB, OVER_100KB, UNDER_100KB); + return Arrays.asList(XXLARGE_VIDEO, XLARGE_VIDEO, LARGE_VIDEO, MEDIUM_VIDEO, SMALL_VIDEO, XSMALL_VIDEO); } } @@ -308,7 +293,7 @@ class FileSearchData { private final String displayName; private final Collection mediaTypes; - private FileType(int value, String displayName, Collection mediaTypes) { + FileType(int value, String displayName, Collection mediaTypes) { this.ranking = value; this.displayName = displayName; this.mediaTypes = mediaTypes; diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.form b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.form deleted file mode 100644 index 75f65c9595..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.form +++ /dev/null @@ -1,741 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.java deleted file mode 100644 index 186111cef0..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchDialog.java +++ /dev/null @@ -1,1210 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.filequery; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.logging.Level; -import java.util.stream.Collectors; -import javax.swing.DefaultListModel; -import javax.swing.DefaultListCellRenderer; -import javax.swing.JCheckBox; -import javax.swing.JFrame; -import javax.swing.JList; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import org.openide.util.NbBundle; -import org.openide.windows.WindowManager; -import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb; -import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.filequery.FileSearch.GroupingAttributeType; -import org.sleuthkit.autopsy.filequery.FileSearchData.FileType; -import org.sleuthkit.autopsy.filequery.FileSearchData.FileSize; -import org.sleuthkit.autopsy.filequery.FileSearchData.Frequency; -import org.sleuthkit.autopsy.filequery.FileSearchData.Score; -import org.sleuthkit.autopsy.filequery.FileSearchFiltering.ParentSearchTerm; -import org.sleuthkit.autopsy.filequery.FileSorter.SortingMethod; -import org.sleuthkit.datamodel.BlackboardArtifact; -import org.sleuthkit.datamodel.BlackboardAttribute; -import org.sleuthkit.datamodel.TskCoreException; -import org.sleuthkit.datamodel.SleuthkitCase; -import org.sleuthkit.datamodel.DataSource; -import org.sleuthkit.datamodel.TagName; - -/** - * Dialog to allow the user to choose filtering and grouping options. - */ -@SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives -public class FileSearchDialog extends javax.swing.JDialog implements ActionListener { - - private final static Logger logger = Logger.getLogger(FileSearchDialog.class.getName()); - - private DefaultListModel parentListModel; - private boolean runAnotherSearch = false; - private final SleuthkitCase caseDb; - private final EamDb centralRepoDb; - - /** - * Creates new form FileSearchDialog - */ - @NbBundle.Messages({ - "FileSearchDialog.dialogTitle.text=Test file search", - }) - public FileSearchDialog(java.awt.Frame parent, boolean modal, SleuthkitCase caseDb, EamDb centralRepoDb) { - super((JFrame) WindowManager.getDefault().getMainWindow(), Bundle.FileSearchDialog_dialogTitle_text(), modal); - this.caseDb = caseDb; - this.centralRepoDb = centralRepoDb; - initComponents(); - customizeComponents(); - } - - /** - * Show the dialog - */ - void display() { - this.setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); - runAnotherSearch = false; - setVisible(true); - } - - /** - * Set up all the UI components - */ - private void customizeComponents() { - - errorLabel.setVisible(false); - searchButton.setEnabled(false); - - // Set up the filters - setUpFileTypeFilter(); - setUpDataSourceFilter(); - setUpFrequencyFilter(); - setUpSizeFilter(); - setUpKWFilter(); - setUpParentPathFilter(); - - setUpHashFilter(); - setUpInterestingItemsFilter(); - setUpTagsFilter(); - setUpObjectFilter(); - setUpScoreFilter(); - - // Set up the grouping attributes - for (GroupingAttributeType type : GroupingAttributeType.values()) { - groupComboBox.addItem(type); - } - - // Set up the group order buttons - orderButtonGroup.add(orderAttrRadioButton); - orderButtonGroup.add(orderSizeRadioButton); - orderAttrRadioButton.setSelected(true); - - // Set up the file order list - for (SortingMethod method : SortingMethod.values()) { - fileOrderComboBox.addItem(method); - } - } - - /** - * Add listeners to the checkbox/list set. Either can be null. - * - * @param checkBox - * @param list - */ - private void addListeners(JCheckBox checkBox, JList list) { - if (checkBox != null) { - checkBox.addActionListener(this); - } - if (list != null) { - list.addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent evt) { - validateFields(); - } - }); - } - } - - /** - * Initialize the file type filter - */ - private void setUpFileTypeFilter() { - int count = 0; - DefaultListModel fileTypeListModel = (DefaultListModel)fileTypeList.getModel(); - for (FileType type : FileType.getOptionsForFiltering()) { - fileTypeListModel.add(count, type); - count++; - } - addListeners(null, fileTypeList); - } - - /** - * Initialize the data source filter - */ - private void setUpDataSourceFilter() { - int count = 0; - try { - DefaultListModel dsListModel = (DefaultListModel)dsList.getModel(); - for(DataSource ds : caseDb.getDataSources()) { - dsListModel.add(count, new DataSourceItem(ds)); - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading data sources", ex); - dsCheckBox.setEnabled(false); - dsList.setEnabled(false); - } - addListeners(dsCheckBox, dsList); - } - - /** - * Initialize the frequency filter - */ - private void setUpFrequencyFilter() { - if (centralRepoDb == null) { - freqList.setEnabled(false); - freqCheckBox.setEnabled(false); - } else { - int count = 0; - DefaultListModel frequencyListModel = (DefaultListModel)freqList.getModel(); - for (Frequency freq : Frequency.getOptionsForFilteringWithCr()) { - frequencyListModel.add(count, freq); - } - } - addListeners(freqCheckBox, freqList); - } - - /** - * Initialize the file size filter - */ - private void setUpSizeFilter() { - int count = 0; - DefaultListModel sizeListModel = (DefaultListModel)sizeList.getModel(); - for (FileSize size : FileSize.values()) { - sizeListModel.add(count, size); - } - addListeners(sizeCheckBox, sizeList); - } - - /** - * Initialize the keyword list names filter - */ - private void setUpKWFilter() { - int count = 0; - try { - DefaultListModel kwListModel = (DefaultListModel)kwList.getModel(); - - List setNames = getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT, - BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME); - for(String name : setNames) { - kwListModel.add(count, name); - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading keyword list names", ex); - kwCheckBox.setEnabled(false); - kwList.setEnabled(false); - } - addListeners(kwCheckBox, kwList); - } - - private void setUpHashFilter() { - int count = 0; - try { - DefaultListModel hashListModel = (DefaultListModel)hashList.getModel(); - - List setNames = getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT, - BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME); - for(String name : setNames) { - hashListModel.add(count, name); - count++; - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading hash set names", ex); - hashCheckBox.setEnabled(false); - hashList.setEnabled(false); - } - addListeners(hashCheckBox, hashList); - } - - private void setUpInterestingItemsFilter() { - int count = 0; - try { - DefaultListModel intListModel = (DefaultListModel)intList.getModel(); - - List setNames = getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT, - BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SET_NAME); - for(String name : setNames) { - intListModel.add(count, name); - count++; - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading interesting file set names", ex); - intCheckBox.setEnabled(false); - intList.setEnabled(false); - } - addListeners(intCheckBox, intList); - } - - private void setUpTagsFilter() { - int count = 0; - try { - DefaultListModel tagsListModel = (DefaultListModel)tagsList.getModel(); - - List tagNames = caseDb.getTagNamesInUse(); - for(TagName name : tagNames) { - tagsListModel.add(count, name); - count++; - } - tagsList.setCellRenderer(new TagsListCellRenderer()); - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading tag names", ex); - tagsCheckBox.setEnabled(false); - tagsList.setEnabled(false); - } - addListeners(tagsCheckBox, tagsList); - } - - /** - * TagsListCellRenderer - */ - private class TagsListCellRenderer extends DefaultListCellRenderer { - - @Override - public java.awt.Component getListCellRendererComponent( - JList list, - Object value, - int index, - boolean isSelected, - boolean cellHasFocus) { - Object newValue = value; - if (value instanceof TagName) { - newValue = ((TagName)value).getDisplayName(); - } - super.getListCellRendererComponent(list, newValue, index, isSelected, cellHasFocus); - return this; - } - } - - /** - * Initialize the object filter - */ - private void setUpObjectFilter() { - int count = 0; - try { - DefaultListModel objListModel = (DefaultListModel)objList.getModel(); - - List setNames = getSetNames(BlackboardArtifact.ARTIFACT_TYPE.TSK_OBJECT_DETECTED, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DESCRIPTION); - for(String name : setNames) { - objListModel.add(count, name); - count++; - } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, "Error loading object detected set names", ex); - objCheckBox.setEnabled(false); - objList.setEnabled(false); - } - addListeners(objCheckBox, objList); - } - - /** - * Initialize the score filter - */ - private void setUpScoreFilter() { - - int count = 0; - DefaultListModel scoreListModel = (DefaultListModel)scoreList.getModel(); - for (Score score : Score.getOptionsForFiltering()) { - scoreListModel.add(count, score); - } - addListeners(scoreCheckBox, scoreList); - } - - private List getSetNames(BlackboardArtifact.ARTIFACT_TYPE artifactType, BlackboardAttribute.ATTRIBUTE_TYPE setNameAttribute) throws TskCoreException { - List arts = caseDb.getBlackboardArtifacts(artifactType); - List setNames = new ArrayList<>(); - for (BlackboardArtifact art : arts) { - for (BlackboardAttribute attr : art.getAttributes()) { - if (attr.getAttributeType().getTypeID() == setNameAttribute.getTypeID()) { - String setName = attr.getValueString(); - if ( ! setNames.contains(setName)) { - setNames.add(setName); - } - } - } - } - Collections.sort(setNames); - return setNames; - } - - /** - * Initialize the parent path filter - */ - private void setUpParentPathFilter() { - parentButtonGroup.add(parentFullRadioButton); - parentButtonGroup.add(parentSubstringRadioButton); - parentFullRadioButton.setSelected(true); - parentListModel = (DefaultListModel)parentList.getModel(); - - addListeners(parentCheckBox, parentList); - } - - /** - * Get a list of all filters selected by the user. - * - * @return the list of filters - */ - List getFilters() { - List filters = new ArrayList<>(); - - // There will always be a file type selected - filters.add(new FileSearchFiltering.FileTypeFilter(fileTypeList.getSelectedValuesList())); - - if (parentCheckBox.isSelected()) { - // For the parent paths, everything in the box is used (not just the selected entries) - filters.add(new FileSearchFiltering.ParentFilter(getParentPaths())); - } - - if (dsCheckBox.isSelected()) { - List dataSources = dsList.getSelectedValuesList().stream().map(t -> t.ds).collect(Collectors.toList()); - filters.add(new FileSearchFiltering.DataSourceFilter(dataSources)); - } - - if (freqCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.FrequencyFilter(freqList.getSelectedValuesList())); - } - - if (sizeCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.SizeFilter(sizeList.getSelectedValuesList())); - } - - if (kwCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.KeywordListFilter(kwList.getSelectedValuesList())); - } - - if (hashCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.HashSetFilter(hashList.getSelectedValuesList())); - } - - if (intCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.InterestingFileSetFilter(intList.getSelectedValuesList())); - } - - if (objCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.ObjectDetectionFilter(objList.getSelectedValuesList())); - } - - if (tagsCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.TagsFilter(tagsList.getSelectedValuesList())); - } - - if (exifCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.ExifFilter()); - } - - if (notableCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.NotableFilter()); - } - - if (scoreCheckBox.isSelected()) { - filters.add(new FileSearchFiltering.ScoreFilter(scoreList.getSelectedValuesList())); - } - - return filters; - } - - /** - * Utility method to get the parent path objects out of the JList. - * - * @return The list of entered ParentSearchTerm objects - */ - private List getParentPaths() { - List results = new ArrayList<>(); - for (int i = 0;i < parentListModel.getSize();i++) { - results.add(parentListModel.get(i)); - } - return results; - } - - /** - * Get the attribute to group by - * - * @return the grouping attribute - */ - FileSearch.AttributeType getGroupingAttribute() { - GroupingAttributeType groupingAttrType = (GroupingAttributeType)groupComboBox.getSelectedItem(); - return groupingAttrType.getAttributeType(); - } - - /** - * Get the sorting method for groups. - * - * @return the selected sorting method - */ - FileGroup.GroupSortingAlgorithm getGroupSortingMethod() { - if (orderAttrRadioButton.isSelected()) { - return FileGroup.GroupSortingAlgorithm.BY_GROUP_KEY; - } - return FileGroup.GroupSortingAlgorithm.BY_GROUP_SIZE; - } - - /** - * Get the sorting method for files. - * - * @return the selected sorting method - */ - SortingMethod getFileSortingMethod() { - return (SortingMethod)fileOrderComboBox.getSelectedItem(); - } - - @Override - public void actionPerformed(ActionEvent e) { - validateFields(); - } - - /** - * Utility class to allow us to display the data source ID along with the name - */ - private class DataSourceItem { - private DataSource ds; - - DataSourceItem(DataSource ds) { - this.ds = ds; - } - - @Override - public String toString() { - return ds.getName() + " (ID: " + ds.getId() + ")"; - } - } - - /** - * Check whether the user chose to run the search or cancel - * - * @return true if the search was cancelled, false otherwise - */ - boolean searchCancelled() { - return (! runAnotherSearch); - } - - /** - * Validate the form. - * If we use any of this in the final dialog we should use bundle messages. - */ - private void validateFields() { - - // There must be at least one file type selected - if (fileTypeList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one file type must be selected"); - return; - } - - // For most enabled filters, there should be something selected - if (dsCheckBox.isSelected() && dsList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one data source must be selected"); - return; - } - if (freqCheckBox.isSelected() && freqList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one CR frequency must be selected"); - return; - } - if (sizeCheckBox.isSelected() && sizeList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one size must be selected"); - return; - } - if (kwCheckBox.isSelected() && kwList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one keyword list name must be selected"); - return; - } - - // Parent uses everything in the box - if (parentCheckBox.isSelected() && getParentPaths().isEmpty()) { - setInvalid("At least one parent path must be entered"); - return; - } - - if (hashCheckBox.isSelected() && hashList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one hash set name must be selected"); - return; - } - - if (intCheckBox.isSelected() && intList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one interesting file set name must be selected"); - return; - } - - if (objCheckBox.isSelected() && objList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one object type name must be selected"); - return; - } - - if (tagsCheckBox.isSelected() && tagsList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one tag name must be selected"); - return; - } - - if (scoreCheckBox.isSelected() && scoreList.getSelectedValuesList().isEmpty()) { - setInvalid("At least one score must be selected"); - return; - } - - setValid(); - - } - - /** - * The settings are valid so enable the Search button - */ - private void setValid() { - errorLabel.setVisible(false); - searchButton.setEnabled(true); - } - - /** - * The settings are not valid so disable the search button and - * display the given error message. - * - * @param error - */ - private void setInvalid(String error) { - errorLabel.setText(error); - errorLabel.setVisible(true); - searchButton.setEnabled(false); - } - - /** - * 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 - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - parentButtonGroup = new javax.swing.ButtonGroup(); - orderButtonGroup = new javax.swing.ButtonGroup(); - jLabel1 = new javax.swing.JLabel(); - cancelButton = new javax.swing.JButton(); - dsCheckBox = new javax.swing.JCheckBox(); - jScrollPane1 = new javax.swing.JScrollPane(); - fileTypeList = new javax.swing.JList<>(); - jScrollPane2 = new javax.swing.JScrollPane(); - dsList = new javax.swing.JList<>(); - freqCheckBox = new javax.swing.JCheckBox(); - jScrollPane3 = new javax.swing.JScrollPane(); - freqList = new javax.swing.JList<>(); - jScrollPane4 = new javax.swing.JScrollPane(); - sizeList = new javax.swing.JList<>(); - sizeCheckBox = new javax.swing.JCheckBox(); - jScrollPane5 = new javax.swing.JScrollPane(); - kwList = new javax.swing.JList<>(); - kwCheckBox = new javax.swing.JCheckBox(); - jScrollPane6 = new javax.swing.JScrollPane(); - parentList = new javax.swing.JList<>(); - parentCheckBox = new javax.swing.JCheckBox(); - deleteParentButton = new javax.swing.JButton(); - addParentButton = new javax.swing.JButton(); - parentTextField = new javax.swing.JTextField(); - parentFullRadioButton = new javax.swing.JRadioButton(); - parentSubstringRadioButton = new javax.swing.JRadioButton(); - jLabel2 = new javax.swing.JLabel(); - jLabel3 = new javax.swing.JLabel(); - groupComboBox = new javax.swing.JComboBox<>(); - jLabel4 = new javax.swing.JLabel(); - orderAttrRadioButton = new javax.swing.JRadioButton(); - orderSizeRadioButton = new javax.swing.JRadioButton(); - jLabel5 = new javax.swing.JLabel(); - fileOrderComboBox = new javax.swing.JComboBox<>(); - searchButton = new javax.swing.JButton(); - errorLabel = new javax.swing.JLabel(); - filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(8, 7), new java.awt.Dimension(8, 7), new java.awt.Dimension(8, 7)); - filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(265, 23), new java.awt.Dimension(265, 23), new java.awt.Dimension(265, 23)); - hashCheckBox = new javax.swing.JCheckBox(); - jScrollPane7 = new javax.swing.JScrollPane(); - hashList = new javax.swing.JList<>(); - intCheckBox = new javax.swing.JCheckBox(); - jScrollPane8 = new javax.swing.JScrollPane(); - intList = new javax.swing.JList<>(); - jScrollPane9 = new javax.swing.JScrollPane(); - tagsList = new javax.swing.JList<>(); - tagsCheckBox = new javax.swing.JCheckBox(); - jScrollPane10 = new javax.swing.JScrollPane(); - objList = new javax.swing.JList<>(); - objCheckBox = new javax.swing.JCheckBox(); - exifCheckBox = new javax.swing.JCheckBox(); - notableCheckBox = new javax.swing.JCheckBox(); - scoreCheckBox = new javax.swing.JCheckBox(); - jScrollPane11 = new javax.swing.JScrollPane(); - scoreList = new javax.swing.JList<>(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - - org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.jLabel1.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.cancelButton.text")); // NOI18N - cancelButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cancelButtonActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(dsCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.dsCheckBox.text")); // NOI18N - dsCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - dsCheckBoxActionPerformed(evt); - } - }); - - fileTypeList.setModel(new DefaultListModel()); - jScrollPane1.setViewportView(fileTypeList); - - dsList.setModel(new DefaultListModel()); - dsList.setEnabled(false); - jScrollPane2.setViewportView(dsList); - - org.openide.awt.Mnemonics.setLocalizedText(freqCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.freqCheckBox.text")); // NOI18N - freqCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - freqCheckBoxActionPerformed(evt); - } - }); - - freqList.setModel(new DefaultListModel()); - freqList.setEnabled(false); - jScrollPane3.setViewportView(freqList); - - sizeList.setModel(new DefaultListModel()); - sizeList.setEnabled(false); - jScrollPane4.setViewportView(sizeList); - - org.openide.awt.Mnemonics.setLocalizedText(sizeCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.sizeCheckBox.text")); // NOI18N - sizeCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - sizeCheckBoxActionPerformed(evt); - } - }); - - kwList.setModel(new DefaultListModel()); - kwList.setEnabled(false); - jScrollPane5.setViewportView(kwList); - - org.openide.awt.Mnemonics.setLocalizedText(kwCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.kwCheckBox.text")); // NOI18N - kwCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - kwCheckBoxActionPerformed(evt); - } - }); - - parentList.setModel(new DefaultListModel()); - parentList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - parentList.setEnabled(false); - parentList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { - public void valueChanged(javax.swing.event.ListSelectionEvent evt) { - parentListValueChanged(evt); - } - }); - jScrollPane6.setViewportView(parentList); - - org.openide.awt.Mnemonics.setLocalizedText(parentCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.parentCheckBox.text")); // NOI18N - parentCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - parentCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(deleteParentButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.deleteParentButton.text")); // NOI18N - deleteParentButton.setEnabled(false); - deleteParentButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - deleteParentButtonActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(addParentButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.addParentButton.text")); // NOI18N - addParentButton.setEnabled(false); - addParentButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - addParentButtonActionPerformed(evt); - } - }); - - parentTextField.setEnabled(false); - parentTextField.setMaximumSize(new java.awt.Dimension(6, 20)); - - org.openide.awt.Mnemonics.setLocalizedText(parentFullRadioButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.parentFullRadioButton.text")); // NOI18N - parentFullRadioButton.setEnabled(false); - - org.openide.awt.Mnemonics.setLocalizedText(parentSubstringRadioButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.parentSubstringRadioButton.text")); // NOI18N - parentSubstringRadioButton.setEnabled(false); - - org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.jLabel2.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.jLabel3.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.jLabel4.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(orderAttrRadioButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.orderAttrRadioButton.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(orderSizeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.orderSizeRadioButton.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.jLabel5.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.searchButton.text")); // NOI18N - searchButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - searchButtonActionPerformed(evt); - } - }); - - errorLabel.setForeground(new java.awt.Color(255, 0, 0)); - - org.openide.awt.Mnemonics.setLocalizedText(hashCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.hashCheckBox.text")); // NOI18N - hashCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - hashCheckBoxActionPerformed(evt); - } - }); - - hashList.setModel(new DefaultListModel()); - hashList.setEnabled(false); - jScrollPane7.setViewportView(hashList); - - org.openide.awt.Mnemonics.setLocalizedText(intCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.intCheckBox.text")); // NOI18N - intCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - intCheckBoxActionPerformed(evt); - } - }); - - intList.setModel(new DefaultListModel()); - intList.setEnabled(false); - jScrollPane8.setViewportView(intList); - - tagsList.setModel(new DefaultListModel()); - tagsList.setEnabled(false); - jScrollPane9.setViewportView(tagsList); - - org.openide.awt.Mnemonics.setLocalizedText(tagsCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.tagsCheckBox.text")); // NOI18N - tagsCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tagsCheckBoxActionPerformed(evt); - } - }); - - objList.setModel(new DefaultListModel()); - objList.setEnabled(false); - jScrollPane10.setViewportView(objList); - - org.openide.awt.Mnemonics.setLocalizedText(objCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.objCheckBox.text")); // NOI18N - objCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - objCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(exifCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.exifCheckBox.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(notableCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.notableCheckBox.text")); // NOI18N - notableCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - notableCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(scoreCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.scoreCheckBox.text")); // NOI18N - scoreCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - scoreCheckBoxActionPerformed(evt); - } - }); - - scoreList.setModel(new DefaultListModel()); - scoreList.setEnabled(false); - jScrollPane11.setViewportView(scoreList); - - org.openide.awt.Mnemonics.setLocalizedText(hashCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.hashCheckBox.text")); // NOI18N - hashCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - hashCheckBoxActionPerformed(evt); - } - }); - - hashList.setModel(new DefaultListModel()); - hashList.setEnabled(false); - jScrollPane7.setViewportView(hashList); - - org.openide.awt.Mnemonics.setLocalizedText(intCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.intCheckBox.text")); // NOI18N - intCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - intCheckBoxActionPerformed(evt); - } - }); - - intList.setModel(new DefaultListModel()); - intList.setEnabled(false); - jScrollPane8.setViewportView(intList); - - tagsList.setModel(new DefaultListModel()); - tagsList.setEnabled(false); - jScrollPane9.setViewportView(tagsList); - - org.openide.awt.Mnemonics.setLocalizedText(tagsCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.tagsCheckBox.text")); // NOI18N - tagsCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tagsCheckBoxActionPerformed(evt); - } - }); - - objList.setModel(new DefaultListModel()); - objList.setEnabled(false); - jScrollPane10.setViewportView(objList); - - org.openide.awt.Mnemonics.setLocalizedText(objCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.objCheckBox.text")); // NOI18N - objCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - objCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(exifCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.exifCheckBox.text")); // NOI18N - - org.openide.awt.Mnemonics.setLocalizedText(notableCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.notableCheckBox.text")); // NOI18N - notableCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - notableCheckBoxActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(scoreCheckBox, org.openide.util.NbBundle.getMessage(FileSearchDialog.class, "FileSearchDialog.scoreCheckBox.text")); // NOI18N - scoreCheckBox.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - scoreCheckBoxActionPerformed(evt); - } - }); - - scoreList.setModel(new DefaultListModel()); - scoreList.setEnabled(false); - jScrollPane11.setViewportView(scoreList); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dsCheckBox) - .addComponent(jLabel1) - .addComponent(freqCheckBox) - .addComponent(sizeCheckBox) - .addComponent(kwCheckBox) - .addComponent(parentCheckBox) - .addComponent(jLabel2)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(parentTextField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(parentFullRadioButton) - .addGap(18, 18, 18) - .addComponent(parentSubstringRadioButton) - .addGap(0, 0, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(deleteParentButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(addParentButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane5) - .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(searchButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cancelButton) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGap(344, 344, 344)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(intCheckBox) - .addComponent(tagsCheckBox) - .addComponent(objCheckBox) - .addComponent(hashCheckBox) - .addComponent(scoreCheckBox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane11) - .addComponent(jScrollPane7, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane10, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane9, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane8, javax.swing.GroupLayout.Alignment.LEADING)) - .addGap(35, 35, 35) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel3) - .addComponent(jLabel4) - .addComponent(jLabel5)) - .addGap(29, 29, 29) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(orderAttrRadioButton) - .addComponent(groupComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(orderSizeRadioButton) - .addComponent(fileOrderComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(filler2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(exifCheckBox) - .addComponent(notableCheckBox)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(filler2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel1) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(hashCheckBox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dsCheckBox) - .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jScrollPane10, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(objCheckBox))) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel3) - .addComponent(groupComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(5, 5, 5) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(orderAttrRadioButton)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(orderSizeRadioButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) - .addComponent(fileOrderComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addGap(11, 11, 11) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(freqCheckBox) - .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jScrollPane9, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(tagsCheckBox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(sizeCheckBox) - .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(intCheckBox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(kwCheckBox) - .addComponent(scoreCheckBox) - .addComponent(jScrollPane11, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(parentCheckBox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel2)) - .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(layout.createSequentialGroup() - .addComponent(exifCheckBox) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(notableCheckBox))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(deleteParentButton) - .addComponent(parentFullRadioButton) - .addComponent(parentSubstringRadioButton)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(addParentButton) - .addComponent(parentTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(errorLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(searchButton) - .addComponent(cancelButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - - pack(); - }// //GEN-END:initComponents - - private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed - setVisible(false); - dispose(); - runAnotherSearch = false; - }//GEN-LAST:event_cancelButtonActionPerformed - - private void dsCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dsCheckBoxActionPerformed - dsList.setEnabled(dsCheckBox.isSelected()); - }//GEN-LAST:event_dsCheckBoxActionPerformed - - private void parentListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_parentListValueChanged - if (parentList.getSelectedValuesList().isEmpty()) { - deleteParentButton.setEnabled(false); - } else { - deleteParentButton.setEnabled(true); - } - }//GEN-LAST:event_parentListValueChanged - - private void deleteParentButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteParentButtonActionPerformed - int index = parentList.getSelectedIndex(); - parentListModel.remove(index); - }//GEN-LAST:event_deleteParentButtonActionPerformed - - private void addParentButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addParentButtonActionPerformed - if ( ! parentTextField.getText().isEmpty()) { - ParentSearchTerm searchTerm; - if (parentFullRadioButton.isSelected()) { - searchTerm = new ParentSearchTerm(parentTextField.getText(), true, true); - } else { - searchTerm = new ParentSearchTerm(parentTextField.getText(), false, true); - } - parentListModel.add(parentListModel.size(), searchTerm); - } - }//GEN-LAST:event_addParentButtonActionPerformed - - private void freqCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_freqCheckBoxActionPerformed - freqList.setEnabled(freqCheckBox.isSelected()); - }//GEN-LAST:event_freqCheckBoxActionPerformed - - private void sizeCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sizeCheckBoxActionPerformed - sizeList.setEnabled(sizeCheckBox.isSelected()); - }//GEN-LAST:event_sizeCheckBoxActionPerformed - - private void kwCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kwCheckBoxActionPerformed - kwList.setEnabled(kwCheckBox.isSelected()); - }//GEN-LAST:event_kwCheckBoxActionPerformed - - private void parentCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_parentCheckBoxActionPerformed - parentList.setEnabled(parentCheckBox.isSelected()); - parentFullRadioButton.setEnabled(parentCheckBox.isSelected()); - parentSubstringRadioButton.setEnabled(parentCheckBox.isSelected()); - parentTextField.setEnabled(parentCheckBox.isSelected()); - addParentButton.setEnabled(parentCheckBox.isSelected()); - deleteParentButton.setEnabled(parentCheckBox.isSelected()); - }//GEN-LAST:event_parentCheckBoxActionPerformed - - private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed - runAnotherSearch = true; - setVisible(false); - }//GEN-LAST:event_searchButtonActionPerformed - - private void hashCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hashCheckBoxActionPerformed - hashList.setEnabled(hashCheckBox.isSelected()); - }//GEN-LAST:event_hashCheckBoxActionPerformed - - private void intCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_intCheckBoxActionPerformed - intList.setEnabled(intCheckBox.isSelected()); - }//GEN-LAST:event_intCheckBoxActionPerformed - - private void tagsCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tagsCheckBoxActionPerformed - tagsList.setEnabled(tagsCheckBox.isSelected()); - }//GEN-LAST:event_tagsCheckBoxActionPerformed - - private void objCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_objCheckBoxActionPerformed - objList.setEnabled(objCheckBox.isSelected()); - }//GEN-LAST:event_objCheckBoxActionPerformed - - private void notableCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_notableCheckBoxActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_notableCheckBoxActionPerformed - - private void scoreCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_scoreCheckBoxActionPerformed - scoreList.setEnabled(scoreCheckBox.isSelected()); - }//GEN-LAST:event_scoreCheckBoxActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton addParentButton; - private javax.swing.JButton cancelButton; - private javax.swing.JButton deleteParentButton; - private javax.swing.JCheckBox dsCheckBox; - private javax.swing.JList dsList; - private javax.swing.JLabel errorLabel; - private javax.swing.JCheckBox exifCheckBox; - private javax.swing.JComboBox fileOrderComboBox; - private javax.swing.JList fileTypeList; - private javax.swing.Box.Filler filler1; - private javax.swing.Box.Filler filler2; - private javax.swing.JCheckBox freqCheckBox; - private javax.swing.JList freqList; - private javax.swing.JComboBox groupComboBox; - private javax.swing.JCheckBox hashCheckBox; - private javax.swing.JList hashList; - private javax.swing.JCheckBox intCheckBox; - private javax.swing.JList intList; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane10; - private javax.swing.JScrollPane jScrollPane11; - private javax.swing.JScrollPane jScrollPane2; - private javax.swing.JScrollPane jScrollPane3; - private javax.swing.JScrollPane jScrollPane4; - private javax.swing.JScrollPane jScrollPane5; - private javax.swing.JScrollPane jScrollPane6; - private javax.swing.JScrollPane jScrollPane7; - private javax.swing.JScrollPane jScrollPane8; - private javax.swing.JScrollPane jScrollPane9; - private javax.swing.JCheckBox kwCheckBox; - private javax.swing.JList kwList; - private javax.swing.JCheckBox notableCheckBox; - private javax.swing.JCheckBox objCheckBox; - private javax.swing.JList objList; - private javax.swing.JRadioButton orderAttrRadioButton; - private javax.swing.ButtonGroup orderButtonGroup; - private javax.swing.JRadioButton orderSizeRadioButton; - private javax.swing.ButtonGroup parentButtonGroup; - private javax.swing.JCheckBox parentCheckBox; - private javax.swing.JRadioButton parentFullRadioButton; - private javax.swing.JList parentList; - private javax.swing.JRadioButton parentSubstringRadioButton; - private javax.swing.JTextField parentTextField; - private javax.swing.JCheckBox scoreCheckBox; - private javax.swing.JList scoreList; - private javax.swing.JButton searchButton; - private javax.swing.JCheckBox sizeCheckBox; - private javax.swing.JList sizeList; - private javax.swing.JCheckBox tagsCheckBox; - private javax.swing.JList tagsList; - // End of variables declaration//GEN-END:variables -} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchFiltering.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchFiltering.java index 91dd29e253..b35434be0e 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchFiltering.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchFiltering.java @@ -88,42 +88,57 @@ class FileSearchFiltering { // The file search filter is required, so this should never be empty. throw new FileSearchException("Selected filters do not include a case database query"); } - try { - // Get all matching abstract files - List resultList = new ArrayList<>(); - - logger.log(Level.INFO, "Running SQL query: {0}", combinedQuery); - List sqlResults = caseDb.findAllFilesWhere(combinedQuery); - - // If there are no results, return now - if (sqlResults.isEmpty()) { - return resultList; - } - - // Wrap each result in a ResultFile - for (AbstractFile abstractFile : sqlResults) { - resultList.add(new ResultFile(abstractFile)); - } - - // Now run any non-SQL filters. - for (FileFilter filter : filters) { - if (filter.useAlternateFilter()) { - resultList = filter.applyAlternateFilter(resultList, caseDb, centralRepoDb); - } - - // There are no matches for the filters run so far, so return - if (resultList.isEmpty()) { - return resultList; - } - } - - return resultList; + return getResultList(filters, combinedQuery, caseDb, centralRepoDb); } catch (TskCoreException ex) { throw new FileSearchException("Error querying case database", ex); // NON-NLS } } + /** + * Private helper method for runQueries method to get the ResultFile list. + * + * @param filters The filters to run. + * @param combinedQuery The query to get results files for. + * @param caseDb The case database. + * @param crDb The central repo. Can be null as long as no filters + * need it. + * + * @return An ArrayList of ResultFiles returned by the query. + * + * @throws TskCoreException + * @throws FileSearchException + */ + private static List getResultList(List filters, String combinedQuery, SleuthkitCase caseDb, EamDb centralRepoDb) throws TskCoreException, FileSearchException { + // Get all matching abstract files + List resultList = new ArrayList<>(); + + logger.log(Level.INFO, "Running SQL query: {0}", combinedQuery); + List sqlResults = caseDb.findAllFilesWhere(combinedQuery); + + // If there are no results, return now + if (sqlResults.isEmpty()) { + return resultList; + } + + // Wrap each result in a ResultFile + for (AbstractFile abstractFile : sqlResults) { + resultList.add(new ResultFile(abstractFile)); + } + + // Now run any non-SQL filters. + for (FileFilter filter : filters) { + if (filter.useAlternateFilter()) { + resultList = filter.applyAlternateFilter(resultList, caseDb, centralRepoDb); + } + // There are no matches for the filters run so far, so return + if (resultList.isEmpty()) { + return resultList; + } + } + return resultList; + } + /** * Base class for the filters. */ @@ -857,11 +872,9 @@ class FileSearchFiltering { @Override String getWhereClause() { - String queryStr = "(obj_id IN (SELECT obj_id from blackboard_artifacts WHERE artifact_id IN " + return "(obj_id IN (SELECT obj_id from blackboard_artifacts WHERE artifact_id IN " + "(SELECT artifact_id FROM blackboard_attributes WHERE artifact_type_id = " - + BlackboardArtifact.ARTIFACT_TYPE.TSK_DEVICE_ORIGINAL_SUSPECTED.getTypeID() + ")))"; - - return queryStr; + + BlackboardArtifact.ARTIFACT_TYPE.TSK_METADATA_EXIF.getTypeID() + ")))"; } @NbBundle.Messages({ diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.form b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.form index ccfb608cd6..c8a68294e2 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.form +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.form @@ -8,8 +8,6 @@ - - @@ -19,10 +17,10 @@ - + - + @@ -40,26 +38,29 @@ - + + - + + - - - - - - + + + + + + + + + + + + + - - - - - - @@ -67,10 +68,14 @@ - + + + + + - + @@ -94,13 +99,29 @@ - + + + + + + + + + + + + + + + + + @@ -205,23 +226,6 @@ - - - - - - - - - - - - - - - - - @@ -234,17 +238,7 @@ - - - - - - - - - - - + @@ -304,7 +298,7 @@ - + @@ -330,7 +324,7 @@ - + @@ -342,7 +336,7 @@ - + @@ -356,7 +350,7 @@ - + @@ -382,9 +376,13 @@ + + + + - + @@ -394,7 +392,7 @@ - + @@ -406,7 +404,16 @@ - + + + + + + + + + + @@ -428,7 +435,7 @@ - + @@ -438,7 +445,7 @@ - + @@ -450,6 +457,12 @@ + + + + + + @@ -469,7 +482,7 @@ - + @@ -499,7 +512,7 @@ - + @@ -548,7 +561,7 @@ - + @@ -560,7 +573,13 @@ - + + + + + + + @@ -574,7 +593,7 @@ - + @@ -600,7 +619,7 @@ - + @@ -612,7 +631,13 @@ - + + + + + + + @@ -646,23 +671,6 @@ - - - - - - - - - - - - - - - - - @@ -675,7 +683,7 @@ - + @@ -694,6 +702,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -712,76 +854,62 @@ - + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + - - + - - - - - - + - + + + + - - - + + + + @@ -814,27 +942,10 @@ - - - - - - - - - - - - - - - - - - - - - + + + + @@ -842,6 +953,10 @@ + + + + @@ -849,6 +964,15 @@ + + + + + + + + + @@ -870,5 +994,27 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.java index 0346916d1c..d751911379 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSearchPanel.java @@ -39,6 +39,7 @@ import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb; import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.filequery.FileGroup.GroupSortingAlgorithm; import org.sleuthkit.autopsy.filequery.FileSearch.GroupingAttributeType; import org.sleuthkit.autopsy.filequery.FileSearchData.FileType; import org.sleuthkit.autopsy.filequery.FileSearchData.FileSize; @@ -58,7 +59,7 @@ import org.sleuthkit.datamodel.TagName; final class FileSearchPanel extends javax.swing.JPanel implements ActionListener { private static final long serialVersionUID = 1L; - private static final String[] DEFAULT_IGNORED_PATHS = {"Windows", "Program Files"}; + private static final String[] DEFAULT_IGNORED_PATHS = {"/Windows/", "/Program Files/"}; //NON-NLS private final static Logger logger = Logger.getLogger(FileSearchPanel.class.getName()); private FileType fileType = FileType.IMAGE; private DefaultListModel parentListModel; @@ -70,6 +71,9 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener @NbBundle.Messages({"FileSearchPanel.dialogTitle.text=Test file search"}) FileSearchPanel() { initComponents(); + for (GroupSortingAlgorithm groupSortAlgorithm : GroupSortingAlgorithm.values()) { + groupSortingComboBox.addItem(groupSortAlgorithm); + } parentListModel = (DefaultListModel) parentList.getModel(); for (String ignorePath : DEFAULT_IGNORED_PATHS) { parentListModel.add(parentListModel.size(), new ParentSearchTerm(ignorePath, false, false)); @@ -79,15 +83,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the data source filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void dataSourceFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { dataSourceCheckbox.setVisible(visible); @@ -110,15 +114,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the file size filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void sizeFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { sizeCheckbox.setVisible(visible); @@ -141,15 +145,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the central repository frequency filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void crFrequencyFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { crFrequencyCheckbox.setVisible(visible); @@ -172,22 +176,23 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the objects filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void objectsFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { objectsCheckbox.setVisible(visible); objectsScrollPane.setVisible(visible); objectsList.setVisible(visible); - objectsCheckbox.setEnabled(enabled); - objectsCheckbox.setSelected(selected); + boolean hasObjects = objectsList.getModel().getSize() > 0; + objectsCheckbox.setEnabled(enabled && hasObjects); + objectsCheckbox.setSelected(selected && hasObjects); if (objectsCheckbox.isEnabled() && objectsCheckbox.isSelected()) { objectsScrollPane.setEnabled(true); objectsList.setEnabled(true); @@ -203,22 +208,23 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the hash set filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void hashSetFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { hashSetCheckbox.setVisible(visible); hashSetScrollPane.setVisible(visible); hashSetList.setVisible(visible); - hashSetCheckbox.setEnabled(enabled); - hashSetCheckbox.setSelected(selected); + boolean hasHashSets = hashSetList.getModel().getSize() > 0; + hashSetCheckbox.setEnabled(enabled && hasHashSets); + hashSetCheckbox.setSelected(selected && hasHashSets); if (hashSetCheckbox.isEnabled() && hashSetCheckbox.isSelected()) { hashSetScrollPane.setEnabled(true); hashSetList.setEnabled(true); @@ -234,22 +240,23 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the interesting items filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void interestingItemsFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { interestingItemsCheckbox.setVisible(visible); interestingItemsScrollPane.setVisible(visible); interestingItemsList.setVisible(visible); - interestingItemsCheckbox.setEnabled(enabled); - interestingItemsCheckbox.setSelected(selected); + boolean hasInterestingItems = interestingItemsList.getModel().getSize() > 0; + interestingItemsCheckbox.setEnabled(enabled && hasInterestingItems); + interestingItemsCheckbox.setSelected(selected && hasInterestingItems); if (interestingItemsCheckbox.isEnabled() && interestingItemsCheckbox.isSelected()) { interestingItemsScrollPane.setEnabled(true); interestingItemsList.setEnabled(true); @@ -265,15 +272,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the score filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void scoreFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { scoreCheckbox.setVisible(visible); @@ -296,15 +303,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener /** * Setup the parent path filter settings. * - * @param visible Boolean indicating if the filter should be - * visible. - * @param enabled Boolean indicating if the filter should be - * enabled. - * @param selected Boolean indicating if the filter should be - * selected. + * @param visible Boolean indicating if the filter should be + * visible. + * @param enabled Boolean indicating if the filter should be + * enabled. + * @param selected Boolean indicating if the filter should be + * selected. * @param indicesSelected Array of integers indicating which list items are - * selected, null to indicate leaving selected items - * unchanged. + * selected, null to indicate leaving selected items + * unchanged. */ private void parentFilterSettings(boolean visible, boolean enabled, boolean selected, int[] indicesSelected) { parentCheckbox.setVisible(visible); @@ -321,6 +328,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener addButton.setEnabled(true); deleteButton.setEnabled(!parentListModel.isEmpty()); parentList.setEnabled(true); + parentTextField.setEnabled(true); if (indicesSelected != null) { parentList.setSelectedIndices(indicesSelected); } @@ -333,7 +341,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener substringRadioButton.setEnabled(false); addButton.setEnabled(false); deleteButton.setEnabled(false); - + parentTextField.setEnabled(false); } } @@ -450,7 +458,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener */ private void imagesSelected(boolean enabled, boolean resetSelected) { dataSourceFilterSettings(true, enabled, !resetSelected && dataSourceCheckbox.isSelected(), null); - int[] selectedSizeIndices = {1, 2, 3, 4, 5, 6}; + int[] selectedSizeIndices = {1, 2, 3, 4, 5}; sizeFilterSettings(true, enabled, resetSelected || sizeCheckbox.isSelected(), resetSelected == true ? selectedSizeIndices : null); int[] selectedFrequencyIndices; if (!EamDb.isEnabled()) { @@ -463,7 +471,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener objectsFilterSettings(true, enabled, !resetSelected && objectsCheckbox.isSelected(), null); hashSetFilterSettings(true, enabled, !resetSelected && hashSetCheckbox.isSelected(), null); interestingItemsFilterSettings(true, enabled, !resetSelected && interestingItemsCheckbox.isSelected(), null); - parentFilterSettings(true, true, false, null); + parentFilterSettings(true, enabled, !resetSelected && parentCheckbox.isSelected(), null); scoreFilterSettings(false, false, false, null); tagsFilterSettings(false, false, false, null); keywordFilterSettings(false, false, false, null); @@ -495,7 +503,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener objectsFilterSettings(true, enabled, !resetSelected && objectsCheckbox.isSelected(), null); hashSetFilterSettings(true, enabled, !resetSelected && hashSetCheckbox.isSelected(), null); interestingItemsFilterSettings(true, enabled, !resetSelected && interestingItemsCheckbox.isSelected(), null); - parentFilterSettings(true, true, false, null); + parentFilterSettings(true, enabled, !resetSelected && parentCheckbox.isSelected(), null); scoreFilterSettings(false, false, false, null); tagsFilterSettings(false, false, false, null); keywordFilterSettings(false, false, false, null); @@ -519,10 +527,10 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener validateFields(); } - FileType getSelectedType(){ + FileType getSelectedType() { return fileType; } - + /** * Reset the panel to its initial configuration. */ @@ -545,10 +553,14 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener groupByCombobox.removeAllItems(); // Set up the grouping attributes for (FileSearch.GroupingAttributeType type : FileSearch.GroupingAttributeType.getOptionsForGrouping()) { - if (type != GroupingAttributeType.FREQUENCY || EamDb.isEnabled()) { + if ((type != GroupingAttributeType.FREQUENCY || EamDb.isEnabled()) + && (type != GroupingAttributeType.OBJECT_DETECTED || objectsList.getModel().getSize() > 0) + && (type != GroupingAttributeType.INTERESTING_ITEM_SET || interestingItemsList.getModel().getSize() > 0) + && (type != GroupingAttributeType.HASH_LIST_NAME || hashSetList.getModel().getSize() > 0)) { groupByCombobox.addItem(type); } } + orderByCombobox.removeAllItems(); // Set up the file order list for (FileSorter.SortingMethod method : FileSorter.SortingMethod.getOptionsForOrdering()) { @@ -556,6 +568,8 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener orderByCombobox.addItem(method); } } + + groupSortingComboBox.setSelectedIndex(0); setSelectedType(FileType.IMAGE); validateFields(); } @@ -613,7 +627,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener for (FileSearchData.Frequency freq : FileSearchData.Frequency.getOptionsForFilteringWithoutCr()) { frequencyListModel.add(count, freq); } - } else { for (FileSearchData.Frequency freq : FileSearchData.Frequency.getOptionsForFilteringWithCr()) { frequencyListModel.add(count, freq); @@ -921,8 +934,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener * @return the grouping attribute */ FileSearch.AttributeType getGroupingAttribute() { - FileSearch.GroupingAttributeType groupingAttrType = (FileSearch.GroupingAttributeType) groupByCombobox.getSelectedItem(); - return groupingAttrType.getAttributeType(); + return groupByCombobox.getItemAt(groupByCombobox.getSelectedIndex()).getAttributeType(); } /** @@ -931,10 +943,8 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener * @return the selected sorting method */ FileGroup.GroupSortingAlgorithm getGroupSortingMethod() { - if (attributeRadioButton.isSelected()) { - return FileGroup.GroupSortingAlgorithm.BY_GROUP_KEY; - } - return FileGroup.GroupSortingAlgorithm.BY_GROUP_SIZE; + return groupSortingComboBox.getItemAt(groupSortingComboBox.getSelectedIndex()); + } /** @@ -1064,10 +1074,9 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener java.awt.GridBagConstraints gridBagConstraints; javax.swing.ButtonGroup parentPathButtonGroup = new javax.swing.ButtonGroup(); - orderGroupsByButtonGroup = new javax.swing.ButtonGroup(); javax.swing.ButtonGroup parentIncludeButtonGroup = new javax.swing.ButtonGroup(); - filtersScrollPane = new javax.swing.JScrollPane(); - filtersPanel = new javax.swing.JPanel(); + javax.swing.JScrollPane filtersScrollPane = new javax.swing.JScrollPane(); + javax.swing.JPanel filtersPanel = new javax.swing.JPanel(); sizeCheckbox = new javax.swing.JCheckBox(); dataSourceCheckbox = new javax.swing.JCheckBox(); crFrequencyCheckbox = new javax.swing.JCheckBox(); @@ -1075,9 +1084,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener parentCheckbox = new javax.swing.JCheckBox(); dataSourceScrollPane = new javax.swing.JScrollPane(); dataSourceList = new javax.swing.JList<>(); - fullRadioButton = new javax.swing.JRadioButton(); substringRadioButton = new javax.swing.JRadioButton(); - parentTextField = new javax.swing.JTextField(); addButton = new javax.swing.JButton(); deleteButton = new javax.swing.JButton(); sizeScrollPane = new javax.swing.JScrollPane(); @@ -1086,7 +1093,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener crFrequencyList = new javax.swing.JList<>(); keywordScrollPane = new javax.swing.JScrollPane(); keywordList = new javax.swing.JList<>(); - parentLabel = new javax.swing.JLabel(); + javax.swing.JLabel parentLabel = new javax.swing.JLabel(); parentScrollPane = new javax.swing.JScrollPane(); parentList = new javax.swing.JList<>(); hashSetCheckbox = new javax.swing.JCheckBox(); @@ -1106,27 +1113,36 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener interestingItemsList = new javax.swing.JList<>(); scoreScrollPane = new javax.swing.JScrollPane(); scoreList = new javax.swing.JList<>(); - includeRadioButton = new javax.swing.JRadioButton(); excludeRadioButton = new javax.swing.JRadioButton(); knownFilesCheckbox = new javax.swing.JCheckBox(); + javax.swing.JPanel fullRadioPanel = new javax.swing.JPanel(); + fullRadioButton = new javax.swing.JRadioButton(); + javax.swing.JPanel includeRadioPanel = new javax.swing.JPanel(); + javax.swing.Box.Filler filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 32767)); + includeRadioButton = new javax.swing.JRadioButton(); + javax.swing.JPanel parentTextPanel = new javax.swing.JPanel(); + parentTextField = new javax.swing.JTextField(); searchButton = new javax.swing.JButton(); - sortingPanel = new javax.swing.JPanel(); + javax.swing.JPanel sortingPanel = new javax.swing.JPanel(); groupByCombobox = new javax.swing.JComboBox<>(); orderByCombobox = new javax.swing.JComboBox<>(); - orderGroupsByLabel = new javax.swing.JLabel(); - attributeRadioButton = new javax.swing.JRadioButton(); - groupSizeRadioButton = new javax.swing.JRadioButton(); - orderByLabel = new javax.swing.JLabel(); - groupByLabel = new javax.swing.JLabel(); + javax.swing.JLabel orderGroupsByLabel = new javax.swing.JLabel(); + javax.swing.JLabel orderByLabel = new javax.swing.JLabel(); + javax.swing.JLabel groupByLabel = new javax.swing.JLabel(); + groupSortingComboBox = new javax.swing.JComboBox<>(); errorLabel = new javax.swing.JLabel(); cancelButton = new javax.swing.JButton(); + javax.swing.JLabel stepTwoLabel = new javax.swing.JLabel(); + javax.swing.JLabel stepThreeLabel = new javax.swing.JLabel(); - setMinimumSize(new java.awt.Dimension(424, 0)); - setPreferredSize(new java.awt.Dimension(424, 533)); + setMinimumSize(new java.awt.Dimension(10, 0)); + setPreferredSize(new java.awt.Dimension(321, 400)); filtersScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.filtersScrollPane.border.title"))); // NOI18N - filtersScrollPane.setPreferredSize(new java.awt.Dimension(416, 338)); + filtersScrollPane.setPreferredSize(new java.awt.Dimension(309, 400)); + filtersPanel.setMinimumSize(new java.awt.Dimension(280, 500)); + filtersPanel.setPreferredSize(new java.awt.Dimension(280, 540)); filtersPanel.setLayout(new java.awt.GridBagLayout()); org.openide.awt.Mnemonics.setLocalizedText(sizeCheckbox, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.sizeCheckbox.text")); // NOI18N @@ -1210,17 +1226,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(dataSourceScrollPane, gridBagConstraints); - parentPathButtonGroup.add(fullRadioButton); - fullRadioButton.setSelected(true); - org.openide.awt.Mnemonics.setLocalizedText(fullRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.fullRadioButton.text")); // NOI18N - fullRadioButton.setEnabled(false); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 9; - gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0); - filtersPanel.add(fullRadioButton, gridBagConstraints); - parentPathButtonGroup.add(substringRadioButton); org.openide.awt.Mnemonics.setLocalizedText(substringRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.substringRadioButton.text")); // NOI18N substringRadioButton.setEnabled(false); @@ -1228,21 +1233,10 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 9; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.weightx = 0.5; + gridBagConstraints.weightx = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0); filtersPanel.add(substringRadioButton, gridBagConstraints); - parentTextField.setEnabled(false); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 11; - gridBagConstraints.gridwidth = 2; - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; - gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.weightx = 0.5; - gridBagConstraints.insets = new java.awt.Insets(0, 4, 6, 0); - filtersPanel.add(parentTextField, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(addButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.addButton.text")); // NOI18N addButton.setEnabled(false); addButton.setMaximumSize(new java.awt.Dimension(70, 23)); @@ -1289,12 +1283,13 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; + gridBagConstraints.weighty = 0.1; gridBagConstraints.insets = new java.awt.Insets(6, 4, 4, 6); filtersPanel.add(sizeScrollPane, gridBagConstraints); crFrequencyList.setModel(new DefaultListModel()); crFrequencyList.setEnabled(false); - crFrequencyList.setVisibleRowCount(3); + crFrequencyList.setVisibleRowCount(5); crFrequencyScrollPane.setViewportView(crFrequencyList); gridBagConstraints = new java.awt.GridBagConstraints(); @@ -1304,6 +1299,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; + gridBagConstraints.weighty = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(crFrequencyScrollPane, gridBagConstraints); @@ -1319,7 +1315,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(keywordScrollPane, gridBagConstraints); @@ -1328,13 +1323,15 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 8; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.weighty = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 6, 4, 0); filtersPanel.add(parentLabel, gridBagConstraints); parentList.setModel(new DefaultListModel()); parentList.setEnabled(false); - parentList.setVisibleRowCount(3); + parentList.setMaximumSize(null); + parentList.setMinimumSize(new java.awt.Dimension(0, 30)); + parentList.setPreferredSize(new java.awt.Dimension(0, 30)); + parentList.setVisibleRowCount(4); parentList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { parentListValueChanged(evt); @@ -1350,7 +1347,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; + gridBagConstraints.weighty = 0.05; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(parentScrollPane, gridBagConstraints); @@ -1362,24 +1359,26 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 6, 4, 0); filtersPanel.add(hashSetCheckbox, gridBagConstraints); hashSetList.setModel(new DefaultListModel()); hashSetList.setEnabled(false); + hashSetList.setMinimumSize(new java.awt.Dimension(0, 30)); + hashSetList.setPreferredSize(new java.awt.Dimension(0, 30)); hashSetList.setVisibleRowCount(3); hashSetScrollPane.setViewportView(hashSetList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 5; + gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; + gridBagConstraints.weighty = 0.05; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(hashSetScrollPane, gridBagConstraints); @@ -1391,7 +1390,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 4; + gridBagConstraints.gridy = 6; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 6, 4, 0); filtersPanel.add(objectsCheckbox, gridBagConstraints); @@ -1417,7 +1416,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 6, 4, 0); filtersPanel.add(interestingItemsCheckbox, gridBagConstraints); @@ -1455,17 +1454,19 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener objectsList.setModel(new DefaultListModel()); objectsList.setEnabled(false); - objectsList.setVisibleRowCount(3); + objectsList.setMinimumSize(new java.awt.Dimension(0, 30)); + objectsList.setPreferredSize(new java.awt.Dimension(0, 30)); + objectsList.setVisibleRowCount(2); objectsScrollPane.setViewportView(objectsList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 4; + gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; + gridBagConstraints.weighty = 0.05; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(objectsScrollPane, gridBagConstraints); @@ -1481,23 +1482,24 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(tagsScrollPane, gridBagConstraints); interestingItemsList.setModel(new DefaultListModel()); interestingItemsList.setEnabled(false); - interestingItemsList.setVisibleRowCount(3); + interestingItemsList.setMinimumSize(new java.awt.Dimension(0, 30)); + interestingItemsList.setPreferredSize(new java.awt.Dimension(0, 30)); + interestingItemsList.setVisibleRowCount(2); interestingItemsScrollPane.setViewportView(interestingItemsList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 6; + gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; gridBagConstraints.weightx = 0.5; - gridBagConstraints.weighty = 0.1; + gridBagConstraints.weighty = 0.05; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(interestingItemsScrollPane, gridBagConstraints); @@ -1516,17 +1518,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 6); filtersPanel.add(scoreScrollPane, gridBagConstraints); - parentIncludeButtonGroup.add(includeRadioButton); - includeRadioButton.setSelected(true); - org.openide.awt.Mnemonics.setLocalizedText(includeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.includeRadioButton.text")); // NOI18N - includeRadioButton.setEnabled(false); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 10; - gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0); - filtersPanel.add(includeRadioButton, gridBagConstraints); - parentIncludeButtonGroup.add(excludeRadioButton); org.openide.awt.Mnemonics.setLocalizedText(excludeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.excludeRadioButton.text")); // NOI18N excludeRadioButton.setEnabled(false); @@ -1534,7 +1525,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 10; gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START; - gridBagConstraints.weightx = 0.5; + gridBagConstraints.weightx = 0.1; gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0); filtersPanel.add(excludeRadioButton, gridBagConstraints); @@ -1548,6 +1539,87 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener gridBagConstraints.insets = new java.awt.Insets(0, 6, 4, 6); filtersPanel.add(knownFilesCheckbox, gridBagConstraints); + parentPathButtonGroup.add(fullRadioButton); + fullRadioButton.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(fullRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.fullRadioButton.text")); // NOI18N + fullRadioButton.setEnabled(false); + + javax.swing.GroupLayout fullRadioPanelLayout = new javax.swing.GroupLayout(fullRadioPanel); + fullRadioPanel.setLayout(fullRadioPanelLayout); + fullRadioPanelLayout.setHorizontalGroup( + fullRadioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, fullRadioPanelLayout.createSequentialGroup() + .addContainerGap(58, Short.MAX_VALUE) + .addComponent(fullRadioButton) + .addGap(20, 20, 20)) + ); + fullRadioPanelLayout.setVerticalGroup( + fullRadioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(fullRadioPanelLayout.createSequentialGroup() + .addComponent(fullRadioButton) + .addGap(0, 4, Short.MAX_VALUE)) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 9; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + filtersPanel.add(fullRadioPanel, gridBagConstraints); + + parentIncludeButtonGroup.add(includeRadioButton); + includeRadioButton.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(includeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.includeRadioButton.text")); // NOI18N + includeRadioButton.setEnabled(false); + + javax.swing.GroupLayout includeRadioPanelLayout = new javax.swing.GroupLayout(includeRadioPanel); + includeRadioPanel.setLayout(includeRadioPanelLayout); + includeRadioPanelLayout.setHorizontalGroup( + includeRadioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(includeRadioPanelLayout.createSequentialGroup() + .addComponent(filler2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 58, Short.MAX_VALUE) + .addComponent(includeRadioButton)) + ); + includeRadioPanelLayout.setVerticalGroup( + includeRadioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(filler2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(includeRadioButton) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 10; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + filtersPanel.add(includeRadioPanel, gridBagConstraints); + + parentTextField.setEnabled(false); + + javax.swing.GroupLayout parentTextPanelLayout = new javax.swing.GroupLayout(parentTextPanel); + parentTextPanel.setLayout(parentTextPanelLayout); + parentTextPanelLayout.setHorizontalGroup( + parentTextPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, parentTextPanelLayout.createSequentialGroup() + .addGap(0, 0, 0) + .addComponent(parentTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 71, Short.MAX_VALUE)) + ); + parentTextPanelLayout.setVerticalGroup( + parentTextPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(parentTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 11; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.5; + gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0); + filtersPanel.add(parentTextPanel, gridBagConstraints); + filtersScrollPane.setViewportView(filtersPanel); org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.searchButton.text")); // NOI18N @@ -1558,16 +1630,10 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener }); sortingPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.sortingPanel.border.title"))); // NOI18N + sortingPanel.setPreferredSize(new java.awt.Dimension(345, 112)); org.openide.awt.Mnemonics.setLocalizedText(orderGroupsByLabel, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.orderGroupsByLabel.text")); // NOI18N - orderGroupsByButtonGroup.add(attributeRadioButton); - attributeRadioButton.setSelected(true); - org.openide.awt.Mnemonics.setLocalizedText(attributeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.attributeRadioButton.text")); // NOI18N - - orderGroupsByButtonGroup.add(groupSizeRadioButton); - org.openide.awt.Mnemonics.setLocalizedText(groupSizeRadioButton, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.groupSizeRadioButton.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(orderByLabel, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.orderByLabel.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(groupByLabel, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.groupByLabel.text")); // NOI18N @@ -1577,50 +1643,35 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener sortingPanelLayout.setHorizontalGroup( sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(sortingPanelLayout.createSequentialGroup() + .addContainerGap() .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(orderGroupsByLabel) .addGroup(sortingPanelLayout.createSequentialGroup() .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addGap(47, 47, 47) - .addComponent(attributeRadioButton)) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(orderByLabel)) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(groupByLabel))) + .addComponent(groupByLabel) + .addComponent(orderByLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(groupByCombobox, 0, 280, Short.MAX_VALUE) - .addComponent(orderByCombobox, 0, 1, Short.MAX_VALUE))) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addGap(27, 27, 27) - .addComponent(orderGroupsByLabel)) - .addGroup(sortingPanelLayout.createSequentialGroup() - .addGap(47, 47, 47) - .addComponent(groupSizeRadioButton))) - .addGap(0, 0, Short.MAX_VALUE))) + .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(groupSortingComboBox, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(orderByCombobox, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(groupByCombobox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); sortingPanelLayout.setVerticalGroup( sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(sortingPanelLayout.createSequentialGroup() - .addGap(8, 8, 8) - .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(orderByCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(orderByLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGap(6, 6, 6) .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(groupByCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(groupByLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(orderGroupsByLabel) + .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(groupSortingComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(orderGroupsByLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(attributeRadioButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(groupSizeRadioButton) + .addGroup(sortingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(orderByCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(orderByLabel)) .addContainerGap()) ); @@ -1634,26 +1685,32 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener } }); + org.openide.awt.Mnemonics.setLocalizedText(stepTwoLabel, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.stepTwoLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(stepThreeLabel, org.openide.util.NbBundle.getMessage(FileSearchPanel.class, "FileSearchPanel.stepThreeLabel.text")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() + .addGap(6, 6, 6) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cancelButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(searchButton)) - .addGroup(layout.createSequentialGroup() - .addGap(6, 6, 6) - .addComponent(filtersScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addGap(6, 6, 6) - .addComponent(sortingPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGap(6, 6, 6)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(stepTwoLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addComponent(errorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(searchButton)) + .addComponent(stepThreeLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(filtersScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(sortingPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE)) + .addGap(6, 6, 6)))) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, searchButton}); @@ -1662,7 +1719,11 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(6, 6, 6) - .addComponent(filtersScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE) + .addComponent(stepTwoLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(filtersScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(stepThreeLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sortingPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -1679,7 +1740,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener // Get the selected filters List filters = getFilters(); enableSearch(false); - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchStartedEvent(fileType)); + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.SearchStartedEvent(fileType)); // Get the grouping attribute and group sorting method FileSearch.AttributeType groupingAttr = getGroupingAttribute(); @@ -1722,8 +1783,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener cancelButton.setEnabled(!enabled); orderByCombobox.setEnabled(enabled); groupByCombobox.setEnabled(enabled); - attributeRadioButton.setEnabled(enabled); - groupSizeRadioButton.setEnabled(enabled); + groupSortingComboBox.setEnabled(enabled); } /** @@ -1732,7 +1792,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener * @param searchCancelledEvent The SearchCancelledEvent which was received. */ @Subscribe - void handleSearchCancelledEvent(DiscoveryEvents.SearchCancelledEvent searchCancelledEvent) { + void handleSearchCancelledEvent(DiscoveryEventUtils.SearchCancelledEvent searchCancelledEvent) { SwingUtilities.invokeLater(() -> { enableSearch(true); }); @@ -1744,7 +1804,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener * @param searchCompleteEvent The SearchCompleteEvent which was received. */ @Subscribe - void handleSearchCompleteEvent(DiscoveryEvents.SearchCompleteEvent searchCompleteEvent) { + void handleSearchCompleteEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompleteEvent) { SwingUtilities.invokeLater(() -> { enableSearch(true); }); @@ -1832,7 +1892,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addButton; - private javax.swing.JRadioButton attributeRadioButton; private javax.swing.JButton cancelButton; private javax.swing.JCheckBox crFrequencyCheckbox; private javax.swing.JList crFrequencyList; @@ -1844,12 +1903,9 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener private javax.swing.JLabel errorLabel; private javax.swing.JRadioButton excludeRadioButton; private javax.swing.JCheckBox exifCheckbox; - private javax.swing.JPanel filtersPanel; - private javax.swing.JScrollPane filtersScrollPane; private javax.swing.JRadioButton fullRadioButton; private javax.swing.JComboBox groupByCombobox; - private javax.swing.JLabel groupByLabel; - private javax.swing.JRadioButton groupSizeRadioButton; + private javax.swing.JComboBox groupSortingComboBox; private javax.swing.JCheckBox hashSetCheckbox; private javax.swing.JList hashSetList; private javax.swing.JScrollPane hashSetScrollPane; @@ -1866,11 +1922,7 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener private javax.swing.JList objectsList; private javax.swing.JScrollPane objectsScrollPane; private javax.swing.JComboBox orderByCombobox; - private javax.swing.JLabel orderByLabel; - private javax.swing.ButtonGroup orderGroupsByButtonGroup; - private javax.swing.JLabel orderGroupsByLabel; private javax.swing.JCheckBox parentCheckbox; - private javax.swing.JLabel parentLabel; private javax.swing.JList parentList; private javax.swing.JScrollPane parentScrollPane; private javax.swing.JTextField parentTextField; @@ -1881,7 +1933,6 @@ final class FileSearchPanel extends javax.swing.JPanel implements ActionListener private javax.swing.JCheckBox sizeCheckbox; private javax.swing.JList sizeList; private javax.swing.JScrollPane sizeScrollPane; - private javax.swing.JPanel sortingPanel; private javax.swing.JRadioButton substringRadioButton; private javax.swing.JCheckBox tagsCheckbox; private javax.swing.JList tagsList; diff --git a/Core/src/org/sleuthkit/autopsy/filequery/FileSorter.java b/Core/src/org/sleuthkit/autopsy/filequery/FileSorter.java index 604daf2067..6d73c20b01 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/FileSorter.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/FileSorter.java @@ -240,13 +240,13 @@ class FileSorter implements Comparator { * Enum for selecting the primary method for sorting result files. */ @NbBundle.Messages({ - "FileSorter.SortingMethod.datasource.displayName=By data source", - "FileSorter.SortingMethod.filename.displayName=By file name", - "FileSorter.SortingMethod.filesize.displayName=By file size", - "FileSorter.SortingMethod.filetype.displayName=By file type", - "FileSorter.SortingMethod.frequency.displayName=By central repo frequency", - "FileSorter.SortingMethod.keywordlist.displayName=By keyword list names", - "FileSorter.SortingMethod.fullPath.displayName=By full path"}) + "FileSorter.SortingMethod.datasource.displayName=Data Source", + "FileSorter.SortingMethod.filename.displayName=File Name", + "FileSorter.SortingMethod.filesize.displayName=File Size", + "FileSorter.SortingMethod.filetype.displayName=File Type", + "FileSorter.SortingMethod.frequency.displayName=Central Repo Frequency", + "FileSorter.SortingMethod.keywordlist.displayName=Keyword List Names", + "FileSorter.SortingMethod.fullPath.displayName=Full Path"}) enum SortingMethod { BY_FILE_NAME(new ArrayList<>(), Bundle.FileSorter_SortingMethod_filename_displayName()), // Sort alphabetically by file name diff --git a/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.form b/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.form index e774a0fac7..9df241e5ab 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.form +++ b/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.form @@ -34,6 +34,8 @@ + + diff --git a/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.java b/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.java index bcdb3d661f..374c079590 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/GroupListPanel.java @@ -24,6 +24,8 @@ import java.util.Map; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListModel; import javax.swing.JList; +import javax.swing.JOptionPane; +import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.filequery.FileSearch.GroupKey; import org.sleuthkit.autopsy.filequery.FileSearchData.FileType; @@ -54,19 +56,21 @@ class GroupListPanel extends javax.swing.JPanel { * @param searchStartedEvent the SearchStartedEvent which was received */ @Subscribe - void handleSearchStartedEvent(DiscoveryEvents.SearchStartedEvent searchStartedEvent) { + void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) { resultType = searchStartedEvent.getType(); groupKeyList.setListData(new GroupKey[0]); } + @Messages({"GroupsListPanel.noResults.message.text=No results were found for the selected filters.", + "GroupsListPanel.noResults.title.text=No results found"}) /** * Subscribe to and update list of groups in response to * SearchCompleteEvents * - * @param searchCompleteEvent the SearchCompleteEvent which was recieved + * @param searchCompleteEvent the SearchCompleteEvent which was received */ @Subscribe - void handleSearchCompleteEvent(DiscoveryEvents.SearchCompleteEvent searchCompleteEvent) { + void handleSearchCompleteEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompleteEvent) { groupMap = searchCompleteEvent.getGroupMap(); searchfilters = searchCompleteEvent.getFilters(); groupingAttribute = searchCompleteEvent.getGroupingAttr(); @@ -75,6 +79,11 @@ class GroupListPanel extends javax.swing.JPanel { groupKeyList.setListData(groupMap.keySet().toArray(new GroupKey[groupMap.keySet().size()])); if (groupKeyList.getModel().getSize() > 0) { groupKeyList.setSelectedIndex(0); + } else { + JOptionPane.showMessageDialog(DiscoveryTopComponent.getTopComponent(), + Bundle.GroupsListPanel_noResults_message_text(), + Bundle.GroupsListPanel_noResults_title_text(), + JOptionPane.INFORMATION_MESSAGE); } } @@ -87,7 +96,7 @@ class GroupListPanel extends javax.swing.JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - groupListScrollPane = new javax.swing.JScrollPane(); + javax.swing.JScrollPane groupListScrollPane = new javax.swing.JScrollPane(); groupKeyList = new javax.swing.JList<>(); groupKeyList.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(GroupListPanel.class, "GroupListPanel.groupKeyList.border.title"))); // NOI18N @@ -136,20 +145,19 @@ class GroupListPanel extends javax.swing.JPanel { for (GroupKey groupKey : groupMap.keySet()) { if (selectedGroup.equals(groupKey)) { selectedGroupKey = groupKey; - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.GroupSelectedEvent( + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.GroupSelectedEvent( searchfilters, groupingAttribute, groupSort, fileSortMethod, selectedGroupKey, groupMap.get(selectedGroupKey), resultType)); break; } } } else { - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.NoResultsEvent()); + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.NoResultsEvent()); } } }//GEN-LAST:event_groupSelected // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JList groupKeyList; - private javax.swing.JScrollPane groupListScrollPane; // End of variables declaration//GEN-END:variables /** diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailPanel.java b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailPanel.java index 2c4a1f4e9b..a1d04c9621 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailPanel.java @@ -37,6 +37,7 @@ public class ImageThumbnailPanel extends javax.swing.JPanel implements ListCellR private static final long serialVersionUID = 1L; private static final Color SELECTION_COLOR = new Color(0, 120, 215); + private static final int BYTE_UNIT_CONVERSION = 1000; private static final int ICON_SIZE = 16; private static final String RED_CIRCLE_ICON_PATH = "org/sleuthkit/autopsy/images/red-circle-exclamation.png"; private static final String YELLOW_CIRCLE_ICON_PATH = "org/sleuthkit/autopsy/images/yellow-circle-yield.png"; @@ -136,14 +137,13 @@ public class ImageThumbnailPanel extends javax.swing.JPanel implements ListCellR private javax.swing.JLabel thumbnailLabel; // End of variables declaration//GEN-END:variables - @NbBundle.Messages({"# {0} - fileSize", - "ImageThumbnailPanel.sizeLabel.text=Size: {0} bytes", + @NbBundle.Messages({ "# {0} - numberOfInstances", "ImageThumbnailPanel.countLabel.text=Number of Instances: {0}", "ImageThumbnailPanel.isDeleted.text=All instances of file are deleted."}) @Override public Component getListCellRendererComponent(JList list, ImageThumbnailWrapper value, int index, boolean isSelected, boolean cellHasFocus) { - fileSizeLabel.setText(Bundle.ImageThumbnailPanel_sizeLabel_text(value.getResultFile().getFirstInstance().getSize())); + fileSizeLabel.setText(getFileSizeString(value.getResultFile().getFirstInstance().getSize())); countLabel.setText(Bundle.ImageThumbnailPanel_countLabel_text(value.getResultFile().getAllInstances().size())); thumbnailLabel.setIcon(new ImageIcon(value.getThumbnail())); if (value.getResultFile().isDeleted()) { @@ -160,7 +160,7 @@ public class ImageThumbnailPanel extends javax.swing.JPanel implements ListCellR case INTERESTING_SCORE: scoreLabel.setIcon(INTERESTING_SCORE_ICON); break; - case NO_SCORE: + case NO_SCORE: // empty case - this is interpreted as an intentional fall-through default: scoreLabel.setIcon(null); break; @@ -171,6 +171,50 @@ public class ImageThumbnailPanel extends javax.swing.JPanel implements ListCellR return this; } + @NbBundle.Messages({"# {0} - fileSize", + "# {1} - units", + "ImageThumbnailPanel.sizeLabel.text=Size: {0} {1}", + "ImageThumbnailPanel.bytes.text=bytes", + "ImageThumbnailPanel.kiloBytes.text=KB", + "ImageThumbnailPanel.megaBytes.text=MB", + "ImageThumbnailPanel.gigaBytes.text=GB", + "ImageThumbnailPanel.terraBytes.text=TB"}) + /** + * Convert a size in bytes to a string with representing the size in the + * largest units which represent the value as being greater than or equal to + * one. Result will be rounded down to the nearest whole number of those + * units. + * + * @param bytes Size in bytes. + */ + private String getFileSizeString(long bytes) { + long size = bytes; + int unitsSwitchValue = 0; + while (size > BYTE_UNIT_CONVERSION && unitsSwitchValue < 4) { + size /= BYTE_UNIT_CONVERSION; + unitsSwitchValue++; + } + String units; + switch (unitsSwitchValue) { + case 1: + units = Bundle.ImageThumbnailPanel_kiloBytes_text(); + break; + case 2: + units = Bundle.ImageThumbnailPanel_megaBytes_text(); + break; + case 3: + units = Bundle.ImageThumbnailPanel_gigaBytes_text(); + break; + case 4: + units = Bundle.ImageThumbnailPanel_terraBytes_text(); + break; + default: + units = Bundle.ImageThumbnailPanel_bytes_text(); + break; + } + return Bundle.ImageThumbnailPanel_sizeLabel_text(size, units); + } + @Override public String getToolTipText(MouseEvent event) { if (event != null) { diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.form b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.form index 4b96bac8ae..4d065c3bf9 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.form +++ b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.form @@ -18,8 +18,6 @@ - - diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.java b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.java index 542a7480a8..e2688359c9 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/ImageThumbnailViewer.java @@ -51,7 +51,7 @@ public class ImageThumbnailViewer extends javax.swing.JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - javax.swing.JScrollPane thumbnailListScrollPane = new javax.swing.JScrollPane(); + thumbnailListScrollPane = new javax.swing.JScrollPane(); thumbnailList = new javax.swing.JList<>(); setLayout(new java.awt.BorderLayout()); @@ -69,6 +69,7 @@ public class ImageThumbnailViewer extends javax.swing.JPanel { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JList thumbnailList; + private javax.swing.JScrollPane thumbnailListScrollPane; // End of variables declaration//GEN-END:variables /** @@ -103,6 +104,7 @@ public class ImageThumbnailViewer extends javax.swing.JPanel { void clearViewer() { synchronized (this) { thumbnailListModel.removeAllElements(); + thumbnailListScrollPane.getVerticalScrollBar().setValue(0); } } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/OpenFileDiscoveryAction.java b/Core/src/org/sleuthkit/autopsy/filequery/OpenFileDiscoveryAction.java new file mode 100644 index 0000000000..d315b85956 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/filequery/OpenFileDiscoveryAction.java @@ -0,0 +1,159 @@ +/* + * Autopsy + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.filequery; + +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JOptionPane; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.awt.ActionReferences; +import org.openide.awt.ActionRegistration; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; +import org.openide.util.actions.CallableSystemAction; +import org.openide.util.actions.Presenter; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.DataSource; +import org.sleuthkit.datamodel.IngestJobInfo; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Class to open the File Discovery top component. Allows the user to run + * searches and see results. + */ +@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.newpackage.OpenFileDiscoveryAction") +@ActionReferences(value = { + @ActionReference(path = "Menu/Tools", position = 103) + , + @ActionReference(path = "Toolbars/Case", position = 104)}) +@ActionRegistration(displayName = "#CTL_OpenFileDiscoveryAction", lazy = false) +@NbBundle.Messages({"CTL_OpenFileDiscoveryAction=File Discovery"}) +public final class OpenFileDiscoveryAction extends CallableSystemAction implements Presenter.Toolbar { + + private static final Logger logger = Logger.getLogger(OpenFileDiscoveryAction.class.getName()); + + private static final String DISPLAY_NAME = Bundle.CTL_OpenFileDiscoveryAction(); + private static final long serialVersionUID = 1L; + private final JButton toolbarButton = new JButton(); + + public OpenFileDiscoveryAction() { + toolbarButton.addActionListener(OpenFileDiscoveryAction.this::actionPerformed); + this.setEnabled(false); + } + + @Override + public boolean isEnabled() { + return Case.isCaseOpen(); + } + + @NbBundle.Messages({"OpenFileDiscoveryAction.resultsIncomplete.text=Results may be incomplete"}) + + @Override + @SuppressWarnings("fallthrough") + public void performAction() { + final DiscoveryTopComponent tc = DiscoveryTopComponent.getTopComponent(); + if (tc != null) { + if (tc.isOpened() == false) { + tc.open(); + tc.updateSearchSettings(); + displayErrorMessage(tc); + } + tc.toFront(); + tc.requestActive(); + + } + } + + /** + * Private helper method to display an error message when the results of the + * File Discovery Top component may be incomplete. + * + * @param tc The File Discovery Top component. + */ + private void displayErrorMessage(DiscoveryTopComponent tc) { + //check if modules run and assemble message + try { + SleuthkitCase skCase = Case.getCurrentCaseThrows().getSleuthkitCase(); + Map dataSourceIngestModules = new HashMap<>(); + for (DataSource dataSource : skCase.getDataSources()) { + dataSourceIngestModules.put(dataSource.getId(), new DataSourceModulesWrapper(dataSource.getName())); + } + + for (IngestJobInfo jobInfo : skCase.getIngestJobs()) { + dataSourceIngestModules.get(jobInfo.getObjectId()).updateModulesRun(jobInfo); + } + String message = ""; + for (DataSourceModulesWrapper dsmodulesWrapper : dataSourceIngestModules.values()) { + message += dsmodulesWrapper.getMessage(); + } + if (!message.isEmpty()) { + JOptionPane.showMessageDialog(tc, message, Bundle.OpenFileDiscoveryAction_resultsIncomplete_text(), JOptionPane.INFORMATION_MESSAGE); + } + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.WARNING, "Exception while determining which modules have been run for File Discovery", ex); + } + } + + /** + * Returns the toolbar component of this action. + * + * @return The toolbar button + */ + @Override + public Component getToolbarPresenter() { + ImageIcon icon = new ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/discovery-icon-24.png")); //NON-NLS + toolbarButton.setIcon(icon); + toolbarButton.setText(this.getName()); + return toolbarButton; + } + + /** + * Set this action to be enabled/disabled + * + * @param value whether to enable this action or not + */ + @Override + public void setEnabled(boolean value) { + super.setEnabled(value); + toolbarButton.setEnabled(value); + } + + @Override + public String getName() { + return DISPLAY_NAME; + } + + @Override + public HelpCtx getHelpCtx() { + return HelpCtx.DEFAULT_HELP; + } + + @Override + public boolean asynchronous() { + return false; // run on edt + } +} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java b/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java index 348e4c5947..f90d11bd32 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/PageWorker.java @@ -96,7 +96,7 @@ final class PageWorker extends SwingWorker { protected void done() { if (!isCancelled()) { int currentPage = startingEntry / pageSize; //integer division should round down to get page number correctly - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.PageRetrievedEvent(resultType, currentPage, results)); + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.PageRetrievedEvent(resultType, currentPage, results)); } } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.form b/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.form deleted file mode 100644 index 2d7cb9661f..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.form +++ /dev/null @@ -1,93 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.java b/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.java deleted file mode 100644 index c1d3fa5cdd..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/ResultsDialog.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.filequery; - -import javax.swing.JFrame; -import org.openide.util.NbBundle; -import org.openide.windows.WindowManager; - -/** - * Temporary dialog to display the search results - */ -class ResultsDialog extends javax.swing.JDialog { - - boolean runAnotherSearch; - - /** - * Creates new form ResultsDialog - * - * @param parent - * @param modal - * @param textToPrint - */ - @NbBundle.Messages({ - "ResultsDialog.dialogTitle.text=File search results", - }) - ResultsDialog(java.awt.Frame parent, boolean modal, String textToPrint) { - super((JFrame) WindowManager.getDefault().getMainWindow(), Bundle.ResultsDialog_dialogTitle_text(), modal); - initComponents(); - - setResults(textToPrint); - } - - /** - * Put the text into the dialog - * - * @param textToPrint - */ - private void setResults(String textToPrint) { - resultsTextArea.setText(textToPrint); - } - - /** - * Display the dialog - */ - void display() { - this.setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); - runAnotherSearch = false; - setVisible(true); - } - - /** - * Returns whether the user chose to run another search or exit. - * - * @return true if the user wants to run another search, false otherwise - */ - boolean shouldRunAnotherSearch() { - return runAnotherSearch; - } - - /** - * 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 - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - exitButton = new javax.swing.JButton(); - searchButton = new javax.swing.JButton(); - jScrollPane3 = new javax.swing.JScrollPane(); - resultsTextArea = new javax.swing.JTextArea(); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - - org.openide.awt.Mnemonics.setLocalizedText(exitButton, org.openide.util.NbBundle.getMessage(ResultsDialog.class, "ResultsDialog.exitButton.text")); // NOI18N - exitButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - exitButtonActionPerformed(evt); - } - }); - - org.openide.awt.Mnemonics.setLocalizedText(searchButton, org.openide.util.NbBundle.getMessage(ResultsDialog.class, "ResultsDialog.searchButton.text")); // NOI18N - searchButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - searchButtonActionPerformed(evt); - } - }); - - resultsTextArea.setColumns(20); - resultsTextArea.setRows(5); - jScrollPane3.setViewportView(resultsTextArea); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 450, Short.MAX_VALUE) - .addComponent(searchButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(exitButton)) - .addComponent(jScrollPane3)) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(exitButton) - .addComponent(searchButton)) - .addContainerGap()) - ); - - pack(); - }// //GEN-END:initComponents - - private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed - runAnotherSearch = false; - setVisible(false); - dispose(); - }//GEN-LAST:event_exitButtonActionPerformed - - private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_searchButtonActionPerformed - runAnotherSearch = true; - setVisible(false); - dispose(); - }//GEN-LAST:event_searchButtonActionPerformed - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton exitButton; - private javax.swing.JScrollPane jScrollPane3; - private javax.swing.JTextArea resultsTextArea; - private javax.swing.JButton searchButton; - // End of variables declaration//GEN-END:variables -} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.form b/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.form index 97080a329a..c21dca33e5 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.form @@ -1,6 +1,11 @@
+ + + + + @@ -25,7 +30,7 @@ - + @@ -40,6 +45,10 @@ + + + + @@ -59,8 +68,8 @@ - - + + @@ -77,10 +86,10 @@ - + @@ -147,18 +156,6 @@ - - - - - - - - - - - - @@ -227,15 +224,36 @@ + + + + + + + + + + + + + + + + - + - + + + + + + - + @@ -246,6 +264,11 @@ + + + + + @@ -261,21 +284,29 @@ - + - + - + + + + + + + + + @@ -300,6 +331,10 @@ + + + + @@ -310,6 +345,11 @@ + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.java b/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.java index 2ebc0b0b70..27086c731c 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/ResultsPanel.java @@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.filequery; import com.google.common.eventbus.Subscribe; import java.awt.Component; import java.awt.Image; +import java.awt.event.ItemEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -28,12 +29,12 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; +import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; -import javax.swing.JSpinner; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.event.ListSelectionListener; @@ -123,8 +124,6 @@ public class ResultsPanel extends javax.swing.JPanel { } }); - // Disable manual editing of page size spinner - ((JSpinner.DefaultEditor) pageSizeSpinner.getEditor()).getTextField().setEditable(false); } /** @@ -191,7 +190,7 @@ public class ResultsPanel extends javax.swing.JPanel { * @param pageRetrievedEvent The PageRetrievedEvent received. */ @Subscribe - void handlePageRetrievedEvent(DiscoveryEvents.PageRetrievedEvent pageRetrievedEvent) { + void handlePageRetrievedEvent(DiscoveryEventUtils.PageRetrievedEvent pageRetrievedEvent) { SwingUtilities.invokeLater(() -> { populateInstancesList(); currentPage = pageRetrievedEvent.getPageNumber(); @@ -217,7 +216,6 @@ public class ResultsPanel extends javax.swing.JPanel { synchronized void resetResultViewer() { resultsViewerPanel.remove(imageThumbnailViewer); resultsViewerPanel.remove(videoThumbnailViewer); - //cancel any unfished thumb workers for (SwingWorker thumbWorker : thumbnailWorkers) { if (!thumbWorker.isDone()) { @@ -266,7 +264,7 @@ public class ResultsPanel extends javax.swing.JPanel { * @param groupSelectedEvent The GroupSelectedEvent received. */ @Subscribe - void handleGroupSelectedEvent(DiscoveryEvents.GroupSelectedEvent groupSelectedEvent) { + void handleGroupSelectedEvent(DiscoveryEventUtils.GroupSelectedEvent groupSelectedEvent) { SwingUtilities.invokeLater(() -> { searchFilters = groupSelectedEvent.getFilters(); groupingAttribute = groupSelectedEvent.getGroupingAttr(); @@ -286,7 +284,7 @@ public class ResultsPanel extends javax.swing.JPanel { * @param noResultsEvent the NoResultsEvent received. */ @Subscribe - void handleNoResultsEvent(DiscoveryEvents.NoResultsEvent noResultsEvent) { + void handleNoResultsEvent(DiscoveryEventUtils.NoResultsEvent noResultsEvent) { SwingUtilities.invokeLater(() -> { groupSize = 0; currentPage = 0; @@ -305,7 +303,7 @@ public class ResultsPanel extends javax.swing.JPanel { * in this page. */ private synchronized void setPage(int startingEntry) { - int pageSize = (int) pageSizeSpinner.getValue(); + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); synchronized (this) { if (pageWorker != null && !pageWorker.isDone()) { pageWorker.cancel(true); @@ -331,15 +329,15 @@ public class ResultsPanel extends javax.swing.JPanel { "# {1} - totalPages", "ResultsPanel.currentPage.displayValue=Page: {0} of {1}"}) private void updateControls() { - previousPageSize = (int) pageSizeSpinner.getValue(); - int pageSize = (int) pageSizeSpinner.getValue(); + previousPageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); //handle edge case where group size is 0 and we want the empty results to be labeled paged 1 of 1 not page 1 of 0 double maxPageDouble = groupSize == 0 ? 1 : Math.ceil((double) groupSize / pageSize); currentPageLabel.setText(Bundle.ResultsPanel_currentPage_displayValue(currentPage + 1, maxPageDouble)); previousPageButton.setEnabled(currentPage != 0); nextPageButton.setEnabled(groupSize > ((currentPage + 1) * pageSize)); gotoPageField.setEnabled(groupSize > pageSize); - pageSizeSpinner.setEnabled(true); + pageSizeComboBox.setEnabled(true); } /** @@ -351,21 +349,23 @@ public class ResultsPanel extends javax.swing.JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - pagingPanel = new javax.swing.JPanel(); + javax.swing.JPanel pagingPanel = new javax.swing.JPanel(); previousPageButton = new javax.swing.JButton(); currentPageLabel = new javax.swing.JLabel(); nextPageButton = new javax.swing.JButton(); - pageSizeSpinner = new javax.swing.JSpinner(); javax.swing.JLabel pageControlsLabel = new javax.swing.JLabel(); javax.swing.JLabel gotoPageLabel = new javax.swing.JLabel(); gotoPageField = new javax.swing.JTextField(); javax.swing.JLabel pageSizeLabel = new javax.swing.JLabel(); + pageSizeComboBox = new javax.swing.JComboBox<>(); javax.swing.JSplitPane resultsSplitPane = new javax.swing.JSplitPane(); javax.swing.JPanel instancesPanel = new javax.swing.JPanel(); javax.swing.JScrollPane instancesScrollPane = new javax.swing.JScrollPane(); instancesList = new javax.swing.JList<>(); resultsViewerPanel = new javax.swing.JPanel(); + setPreferredSize(new java.awt.Dimension(777, 475)); + pagingPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); previousPageButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/corecomponents/btn_step_back.png"))); // NOI18N @@ -397,11 +397,6 @@ public class ResultsPanel extends javax.swing.JPanel { } }); - pageSizeSpinner.setModel(new javax.swing.SpinnerNumberModel(10, 10, 200, 10)); - pageSizeSpinner.setEditor(new javax.swing.JSpinner.NumberEditor(pageSizeSpinner, "")); - pageSizeSpinner.setEnabled(false); - pageSizeSpinner.setFocusable(false); - org.openide.awt.Mnemonics.setLocalizedText(pageControlsLabel, org.openide.util.NbBundle.getMessage(ResultsPanel.class, "ResultsPanel.pageControlsLabel.text")); // NOI18N pageControlsLabel.setMaximumSize(new java.awt.Dimension(33, 23)); pageControlsLabel.setMinimumSize(new java.awt.Dimension(33, 23)); @@ -424,6 +419,14 @@ public class ResultsPanel extends javax.swing.JPanel { pageSizeLabel.setMinimumSize(new java.awt.Dimension(60, 23)); pageSizeLabel.setPreferredSize(new java.awt.Dimension(60, 23)); + pageSizeComboBox.setModel(new DefaultComboBoxModel(new Integer[] {25,50,75,100,125,150,175,200})); + pageSizeComboBox.setSelectedIndex(3); + pageSizeComboBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + pageSizeChanged(evt); + } + }); + javax.swing.GroupLayout pagingPanelLayout = new javax.swing.GroupLayout(pagingPanel); pagingPanel.setLayout(pagingPanelLayout); pagingPanelLayout.setHorizontalGroup( @@ -443,8 +446,8 @@ public class ResultsPanel extends javax.swing.JPanel { .addComponent(gotoPageField, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(pageSizeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(pageSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pageSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pagingPanelLayout.setVerticalGroup( @@ -458,22 +461,31 @@ public class ResultsPanel extends javax.swing.JPanel { .addComponent(currentPageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(pageControlsLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pagingPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(pageSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(gotoPageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(gotoPageField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(pageSizeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(pageSizeLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(pageSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(4, 4, 4)) ); - resultsSplitPane.setDividerLocation(250); + resultsSplitPane.setDividerLocation(380); resultsSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); - resultsSplitPane.setResizeWeight(0.9); - resultsSplitPane.setPreferredSize(new java.awt.Dimension(777, 125)); + resultsSplitPane.setResizeWeight(1.0); + resultsSplitPane.setToolTipText(org.openide.util.NbBundle.getMessage(ResultsPanel.class, "ResultsPanel.resultsSplitPane.toolTipText")); // NOI18N + resultsSplitPane.setLastDividerLocation(180); + resultsSplitPane.setOpaque(false); + resultsSplitPane.setPreferredSize(new java.awt.Dimension(777, 440)); + + instancesPanel.setPreferredSize(new java.awt.Dimension(775, 68)); + + instancesScrollPane.setPreferredSize(new java.awt.Dimension(775, 60)); instancesList.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ResultsPanel.class, "ResultsPanel.instancesList.border.title"))); // NOI18N instancesList.setModel(instancesListModel); instancesList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); instancesList.setCellRenderer(new InstancesCellRenderer()); + instancesList.setPreferredSize(new java.awt.Dimension(0, 50)); + instancesList.setVisibleRowCount(2); instancesScrollPane.setViewportView(instancesList); javax.swing.GroupLayout instancesPanelLayout = new javax.swing.GroupLayout(instancesPanel); @@ -482,17 +494,20 @@ public class ResultsPanel extends javax.swing.JPanel { instancesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 775, Short.MAX_VALUE) .addGroup(instancesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(instancesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 775, Short.MAX_VALUE)) + .addComponent(instancesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); instancesPanelLayout.setVerticalGroup( instancesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 52, Short.MAX_VALUE) + .addGap(0, 221, Short.MAX_VALUE) .addGroup(instancesPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(instancesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 52, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, instancesPanelLayout.createSequentialGroup() + .addGap(0, 0, 0) + .addComponent(instancesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 221, Short.MAX_VALUE))) ); resultsSplitPane.setRightComponent(instancesPanel); + resultsViewerPanel.setPreferredSize(new java.awt.Dimension(0, 380)); resultsViewerPanel.setLayout(new java.awt.BorderLayout()); resultsSplitPane.setLeftComponent(resultsViewerPanel); @@ -508,7 +523,7 @@ public class ResultsPanel extends javax.swing.JPanel { .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(pagingPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) - .addComponent(resultsSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE) + .addComponent(resultsSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, 0)) ); }// //GEN-END:initComponents @@ -522,10 +537,7 @@ public class ResultsPanel extends javax.swing.JPanel { if (currentPage > 0) { disablePagingControls(); int previousPage = currentPage - 1; - int pageSize = (int) pageSizeSpinner.getValue(); - if (previousPageSize != pageSize) { - previousPage = 0; - } + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); setPage(previousPage * pageSize); } }//GEN-LAST:event_previousPageButtonActionPerformed @@ -538,10 +550,7 @@ public class ResultsPanel extends javax.swing.JPanel { private void nextPageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextPageButtonActionPerformed disablePagingControls(); int nextPage = currentPage + 1; - int pageSize = (int) pageSizeSpinner.getValue(); - if (previousPageSize != pageSize) { - nextPage = 0; - } + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); setPage(nextPage * pageSize); }//GEN-LAST:event_nextPageButtonActionPerformed @@ -562,7 +571,7 @@ public class ResultsPanel extends javax.swing.JPanel { //ignore input return; } - int pageSize = (int) pageSizeSpinner.getValue(); + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); if ((newPage - 1) < 0 || groupSize <= ((newPage - 1) * pageSize)) { JOptionPane.showMessageDialog(this, Bundle.ResultsPanel_invalidPageNumber_message(newPage, Math.ceil((double) groupSize / pageSize)), @@ -574,6 +583,18 @@ public class ResultsPanel extends javax.swing.JPanel { setPage((newPage - 1) * pageSize); }//GEN-LAST:event_gotoPageFieldActionPerformed + private void pageSizeChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_pageSizeChanged + if (evt.getStateChange() == ItemEvent.SELECTED) { + disablePagingControls(); + int previousPage = currentPage - 1; + int pageSize = pageSizeComboBox.getItemAt(pageSizeComboBox.getSelectedIndex()); + if (previousPageSize != pageSize) { + previousPage = 0; + } + setPage(previousPage * pageSize); + } + }//GEN-LAST:event_pageSizeChanged + /** * Disable all the paging controls. */ @@ -581,7 +602,7 @@ public class ResultsPanel extends javax.swing.JPanel { nextPageButton.setEnabled(false); previousPageButton.setEnabled(false); gotoPageField.setEnabled(false); - pageSizeSpinner.setEnabled(false); + pageSizeComboBox.setEnabled(false); } // Variables declaration - do not modify//GEN-BEGIN:variables @@ -589,8 +610,7 @@ public class ResultsPanel extends javax.swing.JPanel { private javax.swing.JTextField gotoPageField; private javax.swing.JList instancesList; private javax.swing.JButton nextPageButton; - private javax.swing.JSpinner pageSizeSpinner; - private javax.swing.JPanel pagingPanel; + private javax.swing.JComboBox pageSizeComboBox; private javax.swing.JButton previousPageButton; private javax.swing.JPanel resultsViewerPanel; // End of variables declaration//GEN-END:variables diff --git a/Core/src/org/sleuthkit/autopsy/filequery/SearchChildren.java b/Core/src/org/sleuthkit/autopsy/filequery/SearchChildren.java deleted file mode 100644 index a6053a30f2..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/SearchChildren.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2011-2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.filequery; - -import java.util.List; -import org.openide.nodes.Children; -import org.openide.nodes.Node; -import org.sleuthkit.autopsy.datamodel.DirectoryNode; -import org.sleuthkit.autopsy.datamodel.FileNode; -import org.sleuthkit.autopsy.directorytree.DataResultFilterNode; -import org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent; -import org.sleuthkit.datamodel.AbstractFile; - -/** - * Makes nodes for search results. - */ -class SearchChildren extends Children.Keys { - - SearchChildren(boolean lazy, List fileList) { - super(lazy); - this.setKeys(fileList); - } - - @Override - protected Node[] createNodes(AbstractFile t) { - Node[] node = new Node[1]; - if (t.isDir()) { - node[0] = new DataResultFilterNode(new DirectoryNode(t, false), DirectoryTreeTopComponent.findInstance().getExplorerManager()); - - //node[0] = new DirectoryNode((Directory)t); - return node; - } else { - node[0] = new DataResultFilterNode(new FileNode(t, false), DirectoryTreeTopComponent.findInstance().getExplorerManager()); - //node[0] = new FileNode((File)t); - return node; - } - } -} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/SearchNode.java b/Core/src/org/sleuthkit/autopsy/filequery/SearchNode.java deleted file mode 100644 index 727affb00a..0000000000 --- a/Core/src/org/sleuthkit/autopsy/filequery/SearchNode.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.filequery; - -import java.util.List; -import org.openide.nodes.AbstractNode; -import org.openide.util.NbBundle; -import org.sleuthkit.datamodel.AbstractFile; - -class SearchNode extends AbstractNode { - - SearchNode(List keys) { - super(new SearchChildren(true, keys)); - } - - @NbBundle.Messages({"SearchNode.getName.text=Search Result"}) - @Override - public String getName() { - return NbBundle.getMessage(this.getClass(), "SearchNode.getName.text"); - } -} diff --git a/Core/src/org/sleuthkit/autopsy/filequery/SearchResults.java b/Core/src/org/sleuthkit/autopsy/filequery/SearchResults.java index 1c8311cdca..7cc9b8a596 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/SearchResults.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/SearchResults.java @@ -31,42 +31,45 @@ import org.sleuthkit.autopsy.filequery.FileSearch.GroupKey; * Class to hold the results of the filtering/grouping/sorting operations */ class SearchResults { - + private final FileGroup.GroupSortingAlgorithm groupSortingType; private final FileSearch.AttributeType attrType; private final FileSorter fileSorter; - + private final Map groupMap = new HashMap<>(); private List groupList = new ArrayList<>(); - - private final long MAX_OUTPUT_FILES = 2000; // For debug UI - maximum number of lines to print - + + private static final long MAX_OUTPUT_FILES = 2000; // For debug UI - maximum number of lines to print + /** * Create an empty SearchResults object - * - * @param groupSortingType The method that should be used to sortGroupsAndFiles the groups + * + * @param groupSortingType The method that should be used to + * sortGroupsAndFiles the groups * @param attrType The attribute type to use for grouping - * @param fileSortingMethod The method that should be used to sortGroupsAndFiles the files in each group + * @param fileSortingMethod The method that should be used to + * sortGroupsAndFiles the files in each group */ - SearchResults(FileGroup.GroupSortingAlgorithm groupSortingType, FileSearch.AttributeType attrType, + SearchResults(FileGroup.GroupSortingAlgorithm groupSortingType, FileSearch.AttributeType attrType, FileSorter.SortingMethod fileSortingMethod) { this.groupSortingType = groupSortingType; this.attrType = attrType; this.fileSorter = new FileSorter(fileSortingMethod); } - + /** - * Create an dummy SearchResults object that can be used in the UI before the search is finished. + * Create an dummy SearchResults object that can be used in the UI before + * the search is finished. */ SearchResults() { - this.groupSortingType = FileGroup.GroupSortingAlgorithm.BY_GROUP_KEY; + this.groupSortingType = FileGroup.GroupSortingAlgorithm.BY_GROUP_NAME; this.attrType = new FileSearch.FileSizeAttribute(); this.fileSorter = new FileSorter(FileSorter.SortingMethod.BY_FILE_NAME); - } - + } + /** * Add a list of ResultFile to the results - * + * * @param files the ResultFiles */ void add(List files) { @@ -74,40 +77,41 @@ class SearchResults { // Add the file to the appropriate group, creating it if necessary FileSearch.GroupKey groupKey = attrType.getGroupKey(file); - if ( ! groupMap.containsKey(groupKey)) { - groupMap.put(groupKey, new FileGroup(groupSortingType, groupKey)); + if (!groupMap.containsKey(groupKey)) { + groupMap.put(groupKey, new FileGroup(groupSortingType, groupKey)); } groupMap.get(groupKey).addFile(file); } } - + /** - * Run after all files have been added to sortGroupsAndFiles the groups and files. + * Run after all files have been added to sortGroupsAndFiles the groups and + * files. */ void sortGroupsAndFiles() { - + // First sortGroupsAndFiles the files for (FileGroup group : groupMap.values()) { group.sortFiles(fileSorter); } - + // Now put the groups in a list and sortGroupsAndFiles them groupList = new ArrayList<>(groupMap.values()); Collections.sort(groupList); } - + @Override public String toString() { String result = ""; if (groupList == null) { return result; } - + long count = 0; for (FileGroup group : groupList) { result += group.getDisplayName() + "\n"; - - for (ResultFile file : group.getResultFiles()) { + + for (ResultFile file : group.getFiles()) { result += " " + file.toString() + "\n"; count++; if (count > MAX_OUTPUT_FILES) { @@ -118,50 +122,51 @@ class SearchResults { } return result; } - + /** * Get the names of the groups with counts - * + * * @return the group names */ List getGroupNamesWithCounts() { - return groupList.stream().map(p -> p.getDisplayName() + " (" + p.getResultFiles().size() + ")").collect(Collectors.toList()); + return groupList.stream().map(p -> p.getDisplayName() + " (" + p.getFiles().size() + ")").collect(Collectors.toList()); } - + /** - * Get the abstract files for the selected group - * + * Get the result files for the selected group + * * @param groupName The name of the group. Can have the size appended. - * @return the list of abstract files + * + * @return the list of result files */ - List getAbstractFilesInGroup(String groupName) { + List getResultFilesInGroup(String groupName) { if (groupName != null) { final String modifiedGroupName = groupName.replaceAll(" \\([0-9]+\\)$", ""); java.util.Optional fileGroup = groupList.stream().filter(p -> p.getDisplayName().equals(modifiedGroupName)).findFirst(); if (fileGroup.isPresent()) { - return fileGroup.get().getAbstractFiles(); + return fileGroup.get().getFiles(); } } - return new ArrayList<>(); + return new ArrayList<>(); } - + /** - * Transform the results into a LinkedHashMap with abstract files. - * + * Transform the results into a LinkedHashMap with result files. + * * @return the grouped and sorted results */ Map> toLinkedHashMap() throws FileSearchException { Map> map = new LinkedHashMap<>(); - + // Sort the groups and files sortGroupsAndFiles(); - + // groupList is sorted and a LinkedHashMap will preserve that order. for (FileGroup group : groupList) { - map.put(group.getGroupKey(), group.getAbstractFiles()); + map.put(group.getGroupKey(), group.getFiles()); } - + return map; } } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java b/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java index be9d7a56a0..279a470f3a 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/SearchWorker.java @@ -78,9 +78,9 @@ final class SearchWorker extends SwingWorker { @Override protected void done() { if (isCancelled()) { - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchCancelledEvent()); + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.SearchCancelledEvent()); } else { - DiscoveryEvents.getDiscoveryEventBus().post(new DiscoveryEvents.SearchCompleteEvent(results, filters, groupingAttr, groupSortAlgorithm, fileSort)); + DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.SearchCompleteEvent(results, filters, groupingAttr, groupSortAlgorithm, fileSort)); } } } diff --git a/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailPanel.java b/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailPanel.java index 048fe1b8d5..72296f7ce8 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailPanel.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailPanel.java @@ -41,6 +41,7 @@ final class VideoThumbnailPanel extends javax.swing.JPanel implements ListCellRe private static final int GAP_SIZE = 4; private static final Color SELECTION_COLOR = new Color(0, 120, 215); + private static final int BYTE_UNIT_CONVERSION = 1000; private static final int ICON_SIZE = 16; private static final String RED_CIRCLE_ICON_PATH = "org/sleuthkit/autopsy/images/red-circle-exclamation.png"; private static final String YELLOW_CIRCLE_ICON_PATH = "org/sleuthkit/autopsy/images/yellow-circle-yield.png"; @@ -168,14 +169,13 @@ final class VideoThumbnailPanel extends javax.swing.JPanel implements ListCellRe private javax.swing.JLabel scoreLabel; // End of variables declaration//GEN-END:variables - @Messages({"# {0} - fileSize", - "VideoThumbnailPanel.sizeLabel.text=Size: {0} bytes", + @Messages({ "# {0} - numberOfInstances", "VideoThumbnailPanel.countLabel.text=Number of Instances: {0}", "VideoThumbnailPanel.deleted.text=All instances of file are deleted."}) @Override public Component getListCellRendererComponent(JList list, VideoThumbnailsWrapper value, int index, boolean isSelected, boolean cellHasFocus) { - fileSizeLabel.setText(Bundle.VideoThumbnailPanel_sizeLabel_text(value.getResultFile().getFirstInstance().getSize())); + fileSizeLabel.setText(getFileSizeString(value.getResultFile().getFirstInstance().getSize())); countLabel.setText(Bundle.VideoThumbnailPanel_countLabel_text(value.getResultFile().getAllInstances().size())); addThumbnails(value); imagePanel.setBackground(isSelected ? SELECTION_COLOR : list.getBackground()); @@ -193,7 +193,7 @@ final class VideoThumbnailPanel extends javax.swing.JPanel implements ListCellRe case INTERESTING_SCORE: scoreLabel.setIcon(INTERESTING_SCORE_ICON); break; - case NO_SCORE: + case NO_SCORE: // empty case - this is interpreted as an intentional fall-through default: scoreLabel.setIcon(null); break; @@ -203,6 +203,50 @@ final class VideoThumbnailPanel extends javax.swing.JPanel implements ListCellRe return this; } + @Messages({"# {0} - fileSize", + "# {1} - units", + "VideoThumbnailPanel.sizeLabel.text=Size: {0} {1}", + "VideoThumbnailPanel.bytes.text=bytes", + "VideoThumbnailPanel.kiloBytes.text=KB", + "VideoThumbnailPanel.megaBytes.text=MB", + "VideoThumbnailPanel.gigaBytes.text=GB", + "VideoThumbnailPanel.terraBytes.text=TB"}) + /** + * Convert a size in bytes to a string with representing the size in the + * largest units which represent the value as being greater than or equal to + * one. Result will be rounded down to the nearest whole number of those + * units. + * + * @param bytes Size in bytes. + */ + private String getFileSizeString(long bytes) { + long size = bytes; + int unitsSwitchValue = 0; + while (size > BYTE_UNIT_CONVERSION && unitsSwitchValue < 4) { + size /= BYTE_UNIT_CONVERSION; + unitsSwitchValue++; + } + String units; + switch (unitsSwitchValue) { + case 1: + units = Bundle.VideoThumbnailPanel_kiloBytes_text(); + break; + case 2: + units = Bundle.VideoThumbnailPanel_megaBytes_text(); + break; + case 3: + units = Bundle.VideoThumbnailPanel_gigaBytes_text(); + break; + case 4: + units = Bundle.VideoThumbnailPanel_terraBytes_text(); + break; + default: + units = Bundle.VideoThumbnailPanel_bytes_text(); + break; + } + return Bundle.VideoThumbnailPanel_sizeLabel_text(size, units); + } + @Override public String getToolTipText(MouseEvent event) { if (event != null) { diff --git a/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailViewer.java b/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailViewer.java index 9994506a0e..a1dc742eab 100644 --- a/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailViewer.java +++ b/Core/src/org/sleuthkit/autopsy/filequery/VideoThumbnailViewer.java @@ -53,8 +53,8 @@ public class VideoThumbnailViewer extends javax.swing.JPanel { * Get the list of AbstractFiles which are represented by the selected Video * thumbnails. * - * @return The list of AbstractFiles which are represented by the selected Video - * thumbnails. + * @return The list of AbstractFiles which are represented by the selected + * Video thumbnails. */ List getInstancesForSelected() { synchronized (this) { @@ -72,6 +72,7 @@ public class VideoThumbnailViewer extends javax.swing.JPanel { void clearViewer() { synchronized (this) { thumbnailListModel.removeAllElements(); + thumbnailListScrollPane.getVerticalScrollBar().setValue(0); } } diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties index 401f521568..9da6f45334 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties @@ -1,50 +1,74 @@ -OpenIDE-Module-Name=\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -KnownStatusSearchPanel.knownCheckBox.text=\u65e2\u77e5\u30b9\u30c6\u30fc\u30bf\u30b9\uff1a -KnownStatusSearchPanel.knownBadOptionCheckBox.text=\u65e2\u77e5\u306e\u60aa\u8cea -KnownStatusSearchPanel.knownOptionCheckBox.text=\u65e2\u77e5\uff08NSRL\u307e\u305f\u306f\u305d\u306e\u4ed6\uff09 +DataSourceFilter.errorMessage.emptyDataSource=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +DateSearchFilter.errorMessage.endDateBeforeStartDate=\u7d42\u4e86\u65e5\u306f\u958b\u59cb\u65e5\u3088\u308a\u5f8c\u306e\u65e5\u4ed8\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +DataSourceFilter.errorMessage.emptyDataSource=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30fc\u30bf\u30bf\u30a4\u30d7\u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FileSearchPanel.emptyNode.display.text=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +HashSearchFilter.errorMessage.emptyHash=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3059\u3002 +HashSearchFilter.errorMessage.wrongCharacter=MD5\u306b\u7121\u52b9\u306a16\u9032\u6570\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +# {0} - \u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u9577 +HashSearchFilter.errorMessage.wrongLength=\u5165\u529b\u306e\u9577\u3055({0}) \u304cMD5\u306e\u9577\u3055(32)\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 +KnownStatusSearchFilter.errorMessage.noKnownStatusCheckboxSelected=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +MimeTypeFilter.errorMessage.emptyMimeType=\u5c11\u306a\u304f\u3068\u30821\u3064\u306eMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +NameSearchFilter.errorMessage.emtpyName=\u691c\u7d22\u3059\u308b\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +OpenIDE-Module-Name=FileSearch +KnownStatusSearchPanel.knownCheckBox.text=\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9: +KnownStatusSearchPanel.knownBadOptionCheckBox.text=\u9855\u8457 +KnownStatusSearchPanel.knownOptionCheckBox.text=\u65e2\u77e5(NSRL\u307e\u305f\u306f\u305d\u306e\u4ed6) KnownStatusSearchPanel.unknownOptionCheckBox.text=\u4e0d\u660e -DateSearchFilter.noneSelectedMsg.text=\u6700\u4f4e\u4e00\u3064\u306e\u30c7\u30fc\u30bf\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff01 -DateSearchPanel.dateCheckBox.text=\u65e5\u4ed8\uff1a -DateSearchPanel.jLabel4.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\uff1a -DateSearchPanel.jLabel3.text=*\u65e5\u4ed8\u306e\u5f62\u5f0f\u306fmm/dd/yyyy -DateSearchPanel.jLabel2.text=*\u7a7a\u767d\u306e\u9805\u76ee\u306f\u300c\u5236\u9650\u306a\u3057\u300d\u3068\u3044\u3046\u610f\u5473\u3067\u3059 +DateSearchFilter.noneSelectedMsg.text=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30fc\u30bf\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093! +DateSearchPanel.dateCheckBox.text=\u65e5\u4ed8: +DateSearchPanel.jLabel4.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: +DateSearchPanel.jLabel3.text=*\u65e5\u4ed8\u5f62\u5f0f\u306fmm/dd/yyyy\u3067\u3059 +DateSearchPanel.jLabel2.text=*\u7a7a(\u672a\u5165\u529b)\u306e\u30d5\u30a3\u30fc\u30c9\u306f\u300c\u5236\u9650\u306a\u3057\u300d\u3092\u610f\u5473\u3057\u307e\u3059 DateSearchPanel.createdCheckBox.text=\u4f5c\u6210\u6e08\u307f DateSearchPanel.accessedCheckBox.text=\u30a2\u30af\u30bb\u30b9\u6e08\u307f DateSearchPanel.changedCheckBox.text=\u5909\u66f4\u6e08\u307f DateSearchPanel.modifiedCheckBox.text=\u4fee\u6b63\u6e08\u307f -DateSearchPanel.jLabel1.text=to -NameSearchPanel.nameCheckBox.text=\u540d\u524d\uff1a -NameSearchPanel.noteNameLabel.text=*\u6ce8\u610f\uff1a\u540d\u524d\u30de\u30c3\u30c1\u306f\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u307e\u3059\u3002\u307e\u305f\u3001
\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u3044\u304b\u306a\u308b\u90e8\u5206\u3082\u30de\u30c3\u30c1\u3057\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u306f
\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -SizeSearchPanel.sizeCheckBox.text=\u30b5\u30a4\u30ba\uff1a -NameSearchPanel.cutMenuItem.text=\u30ab\u30c3\u30c8 +DateSearchPanel.jLabel1.text=\u5b9b\u5148 +NameSearchPanel.nameCheckBox.text=\u540d\u524d: +NameSearchPanel.noteNameLabel.text=*\u6ce8: \u540d\u524d\u7167\u5408\u306f\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u305b\u305a\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4e00\u90e8\u3068\u7167\u5408\u3057\u307e\u3059\u3002\u6b63\u898f\u8868\u73fe\u306f\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +NameSearchPanel.searchTextField.text= +SizeSearchFilter.errorMessage.nonNegativeNumber=\u5165\u529b\u30b5\u30a4\u30ba\u30c7\u30fc\u30bf\u306f\u8ca0\u306e\u6570\u3067\u3059\u3002 +SizeSearchFilter.errorMessage.notANumber=\u5165\u529b\u30b5\u30a4\u30ba\u30c7\u30fc\u30bf\u306f\u6570\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +SizeSearchPanel.sizeCheckBox.text=\u30b5\u30a4\u30ba: +NameSearchPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a NameSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc NameSearchPanel.pasteMenuItem.text=\u8cbc\u308a\u4ed8\u3051 NameSearchPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e SizeSearchPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e SizeSearchPanel.pasteMenuItem.text=\u8cbc\u308a\u4ed8\u3051 SizeSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -SizeSearchPanel.cutMenuItem.text=\u30ab\u30c3\u30c8 -DateSearchPanel.cutMenuItem.text=\u30ab\u30c3\u30c8 +SizeSearchPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a +DateSearchPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a DateSearchPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e DateSearchPanel.pasteMenuItem.text=\u8cbc\u308a\u4ed8\u3051 DateSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -FileSearchAction.getName.text=\u5c5e\u6027\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -FileSearchDialog.frame.title=\u5c5e\u6027\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -FileSearchDialog.frame.msg=\u5c5e\u6027\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -FileSearchPanel.custComp.label.text=\u6b21\u306e\u6761\u4ef6\u306b\u4e00\u81f4\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\uff1a +FileSearchAction.getName.text=\u5c5e\u6027\u5225\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +FileSearchDialog.frame.title=\u5c5e\u6027\u5225\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +FileSearchDialog.frame.msg=\u5c5e\u6027\u5225\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +FileSearchPanel.custComp.label.text=\u6b21\u306e\u6761\u4ef6\u306b\u4e00\u81f4\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22: FileSearchPanel.filterTitle.name=\u540d\u524d FileSearchPanel.filterTitle.metadata=\u30e1\u30bf\u30c7\u30fc\u30bf -FileSearchPanel.filterTitle.knownStatus=\u65e2\u77e5\u30b9\u30c6\u30fc\u30bf\u30b9 -FileSearchPanel.search.results.title=\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u7d50\u679c{0} -FileSearchPanel.search.results.pathText=\u30d5\u30a1\u30a4\u30eb\u540d\u691c\u7d22\u7d50\u679c\uff1a -FileSearchPanel.search.results.msg=\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\uff1a{0}\u500b\u306e\u30de\u30c3\u30c1\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f -FileSearchPanel.search.results.details=\u591a\u304f\u306e\u30de\u30c3\u30c1\u304c\u3042\u308b\u5834\u5408\u3001\u4e00\u90e8\u306e\u51e6\u7406\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093 -FileSearchPanel.search.exception.noFilterSelected.msg=\u6700\u4f4e\uff11\u500b\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -FileSearchPanel.search.validationErr.msg=\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc\uff1a{0} -FileSearchPanel.emptyWhereClause.text=\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002\u8868\u793a\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -KnownStatusSearchFilter.noneSelectedMsg.text=\u6700\u4f4e\uff11\u500b\u306e\u65e2\u77e5\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff01 -NameSearchFilter.emptyNameMsg.text=\u540d\u524d\u691c\u7d22\u306b\u4f55\u304b\u8a18\u5165\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002 +FileSearchPanel.filterTitle.knownStatus=\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9 +FileSearchPanel.search.results.title=\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u7d50\u679c {0} +FileSearchPanel.search.results.pathText=\u30d5\u30a1\u30a4\u30eb\u540d\u691c\u7d22\u7d50\u679c: +FileSearchPanel.search.results.msg=\u30d5\u30a1\u30a4\u30eb\u691c\u7d22: \u4e00\u81f4\u3059\u308b\u7d50\u679c\u304c {0} \u4ef6\u898b\u3064\u304b\u308a\u307e\u3057\u305f +FileSearchPanel.search.results.details=\u4e00\u81f4\u3059\u308b\u7d50\u679c\u6570\u304c\u591a\u3044\u3068\u3001\u4e00\u90e8\u306e\u64cd\u4f5c\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +FileSearchPanel.search.exception.noFilterSelected.msg=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FileSearchPanel.search.validationErr.msg=\u691c\u8a3c\u30a8\u30e9\u30fc: {0} +FileSearchPanel.emptyWhereClause.text=\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3059\u3002\u8868\u793a\u3059\u308b\u3082\u306e\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +KnownStatusSearchFilter.noneSelectedMsg.text=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093! +NameSearchFilter.emptyNameMsg.text=\u540d\u524d\u691c\u7d22\u306b\u4f55\u304b\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 SearchNode.getName.text=\u691c\u7d22\u7d50\u679c -SizeSearchPanel.sizeCompareComboBox.equalTo=\u4e0b\u8a18\u3068\u7b49\u3057\u3044 -SizeSearchPanel.sizeCompareComboBox.greaterThan=\u4e0b\u8a18\u3088\u308a\u5927\u304d\u3044 -SizeSearchPanel.sizeCompareComboBox.lessThan=\u4e0b\u8a18\u3088\u308a\u5c0f\u3055\u3044 +SizeSearchPanel.sizeCompareComboBox.equalTo=\u76f8\u5f53 +SizeSearchPanel.sizeCompareComboBox.greaterThan=\u4ee5\u4e0a +SizeSearchPanel.sizeCompareComboBox.lessThan=\u4ee5\u4e0b +MimeTypePanel.jLabel1.text=*\u6ce8: \u8907\u6570\u306eMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3067\u304d\u307e\u3059 +FileSearchPanel.searchButton.text=\u691c\u7d22 +MimeTypePanel.mimeTypeCheckBox.text=MIME\u30bf\u30a4\u30d7: +HashSearchPanel.md5CheckBox.text=MD5: +HashSearchPanel.emptyHashMsg.text=\u30cf\u30c3\u30b7\u30e5\u691c\u7d22\u306b\u4f55\u304b\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +FileSearchPanel.errorLabel.text=\ +DataSourcePanel.dataSourceCheckBox.label=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: +DataSourcePanel.dataSourceCheckBox.actionCommand=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: +DataSourcePanel.dataSourceCheckBox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: +DataSourcePanel.dataSourceNoteLabel.text=*\u6ce8: \u8907\u6570\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3067\u304d\u307e\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties index 84d4ab700c..5525fed84c 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties @@ -4,7 +4,6 @@ CTL_GeolocationTopComponent=Geolocation RefreshPanel.refreshLabel.text=The geolocation data has been updated, the visualization may be out of date. RefreshPanel.refreshButton.text=Refresh View RefreshPanel.closeButton.text= -MapPanel.cordLabel.text= WaypointDetailPanel.closeButton.text= WaypointDetailPanel.imageLabel.text= GeoFilterPanel.waypointSettings.border.title= @@ -19,14 +18,21 @@ CheckBoxListPanel.uncheckButton.text=Uncheck All GeoFilterPanel.optionsLabel.text=Waypoints OptionsCategory_Name_Geolocation=Geolocation OptionsCategory_Keywords_Geolocation=Geolocation Settings -GeolocationSettingsPanel.tilePane.border.title=Map Tile Source +GeolocationSettingsPanel.tilePane.border.title=Map Tile Data Source OptionsCategory_Keywords_Geolocation=Geolocation -OptionsCategory_Name_Geolocation=Geolocation -GeolocationSettingsPanel.defaultButton.text=Default online tile server (bing.com/maps) -GeolocationSettingsPanel.tileServerButton.text=OpenStreetMap tile server -GeolocationSettingsPanel.tileServerFiled.text= -GeolocationSettingsPanel.osmZipButton.text=OpenStreeMap Tile Zip File -GeolocationSettingsPanel.osmZipFileField.text= -GeolocationSettingsPanel.osmZipFileBrowseButton.text=Browse -GeolocationSettingsPanel.serverTestButton.text=Test -GeolocationSettingsPanel.osmZipButton.actionCommand=OpenStreeMap tile ZIP file +GeolocationSettingsPanel.mbtileFileField.toolTipText= +GeolocationSettingsPanel.mbtileFileField.text= +GeolocationSettingsPanel.defaultDataSource.text=Default online tile server (bing.com/maps) +GeolocationSettingsPanel.osmServerRBnt.text=OpenStreetMap server +GeolocationSettingsPanel.zipFileRBnt.text=OpenStreeMap zip file +GeolocationSettingsPanel.zipFileRBnt.actionCommand=OpenStreeMap tile ZIP file +GeolocationSettingsPanel.mbtilesRBtn.text=MBTiles file +GeolocationSettingsPanel.osmServerAddressField.text= +GeolocationSettingsPanel.zipFilePathField.text= +GeolocationSettingsPanel.serverTestBtn.text=Test +GeolocationSettingsPanel.mbtilesBrowseBtn.text=Browse +GeolocationSettingsPanel.zipFileBrowseBnt.text=Browse +GeolocationSettingsPanel.mbtileTestBtn.text=Test +GeolocationTopComponent.reportButton.text=KML Report +GeolocationTopComponent.coordLabel.text= + diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties-MERGED index c69264acae..19ce2c9a59 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle.properties-MERGED @@ -3,6 +3,14 @@ CTL_GeolocationTopComponentAction=GeolocationTopComponent CTL_GeolocationTopComponent=Geolocation GeoFilterPanel_DataSource_List_Title=Data Sources GeoFilterPanel_empty_dataSource=Data Source list is empty. +GeolocationSettings_mbtile_does_not_exist_message=The file supplied does not exist.\nPlease verify that the file exists and try again. +GeolocationSettings_mbtile_does_not_exist_title=File Not Found +GeolocationSettings_mbtile_not_valid_message=The supplied file is not a raster tile file. +GeolocationSettings_mbtile_not_valid_title=File Not Valid +GeolocationSettings_mbtile_test_success_message=The supplied file is a valid mbtile raster file. +GeolocationSettings_mbtile_test_success_title=Success +GeolocationSettings_path_not_valid_message=The supplied file path is empty.\nPlease supply a valid file path. +GeolocationSettings_path_not_valid_title=File Not Valid GeolocationSettingsPanel_malformed_url_message=The supplies OSM tile server address is invalid.\nPlease supply a well formed url prefixed with http:// GeolocationSettingsPanel_malformed_url_message_tile=Malformed URL GeolocationSettingsPanel_osm_server_test_fail_message=OSM tile server test failed.\nUnable to connect to server. @@ -11,6 +19,9 @@ GeolocationSettingsPanel_osm_server_test_success_message=The provide OSM tile se GeolocationSettingsPanel_osm_server_test_success_message_title=Success GeolocationTC_connection_failure_message=Failed to connect to map title source.\nPlease review map source in Options dialog. GeolocationTC_connection_failure_message_title=Connection Failure +GeolocationTC_empty_waypoint_message=Unable to generate KML report due to a lack of waypoints.\nPlease make sure there are waypoints visible before generating the KML report +GeolocationTC_KML_report_title=KML Report +GeolocationTC_report_progress_title=KML Report Progress GeoTopComponent_filer_data_invalid_msg=Unable to run waypoint filter.\nPlease select one or more data sources. GeoTopComponent_filer_data_invalid_Title=Filter Failure GeoTopComponent_filter_exception_msg=Exception occured during waypoint filtering. @@ -28,7 +39,6 @@ OpenGeolocationAction_name=Geolocation RefreshPanel.refreshLabel.text=The geolocation data has been updated, the visualization may be out of date. RefreshPanel.refreshButton.text=Refresh View RefreshPanel.closeButton.text= -MapPanel.cordLabel.text= WaypointDetailPanel.closeButton.text= WaypointDetailPanel.imageLabel.text= GeoFilterPanel.waypointSettings.border.title= @@ -43,15 +53,22 @@ CheckBoxListPanel.uncheckButton.text=Uncheck All GeoFilterPanel.optionsLabel.text=Waypoints OptionsCategory_Name_Geolocation=Geolocation OptionsCategory_Keywords_Geolocation=Geolocation Settings -GeolocationSettingsPanel.tilePane.border.title=Map Tile Source +GeolocationSettingsPanel.tilePane.border.title=Map Tile Data Source OptionsCategory_Keywords_Geolocation=Geolocation -OptionsCategory_Name_Geolocation=Geolocation -GeolocationSettingsPanel.defaultButton.text=Default online tile server (bing.com/maps) -GeolocationSettingsPanel.tileServerButton.text=OpenStreetMap tile server -GeolocationSettingsPanel.tileServerFiled.text= -GeolocationSettingsPanel.osmZipButton.text=OpenStreeMap Tile Zip File -GeolocationSettingsPanel.osmZipFileField.text= -GeolocationSettingsPanel.osmZipFileBrowseButton.text=Browse -GeolocationSettingsPanel.serverTestButton.text=Test -GeolocationSettingsPanel.osmZipButton.actionCommand=OpenStreeMap tile ZIP file +GeolocationSettingsPanel.mbtileFileField.toolTipText= +GeolocationSettingsPanel.mbtileFileField.text= +GeolocationSettingsPanel.defaultDataSource.text=Default online tile server (bing.com/maps) +GeolocationSettingsPanel.osmServerRBnt.text=OpenStreetMap server +GeolocationSettingsPanel.zipFileRBnt.text=OpenStreeMap zip file +GeolocationSettingsPanel.zipFileRBnt.actionCommand=OpenStreeMap tile ZIP file +GeolocationSettingsPanel.mbtilesRBtn.text=MBTiles file +GeolocationSettingsPanel.osmServerAddressField.text= +GeolocationSettingsPanel.zipFilePathField.text= +GeolocationSettingsPanel.serverTestBtn.text=Test +GeolocationSettingsPanel.mbtilesBrowseBtn.text=Browse +GeolocationSettingsPanel.zipFileBrowseBnt.text=Browse +GeolocationSettingsPanel.mbtileTestBtn.text=Test +GeolocationTopComponent.reportButton.text=KML Report +GeolocationTopComponent.coordLabel.text= + WaypointExtractAction_label=Extract Files(s) diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxJList.java b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxJList.java index 52276b6046..2f4247f3e6 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxJList.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxJList.java @@ -68,7 +68,7 @@ final class CheckBoxJList extends JLis CheckBoxJList() { initalize(); } - + /** * Do all of the UI initialization. */ @@ -103,6 +103,7 @@ final class CheckBoxJList extends JLis setBackground(list.getBackground()); setSelected(value.isChecked()); setText(value.getDisplayName()); + setEnabled(list.isEnabled()); return this; } } diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.form b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.form index 112b734f1e..75fb1d4c62 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.form +++ b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.form @@ -37,10 +37,6 @@ - - - - @@ -56,10 +52,6 @@ - - - - diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.java b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.java index 37dea163f5..0942a9e528 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/CheckBoxListPanel.java @@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.geolocation; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; +import java.util.Objects; import javax.swing.DefaultListModel; import javax.swing.Icon; @@ -52,7 +53,11 @@ final class CheckBoxListPanel extends javax.swing.JPanel { * @param obj Object that the checkbox represents */ void addElement(String displayName, T obj) { - model.addElement(new ObjectCheckBox<>(displayName, true, obj)); + ObjectCheckBox newCheckBox = new ObjectCheckBox<>(displayName, true, obj); + + if(!model.contains(newCheckBox)) { + model.addElement(newCheckBox); + } } /** @@ -61,6 +66,14 @@ final class CheckBoxListPanel extends javax.swing.JPanel { void clearList() { model.removeAllElements(); } + + @Override + public void setEnabled(boolean enabled) { + checkboxList.setEnabled(enabled); + checkButton.setEnabled(enabled); + uncheckButton.setEnabled(enabled); + checkboxList.setEnabled(enabled); + } /** * Returns a list of all of the selected elements. @@ -126,8 +139,8 @@ final class CheckBoxListPanel extends javax.swing.JPanel { java.awt.GridBagConstraints gridBagConstraints; titleLabel = new javax.swing.JLabel(); - javax.swing.JButton uncheckButton = new javax.swing.JButton(); - javax.swing.JButton checkButton = new javax.swing.JButton(); + uncheckButton = new javax.swing.JButton(); + checkButton = new javax.swing.JButton(); scrollPane = new javax.swing.JScrollPane(); setLayout(new java.awt.GridBagLayout()); @@ -186,8 +199,10 @@ final class CheckBoxListPanel extends javax.swing.JPanel { // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton checkButton; private javax.swing.JScrollPane scrollPane; private javax.swing.JLabel titleLabel; + private javax.swing.JButton uncheckButton; // End of variables declaration//GEN-END:variables /** @@ -234,6 +249,21 @@ final class CheckBoxListPanel extends javax.swing.JPanel { public String getDisplayName() { return displayName; } + + @Override + public boolean equals(Object obj) { + if(obj instanceof ObjectCheckBox) { + return object.equals(((ObjectCheckBox)obj).object); + } + return false; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(this.object); + return hash; + } } } diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.form b/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.form index 79a852b4d4..1b80568453 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.form +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.form @@ -115,10 +115,6 @@ - - - - diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.java b/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.java index 9e009d1245..51238a033e 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeoFilterPanel.java @@ -74,6 +74,20 @@ class GeoFilterPanel extends javax.swing.JPanel { add(checkboxPanel, gridBagConstraints); } + @Override + public void setEnabled(boolean enabled) { + applyButton.setEnabled(enabled); + mostRecentButton.setEnabled(enabled); + allButton.setEnabled(enabled); + showWaypointsWOTSCheckBox.setEnabled(enabled && mostRecentButton.isSelected()); + checkboxPanel.setEnabled(enabled); + daysLabel.setEnabled(enabled); + daysSpinner.setEnabled(enabled); + } + + /** + * Update the data source list with the current data sources + */ void updateDataSourceList() { try { initCheckboxList(); @@ -81,6 +95,13 @@ class GeoFilterPanel extends javax.swing.JPanel { logger.log(Level.WARNING, "Failed to initialize the CheckboxListPane", ex); //NON-NLS } } + + /** + * Clears the data source list. + */ + void clearDataSourceList() { + checkboxPanel.clearList(); + } /** * Adds an actionListener to listen for the filter apply action @@ -120,8 +141,6 @@ class GeoFilterPanel extends javax.swing.JPanel { */ private void initCheckboxList() throws TskCoreException { final SleuthkitCase sleuthkitCase = Case.getCurrentCase().getSleuthkitCase(); - - checkboxPanel.clearList(); for (DataSource dataSource : sleuthkitCase.getDataSources()) { String dsName = sleuthkitCase.getContentById(dataSource.getId()).getName(); @@ -155,7 +174,7 @@ class GeoFilterPanel extends javax.swing.JPanel { mostRecentButton = new javax.swing.JRadioButton(); showWaypointsWOTSCheckBox = new javax.swing.JCheckBox(); daysSpinner = new javax.swing.JSpinner(numberModel); - javax.swing.JLabel daysLabel = new javax.swing.JLabel(); + daysLabel = new javax.swing.JLabel(); javax.swing.JPanel buttonPanel = new javax.swing.JPanel(); applyButton = new javax.swing.JButton(); javax.swing.JLabel optionsLabel = new javax.swing.JLabel(); @@ -272,6 +291,7 @@ class GeoFilterPanel extends javax.swing.JPanel { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton allButton; private javax.swing.JButton applyButton; + private javax.swing.JLabel daysLabel; private javax.swing.JSpinner daysSpinner; private javax.swing.JRadioButton mostRecentButton; private javax.swing.JCheckBox showWaypointsWOTSCheckBox; diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.form index 0fd5461656..e2121d0772 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.form +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.form @@ -28,7 +28,7 @@ - + @@ -46,72 +46,36 @@ - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -119,10 +83,46 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -134,33 +134,99 @@ - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.java index 9be1f08927..f66d05c08d 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationSettingsPanel.java @@ -20,7 +20,9 @@ package org.sleuthkit.autopsy.geolocation; import java.awt.Color; import java.io.File; +import java.sql.SQLException; import java.util.Arrays; +import java.util.logging.Level; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.apache.commons.validator.routines.UrlValidator; @@ -32,6 +34,7 @@ import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.casemodule.GeneralFilter; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.corecomponents.OptionsPanel; +import org.sleuthkit.autopsy.coreutils.Logger; /** * A panel to allow the user to set the custom properties of the geolocation @@ -41,6 +44,8 @@ import org.sleuthkit.autopsy.corecomponents.OptionsPanel; final class GeolocationSettingsPanel extends javax.swing.JPanel implements OptionsPanel { private static final long serialVersionUID = 1L; + + private static final Logger logger = Logger.getLogger(GeolocationSettingsPanel.class.getName()); /** * Creates new GeolocationSettingsPanel @@ -52,24 +57,29 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio @Override public void store() { - UserPreferences.setGeolocationTileOption(getServerOption().getValue()); - UserPreferences.setGeolocationOsmZipPath(osmZipFileField.getText()); - UserPreferences.setGeolocationOsmServerAddress(tileServerFiled.getText()); + UserPreferences.setGeolocationTileOption(getDataSourceOption().getValue()); + UserPreferences.setGeolocationOsmZipPath(zipFilePathField.getText()); + UserPreferences.setGeolocationOsmServerAddress(osmServerAddressField.getText()); + UserPreferences.setGeolocationMBTilesFilePath(mbtileFileField.getText()); } @Override public void load() { - tileServerFiled.setText(UserPreferences.getGeolocationOsmServerAddress()); - osmZipFileField.setText(UserPreferences.getGeolocationOsmZipPath()); - switch (GeolocationTileOption.getOptionForValue(UserPreferences.getGeolocationtTileOption())) { + osmServerAddressField.setText(UserPreferences.getGeolocationOsmServerAddress()); + zipFilePathField.setText(UserPreferences.getGeolocationOsmZipPath()); + mbtileFileField.setText(UserPreferences.getGeolocationMBTilesFilePath()); + switch (GeolocationDataSourceType.getOptionForValue(UserPreferences.getGeolocationtTileOption())) { case ONLINE_USER_DEFINED_OSM_SERVER: - tileServerButton.setSelected(true); + osmServerRBnt.setSelected(true); break; case OFFLINE_OSM_ZIP: - osmZipButton.setSelected(true); + zipFileRBnt.setSelected(true); + break; + case OFFILE_MBTILES_FILE: + mbtilesRBtn.setSelected(true); break; default: - defaultButton.setSelected(true); + defaultDataSource.setSelected(true); break; } @@ -81,10 +91,13 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio * selection state. */ private void updateControlState() { - tileServerFiled.setEnabled(tileServerButton.isSelected()); - serverTestButton.setEnabled(tileServerButton.isSelected()); - osmZipFileField.setEnabled(osmZipButton.isSelected()); - osmZipFileBrowseButton.setEnabled(osmZipButton.isSelected()); + osmServerAddressField.setEnabled(osmServerRBnt.isSelected()); + serverTestBtn.setEnabled(osmServerRBnt.isSelected()); + zipFilePathField.setEnabled(zipFileRBnt.isSelected()); + zipFileBrowseBnt.setEnabled(zipFileRBnt.isSelected()); + mbtileFileField.setEnabled(mbtilesRBtn.isSelected()); + mbtilesBrowseBtn.setEnabled(mbtilesRBtn.isSelected()); + mbtileTestBtn.setEnabled(mbtilesRBtn.isSelected()); } /** @@ -93,13 +106,15 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio * * @return Current GEOLOCATION_TILE_OPTION */ - private GeolocationTileOption getServerOption() { - if (tileServerButton.isSelected()) { - return GeolocationTileOption.ONLINE_USER_DEFINED_OSM_SERVER; - } else if (osmZipButton.isSelected()) { - return GeolocationTileOption.OFFLINE_OSM_ZIP; + private GeolocationDataSourceType getDataSourceOption() { + if (osmServerRBnt.isSelected()) { + return GeolocationDataSourceType.ONLINE_USER_DEFINED_OSM_SERVER; + } else if (zipFileRBnt.isSelected()) { + return GeolocationDataSourceType.OFFLINE_OSM_ZIP; + } else if (mbtilesRBtn.isSelected()) { + return GeolocationDataSourceType.OFFILE_MBTILES_FILE; } - return GeolocationTileOption.ONLINE_DEFAULT_SERVER; + return GeolocationDataSourceType.ONLINE_DEFAULT_SERVER; } /** @@ -135,105 +150,159 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio javax.swing.ButtonGroup buttonGroup = new javax.swing.ButtonGroup(); javax.swing.JPanel tilePane = new javax.swing.JPanel(); - defaultButton = new javax.swing.JRadioButton(); - tileServerButton = new javax.swing.JRadioButton(); - tileServerFiled = new javax.swing.JTextField(); - osmZipButton = new javax.swing.JRadioButton(); - osmZipFileField = new javax.swing.JTextField(); - osmZipFileBrowseButton = new javax.swing.JButton(); - serverTestButton = new javax.swing.JButton(); + defaultDataSource = new javax.swing.JRadioButton(); + osmServerRBnt = new javax.swing.JRadioButton(); + osmServerAddressField = new javax.swing.JTextField(); + zipFileRBnt = new javax.swing.JRadioButton(); + zipFilePathField = new javax.swing.JTextField(); + zipFileBrowseBnt = new javax.swing.JButton(); + serverTestBtn = new javax.swing.JButton(); + mbtilesRBtn = new javax.swing.JRadioButton(); + mbtileFileField = new javax.swing.JTextField(); + mbtilesBrowseBtn = new javax.swing.JButton(); + mbtileTestBtn = new javax.swing.JButton(); setLayout(new java.awt.GridBagLayout()); tilePane.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.tilePane.border.title"))); // NOI18N tilePane.setLayout(new java.awt.GridBagLayout()); - buttonGroup.add(defaultButton); - defaultButton.setSelected(true); - org.openide.awt.Mnemonics.setLocalizedText(defaultButton, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.defaultButton.text")); // NOI18N - defaultButton.addActionListener(new java.awt.event.ActionListener() { + buttonGroup.add(defaultDataSource); + defaultDataSource.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(defaultDataSource, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.defaultDataSource.text")); // NOI18N + defaultDataSource.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - defaultButtonActionPerformed(evt); + defaultDataSourceActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; - gridBagConstraints.gridwidth = 3; + gridBagConstraints.gridwidth = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; - gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); - tilePane.add(defaultButton, gridBagConstraints); + gridBagConstraints.insets = new java.awt.Insets(9, 0, 9, 0); + tilePane.add(defaultDataSource, gridBagConstraints); - buttonGroup.add(tileServerButton); - org.openide.awt.Mnemonics.setLocalizedText(tileServerButton, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.tileServerButton.text")); // NOI18N - tileServerButton.addActionListener(new java.awt.event.ActionListener() { + buttonGroup.add(osmServerRBnt); + org.openide.awt.Mnemonics.setLocalizedText(osmServerRBnt, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmServerRBnt.text")); // NOI18N + osmServerRBnt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - tileServerButtonActionPerformed(evt); - } - }); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); - tilePane.add(tileServerButton, gridBagConstraints); - - tileServerFiled.setText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.tileServerFiled.text")); // NOI18N - tileServerFiled.setPreferredSize(new java.awt.Dimension(300, 26)); - gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; - gridBagConstraints.gridy = 1; - gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); - tilePane.add(tileServerFiled, gridBagConstraints); - - buttonGroup.add(osmZipButton); - org.openide.awt.Mnemonics.setLocalizedText(osmZipButton, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmZipButton.text")); // NOI18N - osmZipButton.setActionCommand(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmZipButton.actionCommand")); // NOI18N - osmZipButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - osmZipButtonActionPerformed(evt); + osmServerRBntActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); - tilePane.add(osmZipButton, gridBagConstraints); + tilePane.add(osmServerRBnt, gridBagConstraints); - osmZipFileField.setText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmZipFileField.text")); // NOI18N - osmZipFileField.setPreferredSize(new java.awt.Dimension(300, 26)); + osmServerAddressField.setText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmServerAddressField.text")); // NOI18N + osmServerAddressField.setPreferredSize(new java.awt.Dimension(300, 26)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); + tilePane.add(osmServerAddressField, gridBagConstraints); + + buttonGroup.add(zipFileRBnt); + org.openide.awt.Mnemonics.setLocalizedText(zipFileRBnt, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.zipFileRBnt.text")); // NOI18N + zipFileRBnt.setActionCommand(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.zipFileRBnt.actionCommand")); // NOI18N + zipFileRBnt.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + zipFileRBntActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); + tilePane.add(zipFileRBnt, gridBagConstraints); + + zipFilePathField.setText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.zipFilePathField.text")); // NOI18N + zipFilePathField.setPreferredSize(new java.awt.Dimension(300, 26)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); - tilePane.add(osmZipFileField, gridBagConstraints); + tilePane.add(zipFilePathField, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(osmZipFileBrowseButton, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.osmZipFileBrowseButton.text")); // NOI18N - osmZipFileBrowseButton.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(zipFileBrowseBnt, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.zipFileBrowseBnt.text")); // NOI18N + zipFileBrowseBnt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - osmZipFileBrowseButtonActionPerformed(evt); + zipFileBrowseBntActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; - gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 9, 9, 9); - tilePane.add(osmZipFileBrowseButton, gridBagConstraints); + tilePane.add(zipFileBrowseBnt, gridBagConstraints); - org.openide.awt.Mnemonics.setLocalizedText(serverTestButton, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.serverTestButton.text")); // NOI18N - serverTestButton.addActionListener(new java.awt.event.ActionListener() { + org.openide.awt.Mnemonics.setLocalizedText(serverTestBtn, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.serverTestBtn.text")); // NOI18N + serverTestBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - serverTestButtonActionPerformed(evt); + serverTestBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; + gridBagConstraints.ipadx = 20; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 9, 9, 9); - tilePane.add(serverTestButton, gridBagConstraints); + tilePane.add(serverTestBtn, gridBagConstraints); + + buttonGroup.add(mbtilesRBtn); + org.openide.awt.Mnemonics.setLocalizedText(mbtilesRBtn, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.mbtilesRBtn.text")); // NOI18N + mbtilesRBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mbtilesRBtnActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); + tilePane.add(mbtilesRBtn, gridBagConstraints); + + mbtileFileField.setText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.mbtileFileField.text")); // NOI18N + mbtileFileField.setToolTipText(org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.mbtileFileField.toolTipText")); // NOI18N + mbtileFileField.setPreferredSize(new java.awt.Dimension(300, 26)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 3; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 9, 0); + tilePane.add(mbtileFileField, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(mbtilesBrowseBtn, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.mbtilesBrowseBtn.text")); // NOI18N + mbtilesBrowseBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mbtilesBrowseBtnActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.insets = new java.awt.Insets(0, 9, 9, 9); + tilePane.add(mbtilesBrowseBtn, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(mbtileTestBtn, org.openide.util.NbBundle.getMessage(GeolocationSettingsPanel.class, "GeolocationSettingsPanel.mbtileTestBtn.text")); // NOI18N + mbtileTestBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mbtileTestBtnActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 3; + gridBagConstraints.ipadx = 20; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; + gridBagConstraints.weightx = 1.0; + tilePane.add(mbtileTestBtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; @@ -243,7 +312,7 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio add(tilePane, gridBagConstraints); }// //GEN-END:initComponents - private void osmZipFileBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_osmZipFileBrowseButtonActionPerformed + private void zipFileBrowseBntActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zipFileBrowseBntActionPerformed JFileChooser fileWindow = new JFileChooser(); fileWindow.setFileSelectionMode(JFileChooser.FILES_ONLY); GeneralFilter fileFilter = new GeneralFilter(Arrays.asList(".zip"), "Zips (*.zip)"); //NON-NLS @@ -253,26 +322,26 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio int returnVal = fileWindow.showSaveDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File zipFile = fileWindow.getSelectedFile(); - osmZipFileField.setForeground(Color.BLACK); - osmZipFileField.setText(zipFile.getAbsolutePath()); + zipFilePathField.setForeground(Color.BLACK); + zipFilePathField.setText(zipFile.getAbsolutePath()); firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); } - }//GEN-LAST:event_osmZipFileBrowseButtonActionPerformed + }//GEN-LAST:event_zipFileBrowseBntActionPerformed - private void defaultButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_defaultButtonActionPerformed + private void defaultDataSourceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_defaultDataSourceActionPerformed updateControlState(); firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_defaultButtonActionPerformed + }//GEN-LAST:event_defaultDataSourceActionPerformed - private void tileServerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tileServerButtonActionPerformed + private void osmServerRBntActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_osmServerRBntActionPerformed updateControlState(); firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_tileServerButtonActionPerformed + }//GEN-LAST:event_osmServerRBntActionPerformed - private void osmZipButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_osmZipButtonActionPerformed + private void zipFileRBntActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zipFileRBntActionPerformed updateControlState(); firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); - }//GEN-LAST:event_osmZipButtonActionPerformed + }//GEN-LAST:event_zipFileRBntActionPerformed @Messages({ "GeolocationSettingsPanel_malformed_url_message=The supplies OSM tile server address is invalid.\nPlease supply a well formed url prefixed with http://", @@ -281,8 +350,8 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio "GeolocationSettingsPanel_osm_server_test_fail_message_title=Error", "GeolocationSettingsPanel_osm_server_test_success_message=The provide OSM tile server address is valid.", "GeolocationSettingsPanel_osm_server_test_success_message_title=Success",}) - private void serverTestButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverTestButtonActionPerformed - String address = tileServerFiled.getText(); + private void serverTestBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverTestBtnActionPerformed + String address = osmServerAddressField.getText(); String message = Bundle.GeolocationSettingsPanel_osm_server_test_fail_message(); String title = Bundle.GeolocationSettingsPanel_osm_server_test_fail_message_title(); @@ -297,31 +366,95 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio } JOptionPane.showMessageDialog(this, message, title, JOptionPane.INFORMATION_MESSAGE); - }//GEN-LAST:event_serverTestButtonActionPerformed + }//GEN-LAST:event_serverTestBtnActionPerformed + + private void mbtilesRBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mbtilesRBtnActionPerformed + updateControlState(); + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + }//GEN-LAST:event_mbtilesRBtnActionPerformed + + private void mbtilesBrowseBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mbtilesBrowseBtnActionPerformed + JFileChooser fileWindow = new JFileChooser(); + fileWindow.setFileSelectionMode(JFileChooser.FILES_ONLY); + GeneralFilter fileFilter = new GeneralFilter(Arrays.asList(".mbtiles"), "MBTiles (*.mbtiles)"); //NON-NLS + fileWindow.setDragEnabled(false); + fileWindow.setFileFilter(fileFilter); + fileWindow.setMultiSelectionEnabled(false); + int returnVal = fileWindow.showSaveDialog(this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File zipFile = fileWindow.getSelectedFile(); + mbtileFileField.setForeground(Color.BLACK); + mbtileFileField.setText(zipFile.getAbsolutePath()); + firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null); + } + }//GEN-LAST:event_mbtilesBrowseBtnActionPerformed + + @Messages({ + "GeolocationSettings_mbtile_does_not_exist_message=The file supplied does not exist.\nPlease verify that the file exists and try again.", + "GeolocationSettings_mbtile_does_not_exist_title=File Not Found", + "GeolocationSettings_mbtile_not_valid_message=The supplied file is not a raster tile file.", + "GeolocationSettings_mbtile_not_valid_title=File Not Valid", + "GeolocationSettings_path_not_valid_message=The supplied file path is empty.\nPlease supply a valid file path.", + "GeolocationSettings_path_not_valid_title=File Not Valid", + "GeolocationSettings_mbtile_test_success_message=The supplied file is a valid mbtile raster file.", + "GeolocationSettings_mbtile_test_success_title=Success", + }) + private void mbtileTestBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mbtileTestBtnActionPerformed + String mbtilePath = mbtileFileField.getText(); + + if(mbtilePath.isEmpty()) { + JOptionPane.showMessageDialog(this, Bundle.GeolocationSettings_path_not_valid_message(), Bundle.GeolocationSettings_path_not_valid_title(), JOptionPane.ERROR_MESSAGE); + return; + } + + File file = new File(mbtilePath); + if(!file.exists()) { + JOptionPane.showMessageDialog(this, Bundle.GeolocationSettings_mbtile_does_not_exist_message(), Bundle.GeolocationSettings_mbtile_does_not_exist_title(), JOptionPane.ERROR_MESSAGE); + return; + } + + try { + if(!MBTilesFileConnector.isValidMBTileRasterFile(mbtilePath)) { + JOptionPane.showMessageDialog(this, Bundle.GeolocationSettings_mbtile_not_valid_message(), Bundle.GeolocationSettings_mbtile_not_valid_title(), JOptionPane.ERROR_MESSAGE); + return; + } + } catch (SQLException ex) { + JOptionPane.showMessageDialog(this, Bundle.GeolocationSettings_mbtile_not_valid_message(), Bundle.GeolocationSettings_mbtile_not_valid_title(), JOptionPane.ERROR_MESSAGE); + logger.log(Level.WARNING, String.format("Exception thrown while testing mbtile file %s", mbtilePath), ex); + return; + } + + JOptionPane.showMessageDialog(this, Bundle.GeolocationSettings_mbtile_test_success_message(), Bundle.GeolocationSettings_mbtile_test_success_title(), JOptionPane.INFORMATION_MESSAGE); + }//GEN-LAST:event_mbtileTestBtnActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JRadioButton defaultButton; - private javax.swing.JRadioButton osmZipButton; - private javax.swing.JButton osmZipFileBrowseButton; - private javax.swing.JTextField osmZipFileField; - private javax.swing.JButton serverTestButton; - private javax.swing.JRadioButton tileServerButton; - private javax.swing.JTextField tileServerFiled; + private javax.swing.JRadioButton defaultDataSource; + private javax.swing.JTextField mbtileFileField; + private javax.swing.JButton mbtileTestBtn; + private javax.swing.JButton mbtilesBrowseBtn; + private javax.swing.JRadioButton mbtilesRBtn; + private javax.swing.JTextField osmServerAddressField; + private javax.swing.JRadioButton osmServerRBnt; + private javax.swing.JButton serverTestBtn; + private javax.swing.JButton zipFileBrowseBnt; + private javax.swing.JTextField zipFilePathField; + private javax.swing.JRadioButton zipFileRBnt; // End of variables declaration//GEN-END:variables /** * Tile server option enum. The enum was given values to simplify the * storing of the user preference for a particular option. */ - enum GeolocationTileOption{ + enum GeolocationDataSourceType{ ONLINE_DEFAULT_SERVER(0), ONLINE_USER_DEFINED_OSM_SERVER(1), - OFFLINE_OSM_ZIP(2); + OFFLINE_OSM_ZIP(2), + OFFILE_MBTILES_FILE(3); private final int value; - GeolocationTileOption(int value) { + GeolocationDataSourceType(int value) { this.value = value; } @@ -329,8 +462,8 @@ final class GeolocationSettingsPanel extends javax.swing.JPanel implements Optio return value; } - static GeolocationTileOption getOptionForValue(int value) { - for (GeolocationTileOption option : GeolocationTileOption.values()) { + static GeolocationDataSourceType getOptionForValue(int value) { + for (GeolocationDataSourceType option : GeolocationDataSourceType.values()) { if (option.getValue() == value) { return option; } diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.form b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.form index 16cd5368a6..c51c8d496e 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.form +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.form @@ -16,6 +16,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -24,17 +81,6 @@ - - - - - - - - - - - - \ No newline at end of file + diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.java b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.java index a653979bb6..b1dee1cbb4 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/GeolocationTopComponent.java @@ -21,13 +21,23 @@ package org.sleuthkit.autopsy.geolocation; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.File; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.EnumSet; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.logging.Level; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; +import org.openide.filesystems.FileUtil; import org.openide.util.NbBundle.Messages; import org.openide.windows.RetainLocation; import org.openide.windows.TopComponent; @@ -45,6 +55,8 @@ import org.sleuthkit.autopsy.geolocation.datamodel.WaypointBuilder.WaypointFilte import org.sleuthkit.autopsy.ingest.IngestManager; import static org.sleuthkit.autopsy.ingest.IngestManager.IngestModuleEvent.DATA_ADDED; import org.sleuthkit.autopsy.ingest.ModuleDataEvent; +import org.sleuthkit.autopsy.report.ReportProgressPanel; +import org.sleuthkit.autopsy.report.modules.kml.KMLReport; import org.sleuthkit.datamodel.BlackboardArtifact; /** @@ -64,10 +76,16 @@ public final class GeolocationTopComponent extends TopComponent { private static final Set INGEST_MODULE_EVENTS_OF_INTEREST = EnumSet.of(DATA_ADDED); private final PropertyChangeListener ingestListener; + private final PropertyChangeListener caseEventListener; private final GeoFilterPanel geoFilterPanel; final RefreshPanel refreshPanel = new RefreshPanel(); + private static final String REPORT_PATH_FMT_STR = "%s" + File.separator + "%s %s %s" + File.separator; + + // This is the hardcoded report name from KMLReport.java + private static final String REPORT_KML = "ReportKML.kml"; + @Messages({ "GLTopComponent_name=Geolocation", "GLTopComponent_initilzation_error=An error occurred during waypoint initilization. Geolocation data maybe incomplete." @@ -79,7 +97,7 @@ public final class GeolocationTopComponent extends TopComponent { @ThreadConfined(type = ThreadConfined.ThreadType.AWT) public GeolocationTopComponent() { initComponents(); - + setName(Bundle.GLTopComponent_name()); this.ingestListener = pce -> { @@ -99,6 +117,13 @@ public final class GeolocationTopComponent extends TopComponent { } } }; + + this.caseEventListener = pce -> { + mapPanel.clearWaypoints(); + if (pce.getNewValue() != null) { + updateWaypoints(); + } + }; refreshPanel.addCloseActionListener(new ActionListener() { @Override @@ -110,6 +135,7 @@ public final class GeolocationTopComponent extends TopComponent { refreshPanel.addRefreshActionListner(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + geoFilterPanel.updateDataSourceList(); mapPanel.clearWaypoints(); updateWaypoints(); showRefreshPanel(false); @@ -120,36 +146,47 @@ public final class GeolocationTopComponent extends TopComponent { filterPane.setPanel(geoFilterPanel); geoFilterPanel.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(ActionEvent e) { updateWaypoints(); } }); + + mapPanel.addPropertyChangeListener(MapPanel.CURRENT_MOUSE_GEOPOSITION, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String label = ""; + Object newValue = evt.getNewValue(); + if (newValue != null) { + label = newValue.toString(); + } + + coordLabel.setText(label); + } + + }); } @Override public void addNotify() { super.addNotify(); IngestManager.getInstance().addIngestModuleEventListener(INGEST_MODULE_EVENTS_OF_INTEREST, ingestListener); - Case.addEventTypeSubscriber(EnumSet.of(CURRENT_CASE), evt -> { - mapPanel.clearWaypoints(); - if (evt.getNewValue() != null) { - updateWaypoints(); - } - }); + Case.addEventTypeSubscriber(EnumSet.of(CURRENT_CASE), caseEventListener); } @Override public void removeNotify() { super.removeNotify(); IngestManager.getInstance().removeIngestModuleEventListener(ingestListener); + Case.removeEventTypeSubscriber(EnumSet.of(CURRENT_CASE), caseEventListener); } @Override public void componentOpened() { super.componentOpened(); WindowManager.getDefault().setTopComponentFloating(this, true); + } - + @Messages({ "GeolocationTC_connection_failure_message=Failed to connect to map title source.\nPlease review map source in Options dialog.", "GeolocationTC_connection_failure_message_title=Connection Failure" @@ -157,20 +194,22 @@ public final class GeolocationTopComponent extends TopComponent { @Override public void open() { super.open(); + geoFilterPanel.clearDataSourceList(); geoFilterPanel.updateDataSourceList(); try { mapPanel.initMap(); } catch (GeoLocationDataException ex) { - JOptionPane.showMessageDialog(this, - Bundle.GeolocationTC_connection_failure_message(), - Bundle.GeolocationTC_connection_failure_message_title(), - JOptionPane.ERROR_MESSAGE); - MessageNotifyUtil.Notify.error( - Bundle.GeolocationTC_connection_failure_message_title(), - Bundle.GeolocationTC_connection_failure_message()); - logger.log(Level.SEVERE, ex.getMessage(), ex); - return; // Doen't set the waypoints. + JOptionPane.showMessageDialog(this, + Bundle.GeolocationTC_connection_failure_message(), + Bundle.GeolocationTC_connection_failure_message_title(), + JOptionPane.ERROR_MESSAGE); + MessageNotifyUtil.Notify.error( + Bundle.GeolocationTC_connection_failure_message_title(), + Bundle.GeolocationTC_connection_failure_message()); + logger.log(Level.SEVERE, ex.getMessage(), ex); + return; // Doen't set the waypoints. } + mapPanel.setWaypoints(new ArrayList<>()); updateWaypoints(); } @@ -207,42 +246,56 @@ public final class GeolocationTopComponent extends TopComponent { try { filters = geoFilterPanel.getFilterState(); } catch (GeoLocationUIException ex) { - JOptionPane.showMessageDialog(this, - Bundle.GeoTopComponent_filer_data_invalid_msg(), - Bundle.GeoTopComponent_filer_data_invalid_Title(), - JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(this, + Bundle.GeoTopComponent_filer_data_invalid_msg(), + Bundle.GeoTopComponent_filer_data_invalid_Title(), + JOptionPane.INFORMATION_MESSAGE); return; } - SwingUtilities.invokeLater(new Runnable() { - public void run() { - Case currentCase = Case.getCurrentCase(); - try { - WaypointBuilder.getAllWaypoints(currentCase.getSleuthkitCase(), filters.getDataSources(), filters.showAllWaypoints(), filters.getMostRecentNumDays(), filters.showWaypointsWithoutTimeStamp(), new WaypointFilterQueryCallBack() { - @Override - public void process(List waypoints) { - // If the list is empty, tell the user and do not change - // the visible waypoints. - if (waypoints == null || waypoints.isEmpty()) { - JOptionPane.showMessageDialog(GeolocationTopComponent.this, - Bundle.GeoTopComponent_no_waypoints_returned_Title(), - Bundle.GeoTopComponent_no_waypoints_returned_mgs(), - JOptionPane.INFORMATION_MESSAGE); - - return; - } - mapPanel.setWaypoints(MapWaypoint.getWaypoints(waypoints)); - } - }); - } catch (GeoLocationDataException ex) { - logger.log(Level.SEVERE, "Failed to filter waypoints.", ex); - JOptionPane.showMessageDialog(GeolocationTopComponent.this, - Bundle.GeoTopComponent_filter_exception_Title(), - Bundle.GeoTopComponent_filter_exception_msg(), - JOptionPane.ERROR_MESSAGE); - } - } - }); + setWaypointLoading(true); + geoFilterPanel.setEnabled(false); + + Thread thread = new Thread(new WaypointRunner(filters)); + thread.start(); + } + + /** + * Show or hide the waypoint loading progress bar. + * + * @param loading + */ + void setWaypointLoading(boolean loading) { + progressBar.setEnabled(true); + progressBar.setVisible(loading); + progressBar.setString("Loading Waypoints"); + } + + /** + * Create the directory path for the KML report. + * + * This is a modified version of the similar private function from + * KMLReport. + * + * @return Path for the report + * + * @throws IOException + */ + private static String createReportDirectory() throws IOException { + Case currentCase = Case.getCurrentCase(); + + // Create the root reports directory path of the form: /Reports/ / + DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss", Locale.US); + Date date = new Date(); + String dateNoTime = dateFormat.format(date); + String reportPath = String.format(REPORT_PATH_FMT_STR, currentCase.getReportDirectory(), currentCase.getDisplayName(), "Goggle Earth KML", dateNoTime); + // Create the root reports directory. + try { + FileUtil.createFolder(new File(reportPath)); + } catch (IOException ex) { + throw new IOException("Failed to make report folder, unable to generate reports.", ex); + } + return reportPath; } /** @@ -253,20 +306,165 @@ public final class GeolocationTopComponent extends TopComponent { @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; - mapPanel = new org.sleuthkit.autopsy.geolocation.MapPanel(); filterPane = new org.sleuthkit.autopsy.geolocation.HidingPane(); + statusBar = new javax.swing.JPanel(); + reportButton = new javax.swing.JButton(); + progressBar = new javax.swing.JProgressBar(); + coordLabel = new javax.swing.JLabel(); + mapPanel = new org.sleuthkit.autopsy.geolocation.MapPanel(); setLayout(new java.awt.BorderLayout()); + add(filterPane, java.awt.BorderLayout.WEST); - mapPanel.add(filterPane, java.awt.BorderLayout.LINE_START); + statusBar.setLayout(new java.awt.GridBagLayout()); + org.openide.awt.Mnemonics.setLocalizedText(reportButton, org.openide.util.NbBundle.getMessage(GeolocationTopComponent.class, "GeolocationTopComponent.reportButton.text")); // NOI18N + reportButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + reportButtonActionPerformed(evt); + } + }); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); + statusBar.add(reportButton, gridBagConstraints); + + progressBar.setIndeterminate(true); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + statusBar.add(progressBar, gridBagConstraints); + + org.openide.awt.Mnemonics.setLocalizedText(coordLabel, org.openide.util.NbBundle.getMessage(GeolocationTopComponent.class, "GeolocationTopComponent.coordLabel.text")); // NOI18N + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 0); + statusBar.add(coordLabel, gridBagConstraints); + + add(statusBar, java.awt.BorderLayout.SOUTH); add(mapPanel, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents + @Messages({ + "GeolocationTC_empty_waypoint_message=Unable to generate KML report due to a lack of waypoints.\nPlease make sure there are waypoints visible before generating the KML report", + "GeolocationTC_KML_report_title=KML Report", + "GeolocationTC_report_progress_title=KML Report Progress" + }) + private void reportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reportButtonActionPerformed + List visiblePoints = mapPanel.getVisibleWaypoints(); + if (visiblePoints.isEmpty()) { + JOptionPane.showConfirmDialog(this, Bundle.GeolocationTC_empty_waypoint_message(), Bundle.GeolocationTC_KML_report_title(), JOptionPane.OK_OPTION, JOptionPane.INFORMATION_MESSAGE); + return; + } + + try { + ReportProgressPanel progressPanel = new ReportProgressPanel(); + String reportBaseDir = createReportDirectory(); + + progressPanel.setLabels(REPORT_KML, reportBaseDir); + + SwingWorker worker = new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + KMLReport.getDefault().generateReport(reportBaseDir, progressPanel, MapWaypoint.getDataModelWaypoints(visiblePoints)); + return null; + } + }; + worker.execute(); + JOptionPane.showConfirmDialog(this, progressPanel, Bundle.GeolocationTC_report_progress_title(), JOptionPane.CLOSED_OPTION, JOptionPane.PLAIN_MESSAGE); + } catch (IOException ex) { + logger.log(Level.WARNING, "Unable to create KML report", ex); + } + }//GEN-LAST:event_reportButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel coordLabel; private org.sleuthkit.autopsy.geolocation.HidingPane filterPane; private org.sleuthkit.autopsy.geolocation.MapPanel mapPanel; + private javax.swing.JProgressBar progressBar; + private javax.swing.JButton reportButton; + private javax.swing.JPanel statusBar; // End of variables declaration//GEN-END:variables + + /** + * A runnable class for getting waypoints based on the current filters. + */ + private class WaypointRunner implements Runnable { + + private final GeoFilter filters; + + /** + * Constructs the Waypoint Runner + * + * @param filters + */ + WaypointRunner(GeoFilter filters) { + this.filters = filters; + } + + @Override + public void run() { + Case currentCase = Case.getCurrentCase(); + try { + WaypointBuilder.getAllWaypoints(currentCase.getSleuthkitCase(), + filters.getDataSources(), + filters.showAllWaypoints(), + filters.getMostRecentNumDays(), + filters.showWaypointsWithoutTimeStamp(), + new WaypointCallBack()); + + } catch (GeoLocationDataException ex) { + logger.log(Level.SEVERE, "Failed to filter waypoints.", ex); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + JOptionPane.showMessageDialog(GeolocationTopComponent.this, + Bundle.GeoTopComponent_filter_exception_Title(), + Bundle.GeoTopComponent_filter_exception_msg(), + JOptionPane.ERROR_MESSAGE); + } + }); + } + } + + } + + /** + * Callback for getting waypoints. + */ + private class WaypointCallBack implements WaypointFilterQueryCallBack { + + @Override + public void process(List waypoints) { + // Make sure that the waypoints are added to the map panel in + // the correct thread. + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + // If the list is empty, tell the user and do not change + // the visible waypoints. + if (waypoints == null || waypoints.isEmpty()) { + JOptionPane.showMessageDialog(GeolocationTopComponent.this, + Bundle.GeoTopComponent_no_waypoints_returned_Title(), + Bundle.GeoTopComponent_no_waypoints_returned_mgs(), + JOptionPane.INFORMATION_MESSAGE); + + return; + } + mapPanel.setWaypoints(MapWaypoint.getWaypoints(waypoints)); + setWaypointLoading(false); + geoFilterPanel.setEnabled(true); + } + }); + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesFileConnector.java b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesFileConnector.java new file mode 100755 index 0000000000..7990b09a29 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesFileConnector.java @@ -0,0 +1,138 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.geolocation; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import org.jxmapviewer.OSMTileFactoryInfo; +import org.jxmapviewer.viewer.TileFactoryInfo; +import org.sleuthkit.autopsy.geolocation.datamodel.GeoLocationDataException; + +/** + * Wraps the connection to the MBTiles file\sqlite db. + */ +final class MBTilesFileConnector { + + private final static String DB_URL = "jdbc:sqlite:%s"; + private final static String TILE_QUERY = "SELECT tile_data FROM images WHERE tile_id = '%s'"; + private final static String FORMAT_QUERY = "SELECT value FROM metadata WHERE name='format'"; + private final TileFactoryInfo factoryInfo; + private final String connectionString; + + /** + * Returns whether or not the file at the given path is a mbtiles file. + * + * @param filePath Absolute path the the file. + * + * @return True if the file is an mbtiles file + * + * @throws SQLException + */ + static boolean isValidMBTileRasterFile(String filePath) throws SQLException { + Path p = Paths.get(filePath); + if (!p.toFile().exists()) { + return false; + } + + String path = filePath.replaceAll("\\\\", "/"); + String url = String.format(DB_URL, path); + + try (Connection connection = DriverManager.getConnection(url)) { + try (Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(FORMAT_QUERY)) { + if (resultSet.next()) { + String format = resultSet.getString(1); + return format.equals("jpg"); + } + } + } + return false; + } + + /** + * Construct a new connection to the MBTile file. + * + * @param tileFilePath MBTiles file absolute path + * + * @throws GeoLocationDataException + */ + MBTilesFileConnector(String tileFilePath) throws GeoLocationDataException { + String path = tileFilePath.replaceAll("\\\\", "/"); + connectionString = String.format(DB_URL, path); + factoryInfo = new MBTilesInfo(); + } + + /** + * Returns the TileFacortyInfo object for the MBTile file. + * + * @return TileFactoryInfo object or null if the connection has been closed. + */ + TileFactoryInfo getInfo() { + return factoryInfo; + } + + /** + * Get the tile for the given tileID. + * + * @param tileID String tile ID in the format of zoom/x/y + * + * @return The tile image byte array or an empty array if the tile was not + * found. + * + * @throws GeoLocationDataException + */ + byte[] getTileBytes(String tileID) throws GeoLocationDataException { + String query = String.format(TILE_QUERY, tileID); + + try (Connection connection = DriverManager.getConnection(connectionString)) { + try (Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query)) { + if (resultSet.next()) { + return resultSet.getBytes(1); + } + } + } catch (SQLException ex) { + throw new GeoLocationDataException(String.format("Failed to get tile %s", tileID), ex); + } + return new byte[0]; + } + + /** + * Overload the existing OSMTileFacotyInfo to return a "url" specific to + * MBTiles. + */ + private final class MBTilesInfo extends OSMTileFactoryInfo { + + MBTilesInfo() { + super("MBTilesFile", ""); + } + + @Override + public String getTileUrl(int x, int y, int zoom) { + // OSM zoom levels are reversed from how the TileFactory deals with + // them. + int osmZoom = getTotalMapZoom() - zoom; + return String.format("%d/%d/%d", osmZoom, x, y); + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTile.java b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTile.java new file mode 100755 index 0000000000..848f31511c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTile.java @@ -0,0 +1,122 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.geolocation; + +import java.awt.image.BufferedImage; +import java.lang.ref.SoftReference; + +import org.jxmapviewer.viewer.Tile; + +/** + * Provides a MBTile specific implementation of Tile. + * + * This class borrows functionality from Tile. + */ +final class MBTilesTile extends Tile { + + private SoftReference image = new SoftReference<>(null); + private Priority priority = Priority.High; + private boolean loaded = false; + private final String tileID; + + /** + * Construct an empty tile. + * + * @param x + * @param y + * @param zoom + */ + MBTilesTile(int x, int y, int zoom) { + super(x, y, zoom); + tileID = null; + } + + /** + * Construct a new tile. + * + * @param x Tile row + * @param y Tile column + * @param zoom Tile Zoom level + * @param tileID Tile identifier + * @param priority Priority for loading the tile + */ + MBTilesTile(int x, int y, int zoom, String tileID, Priority priority) { + super(x, y, zoom); + this.priority = priority; + this.tileID = tileID; + } + + /** + * Sets the image for this Tile. + * + * @param image + */ + void setImage(BufferedImage image) { + this.image = new SoftReference<>(image); + setLoaded(true); + } + + /** + * Indicates if this tile's underlying image has been successfully loaded + * yet. + * + * @return true if the Tile has been loaded + */ + @Override + public synchronized boolean isLoaded() { + return loaded; + } + + synchronized void setLoaded(boolean loaded) { + boolean old = isLoaded(); + this.loaded = loaded; + firePropertyChange("loaded", old, isLoaded()); + } + + @Override + public BufferedImage getImage() { + BufferedImage img = image.get(); + if (img == null) { + setLoaded(false); + } + return img; + } + + @Override + public Priority getPriority() { + return priority; + } + + @Override + public void setPriority(Priority priority) { + this.priority = priority; + } + + /** + * Overloading the original version of this function to return the tileID + * for this tile. + * + * @return tileID or null if none was set + */ + @Override + public String getURL() { + return tileID; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTileFactory.java b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTileFactory.java new file mode 100755 index 0000000000..372d2e1561 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MBTilesTileFactory.java @@ -0,0 +1,351 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License") + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.geolocation; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.PriorityBlockingQueue; +import java.util.concurrent.ThreadFactory; +import java.util.logging.Level; + +import javax.imageio.ImageIO; +import javax.swing.SwingUtilities; + +import org.jxmapviewer.viewer.Tile; +import org.jxmapviewer.viewer.TileCache; +import org.jxmapviewer.viewer.TileFactory; +import org.jxmapviewer.viewer.util.GeoUtil; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.geolocation.datamodel.GeoLocationDataException; + +/** + * This TileFactory class borrows from org.jxmapviewer.viewer.AbstractTileFactory, changing to support + * the getting the tiles from a database instead the web. + * + * @see AbstractTileFactory + * + */ +final class MBTilesTileFactory extends TileFactory { + + private static final Logger logger = Logger.getLogger(MBTilesTileFactory.class.getName()); + + private volatile int pendingTiles = 0; + private static final int THREAD_POOL_SIZE = 4; + private ExecutorService service; + + private final Map tileMap; + + private final TileCache cache; + + private MBTilesFileConnector connector; + + /** + * Construct a new TileFactory for the MBTiles file at the given location. + * + * @param filePath + * + * @throws GeoLocationDataException + */ + MBTilesTileFactory(String filePath) throws GeoLocationDataException { + this(new MBTilesFileConnector(filePath)); + } + + /** + * Construct a new TileFacotry. + * + * @param connector + */ + private MBTilesTileFactory(MBTilesFileConnector connector) { + super(connector.getInfo()); + this.connector = connector; + cache = new TileCache(); + tileMap = new HashMap<>(); + } + + /** + * Returns the tile that is located at the given tile point for this zoom. + * + * @param x Tile column + * @param y Tile row + * @param zoom Current zoom level + * + * @return A new Tile object + * + */ + @Override + public Tile getTile(int x, int y, int zoom) { + return getTile(x, y, zoom, true); + } + + /** + * Returns the tile object for the given location. + * + * @param tpx + * @param tpy + * @param zoom + * @param eagerLoad + * + * @return + */ + private Tile getTile(int tpx, int tpy, int zoom, boolean eagerLoad) { + // wrap the tiles horizontally --> mod the X with the max width + // and use that + int tileX = tpx;// tilePoint.getX(); + int numTilesWide = (int) getMapSize(zoom).getWidth(); + if (tileX < 0) { + tileX = numTilesWide - (Math.abs(tileX) % numTilesWide); + } + + tileX %= numTilesWide; + int tileY = tpy; + + String url = getInfo().getTileUrl(tileX, tileY, zoom); + + Tile.Priority pri = Tile.Priority.High; + if (!eagerLoad) { + pri = Tile.Priority.Low; + } + Tile tile; + if (!tileMap.containsKey(url)) { + // If its not a valid tile location return an empty tile. + if (!GeoUtil.isValidTile(tileX, tileY, zoom, getInfo())) { + tile = new MBTilesTile(tileX, tileY, zoom); + } else { + tile = new MBTilesTile(tileX, tileY, zoom, url, pri); + startLoading(tile); + } + tileMap.put(url, tile); + } else { + tile = tileMap.get(url); + // If the tile is in the tileMap, but the image is not loaded yet, + // bump the priority. + if (tile.getPriority() == Tile.Priority.Low && eagerLoad && !tile.isLoaded()) { + promote(tile); + } + } + + return tile; + } + + /** + * Returns the TileCache. + * + * @return the tile cache + */ + TileCache getTileCache() { + return cache; + } + + /** + * ==== Threaded Tile loading code === + */ + /** + * Thread pool for loading the tiles + */ + private final BlockingQueue tileQueue = new PriorityBlockingQueue<>(5, new Comparator() { + @Override + public int compare(Tile o1, Tile o2) { + if (o1.getPriority() == Tile.Priority.Low && o2.getPriority() == Tile.Priority.High) { + return 1; + } + if (o1.getPriority() == Tile.Priority.High && o2.getPriority() == Tile.Priority.Low) { + return -1; + } + return 0; + + } + }); + + /** + * Subclasses may override this method to provide their own executor + * services. This method will be called each time a tile needs to be loaded. + * Implementations should cache the ExecutorService when possible. + * + * @return ExecutorService to load tiles with + */ + synchronized ExecutorService getService() { + if (service == null) { + // System.out.println("creating an executor service with a threadpool of size " + threadPoolSize); + service = Executors.newFixedThreadPool(THREAD_POOL_SIZE, new ThreadFactory() { + private int count = 0; + + @Override + public Thread newThread(Runnable r) { + Thread t = new Thread(r, "tile-pool-" + count++); + t.setPriority(Thread.MIN_PRIORITY); + t.setDaemon(true); + return t; + } + }); + } + return service; + } + + @Override + public void dispose() { + if (service != null) { + service.shutdown(); + service = null; + } + } + + @Override + protected synchronized void startLoading(Tile tile) { + if (tile.isLoading()) { + return; + } + pendingTiles++; + tile.setLoading(true); + try { + tileQueue.put(tile); + getService().submit(new TileRunner()); + } catch (InterruptedException ex) { + + } + } + + /** + * Increase the priority of this tile so it will be loaded sooner. + * + * @param tile the tile + */ + synchronized void promote(Tile tile) { + if (tileQueue.contains(tile)) { + try { + tileQueue.remove(tile); + tile.setPriority(Tile.Priority.High); + tileQueue.put(tile); + } catch (InterruptedException ex) { + + } + } + } + + /** + * @return the number of pending (loading or queues) tiles + */ + int getPendingTiles() { + return pendingTiles; + } + + /** + * An inner class which actually loads the tiles. Used by the thread queue. + * Subclasses can override this via {@link #createTileRunner(Tile)} if + * necessary. + */ + private class TileRunner implements Runnable { + + /** + * Gets the full URI of a tile. + * + * @param tile the tile + * + * @throws URISyntaxException if the URI is invalid + * @return a URI for the tile + */ + protected URI getURI(Tile tile) throws URISyntaxException { + if (tile.getURL() == null) { + return null; + } + return new URI(tile.getURL()); + } + + @Override + public void run() { + /* + * Attempt to load the tile from . If loading fails, retry two more + * times. If all attempts fail, nothing else is done. This way, if + * there is some kind of failure, the pooled thread can try to load + * other tiles. + */ + final Tile tile = tileQueue.remove(); + + int remainingAttempts = 3; + while (!tile.isLoaded() && remainingAttempts > 0) { + remainingAttempts--; + try { + URI uri = getURI(tile); + BufferedImage img = cache.get(uri); + if (img == null) { + img = getImage(uri); + } + if (img != null) { + addImageToTile(tile, img); + } + } catch (OutOfMemoryError memErr) { + cache.needMoreMemory(); + } catch (IOException | GeoLocationDataException | InterruptedException | InvocationTargetException | URISyntaxException ex) { + if (remainingAttempts == 0) { + logger.log(Level.SEVERE, String.format("Failed to load a tile at URL: %s, stopping", tile.getURL()), ex); + } else { + logger.log(Level.WARNING, "Failed to load a tile at URL: " + tile.getURL() + ", retrying", ex); + } + } + } + tile.setLoading(false); + } + } + + /** + * + * @param uri + * @return + * @throws IOException + * @throws GeoLocationDataException + */ + private BufferedImage getImage(URI uri ) throws IOException, GeoLocationDataException{ + BufferedImage img = null; + byte[] bimg = connector.getTileBytes(uri.toString()); + if (bimg != null && bimg.length > 0) { + img = ImageIO.read(new ByteArrayInputStream(bimg)); + cache.put(uri, bimg, img); + } + return img; + } + + /** + * + * @param tile + * @param image + * @throws InterruptedException + * @throws InvocationTargetException + */ + private void addImageToTile(Tile tile, BufferedImage image) throws InterruptedException, InvocationTargetException { + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + if (tile instanceof MBTilesTile) { + ((MBTilesTile) tile).setImage(image); + } + pendingTiles--; + fireTileLoadedEvent(tile); + } + }); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.form b/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.form index 454008c062..bea654be40 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.form +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.form @@ -91,28 +91,5 @@
- - - - - - - - - - - - - - - - - - - - - - -
diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.java b/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.java index fb5cdc23e5..7be6ac25a8 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MapPanel.java @@ -19,19 +19,24 @@ package org.sleuthkit.autopsy.geolocation; import java.awt.Dimension; +import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; +import java.awt.event.MouseEvent; import java.awt.geom.Point2D; +import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; @@ -45,6 +50,7 @@ import javax.swing.Popup; import javax.swing.PopupFactory; import javax.swing.Timer; import javax.swing.event.MouseInputListener; +import org.jxmapviewer.JXMapViewer; import org.jxmapviewer.OSMTileFactoryInfo; import org.jxmapviewer.VirtualEarthTileFactoryInfo; import org.jxmapviewer.input.CenterMapListener; @@ -56,19 +62,22 @@ import org.jxmapviewer.viewer.TileFactory; import org.jxmapviewer.viewer.TileFactoryInfo; import org.jxmapviewer.viewer.Waypoint; import org.jxmapviewer.viewer.WaypointPainter; -import org.jxmapviewer.viewer.util.GeoUtil; +import org.jxmapviewer.viewer.WaypointRenderer; import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.geolocation.datamodel.GeoLocationDataException; import org.sleuthkit.datamodel.TskCoreException; +import javax.imageio.ImageIO; +import org.jxmapviewer.viewer.DefaultWaypointRenderer; /** * The map panel. This panel contains the jxmapviewer MapViewer */ final public class MapPanel extends javax.swing.JPanel { + static final String CURRENT_MOUSE_GEOPOSITION = "CURRENT_MOUSE_GEOPOSITION"; private static final Logger logger = Logger.getLogger(MapPanel.class.getName()); private static final long serialVersionUID = 1L; @@ -113,7 +122,10 @@ final public class MapPanel extends javax.swing.JPanel { @Override public void preferenceChange(PreferenceChangeEvent evt) { try { - mapViewer.setTileFactory(new DefaultTileFactory(getTileFactoryInfo())); + // Tell the old factory to cleanup + mapViewer.getTileFactory().dispose(); + + mapViewer.setTileFactory(getTileFactory()); initializeZoomSlider(); } catch (GeoLocationDataException ex) { logger.log(Level.SEVERE, "Failed to connect to new geolocation tile server.", ex); //NON-NLS @@ -122,20 +134,40 @@ final public class MapPanel extends javax.swing.JPanel { Bundle.MapPanel_connection_failure_message_title(), JOptionPane.ERROR_MESSAGE); MessageNotifyUtil.Notify.error( - Bundle.MapPanel_connection_failure_message_title(), - Bundle.MapPanel_connection_failure_message()); + Bundle.MapPanel_connection_failure_message_title(), + Bundle.MapPanel_connection_failure_message()); } } }); } + /** + * Get a list of the waypoints that are currently visible in the viewport. + * + * @return A list of waypoints or empty list if none were found. + */ + List getVisibleWaypoints() { + + Rectangle viewport = mapViewer.getViewportBounds(); + List waypoints = new ArrayList<>(); + + Iterator iterator = waypointTree.iterator(); + while (iterator.hasNext()) { + MapWaypoint waypoint = iterator.next(); + if (viewport.contains(mapViewer.getTileFactory().geoToPixel(waypoint.getPosition(), mapViewer.getZoom()))) { + waypoints.add(waypoint); + } + } + + return waypoints; + } + /** * Initialize the map. */ void initMap() throws GeoLocationDataException { - TileFactoryInfo info = getTileFactoryInfo(); - DefaultTileFactory tileFactory = new DefaultTileFactory(info); + TileFactory tileFactory = getTileFactory(); mapViewer.setTileFactory(tileFactory); // Add Mouse interactions @@ -158,23 +190,40 @@ final public class MapPanel extends javax.swing.JPanel { zoomSlider.setMaximum(tileFactory.getInfo().getMaximumZoomLevel()); setZoom(tileFactory.getInfo().getMaximumZoomLevel() - 1); - - mapViewer.setCenterPosition(new GeoPosition(0,0)); + + mapViewer.setCenterPosition(new GeoPosition(0, 0)); // Basic painters for the way points. WaypointPainter waypointPainter = new WaypointPainter() { @Override public Set getWaypoints() { - Set set = new HashSet<>(); + //To assure that the currentlySelectedWaypoint is visible it needs + // to be painted last. LinkedHashSet has a predicable ordering. + Set set = new LinkedHashSet<>(); if (waypointTree != null) { Iterator iterator = waypointTree.iterator(); while (iterator.hasNext()) { - set.add(iterator.next()); + MapWaypoint point = iterator.next(); + if (point != currentlySelectedWaypoint) { + set.add(point); + } + } + // Add the currentlySelectedWaypoint to the end so that + // it will be painted last. + if (currentlySelectedWaypoint != null) { + set.add(currentlySelectedWaypoint); } } return set; } }; + + try { + waypointPainter.setRenderer(new MapWaypointRenderer()); + } catch (IOException ex) { + logger.log(Level.WARNING, "Failed to load waypoint image resource, using DefaultWaypointRenderer", ex); + waypointPainter.setRenderer(new DefaultWaypointRenderer()); + } mapViewer.setOverlayPainter(waypointPainter); } @@ -192,50 +241,49 @@ final public class MapPanel extends javax.swing.JPanel { } /** - * Create the TileFactoryInfo object based on the user preference. + * Create the TileFactory object based on the user preference. * * @return */ - TileFactoryInfo getTileFactoryInfo() throws GeoLocationDataException { - switch (GeolocationSettingsPanel.GeolocationTileOption.getOptionForValue(UserPreferences.getGeolocationtTileOption())) { + private TileFactory getTileFactory() throws GeoLocationDataException { + switch (GeolocationSettingsPanel.GeolocationDataSourceType.getOptionForValue(UserPreferences.getGeolocationtTileOption())) { case ONLINE_USER_DEFINED_OSM_SERVER: - return createOnlineOSMFactory(UserPreferences.getGeolocationOsmServerAddress()); + return new DefaultTileFactory(createOnlineOSMFactory(UserPreferences.getGeolocationOsmServerAddress())); case OFFLINE_OSM_ZIP: - return createOSMZipFactory(UserPreferences.getGeolocationOsmZipPath()); + return new DefaultTileFactory(createOSMZipFactory(UserPreferences.getGeolocationOsmZipPath())); + case OFFILE_MBTILES_FILE: + return new MBTilesTileFactory(UserPreferences.getGeolocationMBTilesFilePath()); default: - return new VirtualEarthTileFactoryInfo(VirtualEarthTileFactoryInfo.MAP); + return new DefaultTileFactory(new VirtualEarthTileFactoryInfo(VirtualEarthTileFactoryInfo.MAP)); } } - + /** * Create the TileFactoryInfo for an online OSM tile server. - * - * @param address Tile server address - * + * + * @param address Tile server address + * * @return TileFactoryInfo object for server address. - * - * @throws GeoLocationDataException + * + * @throws GeoLocationDataException */ private TileFactoryInfo createOnlineOSMFactory(String address) throws GeoLocationDataException { if (address.isEmpty()) { throw new GeoLocationDataException("Invalid user preference for OSM user define tile server. Address is an empty string."); } else { TileFactoryInfo info = new OSMTileFactoryInfo("User Defined Server", address); - if (!GeoUtil.isValidTile(1, 1, 1, info)) { - throw new GeoLocationDataException(String.format("Invalid OSM user define tile server: %s", address)); - } return info; } } - + /** * Create the TileFactoryInfo for OSM zip File - * + * * @param zipPath Path to zip file. - * + * * @return TileFactoryInfo for zip file. - * - * @throws GeoLocationDataException + * + * @throws GeoLocationDataException */ private TileFactoryInfo createOSMZipFactory(String path) throws GeoLocationDataException { if (path.isEmpty()) { @@ -300,7 +348,10 @@ final public class MapPanel extends javax.swing.JPanel { // it the popup is currently visible if (waypoint != null && !waypoint.equals(currentlySelectedWaypoint)) { currentlySelectedWaypoint = waypoint; - showDetailsPopup(); + if(currentPopup != null) { + showDetailsPopup(); + } + mapViewer.repaint(); } } catch (TskCoreException ex) { logger.log(Level.WARNING, "Failed to show popup for waypoint", ex); @@ -328,7 +379,7 @@ final public class MapPanel extends javax.swing.JPanel { popupMenu.add(new JSeparator()); } } - popupMenu.show(this, point.x, point.y); + popupMenu.show(mapViewer, point.x, point.y); } /** @@ -358,6 +409,8 @@ final public class MapPanel extends javax.swing.JPanel { currentPopup = popupFactory.getPopup(this, detailPane, popupLocation.x, popupLocation.y); currentPopup.show(); + + mapViewer.repaint(); } } @@ -484,8 +537,6 @@ final public class MapPanel extends javax.swing.JPanel { mapViewer = new org.jxmapviewer.JXMapViewer(); zoomPanel = new javax.swing.JPanel(); zoomSlider = new javax.swing.JSlider(); - infoPanel = new javax.swing.JPanel(); - cordLabel = new javax.swing.JLabel(); setFocusable(false); setLayout(new java.awt.BorderLayout()); @@ -552,13 +603,6 @@ final public class MapPanel extends javax.swing.JPanel { mapViewer.add(zoomPanel, gridBagConstraints); add(mapViewer, java.awt.BorderLayout.CENTER); - - infoPanel.setLayout(new java.awt.BorderLayout()); - - org.openide.awt.Mnemonics.setLocalizedText(cordLabel, org.openide.util.NbBundle.getMessage(MapPanel.class, "MapPanel.cordLabel.text")); // NOI18N - infoPanel.add(cordLabel, java.awt.BorderLayout.EAST); - - add(infoPanel, java.awt.BorderLayout.SOUTH); }// //GEN-END:initComponents private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_zoomSliderStateChanged @@ -581,20 +625,51 @@ final public class MapPanel extends javax.swing.JPanel { private void mapViewerMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mapViewerMouseMoved GeoPosition geopos = mapViewer.getTileFactory().pixelToGeo(evt.getPoint(), mapViewer.getZoom()); - cordLabel.setText(geopos.toString()); + firePropertyChange(CURRENT_MOUSE_GEOPOSITION, null, geopos); }//GEN-LAST:event_mapViewerMouseMoved private void mapViewerMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mapViewerMouseClicked - currentlySelectedWaypoint = findClosestWaypoint(evt.getPoint()); - showDetailsPopup(); + if(!evt.isPopupTrigger() && (evt.getButton() == MouseEvent.BUTTON1)) { + currentlySelectedWaypoint = findClosestWaypoint(evt.getPoint()); + showDetailsPopup(); + } }//GEN-LAST:event_mapViewerMouseClicked // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLabel cordLabel; - private javax.swing.JPanel infoPanel; private org.jxmapviewer.JXMapViewer mapViewer; private javax.swing.JPanel zoomPanel; private javax.swing.JSlider zoomSlider; // End of variables declaration//GEN-END:variables + + /** + * Renderer for the map waypoints. + */ + private class MapWaypointRenderer implements WaypointRenderer { + private final BufferedImage defaultWaypointImage; + private final BufferedImage selectedWaypointImage; + + /** + * Construct a WaypointRenederer + * + * @throws IOException + */ + MapWaypointRenderer() throws IOException { + defaultWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_teal.png")); + selectedWaypointImage = ImageIO.read(getClass().getResource("/org/sleuthkit/autopsy/images/waypoint_yellow.png")); + } + + @Override + public void paintWaypoint(Graphics2D gd, JXMapViewer jxmv, Waypoint waypoint) { + Point2D point = jxmv.getTileFactory().geoToPixel(waypoint.getPosition(), jxmv.getZoom()); + + int x = (int)point.getX(); + int y = (int)point.getY(); + + BufferedImage image = (waypoint == currentlySelectedWaypoint ? selectedWaypointImage: defaultWaypointImage); + + (gd.create()).drawImage(image, x -image.getWidth() / 2, y -image.getHeight(), null); + } + + } } diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java b/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java index 7a28f49737..61b4800d7a 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/MapWaypoint.java @@ -95,21 +95,21 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe return mapPoints; } - + /** - * Returns a list of of MapWaypoint objects for the given list of + * Returns a list of of MapWaypoint objects for the given list of * datamodel.Waypoint objects. - * + * * @param dmWaypoints - * - * @return List of MapWaypoint objects. List will be empty if dmWaypoints was - * empty or null. + * + * @return List of MapWaypoint objects. List will be empty if dmWaypoints + * was empty or null. */ static List getWaypoints(List dmWaypoints) { List mapPoints = new ArrayList<>(); if (dmWaypoints != null) { - + for (Waypoint point : dmWaypoints) { mapPoints.add(new MapWaypoint(point)); } @@ -118,6 +118,27 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe return mapPoints; } + /** + * Helper function to get a list of data model waypoints from a list of + * MapWaypoints. + * + * @param mapWaypoints + * + * @return A list of Waypoint objects, or empty list if mapWaypoints was + * null or empty. + */ + static List getDataModelWaypoints(List mapWaypoints) { + List waypoints = new ArrayList<>(); + + if (mapWaypoints != null) { + for (MapWaypoint point : mapWaypoints) { + waypoints.add(point.dataModelWaypoint); + } + } + + return waypoints; + } + /** * Returns a MapWaypoint without a reference to the datamodel waypoint. * @@ -271,20 +292,20 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe } return menuItems; } - - /** + + /** * Get the nicely formatted details for the given waypoint. - * - * @param point Waypoint object + * + * @param point Waypoint object * @param header String details header - * - * @return HTML formatted String of details for given waypoint + * + * @return HTML formatted String of details for given waypoint */ private String getFormattedDetails(Waypoint point) { StringBuilder result = new StringBuilder(); //NON-NLS - + result.append("").append(formatAttribute("Name", point.getLabel())); - + Long timestamp = point.getTimestamp(); if (timestamp != null) { result.append(formatAttribute("Timestamp", getTimeStamp(timestamp))); @@ -292,19 +313,19 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe result.append(formatAttribute("Latitude", point.getLatitude().toString())) .append(formatAttribute("Longitude", point.getLongitude().toString())); - + if (point.getAltitude() != null) { result.append(formatAttribute("Altitude", point.getAltitude().toString())); } List list = point.getOtherProperties(); - for(Waypoint.Property prop: list) { + for (Waypoint.Property prop : list) { String value = prop.getValue(); - if(value != null && !value.isEmpty()) { + if (value != null && !value.isEmpty()) { result.append(formatAttribute(prop.getDisplayName(), value)); } } - + result.append(""); return result.toString(); @@ -312,16 +333,16 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe /** * Format a title value pair. - * + * * @param title Title of the property * @param value Value of the property - * - * @return Formatted string with the title and value + * + * @return Formatted string with the title and value */ private String formatAttribute(String title, String value) { return String.format(HTML_PROP_FORMAT, title, value); } - + /** * Format a point time stamp (in seconds) to the report format. * @@ -333,7 +354,6 @@ final class MapWaypoint extends KdTree.XYZPoint implements org.jxmapviewer.viewe return DATE_FORMAT.format(new java.util.Date(timeStamp * 1000)); } - /** * An action class for Extracting artifact files. */ diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/BookmarkWaypoint.java b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/BookmarkWaypoint.java new file mode 100755 index 0000000000..08fdfeccb6 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/BookmarkWaypoint.java @@ -0,0 +1,78 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019 Basis Technology Corp. + * contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.geolocation.datamodel; + +import java.util.Map; +import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.BlackboardAttribute; + +/** + * Class to represent TSK_GPS_BOOKMARK waypoints + * + */ +final class BookmarkWaypoint extends Waypoint { + + /** + * Constructs a new BookmarkWaypoint from the given artifact. + * + * @param artifact BlackboardArtifact for this waypoint + * + * @throws GeoLocationDataException + */ + BookmarkWaypoint(BlackboardArtifact artifact) throws GeoLocationDataException { + this(artifact, getAttributesFromArtifactAsMap(artifact)); + } + + /** + * Constructs a new BookmarkWaypoint. + * + * @param artifact BlackboardArtifact for this waypoint + * @param attributeMap A Map of the BlackboardAttributes for the given + * artifact. + * + * @throws GeoLocationDataException + */ + private BookmarkWaypoint(BlackboardArtifact artifact, Map attributeMap) throws GeoLocationDataException { + super(artifact, + getLabelFromArtifact(attributeMap), + attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME).getValueLong() : null, + attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE).getValueDouble() : null, + attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE).getValueDouble() : null, + attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_ALTITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_ALTITUDE).getValueDouble() : null, + null, attributeMap, null); + } + + /** + * Gets the label for this waypoint. + * + * @param artifact BlackboardArtifact for waypoint + * + * @return Returns a label for the waypoint, or empty string if no label was + * found. + */ + private static String getLabelFromArtifact(Map attributeMap) { + BlackboardAttribute attribute = attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME); + if (attribute != null) { + return attribute.getDisplayString(); + } + + return ""; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Waypoint.java b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Waypoint.java index 27e5da0dbd..8cc35555eb 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Waypoint.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Waypoint.java @@ -50,10 +50,10 @@ public class Waypoint { final private List immutablePropertiesList; /** - * This is a list of attributes that are already being handled by the - * by getter functions. + * This is a list of attributes that are already being handled by the by + * getter functions. */ - static private BlackboardAttribute.ATTRIBUTE_TYPE[] ALREADY_HANDLED_ATTRIBUTES = { + static final private BlackboardAttribute.ATTRIBUTE_TYPE[] ALREADY_HANDLED_ATTRIBUTES = { BlackboardAttribute.ATTRIBUTE_TYPE.TSK_NAME, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE, @@ -65,19 +65,6 @@ public class Waypoint { BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE_END, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE_END,}; - /** - * Construct a waypoint with the given artifact. - * - * @param artifact BlackboardArtifact for this waypoint - * - * @throws GeoLocationDataException Exception will be thrown if artifact did - * not have a valid longitude and latitude. - */ - Waypoint(BlackboardArtifact artifact) throws GeoLocationDataException { - this(artifact, - getAttributesFromArtifactAsMap(artifact)); - } - /** * Constructor that initializes all of the member variables. * @@ -110,25 +97,6 @@ public class Waypoint { immutablePropertiesList = Collections.unmodifiableList(createGeolocationProperties(attributeMap)); } - /** - * Constructs a new ArtifactWaypoint. - * - * @param artifact BlackboardArtifact for this waypoint - * @param attributeMap A Map of the BlackboardAttributes for the given - * artifact. - * - * @throws GeoLocationDataException - */ - private Waypoint(BlackboardArtifact artifact, Map attributeMap) throws GeoLocationDataException { - this(artifact, - getLabelFromArtifact(attributeMap), - attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME).getValueLong() : null, - attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LATITUDE).getValueDouble() : null, - attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_LONGITUDE).getValueDouble() : null, - attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_ALTITUDE) != null ? attributeMap.get(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_GEO_ALTITUDE).getValueDouble() : null, - null, attributeMap, null); - } - /** * Get the BlackboardArtifact that this waypoint represents. * @@ -205,11 +173,12 @@ public class Waypoint { public List getOtherProperties() { return immutablePropertiesList; } - + /** * Returns the route that this waypoint is apart of . - * - * @return The waypoint route or null if the waypoint is not apart of a route. + * + * @return The waypoint route or null if the waypoint is not apart of a + * route. */ public Route getRoute() { return route; diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/WaypointBuilder.java b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/WaypointBuilder.java index 7189302809..86539412be 100755 --- a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/WaypointBuilder.java +++ b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/WaypointBuilder.java @@ -45,7 +45,7 @@ public final class WaypointBuilder { = "SELECT artifact_id, artifact_type_id " + "FROM blackboard_attributes " + "WHERE attribute_type_id IN (%d, %d) "; //NON-NLS - + // SELECT statement to get only artifact_ids final static String GEO_ARTIFACT_QUERY_ID_ONLY = "SELECT artifact_id " @@ -70,8 +70,8 @@ public final class WaypointBuilder { + " )"; // Returns a list of artifacts with no time stamp - final static String SELECT_WO_TIMESTAMP = - "SELECT DISTINCT artifact_id, artifact_type_id " + final static String SELECT_WO_TIMESTAMP + = "SELECT DISTINCT artifact_id, artifact_type_id " + "FROM blackboard_attributes " + "WHERE artifact_id NOT IN (%s) " + "AND artifact_id IN (%s)"; //NON-NLS @@ -121,6 +121,25 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of routes from the given list of waypoints. + * + * @param waypoints A list of waypoints + * + * @return A list of routes or an empty list if none were found. + */ + public static List getRoutes(List waypoints) { + List routeList = new ArrayList<>(); + for (Waypoint point : waypoints) { + Route route = point.getRoute(); + if (route != null && !routeList.contains(route)) { + routeList.add(route); + } + } + + return routeList; + } + /** * Gets a list of Waypoints for TSK_GPS_TRACKPOINT artifacts. * @@ -150,6 +169,25 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of waypoints that come from TSK_GEO_TRACKPOINT artifacts. + * + * @param waypoints A list of waypoints + * + * @return A list of trackpoint waypoints or empty list if none were found. + */ + public static List getTrackpointWaypoints(List waypoints) { + List specificPoints = new ArrayList<>(); + + for (Waypoint point : waypoints) { + if (point instanceof TrackpointWaypoint) { + specificPoints.add(point); + } + } + + return specificPoints; + } + /** * Gets a list of Waypoints for TSK_METADATA_EXIF artifacts. * @@ -183,6 +221,25 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of waypoints that come from TSK_METADATA_EXIF artifacts. + * + * @param waypoints A list of waypoints + * + * @return A list of trackpoint waypoints or empty list if none were found. + */ + public static List getEXIFWaypoints(List waypoints) { + List specificPoints = new ArrayList<>(); + + for (Waypoint point : waypoints) { + if (point instanceof EXIFWaypoint) { + specificPoints.add(point); + } + } + + return specificPoints; + } + /** * Gets a list of Waypoints for TSK_GPS_SEARCH artifacts. * @@ -214,6 +271,25 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of waypoints that come from TSK_GPS_SEARCH artifacts. + * + * @param waypoints A list of waypoints + * + * @return A list of trackpoint waypoints or empty list if none were found. + */ + public static List getSearchWaypoints(List waypoints) { + List specificPoints = new ArrayList<>(); + + for (Waypoint point : waypoints) { + if (point instanceof SearchWaypoint) { + specificPoints.add(point); + } + } + + return specificPoints; + } + /** * Gets a list of Waypoints for TSK_GPS_LAST_KNOWN_LOCATION artifacts. * @@ -245,6 +321,26 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of waypoints that come from TSK_GPS_LAST_KNOWN_LOCATION + * artifacts. + * + * @param waypoints A list of waypoints + * + * @return A list of trackpoint waypoints or empty list if none were found. + */ + public static List getLastKnownWaypoints(List waypoints) { + List specificPoints = new ArrayList<>(); + + for (Waypoint point : waypoints) { + if (point instanceof LastKnownWaypoint) { + specificPoints.add(point); + } + } + + return specificPoints; + } + /** * Gets a list of Waypoints for TSK_GPS_BOOKMARK artifacts. * @@ -266,7 +362,7 @@ public final class WaypointBuilder { if (artifacts != null) { for (BlackboardArtifact artifact : artifacts) { try { - Waypoint point = new Waypoint(artifact); + Waypoint point = new BookmarkWaypoint(artifact); points.add(point); } catch (GeoLocationDataException ex) { logger.log(Level.WARNING, String.format("No longitude or latitude available for TSK_GPS_BOOKMARK artifactID: %d", artifact.getArtifactID()), ex);//NON-NLS @@ -276,6 +372,26 @@ public final class WaypointBuilder { return points; } + /** + * Returns a list of waypoints that come from TSK_GPS_LAST_KNOWN_LOCATION + * artifacts. + * + * @param waypoints A list of waypoints + * + * @return A list of trackpoint waypoints or empty list if none were found. + */ + public static List getBookmarkWaypoints(List waypoints) { + List specificPoints = new ArrayList<>(); + + for (Waypoint point : waypoints) { + if (point instanceof BookmarkWaypoint) { + specificPoints.add(point); + } + } + + return specificPoints; + } + /** * Get a filtered list of waypoints. * @@ -386,7 +502,7 @@ public final class WaypointBuilder { String mostRecentQuery = ""; if (!showAll && cntDaysFromRecent > 0) { - mostRecentQuery = String.format("AND value_int64 > (%s)", //NON-NLS + mostRecentQuery = String.format("AND value_int64 > (%s)", //NON-NLS String.format(MOST_RECENT_TIME, cntDaysFromRecent, BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME.getTypeID(), @@ -464,7 +580,7 @@ public final class WaypointBuilder { waypoints.add(new EXIFWaypoint(artifact)); break; case TSK_GPS_BOOKMARK: - waypoints.add(new Waypoint(artifact)); + waypoints.add(new BookmarkWaypoint(artifact)); break; case TSK_GPS_TRACKPOINT: waypoints.add(new TrackpointWaypoint(artifact)); @@ -477,8 +593,7 @@ public final class WaypointBuilder { waypoints.addAll(route.getRoute()); break; default: - waypoints.add(new Waypoint(artifact)); - break; + throw new GeoLocationDataException(String.format("Unable to create waypoint for artifact of type %s", type.toString())); } return waypoints; diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties new file mode 100644 index 0000000000..20895b6374 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties @@ -0,0 +1,3 @@ +StatusIconCellRenderer.tooltiptext.error=\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +StatusIconCellRenderer.tooltiptext.ok=OK +StatusIconCellRenderer.tooltiptext.warning=\u8b66\u544a\u304c\u767a\u751f\u3057\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties new file mode 100644 index 0000000000..ec245205c5 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties @@ -0,0 +1,28 @@ +HealthMonitorDashboard.createAdminPanel.disableButton=\u30e2\u30cb\u30bf\u30fc\u3092\u7121\u52b9\u5316 +HealthMonitorDashboard.createAdminPanel.enableButton=\u30e2\u30cb\u30bf\u30fc\u3092\u6709\u52b9\u5316 +HealthMonitorDashboard.createTimingControlPanel.filterByHost=\u30db\u30b9\u30c8\u5225\u306b\u30d5\u30a3\u30eb\u30bf\u30fc +HealthMonitorDashboard.createTimingControlPanel.maxDays=\u6700\u5927\u8868\u793a\u65e5\u6570 +HealthMonitorDashboard.createTimingControlPanel.showTrendLine=\u30c8\u30ec\u30f3\u30c9\u30e9\u30a4\u30f3\u3092\u8868\u793a +HealthMonitorDashboard.createTimingControlPanel.skipOutliers=\u5916\u308c\u5024\u3092\u30d7\u30ed\u30c3\u30c8\u3057\u306a\u3044 +HealthMonitorDashboard.createTimingPanel.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 - \u30e2\u30cb\u30bf\u30fc\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +HealthMonitorDashboard.createTimingPanel.timingMetricsTitle=\u30bf\u30a4\u30df\u30f3\u30b0\u6307\u6a19 +HealthMonitorDashboard.createUserControlPanel.maxDays=\u6700\u5927\u8868\u793a\u65e5\u6570 +HealthMonitorDashboard.createUserPanel.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 - \u30e2\u30cb\u30bf\u30fc\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +HealthMonitorDashboard.createUserPanel.userMetricsTitle=\u30e6\u30fc\u30b6\u30fc\u6307\u6a19 +HealthMonitorDashboard.DateRange.oneDay=1\u65e5 +HealthMonitorDashboard.DateRange.oneMonth=1\u30f5\u6708 +HealthMonitorDashboard.DateRange.oneWeek=1\u9031\u9593 +HealthMonitorDashboard.DateRange.twoWeeks=2\u9031\u9593 +HealthMonitorDashboard.display.dashboardTitle=\u6b63\u5e38\u6027\u30e2\u30cb\u30bf\u30fc +HealthMonitorDashboard.display.errorCreatingDashboard=\u6b63\u5e38\u6027\u30e2\u30cb\u30bf\u30fc\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HealthMonitorDashboard.updateTimingMetricGraphs.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 +HealthMonitorDashboard.updateUserMetricGraphs.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 +TimeZonePanel.title=\u6b21\u306e\u5358\u4f4d\u3067\u6642\u523b\u3092\u8868\u793a: +TimingMetricGraphPanel.paintComponent.hours=\u6642 +TimingMetricGraphPanel.paintComponent.microseconds=\u30de\u30a4\u30af\u30ed\u79d2 +TimingMetricGraphPanel.paintComponent.milliseconds=\u30df\u30ea\u79d2 +TimingMetricGraphPanel.paintComponent.minutes=\u5206 +TimingMetricGraphPanel.paintComponent.nanoseconds=\u30ca\u30ce\u79d2 +TimingMetricGraphPanel.paintComponent.seconds=\u79d2 +UserMetricGraphPanel.constructor.casesOpen=\u30b1\u30fc\u30b9\u304c\u958b\u3044\u3066\u3044\u307e\u3059 +UserMetricGraphPanel.constructor.loggedIn=Users logged in - \u8abf\u67fb\u54e1\u30ce\u30fc\u30c9\u306f\u9752\u8272\u3067\u3001\u81ea\u52d5\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30ce\u30fc\u30c9\u306f\u7dd1\u8272\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/images/discovery-icon-24.png b/Core/src/org/sleuthkit/autopsy/images/discovery-icon-24.png new file mode 100644 index 0000000000..6ae4e602dc Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/discovery-icon-24.png differ diff --git a/Core/src/org/sleuthkit/autopsy/images/pool-icon.png b/Core/src/org/sleuthkit/autopsy/images/pool-icon.png new file mode 100644 index 0000000000..7300066c2d Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/pool-icon.png differ diff --git a/Core/src/org/sleuthkit/autopsy/images/waypoint_teal.png b/Core/src/org/sleuthkit/autopsy/images/waypoint_teal.png new file mode 100755 index 0000000000..3860d1973c Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/waypoint_teal.png differ diff --git a/Core/src/org/sleuthkit/autopsy/images/waypoint_yellow.png b/Core/src/org/sleuthkit/autopsy/images/waypoint_yellow.png new file mode 100755 index 0000000000..1cd715c101 Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/waypoint_yellow.png differ diff --git a/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ja.properties new file mode 100644 index 0000000000..2a979c7f04 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/imagewriter/Bundle_ja.properties @@ -0,0 +1,10 @@ +# \u3053\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3] \u3067 [\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc] \u3092\u9078\u629e\u3057\u307e\u3059\u3002 +# \u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb | \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] \u3092\u9078\u629e\u3057\u3001 +# \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u958b\u304d\u307e\u3059\u3002 + +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +ImageWriter.progressBar.message=Finishing acquisition of {0} \u306e\u53d6\u5f97\u3092\u5b8c\u4e86\u4e2d\u3067\u3059(\u53d6\u308a\u6d88\u3059\u306b\u306f\u30c7\u30d0\u30a4\u30b9\u306e\u96fb\u6e90\u30d7\u30e9\u30b0\u3092\u629c\u304d\u307e\u3059) +ImageWriterService.serviceName=\u30a4\u30e1\u30fc\u30b8\u30e9\u30a4\u30bf\u30fc +ImageWriterService.waitingForVHDs=VHD\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u3066\u3044\u307e\u3059 +ImageWriterService.shouldWait=\u9032\u884c\u4e2d\u306eVHD\u304c\u5b8c\u4e86\u3059\u308b\u306e\u3092\u5f85\u3063\u3066\u3044\u307e\u3059 +ImageWriterService.localDisk=\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u30b3\u30d4\u30fc diff --git a/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties index 2fc82d0dd9..215b536e3d 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties @@ -1,117 +1,157 @@ +CTL_RunIngestAction=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c +IngestJobSettingsPanel.IngestModulesTableRenderer.info.message=\u4ee5\u524d\u306b\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u4e0a\u3067\u3053\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002 +IngestJobSettingsPanel.IngestModulesTableRenderer.warning.message=\u4ee5\u524d\u306b\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u4e0a\u3067\u3053\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002 +IngestJobSettingsPanel.noPerRunSettings=\u9078\u629e\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u5b9f\u884c\u3054\u3068\u306e\u8a2d\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +IngestJobSettingsPanel.pastJobsButton.action.frame.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5c65\u6b74 +IngestManager.startupErr.dlgErrorList=\u30a8\u30e9\u30fc: +IngestManager.startupErr.dlgMsg=1\u3064\u4ee5\u4e0a\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +IngestManager.startupErr.dlgSolution=\u5931\u6557\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u306b\u3059\u308b\u304b\u3001\u30a8\u30e9\u30fc\u3092\u4fee\u6b63\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +IngestManager.startupErr.dlgTitle=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8d77\u52d5\u5931\u6557 +IngestOptionsPanel.fileFiltersTab.text=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc +IngestOptionsPanel.fileFiltersTab.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f5c\u6210\u304a\u3088\u3073\u7de8\u96c6\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3067\u3059\u3002 +IngestOptionsPanel.profilesTab.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +IngestOptionsPanel.profilesTab.toolTipText=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u304a\u3088\u3073\u7de8\u96c6\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3067\u3059\u3002 +IngestOptionsPanel.settingsTab.text=\u8a2d\u5b9a +IngestOptionsPanel.settingsTab.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u63d0\u4f9b\u53ef\u80fd\u306a\u30ea\u30bd\u30fc\u30b9\u306b\u95a2\u3059\u308b\u8a2d\u5b9a\u3067\u3059\u3002 +OpenIDE-Module-Name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +Menu/Tools/RunIngestModules=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c CTL_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8 HINT_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8\u30a6\u30a3\u30f3\u30c9\u30a6 -IngestDialog.closeButton.title=\u9589\u3058\u308b -IngestDialog.startButton.title=\u958b\u59cb -IngestJob.progress.cancelling=\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026 -IngestJob.progress.dataSourceIngest.displayName={1}\u306e{0} -IngestJob.progress.fileIngest.displayName={0}\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u4e2d -IngestManager.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -IngestManager.moduleErr.errListenToUpdates.msg=Ingest Manager\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\u3092\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 -IngestManager.StartIngestJobsTask.run.cancelling={0}\uff08\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026\uff09 -IngestManager.StartIngestJobsTask.run.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u958b\u59cb\u4e2d -IngestMessage.exception.srcSubjDetailsDataNotNull.msg=\u30bd\u30fc\u30b9\u3001\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u8a73\u7d30\u304a\u3088\u3073\u30c7\u30fc\u30bf\u306f\u30cc\u30eb\u3067\u306f\u3044\u3051\u307e\u305b\u3093 -IngestMessage.exception.srcSubjNotNull.msg=\u30bd\u30fc\u30b9\u304a\u3088\u3073\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30cc\u30eb\u3067\u306f\u3044\u3051\u307e\u305b\u3093 -IngestMessage.exception.typeSrcSubjNotNull.msg=\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u3001\u30bd\u30fc\u30b9\u304a\u3088\u3073\u30b5\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30cc\u30eb\u3067\u306f\u3044\u3051\u307e\u305b\u3093 -IngestMessage.toString.data.text=\ \u30c7\u30fc\u30bf\uff1a{0} -IngestMessage.toString.date.text=\ \u65e5\u4ed8\uff1a{0} -IngestMessage.toString.details.text=\ \u8a73\u7d30\uff1a{0} -IngestMessage.toString.subject.text=\ \u30b5\u30d6\u30b8\u30a7\u30af\u30c8\uff1a{0} -IngestMessage.toString.type.text=\u30bf\u30a4\u30d7\uff1a{0} +IngestMessageDetailsPanel.backButton.text= +IngestMessageDetailsPanel.viewArtifactButton.text=\u7d50\u679c\u306b\u79fb\u52d5 +IngestMessageDetailsPanel.viewContentButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u79fb\u52d5 +IngestMessagePanel.sortByLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8: +IngestMessagePanel.sortByComboBox.toolTipText=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6642\u9593(\u6642\u7cfb\u5217\u9806)\u307e\u305f\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u512a\u5148\u5ea6\u3067\u30bd\u30fc\u30c8 +IngestMessageDetailsPanel.messageDetailsPane.contentType=\u30c6\u30ad\u30b9\u30c8/html +IngestMessageDetailsPanel.messageDetailsPane.toolTipText= +IngestMessagesToolbar.toolTipText= IngestMessageDetailsPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -IngestMessageDetailsPanel.messageDetailsPane.contentType=\u30c6\u30ad\u30b9\u30c8\uff0fhtml -IngestMessageDetailsPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e -IngestMessageDetailsPanel.viewArtifactButton.text=\u7d50\u679c\u3078\u79fb\u52d5 -IngestMessageDetailsPanel.viewContentButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3078\u79fb\u52d5 -IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=\u30d6\u30fc\u30eb\u5024\u3067\u306f\u306a\u3044\u3082\u306e\u306bBooleanRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -IngestMessagePanel.DateRenderer.exception.nonDateVal.text=\u65e5\u4ed8\u3067\u306f\u306a\u3044\u3082\u306e\u306bDateRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002 -IngestMessagePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -IngestMessagePanel.moduleErr.errListenUpdates.text=IngestMessagePanel\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\u3092\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 -IngestMessagePanel.MsgTableMod.colNames.module=\u30e2\u30b8\u30e5\u30fc\u30eb -IngestMessagePanel.MsgTableMod.colNames.new=\u65b0\u898f\uff1f -IngestMessagePanel.MsgTableMod.colNames.num=\u756a\u53f7 -IngestMessagePanel.MsgTableMod.colNames.subject=\u30b5\u30d6\u30b8\u30a7\u30af\u30c8 -IngestMessagePanel.MsgTableMod.colNames.timestamp=\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 -IngestMessagePanel.sortByComboBox.model.priority=\u512a\u5148\u5ea6 -IngestMessagePanel.sortByComboBox.model.time=\u6642\u9593 -IngestMessagePanel.sortByComboBox.toolTipText=\u6642\u9593\u9806\uff08\u6642\u7cfb\u5217\uff09\u307e\u305f\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u512a\u5148\u5ea6\u3067\u30bd\u30fc\u30c8 -IngestMessagePanel.sortByLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8\uff1a -IngestMessagePanel.totalMessagesNameLabel.text=\u5408\u8a08\uff1a +IngestMessageDetailsPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e +IngestMessageTopComponent.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 +IngestMessagePanel.totalMessagesNameLabel.text=\u5408\u8a08: IngestMessagePanel.totalMessagesNameVal.text=- -IngestMessagePanel.totalUniqueMessagesNameLabel.text=\u30e6\u30cb\u30fc\u30af\uff1a +IngestMessagePanel.totalUniqueMessagesNameLabel.text=\u4e00\u610f: IngestMessagePanel.totalUniqueMessagesNameVal.text=- -IngestMessagesToolbar.customizeButton.toolTipText=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestMessageTopComponent.displayName=\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestMessageTopComponent.displayReport.option.GenRpt=\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210 +IngestJob.progress.dataSourceIngest.initialDisplayName={0} \u3092\u89e3\u6790\u4e2d\u3067\u3059 +IngestJob.progress.dataSourceIngest.displayName={1} \u306e {0} +IngestJob.progress.fileIngest.displayName={0} \u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u4e2d\u3067\u3059 +IngestJob.progress.cancelling=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059... +IngestJob.cancellationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 +IngestDialog.startButton.title=\u958b\u59cb +IngestDialog.closeButton.title=\u7d42\u4e86 +IngestManager.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +IngestManager.moduleErr.errListenToUpdates.msg=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +IngestMessage.toString.type.text=\u30bf\u30a4\u30d7: {0} +IngestMessage.toString.date.text=\ \u65e5\u4ed8: {0} +IngestMessage.toString.subject.text=\ \u4ef6\u540d: {0} +IngestMessage.toString.details.text=\ \u8a73\u7d30: {0} +IngestMessage.toString.date.text=\ \u30c7\u30fc\u30bf: {0} +IngestMessage.exception.typeSrcSubjNotNull.msg=\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u3001\u30bd\u30fc\u30b9\u304a\u3088\u3073\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessage.exception.srcSubjNotNull.msg=\u30bd\u30fc\u30b9\u3068\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessage.exception.srcSubjDetailsDataNotNull.msg=\u30bd\u30fc\u30b9\u3001\u4ef6\u540d\u3001\u8a73\u7d30\u304a\u3088\u3073\u30c7\u30fc\u30bf\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessagePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +IngestMessagePanel.moduleErr.errListenUpdates.text=IngestMessagePanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +IngestMessagePanel.MsgTableMod.colNames.module=\u30e2\u30b8\u30e5\u30fc\u30eb +IngestMessagePanel.MsgTableMod.colNames.num=\u6570\u5b57 +IngestMessagePanel.MsgTableMod.colNames.new=\u65b0\u898f? +IngestMessagePanel.MsgTableMod.colNames.subject=\u4ef6\u540d +IngestMessagePanel.MsgTableMod.colNames.timestamp=\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 +IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=\u30d6\u30fc\u30eb\u5024\u4ee5\u5916\u306e\u5024\u3067BooleanRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 +IngestMessagePanel.DateRenderer.exception.nonDateVal.text=\u65e5\u4ed8\u5024\u4ee5\u5916\u306e\u5024\u3067DateRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 IngestMessageTopComponent.displayReport.option.OK=OK -IngestMessageTopComponent.initComponents.name=\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestMessageTopComponent.msgDlg.ingestRpt.text=\u30ec\u30dd\u30fc\u30c8\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestMonitor.mgrErrMsg.lowDiskSpace.msg=\u30c7\u30a3\u30b9\u30af{0}\u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u4e0d\u8db3\u306e\u305f\u3081\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u4e2d\u6b62\u3057\u307e\u3059\u3002\n\u30b1\u30fc\u30b9\u30c9\u30e9\u30a4\u30d6\u306b\u6700\u4f4e1GB\u306e\u7a7a\u304d\u9818\u57df\u304c\u3042\u308b\u306e\u3092\u78ba\u8a8d\u3057\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u3066\u4e0b\u3055\u3044\u3002 -IngestMonitor.mgrErrMsg.lowDiskSpace.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u4e2d\u6b62\u3055\u308c\u307e\u3057\u305f\u30fc{0}\u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u4e0d\u8db3 -OpenIDE-Module-Name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestManager.StartIngestJobsTask.run.startupErr.dlgErrorList=\n\u30a8\u30e9\u30fc\uff1a\n{0} -IngestManager.StartIngestJobsTask.run.startupErr.dlgMsg=\u5358\u6570\u307e\u305f\u306f\u8907\u6570\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30b9\u30bf\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u306f\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\u3002 -IngestManager.StartIngestJobsTask.run.startupErr.dlgSolution=\u5931\u6557\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u5316\u3059\u308b\u304b\u30a8\u30e9\u30fc\u3092\u89e3\u6c7a\u3057\u3001\u305d\u306e\u5f8c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001\n\u300c\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u5b9f\u884c\u300d\u3092\u9078\u629e\u3057\u3066\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u3066\u4e0b\u3055\u3044\u3002 -IngestManager.StartIngestJobsTask.run.startupErr.dlgTitle=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5931\u6557 -IngestJobSettings.createModuleSettingsFolder.warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002 -IngestJob.progress.dataSourceIngest.initialDisplayName={0}\u3092\u89e3\u6790\u4e2d -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=\u7d4c\u904e\u6642\u9593\uff08\u6642\uff1a\u5206\uff1a\u79d2\uff09 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file=\u30d5\u30a1\u30a4\u30eb -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=\u958b\u59cb\u6642\u9593 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=\u30b9\u30ec\u30c3\u30c9ID -IngestManager.IngestMessage.ErrorMessageLimitReached.msg=\u6700\u5927\u6570({0})\u306e\u30a8\u30e9\u30fc\u304a\u3088\u3073\u307e\u305f\u306f\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u63b2\u8f09\u3055\u308c\u307e\u3057\u305f\u3002\u3055\u3089\u306a\u308b\u30a8\u30e9\u30fc\uff0f\u8b66\u544a\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\uff08\u30d8\u30eb\u30d7->\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f\uff09 -IngestManager.IngestMessage.ErrorMessageLimitReached.subject=\u6700\u5927\u6570\u306e\u30a8\u30e9\u30fc\u304c\u63b2\u8f09\u3055\u308c\u307e\u3057\u305f -IngestManager.IngestMessage.ErrorMessageLimitReached.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30b8\u30e3\u30fc -IngestManager.IngestThreadActivitySnapshot.idleThread=\u30a2\u30a4\u30c9\u30eb -IngestProgressSnapshotDialog.title.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30b0\u30ec\u30b9\u30fb\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 -IngestProgressSnapshotPanel.closeButton.text=\u9589\u3058\u308b -IngestProgressSnapshotPanel.refreshButton.text=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.activity=\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 -ModuleTableModel.colName.duration=\u6240\u8981\u6642\u9593 -IngestJob.cancellationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb -IngestJobSettings.missingModule.warning=\u4ee5\u524d\u306b\u8aad\u307f\u8fbc\u3093\u3060{0}\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -DataSourceIngestCancellationPanel.cancelAllModulesRadioButton.text=\u5168\u3066\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30ad\u30e3\u30f3\u30bb\u30eb -DataSourceIngestCancellationPanel.cancelCurrentModuleRadioButton.text=\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u307f\u30ad\u30e3\u30f3\u30bb\u30eb -FileIngestCancellationPanel.cancelFileIngestRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u307f\u30ad\u30e3\u30f3\u30bb\u30eb -FileIngestCancellationPanel.cancelIngestJobRadioButton.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304a\u3088\u3073\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb -IngestJobSettings.moduleSettingsLoad.warning={1}\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e{0}\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002 -IngestJobSettings.save.warning={0}\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -IngestJobTableModel.colName.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 -IngestJobTableModel.colName.dirQueued=\u30ad\u30e5\u30fc\u3055\u308c\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea -IngestJobTableModel.colName.filesPerSec=\u30d5\u30a1\u30a4\u30eb\uff0f\u79d2 -IngestJobTableModel.colName.filesQueued=\u30ad\u30e5\u30fc\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb -IngestJobTableModel.colName.inProgress=\u51e6\u7406\u4e2d -IngestJobTableModel.colName.jobID=\u30b8\u30e7\u30d6ID -IngestJobTableModel.colName.numProcessed=\u51e6\u7406\u3055\u308c\u305f\u6570 -IngestJobTableModel.colName.rootQueued=\u30ad\u30e5\u30fc\u3055\u308c\u305f\u30eb\u30fc\u30c8 -IngestJobTableModel.colName.start=\u30b9\u30bf\u30fc\u30c8 -IngestModuleFactoryLoader.errorMessages.duplicateDisplayName=\u5225\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u540d\u524d\u3092\u91cd\u8907\u3059\u308b\u3001{0}\u306e\u540d\u524d\u3092\u6301\u3064\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u4f7f\u7528\u3057\u307e\u305b\u3093\u3002 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.jobID=\u30b8\u30e7\u30d6ID -ModuleTableModel.colName.module=\u30e2\u30b8\u30e5\u30fc\u30eb - -Menu/Tools/RunIngestModules=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c -IngestManager.OpenEventChannel.Fail.ErrMsg=\u3053\u306e\u30b1\u30fc\u30b9\u3067\u4f7f\u308f\u308c\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u4ed6\u306e\u30ce\u30fc\u30c9\u306b\u89e3\u6790\u30d7\u30ed\u30bb\u30b9\u304c\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestMessageTopComponent.displayReport.option.GenRpt=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 +IngestMessageTopComponent.msgDlg.ingestRpt.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30ec\u30dd\u30fc\u30c8 +IngestMonitor.mgrErrMsg.lowDiskSpace.title=Ingest stopped - {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059 +IngestMonitor.mgrErrMsg.lowDiskSpace.msg=\u30c7\u30a3\u30b9\u30af {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u4e2d\u6b62\u3057\u307e\u3057\u305f\u3002\n\u30b1\u30fc\u30b9\u306e\u30c9\u30e9\u30a4\u30d6\u306e\u7a7a\u304d\u9818\u57df\u304c\u5c11\u306a\u304f\u30681GB\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +IngestManager.StartIngestJobsTask.run.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u8d77\u52d5\u4e2d\u3067\u3059 +IngestManager.StartIngestJobsTask.run.cancelling={0} (\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) +IngestMessagePanel.sortByComboBox.model.time=\u6642\u523b +IngestMessagePanel.sortByComboBox.model.priority=\u512a\u5148\u5ea6 +IngestMessagesToolbar.customizeButton.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8 +IngestMessageTopComponent.initComponents.name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 +IngestManager.OpenEventChannel.Fail.ErrMsg=\u30b1\u30fc\u30b9\u3067\u9023\u643a\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u305d\u306e\u4ed6\u306e\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 IngestManager.OpenEventChannel.Fail.Title=\u63a5\u7d9a\u5931\u6557 -IngestJobSettings.moduleSettingsSave.warning={1}\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e{0}\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -IngestJobTableModel.colName.dsQueued=\u30ad\u30e5\u30fc\u3055\u308c\u305fDS -IngestJobSettingsPanel.jButtonSelectAll.text=\u5168\u3066\u9078\u629e -IngestJobSettingsPanel.jButtonDeselectAll.text=\u5168\u3066\u9078\u629e\u89e3\u9664 -IngestManager.cancellingIngest.msgDlg.text=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d -IngestManager.serviceIsDown.msgDlg.text={0}\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 -RunIngestSubMenu.menuItem.empty=\u30fc\u7a7a\u767d\u30fc +IngestJobSettings.createModuleSettingsFolder.warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002 +IngestJobSettings.missingModule.warning=\u4ee5\u524d\u306b\u8aad\u307f\u8fbc\u3093\u3060 {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestJobSettings.save.warning={0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestJobSettings.moduleSettingsLoad.warning=\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3067\u3001{1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +IngestJobSettings.moduleSettingsSave.warning={1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +IngestProgressSnapshotDialog.title.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u9032\u6357\u72b6\u6cc1\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +IngestProgressSnapshotPanel.refreshButton.text=\u66f4\u65b0 +IngestProgressSnapshotPanel.closeButton.text=\u7d42\u4e86 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=\u30b9\u30ec\u30c3\u30c9ID +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.activity=\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file=\u30d5\u30a1\u30a4\u30eb +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=\u958b\u59cb\u6642\u523b +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=\u7d4c\u904e\u6642\u9593(H:M:S) +IngestManager.IngestThreadActivitySnapshot.idleThread=\u30a2\u30a4\u30c9\u30eb\u4e2d +IngestManager.IngestMessage.ErrorMessageLimitReached.subject=\u63d0\u793a\u3055\u308c\u305f\u6700\u5927\u30a8\u30e9\u30fc\u6570 +IngestManager.IngestMessage.ErrorMessageLimitReached.msg=\u63d0\u793a\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304a\u3088\u3073/\u307e\u305f\u306f\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5927\u6570 ({0}) \u3067\u3059\u3002\u305d\u306e\u4ed6\u306e\u30a8\u30e9\u30fc/\u8b66\u544a\u306f\u3001\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044([\u30d8\u30eb\u30d7] -> [\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f])\u3002 +IngestManager.IngestMessage.ErrorMessageLimitReached.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc +IngestModuleFactoryLoader.errorMessages.duplicateDisplayName={0} \u306e\u540d\u524d\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u5225\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u3068\u91cd\u8907\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002 +DataSourceIngestCancellationPanel.cancelCurrentModuleRadioButton.text=\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 +FileIngestCancellationPanel.cancelIngestJobRadioButton.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 +FileIngestCancellationPanel.cancelFileIngestRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 +DataSourceIngestCancellationPanel.cancelAllModulesRadioButton.text=\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u53d6\u308a\u6d88\u3059 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.jobID=\u30b8\u30e7\u30d6ID +IngestJobTableModel.colName.jobID=\u30b8\u30e7\u30d6ID +IngestJobTableModel.colName.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +IngestJobTableModel.colName.start=\u958b\u59cb +IngestJobTableModel.colName.numProcessed=\u51e6\u7406\u3057\u305f\u6570 +IngestJobTableModel.colName.filesPerSec=\u30d5\u30a1\u30a4\u30eb/\u79d2 +IngestJobTableModel.colName.inProgress=\u9032\u884c\u4e2d +IngestJobTableModel.colName.filesQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30d5\u30a1\u30a4\u30eb +IngestJobTableModel.colName.dirQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +IngestJobTableModel.colName.rootQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30eb\u30fc\u30c8 +IngestJobTableModel.colName.dsQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +ModuleTableModel.colName.module=\u30e2\u30b8\u30e5\u30fc\u30eb +ModuleTableModel.colName.duration=\u671f\u9593 +IngestJobSettingsPanel.jButtonSelectAll.text=\u3059\u3079\u3066\u3092\u9078\u629e +IngestJobSettingsPanel.jButtonDeselectAll.text=\u3059\u3079\u3066\u306e\u9078\u629e\u3092\u89e3\u9664 +IngestManager.cancellingIngest.msgDlg.text=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u3059\u3079\u3066\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059 +IngestManager.serviceIsDown.msgDlg.text={0} \u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ProfilePanel.messages.profileNameContainsIllegalCharacter=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059 +ProfilePanel.messages.profilesMustBeNamed=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +ProfilePanel.newProfileText=NewEmptyProfile +ProfilePanel.profileDescLabel.text=\u8aac\u660e: +ProfilePanel.profileNameLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d: +ProfilePanel.title.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +ProfileSettingsPanel.deleteProfileButton.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664 +# {0} - \u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d +ProfileSettingsPanel.doFileSetsDialog.duplicateProfile.text={0} \u306e\u540d\u524d\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +ProfileSettingsPanel.editProfileButton.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6 +ProfileSettingsPanel.filterNameLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc: +ProfileSettingsPanel.infoTextArea.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u4e00\u90e8\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u4e0a\u3067\u4e8b\u524d\u69cb\u6210\u6e08\u307f\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30bb\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u4e0a\u3067\u540c\u3058\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30bb\u30c3\u30c8\u3092\u983b\u7e41\u306b\u5b9f\u884c\u3059\u308b\u5834\u5408\u306f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ProfileSettingsPanel.messages.filterLoadFailed=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f +ProfileSettingsPanel.newProfileButton.text=\u65b0\u898f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +ProfileSettingsPanel.profileDescLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u8aac\u660e: +ProfileSettingsPanel.profileListLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb: +ProfileSettingsPanel.selectedModulesLabel.text=\u9078\u629e\u3057\u305f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb: +ProfileSettingsPanel.title=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u8a2d\u5b9a +RunIngestSubMenu.menuItem.empty=-\u7a7a(\u672a\u5165\u529b)- RunIngestModulesMenu.getName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c -DataSourceIngestPipeline.moduleError.title.text={0}\u30a8\u30e9\u30fc -FileIngestPipeline.moduleError.title.text={0}\u30a8\u30e9\u30fc -IngestJob.cancelReason.notCancelled.text=\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -IngestJob.cancelReason.cancelledByUser.text=\u30e6\u30fc\u30b6\u30fc\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u307e\u3057\u305f -IngestJob.cancelReason.ingestModStartFail.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8d77\u52d5\u306b\u5931\u6557 -IngestJob.cancelReason.outOfDiskSpace.text=\u30c7\u30a3\u30b9\u30af\u30b9\u30da\u30fc\u30b9\u304c\u8db3\u308a\u307e\u305b\u3093 +DataSourceIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc +FileIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc +IngestJob.cancelReason.notCancelled.text=\u53d6\u308a\u6d88\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +IngestJob.cancelReason.cancelledByUser.text=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f +IngestJob.cancelReason.ingestModStartFail.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +IngestJob.cancelReason.outOfDiskSpace.text=\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093 +IngestJob.cancelReason.servicesDown.text=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 IngestJob.cancelReason.caseClosed.text=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u307e\u3057\u305f -IngestJobSettingsPanel.globalSettingsButton.actionCommand=\u30a2\u30c9\u30d0\u30f3\u30b9 -IngestJobSettingsPanel.globalSettingsButton.text=\u30a2\u30c9\u30d0\u30f3\u30b9 -IngestSettingsPanel.jLabelNumThreads.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u4f7f\u7528\u3059\u308b\u30b9\u30ec\u30c3\u30c9\u6570\uff1a +IngestJobSettingsPanel.globalSettingsButton.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +\u30b2\u30b9\u30c8 +IngestJobSettingsPanel.globalSettingsButton.actionCommand=\u9ad8\u5ea6 +IngestJobSettingsPanel.globalSettingsButton.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +IngestJobSettingsPanel.pastJobsButton.text=\u5c65\u6b74 +IngestJobSettingsPanel.fileIngestFilterLabel.text=\u6b21\u3067\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c: +OptionsCategory_Name_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +OptionsCategory_Keywords_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 IngestSettingsPanel.jLabelProcessTimeOutUnits.text=\u6642\u9593 -IngestSettingsPanel.jLabelSetProcessTimeOut.text=\u4e00\u5b9a\u306e\u6642\u9593\u304c\u904e\u304e\u305f\u5f8c\u306b\u81ea\u52d5\u7684\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u505c\u6b62\u3067\u304d\u308b\u3088\u3046\u306b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u6709\u52b9\u5316\uff1a -IngestSettingsPanel.restartRequiredLabel.text=\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3067\u306f\u6700\u5927{0}\u306e\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30ec\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u3079\u304d\u3067\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 -IngestSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -ProfileSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text=60 +IngestSettingsPanel.jCheckBoxEnableProcTimeout.text= +IngestSettingsPanel.jLabelSetProcessTimeOut.text=\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u8a2d\u5b9a\u3057\u305f\u6642\u9593\u306e\u7d4c\u904e\u5f8c\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u81ea\u52d5\u7684\u306b\u7d42\u4e86\u3067\u304d\u307e\u3059\u3002 +IngestSettingsPanel.restartRequiredLabel.text=\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30ec\u30c3\u30c9 {0} \u306e\u6700\u5927\u6570\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 +IngestSettingsPanel.jLabelNumThreads.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u4f7f\u7528\u3067\u304d\u308b\u30b9\u30ec\u30c3\u30c9\u6570: +IngestSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +ProfileSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/ingest/GetFilesContentVisitor.java b/Core/src/org/sleuthkit/autopsy/ingest/GetFilesContentVisitor.java index e0cb7176f9..7dfbdacb4c 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/GetFilesContentVisitor.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/GetFilesContentVisitor.java @@ -30,6 +30,7 @@ import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.Image; import org.sleuthkit.datamodel.VirtualDirectory; import org.sleuthkit.datamodel.LocalDirectory; +import org.sleuthkit.datamodel.Pool; import org.sleuthkit.datamodel.Report; import org.sleuthkit.datamodel.TskException; import org.sleuthkit.datamodel.Volume; @@ -71,6 +72,11 @@ abstract class GetFilesContentVisitor implements ContentVisitor visit(VolumeSystem vs) { return getAllFromChildren(vs); } + + @Override + public Collection visit(Pool pool) { + return getAllFromChildren(pool); + } @Override public Collection visit(Report r) { diff --git a/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ja.properties index 39d7a2632b..431b60a8b1 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/ingest/runIngestModuleWizard/Bundle_ja.properties @@ -1 +1,8 @@ -RunIngestModulesAction.name=\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 \ No newline at end of file +IngestModulesConfigWizardPanel.name.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u69cb\u6210 +IngestProfileSelectionPanel.customSettings.description=\u30a6\u30a3\u30b6\u30fc\u30c9\u306e\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u500b\u3005\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u3092\u69cb\u6210 +IngestProfileSelectionPanel.customSettings.name=\u30ab\u30b9\u30bf\u30e0\u8a2d\u5b9a +IngestProfileSelectionPanel.ingestSettingsButton.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a +IngestProfileSelectionPanel.profileListLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e: +IngestProfileWizardPanel.panelName=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u9078\u629e\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +RunIngestModulesAction.actionPerformed.errorMessage=\u9078\u629e\u3057\u305f\u9805\u76ee\u306e\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30af\u30a8\u30ea\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +RunIngestModulesAction.name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c diff --git a/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ja.properties index 9bbd244f08..76dff54faf 100644 --- a/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/menuactions/Bundle_ja.properties @@ -1,7 +1,7 @@ -OpenIDE-Module-Name=\u30E1\u30CB\u30E5\u30FC\u30A2\u30AF\u30B7\u30E7\u30F3 -DataContentDynamicMenu.menu.dataContentWin.text=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4\u30A6\u30A3\u30F3\u30C9\u30A6 -DataContentMenu.getName.text=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4\u30E1\u30CB\u30E5\u30FC -DataExplorerMenu.getName.text=\u30C7\u30FC\u30BF\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u30C4\u30FC\u30EB -DataResultMenu.menu.dataResWin.text=\u30C7\u30FC\u30BF\u7D50\u679C\u30A6\u30A3\u30F3\u30C9\u30A6 -DataResultMenu.getName.text=\u30C7\u30FC\u30BF\u7D50\u679C\u30E1\u30CB\u30E5\u30FC -SearchResultMenu.menu.dataRes.text=\u30C7\u30FC\u30BF\u7D50\u679C \ No newline at end of file +OpenIDE-Module-Name=\u30e1\u30cb\u30e5\u30fc\u30a2\u30af\u30b7\u30e7\u30f3 +DataContentDynamicMenu.menu.dataContentWin.text=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4\u30a6\u30a3\u30f3\u30c9\u30a6 +DataContentMenu.getName.text=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4\u30e1\u30cb\u30e5\u30fc +DataExplorerMenu.getName.text=\u30c7\u30fc\u30bf\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30c4\u30fc\u30eb +DataResultMenu.menu.dataResWin.text=\u30c7\u30fc\u30bf\u7d50\u679c\u30a6\u30a3\u30f3\u30c9\u30a6 +DataResultMenu.getName.text=\u30c7\u30fc\u30bf\u7d50\u679c\u30e1\u30cb\u30e5\u30fc +SearchResultMenu.menu.dataRes.text=\u30c7\u30fc\u30bf\u7d50\u679c diff --git a/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties index cbd02b8693..f73bf77a55 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties @@ -1,14 +1,50 @@ -OpenIDE-Module-Name=EWFVerify -DataSourceIntegrityIngestModule.process.errProcImg={0}\u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -DataSourceIntegrityModuleFactory.moduleName.text=E01\u8a8d\u8a3c\u30c4\u30fc\u30eb -DataSourceIntegrityModuleFactory.moduleDesc.text=E01\u30d5\u30a1\u30a4\u30eb\u306e\u6574\u5408\u6027\u3092\u8a8d\u8a3c\u3057\u307e\u3059\u3002 -DataSourceIntegrityIngestModule.process.skipNonEwf=E01\u30a4\u30e1\u30fc\u30b8\u3067\u306f\u306a\u3044{0}\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3044\u307e\u3059 -DataSourceIntegrityIngestModule.process.noStoredHash=\u30a4\u30e1\u30fc\u30b8{0}\u306f\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u30cf\u30c3\u30b7\u30e5\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -DataSourceIntegrityIngestModule.process.startingImg={0}\u3092\u958b\u59cb\u4e2d -DataSourceIntegrityIngestModule.process.errReadImgAtChunk={0}\u306e\u30c1\u30e3\u30f3\u30af{1}\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -DataSourceIntegrityIngestModule.shutDown.calcHashLi=
  • \u8a08\u7b97\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u5024\uff1a{0}
  • -DataSourceIntegrityIngestModule.shutDown.notVerified=\u8a8d\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -DataSourceIntegrityIngestModule.shutDown.resultLi=
  • \u7d50\u679c\uff1a{0}
  • -DataSourceIntegrityIngestModule.shutDown.storedHashLi=
  • \u4fdd\u5b58\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\uff1a {0}
  • -DataSourceIntegrityIngestModule.shutDown.verifyResultsHeader=

    {0}\u306eEWF\u30d9\u30ea\u30d5\u30a3\u30b1\u30fc\u30b7\u30e7\u30f3\u7d50\u679c

    -EwfVerifyIDataSourceIntegrityIngestModulengestModule.shutDown.verified=\u8a8d\u8a3c\u3055\u308c\u307e\u3057\u305f \ No newline at end of file +# {0} - hashName +# {1} - calculatedHashValue +DataSourceIntegrityIngestModule.process.calcHashWithType=
  • \u8a08\u7b97\u6e08\u307f {0} \u30cf\u30c3\u30b7\u30e5: {1}
  • +# {0} - imageName +DataSourceIntegrityIngestModule.process.calculateHashDone=

    {0} \u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u8a08\u7b97\u7d50\u679c

    +# {0} - imageName +DataSourceIntegrityIngestModule.process.errorLoadingHashes=\ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30a4\u30e1\u30fc\u30b8 {0} \u306e\u30cf\u30c3\u30b7\u30e5\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - imageName +DataSourceIntegrityIngestModule.process.errorSavingHashes=\ \u30a4\u30e1\u30fc\u30b8 {0} \u306e\u30cf\u30c3\u30b7\u30e5\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashAlgorithmError={0} \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u30c0\u30a4\u30b8\u30a7\u30b9\u30c8\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +DataSourceIntegrityIngestModule.process.hashesCalculated=\ \u8a08\u7b97\u6e08\u307f\u30cf\u30c3\u30b7\u30e5 +# {0} - hashAlgorithm +# {1} - calculatedHashValue +# {2} - storedHashValue +DataSourceIntegrityIngestModule.process.hashFailedForArtifact={0} \u30cf\u30c3\u30b7\u30e5\u306e\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f:\n \u8a08\u7b97\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {1}\N \u4fdd\u5b58\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {2}\n +# {0} - calculatedHashValue +# {1} - storedHashValue +DataSourceIntegrityIngestModule.process.hashList=
    • \u8a08\u7b97\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {0}
    • \u4fdd\u5b58\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {1}
    +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashMatch=
  • {0} \u691c\u8a3c\u6e08\u307f\u30cf\u30c3\u30b7\u30e5
  • +# {0} - hashName +DataSourceIntegrityIngestModule.process.hashNonMatch=
  • {0} \u30cf\u30c3\u30b7\u30e5\u304c\u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093
  • +# {0} - imageName +DataSourceIntegrityIngestModule.process.skipCompute=\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3060\u3063\u305f\u305f\u3081 {0} \u306e\u65b0\u898f\u30cf\u30c3\u30b7\u30e5\u306e\u8a08\u7b97\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093 +# {0} - imageName +DataSourceIntegrityIngestModule.process.skipVerify=\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u52b9\u3060\u3063\u305f\u305f\u3081 {0} \u306e\u65e2\u5b58\u30cf\u30c3\u30b7\u30e5\u306e\u691c\u8a3c\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u305b\u3093 +# {0} - imageName +DataSourceIntegrityIngestModule.process.verificationFailure={0} \u304c\u5b8c\u5168\u6027\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f +# {0} - imageName +DataSourceIntegrityIngestModule.process.verificationSuccess={0} \u306e\u5b8c\u5168\u6027\u304c\u691c\u8a3c\u3055\u308c\u307e\u3057\u305f +DataSourceIntegrityIngestModule.startup.noCheckboxesSelected=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 +OpenIDE-Module-Name=ewfVerify +DataSourceIntegrityModuleFactory.moduleName.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5b8c\u5168\u6027 +DataSourceIntegrityModuleFactory.moduleDesc.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u8a08\u7b97\u304a\u3088\u3073\u691c\u8a3c\u3057\u307e\u3059\u3002 +DataSourceIntegrityIngestModule.process.errProcImg={0} \u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +DataSourceIntegrityIngestModule.process.skipNonEwf=\u975e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 {0} \u3092\u30b9\u30ad\u30c3\u30d7\u4e2d\u3067\u3059 +DataSourceIntegrityIngestModule.process.noStoredHash=\u30a4\u30e1\u30fc\u30b8 {0} \u306b\u4fdd\u5b58\u6e08\u307f\u30cf\u30c3\u30b7\u30e5\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +DataSourceIntegrityIngestModule.process.startingImg={0} \u3092\u8d77\u52d5\u4e2d\u3067\u3059 +DataSourceIntegrityIngestModule.process.errReadImgAtChunk=\u30c1\u30e3\u30f3\u30af {1} \u306e {0} \u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +DataSourceIntegrityIngestModule.shutDown.verified=\ \u691c\u8a3c\u6e08\u307f +DataSourceIntegrityIngestModule.shutDown.notVerified=\ \u691c\u8a3c\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +DataSourceIntegrityIngestModule.shutDown.verifyResultsHeader=

    {0} \u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u691c\u8a3c\u7d50\u679c

    +DataSourceIntegrityIngestModule.shutDown.resultLi=
  • \u7d50\u679c:{0}
  • +DataSourceIntegrityIngestModule.shutDown.calcHashLi=
  • \u8a08\u7b97\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {0}
  • +DataSourceIntegrityIngestModule.shutDown.storedHashLi=
  • \u4fdd\u5b58\u6e08\u307f\u30cf\u30c3\u30b7\u30e5: {0}
  • +DataSourceIntegrityIngestSettingsPanel.computeHashesCheckbox.text=\u4f55\u3082\u306a\u3044\u5834\u5408\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u3092\u8a08\u7b97 +DataSourceIntegrityIngestSettingsPanel.jLabel1.text=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u4e0a\u3067\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093 +DataSourceIntegrityIngestSettingsPanel.jLabel3.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a +DataSourceIntegrityIngestSettingsPanel.verifyHashesCheckbox.text=\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u3092\u691c\u8a3c diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties index 66063448fd..355c94be83 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties @@ -1,40 +1,55 @@ +CannotCreateOutputFolder=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.moduleDesc.text=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb(doc, docx, ppt, pptx, xls, xlsx, zip, rar, arj, 7z, gzip, bzip2, tar)\u3092\u62bd\u51fa\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3057\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u30c4\u30ea\u30fc\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.moduleName=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u30c4\u30fc\u30eb +EmbeddedFileExtractorIngestModule.NoOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +EmbeddedFileExtractorIngestModule.UnableToGetMSOfficeExtractor.errMsg=MSOfficeEmbeddedContentExtractor\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 +ExtractArchiveWithPasswordAction.extractFailed.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u5c01\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +ExtractArchiveWithPasswordAction.name.text=\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u89e3\u51cd +# {0} - archiveFile +ExtractArchiveWithPasswordAction.progress.text=\u6b21\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u958b\u5c01\u4e2d\u3067\u3059: {0} +ExtractArchiveWithPasswordAction.prompt.text=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b +ExtractArchiveWithPasswordAction.prompt.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ - \u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\n\n\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d5\u30a1\u30a4\u30eb\uff08doc\u3001docx\u3001ppt\u3001pptx\u3001xls\u3001xlsx\u7b49\uff09\u3084\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\uff08zip\u3084\u305d\u306e\u4ed6\u306e7zip\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\uff09\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\n\ - 7Zip\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\n\n7Zip\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3057\u307e\u3059\uff08zip\u30847zip\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u306b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305d\u306e\u4ed6\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u30bf\u30a4\u30d7\u306a\u3069\uff09\u3002\n\ - \u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u62bd\u51fa\u3055\u308c\u3001\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u306f\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u3001\u8a2d\u5b9a\u3055\u308c\u305f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\n\ - \u3082\u3057\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u304c\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308c\u3070\u30017Zip\u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u306b\u3088\u308a\u3001\u518d\u5ea6\u51e6\u7406\u3055\u308c\u307e\u3059 - \u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u306f\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u3092N-\u30ec\u30d9\u30eb\u306e\u6df1\u3055\u3067\u51e6\u7406\u3057\u307e\u3059\u3002\n\n\ - \u62bd\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc\u3067\u30ca\u30d3\u30b2\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002\n\n\ - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306fWindows\u3001Linux\u3001Mac\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002 + Embedded File Extraction Ingest Module\n\n\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u3001\u6587\u66f8\u30d5\u30a1\u30a4\u30eb(\u4f8b: doc, docx, ppt, pptx, xls, xlsx)\u3068\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb(\u4f8b: zip\u3001\u5727\u7e2e\u30fb\u89e3\u51cd\u30bd\u30d5\u30c87zip\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u305d\u306e\u4ed6\u30a2\u30fc\u30ab\u30a4\u30d6\u30bf\u30a4\u30d7)\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\n\ + \u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u62bd\u51fa\u3057\u3001\u69cb\u6210\u6e08\u307f\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u51e6\u7406\u3055\u308c\u308b\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u3092\u623b\u3057\u307e\u3059\u3002\n\ + \u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u304c\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u5408\u3001\u5727\u7e2e\u30fb\u89e3\u51cd\u30bd\u30d5\u30c87zip\u3067\u518d\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u5727\u7e2e\u30fb\u89e3\u51cd\u30bd\u30d5\u30c8\u304cN\u30ec\u30d9\u30eb\u306e\u6df1\u3055\u3067\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\n\n\ + \u62bd\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u30c4\u30ea\u30fc\u3067\u53c2\u7167\u3067\u304d\u307e\u3059\u3002\n\n\ + \u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3002Windows\u3001Linux\u3001Mac\u306e\u5404\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 OpenIDE-Module-Name=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa -OpenIDE-Module-Short-Description=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -SevenZipContentReadStream.seek.exception.invalidOrigin=\u7121\u52b9\u306a\u30b7\u30fc\u30af\u539f\u70b9\uff1a {0} -SevenZipContentReadStream.read.exception.errReadStream=\u30b3\u30f3\u30c6\u30f3\u30c4\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.seek.exception.invalidOrigin=\u7121\u52b9\u306a\u30b7\u30fc\u30af\u306e\u539f\u70b9\: {0} +OpenIDE-Module-Short-Description=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.seek.exception.invalidOrigin=\u7121\u52b9\u306a\u30b7\u30fc\u30af\u30aa\u30ea\u30b8\u30f3: {0} EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.read.exception.errReadStream=\u30b3\u30f3\u30c6\u30f3\u30c4\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.moduleName=\u57cb\u3081\u8fbc\u307f\u30d5\u30a1\u30a4\u30eb\u306e\u62bd\u51fa\u30c4\u30fc\u30eb -EmbeddedFileExtractorIngestModule.ArchiveExtractor.encryptionFileLevel=\u30d5\u30a1\u30a4\u30eb\u30ec\u30d9\u30eb\u3067\u306e\u6697\u53f7\u5316 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.encryptionFull=\u5b8c\u5168\u306a\u6697\u53f7\u5316 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.init.errInitModule.details=\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\: {0}\: {1}\u3092\u8d77\u52d5\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnMsg=\u30a2\u30fc\u30ab\u30a4\u30d6\: {0}, item\: {1}\u306bZIP\u7206\u5f3e\u304b\u3082\u3057\u308c\u306a\u3044\u3082\u306e\u3092\u767a\u898b -EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnDetails=\u5727\u7e2e\u7387\u304c{0}\u3001{1}\u306b\u3042\u308b\u30a2\u30a4\u30c6\u30e0\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnMsg.zipBomb=ZIP\u7206\u5f3e\u304b\u3082\u3057\u308c\u306a\u3044\u3082\u306e\u3092\u767a\u898b\uff1a{0} -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnDetails.zipBomb=\u30a2\u30fc\u30ab\u30a4\u30d6\u306f{0}\u30ec\u30d9\u30eb\u306e\u6df1\u3055\u3067\u3059\u3002{1}\u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.unknownPath.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\: {0}\u306b\u4e0d\u660e\u306a\u30a2\u30a4\u30c6\u30e0\u30d1\u30b9\u304c\u3042\u308a\u307e\u3059\u3002{1}\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\u30a2\u30a4\u30c6\u30e0\: {0}, {1}\u3092\u89e3\u51cd\u3059\u308b\u306e\u306b\u30c7\u30a3\u30b9\u30af\u30b9\u30da\u30fc\u30b9\u304c\u8db3\u308a\u307e\u305b\u3093 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.details=\u30a2\u30fc\u30ab\u30a4\u30d6\u30a2\u30a4\u30c6\u30e0\u304c\u89e3\u51cd\u3059\u308b\u306e\u306b\u5927\u304d\u3059\u304e\u307e\u3059\u3002\u3053\u306e\u30a2\u30a4\u30c6\u30e0\u306e\u89e3\u51cd\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.msg={0}\u306e\u89e3\u51cd\u30a8\u30e9\u30fc -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.details={0}. {1}\u3092\u89e3\u51cd\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\u306b\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u767a\u898b\u3057\u307e\u3057\u305f\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.details=\u30a2\u30fc\u30ab\u30a4\u30d6\: {0}\u306e\u4e00\u90e8\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002 {1} \u30a8\u30af\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u304c\u3053\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.exception.msg=\u89e3\u51cd\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\: {0}\u306b\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackedTree.exception.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\:{0}\u306b\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.docContainer.init.err=\u8aad\u307f\u53d6\u308a\u4e2d\u306bDoc\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.docxContainer.init.err={0}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bDocx\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.pptContainer.init.err={0}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bPpt\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.pptxContainer.init.err={0}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bPptx\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.xlsContainer.init.err={0}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bXls\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.xlsxContainer.init.err={0}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bXlsx\u30b3\u30f3\u30c6\u30a4\u30ca\u30fc\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ImageExtractor.extractImage.addToDB.exception.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -EmbeddedFileExtractorIngestModule.ImageExtractor.getOutputFolderPath.exception.msg=\u30a2\u30d6\u30b9\u30c8\u30e9\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\: {0}\u304b\u3089\u753b\u50cf\u62bd\u51fa\u306e\u30d1\u30b9\u3092\u5165\u624b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.noSpace.msg=\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30c7\u30a3\u30b9\u30af\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.encryptionFileLevel=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u307f\u306e\u6697\u53f7\u5316(\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb) +EmbeddedFileExtractorIngestModule.ArchiveExtractor.encryptionFull=\u5b8c\u5168\u306a\u6697\u53f7\u5316(\u30a2\u30fc\u30ab\u30a4\u30d6\u30d5\u30a1\u30a4\u30eb) +EmbeddedFileExtractorIngestModule.ArchiveExtractor.init.errInitModule.details=\u30a8\u30e9\u30fc\u307e\u305f\u306f\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306e\u521d\u671f\u5316\u4e2d\u3067\u3059: {0}: {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnMsg=\u30a2\u30fc\u30ab\u30a4\u30d6\u3067ZIP\u7206\u5f3e\u304c\u691c\u51fa\u3055\u308c\u305f\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059: {0}\u3001\u9805\u76ee: {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.isZipBombCheck.warnDetails=\u5727\u7e2e\u7387\u306f {0} \u3067\u3059\u3002{1} \u306e\u9805\u76ee\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnMsg.zipBomb=ZIP\u7206\u5f3e\u304c\u691c\u51fa\u3055\u308c\u305f\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059: {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.warnDetails.zipBomb=\u30a2\u30fc\u30ab\u30a4\u30d6\u306f {0} \u30ec\u30d9\u30eb\u306e\u6df1\u3055\u3067\u3059\u3002{1} \u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.unknownPath.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u4e0d\u660e\u306a\u9805\u76ee\u30d1\u30b9: {0}\u3001\u6b21\u3092\u4f7f\u7528\u3057\u307e\u3059: {1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\u9805\u76ee\u3092\u958b\u5c01\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093: {0}\u3001{1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.notEnoughDiskSpace.details=\u30a2\u30fc\u30ab\u30a4\u30d6\u9805\u76ee\u304c\u5927\u304d\u3059\u304e\u3067\u958b\u5c01\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u9805\u76ee\u306e\u958b\u5c01\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.msg={0} \u306e\u958b\u5c01\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.errUnpacking.details={0} \u306e\u958b\u5c01\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002{1} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.msg=\u30a2\u30fc\u30ab\u30a4\u30d6\u306b\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.unpack.encrFileDetected.details=\u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u3044\u304f\u3064\u304b\u306e\u30d5\u30a1\u30a4\u30eb: {0} \u304c\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5727\u7e2e\u30fb\u89e3\u51cd\u30bd\u30d5\u30c8 {1} \u306f\u3053\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u304b\u3089\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.exception.msg=\u30d5\u30a1\u30a4\u30eb\u3092\u6b21\u306b\u958b\u5c01\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackedTree.exception.msg=\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u3092\u6b21\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f:{0} +EmbeddedFileExtractorIngestModule.ImageExtractor.docContainer.init.err=\u8aad\u307f\u53d6\u308a\u4e2d\u306bDOC\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +EmbeddedFileExtractorIngestModule.ImageExtractor.docxContainer.init.err=\u6b21\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bDOCX\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.pptContainer.init.err=\u6b21\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bPPT\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.pptxContainer.init.err=\u8aad\u307f\u53d6\u308a\u4e2d\u306bPPTX\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.xlsContainer.init.err=\u6b21\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bXLS\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.xlsxContainer.init.err=\u6b21\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306bXLSX\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.extractImage.addToDB.exception.msg=\u6d3e\u751f\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093. +EmbeddedFileExtractorIngestModule.ImageExtractor.getOutputFolderPath.exception.msg=\u6b21\u306e\u62bd\u8c61\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u62bd\u51fa\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ImageExtractor.getOutputFolderPath.exception.msg=\u6b21\u306e\u62bd\u8c61\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u306e\u30a4\u30e1\u30fc\u30b8\u62bd\u51fa\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.noSpace.msg=\u30c7\u30a3\u30b9\u30af\u306b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002\u5341\u5206\u306a\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +SevenZipContentReadStream.seek.exception.invalidOrigin=\u7121\u52b9\u306a\u30aa\u30ea\u30b8\u30f3 {0} +SevenZipContentReadStream.read.exception.errReadStream=\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +SevenZipExtractor.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u6697\u53f7\u5316\u691c\u51fa\u6e08\u307f\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +# {0} - rootArchive +SevenZipExtractor.zipBombArtifactCreation.text=Zip\u7206\u5f3e\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f {0} +UnableToInitializeLibraries=7Zip\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java index 0ccd35cef9..958813a905 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/SevenZipExtractor.java @@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.modules.embeddedfileextractor; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -37,12 +38,14 @@ import net.sf.sevenzipjbinding.ExtractAskMode; import net.sf.sevenzipjbinding.ExtractOperationResult; import net.sf.sevenzipjbinding.IArchiveExtractCallback; import net.sf.sevenzipjbinding.ICryptoGetTextPassword; +import net.sf.sevenzipjbinding.IInArchive; import net.sf.sevenzipjbinding.ISequentialOutStream; -import net.sf.sevenzipjbinding.ISevenZipInArchive; import net.sf.sevenzipjbinding.PropID; import net.sf.sevenzipjbinding.SevenZip; import net.sf.sevenzipjbinding.SevenZipException; import net.sf.sevenzipjbinding.SevenZipNativeInitializationException; +import org.apache.tika.parser.txt.CharsetDetector; +import org.apache.tika.parser.txt.CharsetMatch; import org.netbeans.api.progress.ProgressHandle; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; @@ -76,6 +79,7 @@ import org.sleuthkit.datamodel.TskData; class SevenZipExtractor { private static final Logger logger = Logger.getLogger(SevenZipExtractor.class.getName()); + private static final String MODULE_NAME = EmbeddedFileExtractorModuleFactory.getModuleName(); //encryption type strings @@ -185,7 +189,7 @@ class SevenZipExtractor { * * @return true if potential zip bomb, false otherwise */ - private boolean isZipBombArchiveItemCheck(AbstractFile archiveFile, ISevenZipInArchive inArchive, int inArchiveItemIndex, ConcurrentHashMap depthMap, String escapedFilePath) { + private boolean isZipBombArchiveItemCheck(AbstractFile archiveFile, IInArchive inArchive, int inArchiveItemIndex, ConcurrentHashMap depthMap, String escapedFilePath) { //If a file is corrupted as a result of reconstructing it from unallocated space, then //7zip does a poor job estimating the original uncompressed file size. //As a result, many corrupted files have wonky compression ratios and could flood the UI @@ -399,18 +403,16 @@ class SevenZipExtractor { /** * Get the path in the archive of the specified item * - * @param item - the item to get the path for - * @param itemNumber - the item number to help provide uniqueness to the - * path - * @param archiveFile - the archive file the item exists in + * @param archive - the archive to get the path for + * @param inArchiveItemIndex - the item index to help provide uniqueness to the path + * @param archiveFile - the archive file the item exists in * * @return a string representing the path to the item in the archive * * @throws SevenZipException */ - private String getPathInArchive(ISevenZipInArchive archive, int inArchiveItemIndex, AbstractFile archiveFile) throws SevenZipException { - String pathInArchive = (String) archive.getProperty( - inArchiveItemIndex, PropID.PATH); + private String getPathInArchive(IInArchive archive, int inArchiveItemIndex, AbstractFile archiveFile) throws SevenZipException { + String pathInArchive = (String) archive.getProperty(inArchiveItemIndex, PropID.PATH); if (pathInArchive == null || pathInArchive.isEmpty()) { //some formats (.tar.gz) may not be handled correctly -- file in archive has no name/path @@ -454,6 +456,10 @@ class SevenZipExtractor { } return pathInArchive; } + + private byte[] getPathBytesInArchive(IInArchive archive, int inArchiveItemIndex, AbstractFile archiveFile) throws SevenZipException { + return (byte[]) archive.getProperty(inArchiveItemIndex, PropID.PATH_BYTES); + } /* * Get the String that will represent the key for the hashmap which keeps @@ -505,7 +511,7 @@ class SevenZipExtractor { final String escapedArchiveFilePath = FileUtil.escapeFileName(archiveFilePath); HashMap statusMap = new HashMap<>(); List unpackedFiles = Collections.emptyList(); - ISevenZipInArchive inArchive = null; + currentArchiveName = archiveFile.getName(); SevenZipContentReadStream stream = null; @@ -520,7 +526,6 @@ class SevenZipExtractor { return unpackSuccessful; } try { - List existingFiles = getAlreadyExtractedFiles(archiveFile, archiveFilePath); for (AbstractFile file : existingFiles) { statusMap.put(getKeyAbstractFile(file), new ZipFileStatusWrapper(file, ZipFileStatus.EXISTS)); @@ -553,6 +558,7 @@ class SevenZipExtractor { return unpackSuccessful; } } + IInArchive inArchive = null; try { stream = new SevenZipContentReadStream(new ReadContentInputStream(archiveFile)); // for RAR files we need to open them explicitly as RAR. Otherwise, if there is a ZIP archive inside RAR archive @@ -600,7 +606,8 @@ class SevenZipExtractor { } String pathInArchive = getPathInArchive(inArchive, inArchiveItemIndex, archiveFile); - UnpackedTree.UnpackedNode unpackedNode = unpackedTree.addNode(pathInArchive); + byte[] pathBytesInArchive = getPathBytesInArchive(inArchive, inArchiveItemIndex, archiveFile); + UnpackedTree.UnpackedNode unpackedNode = unpackedTree.addNode(pathInArchive, pathBytesInArchive); final boolean isEncrypted = (Boolean) inArchive.getProperty(inArchiveItemIndex, PropID.ENCRYPTED); @@ -801,6 +808,34 @@ class SevenZipExtractor { return unpackSuccessful; } + private Charset detectFilenamesCharset(List byteDatas) { + Charset detectedCharset = null; + CharsetDetector charsetDetector = new CharsetDetector(); + int byteSum = 0; + int fileNum = 0; + for (byte[] byteData : byteDatas) { + fileNum++; + byteSum += byteData.length; + // Only read ~1000 bytes of filenames in this directory + if (byteSum >= 1000) { + break; + } + } + byte[] allBytes = new byte[byteSum]; + int start = 0; + for (int i = 0; i < fileNum; i++) { + byte[] byteData = byteDatas.get(i); + System.arraycopy(byteData, 0, allBytes, start, byteData.length); + start += byteData.length; + } + charsetDetector.setText(allBytes); + CharsetMatch cm = charsetDetector.detect(); + if (cm.getConfidence() >= 90 && Charset.isSupported(cm.getName())) { + detectedCharset = Charset.forName(cm.getName()); + } + return detectedCharset; + } + /** * Produce a list of archive indices needed for the call to extract, which * will open the archive and begin unpacking the files. @@ -906,7 +941,7 @@ class SevenZipExtractor { implements IArchiveExtractCallback, ICryptoGetTextPassword { private final AbstractFile archiveFile; - private final ISevenZipInArchive inArchive; + private final IInArchive inArchive; private UnpackStream unpackStream = null; private final Map archiveDetailsMap; private final ProgressHandle progressHandle; @@ -922,11 +957,10 @@ class SevenZipExtractor { private boolean unpackSuccessful = true; - StandardIArchiveExtractCallback(ISevenZipInArchive inArchive, - AbstractFile archiveFile, ProgressHandle progressHandle, - Map archiveDetailsMap, - String password, long freeDiskSpace) { - + StandardIArchiveExtractCallback(IInArchive inArchive, + AbstractFile archiveFile, ProgressHandle progressHandle, + Map archiveDetailsMap, + String password, long freeDiskSpace) { this.inArchive = inArchive; this.progressHandle = progressHandle; this.archiveFile = archiveFile; @@ -998,7 +1032,7 @@ class SevenZipExtractor { final Date accessTime = (Date) inArchive.getProperty( inArchiveItemIndex, PropID.LAST_ACCESS_TIME); final Date writeTime = (Date) inArchive.getProperty( - inArchiveItemIndex, PropID.LAST_WRITE_TIME); + inArchiveItemIndex, PropID.LAST_MODIFICATION_TIME); createTimeInSeconds = createTime == null ? 0L : createTime.getTime() / 1000; @@ -1100,7 +1134,6 @@ class SevenZipExtractor { * @param localPathRoot Path in module output folder that files will be * saved to * @param archiveFile Archive file being extracted - * @param fileManager */ UnpackedTree(String localPathRoot, AbstractFile archiveFile) { this.rootNode = new UnpackedNode(); @@ -1118,7 +1151,7 @@ class SevenZipExtractor { * * @return child node for the last file token in the filePath */ - UnpackedNode addNode(String filePath) { + UnpackedNode addNode(String filePath, byte[] filePathBytes) { String[] toks = filePath.split("[\\/\\\\]"); List tokens = new ArrayList<>(); for (int i = 0; i < toks.length; ++i) { @@ -1126,7 +1159,36 @@ class SevenZipExtractor { tokens.add(toks[i]); } } - return addNode(rootNode, tokens); + + List byteTokens = null; + if (filePathBytes == null) { + return addNode(rootNode, tokens, null); + } else { + byteTokens = new ArrayList<>(tokens.size()); + int last = 0; + for (int i = 0; i < filePathBytes.length; i++) { + if (filePathBytes[i] == '/') { + int len = i - last; + byte[] arr = new byte[len]; + System.arraycopy(filePathBytes, last, arr, 0, len); + byteTokens.add(arr); + last = i + 1; + } + } + int len = filePathBytes.length - last; + if (len > 0) { + byte[] arr = new byte[len]; + System.arraycopy(filePathBytes, last, arr, 0, len); + byteTokens.add(arr); + } + + if (tokens.size() != byteTokens.size()) { + logger.log(Level.WARNING, "Could not map path bytes to path string"); + return addNode(rootNode, tokens, null); + } + } + + return addNode(rootNode, tokens, byteTokens); } /** @@ -1137,7 +1199,8 @@ class SevenZipExtractor { * * @return */ - private UnpackedNode addNode(UnpackedNode parent, List tokenPath) { + private UnpackedNode addNode(UnpackedNode parent, + List tokenPath, List tokenPathBytes) { // we found all of the tokens if (tokenPath.isEmpty()) { return parent; @@ -1145,15 +1208,20 @@ class SevenZipExtractor { // get the next name in the path and look it up String childName = tokenPath.remove(0); + byte[] childNameBytes = null; + if (tokenPathBytes != null) { + childNameBytes = tokenPathBytes.remove(0); + } UnpackedNode child = parent.getChild(childName); // create new node if (child == null) { child = new UnpackedNode(childName, parent); + child.setFileNameBytes(childNameBytes); parent.addChild(child); } // go down one more level - return addNode(child, tokenPath); + return addNode(child, tokenPath, tokenPathBytes); } /** @@ -1254,6 +1322,32 @@ class SevenZipExtractor { NbBundle.getMessage(SevenZipExtractor.class, "EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackedTree.exception.msg", node.getFileName()), ex); } + + // Determine encoding of children + if (node.getChildren().size() > 0) { + String names = ""; + ArrayList byteDatas = new ArrayList<>(); + for (UnpackedNode child : node.getChildren()) { + byte[] childBytes = child.getFileNameBytes(); + if (childBytes != null) { + byteDatas.add(childBytes); + } + names += child.getFileName(); + } + Charset detectedCharset = detectFilenamesCharset(byteDatas); + + // If a charset was detected, transcode filenames accordingly + if (detectedCharset != null && detectedCharset.canEncode()) { + for (UnpackedNode child : node.getChildren()) { + byte[] childBytes = child.getFileNameBytes(); + if (childBytes != null) { + String decodedName = new String(childBytes, detectedCharset); + child.setFileName(decodedName); + } + } + } + } + //recurse adding the children if this file was incomplete the children presumably need to be added for (UnpackedNode child : node.getChildren()) { updateOrAddFileToCaseRec(child, fileManager, statusMap, getKeyFromUnpackedNode(node, archiveFilePath)); @@ -1266,6 +1360,7 @@ class SevenZipExtractor { private class UnpackedNode { private String fileName; + private byte[] fileNameBytes; private AbstractFile file; private final List children = new ArrayList<>(); private String localRelPath = ""; @@ -1396,6 +1491,19 @@ class SevenZipExtractor { boolean isIsFile() { return isFile; } + + void setFileNameBytes(byte[] fileNameBytes) { + if (fileNameBytes != null) { + this.fileNameBytes = Arrays.copyOf(fileNameBytes, fileNameBytes.length); + } + } + + byte[] getFileNameBytes() { + if (fileNameBytes == null) { + return null; + } + return Arrays.copyOf(fileNameBytes, fileNameBytes.length); + } } } diff --git a/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ja.properties new file mode 100644 index 0000000000..8d75ef4fad --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/encryptiondetection/Bundle_ja.properties @@ -0,0 +1,17 @@ +EncryptionDetectionDataSourceIngestModule.artifactComment.bitlocker=Bitlocker\u6697\u53f7\u5316\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 +EncryptionDetectionDataSourceIngestModule.artifactComment.suspected=\u9ad8\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc(%f)\u306b\u3088\u308a\u6697\u53f7\u5316\u304c\u7591\u308f\u308c\u307e\u3057\u305f\u3002 +EncryptionDetectionDataSourceIngestModule.processing.message=\u6697\u53f7\u5316\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u30c1\u30a7\u30c3\u30af\u4e2d\u3067\u3059\u3002 +EncryptionDetectionFileIngestModule.artifactComment.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u4fdd\u8b77\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 +EncryptionDetectionFileIngestModule.artifactComment.suspected=\u9ad8\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc(%f)\u306b\u3088\u308a\u6697\u53f7\u5316\u304c\u7591\u308f\u308c\u307e\u3057\u305f\u3002 +EncryptionDetectionFileIngestModule.getDesc.text=\u6307\u5b9a\u3057\u305f\u6700\u5c0f\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u3092\u4f7f\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u307e\u3059\u3002 +EncryptionDetectionFileIngestModule.moduleName.text=\u6697\u53f7\u5316\u691c\u51fa +EncryptionDetectionIngestJobSettingsPanel.minimumEntropyLabel.text=\u6700\u5c0f\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc: +EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeLabel.text=\u6700\u5c0f\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba: +EncryptionDetectionIngestJobSettingsPanel.fileSizeMultiplesEnforcedCheckbox.text=512\u306e\u500d\u6570\u306b\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u307f\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002 +EncryptionDetectionIngestJobSettingsPanel.slackFilesAllowedCheckbox.text=\u30b9\u30e9\u30c3\u30af\u9818\u57df\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002 +EncryptionDetectionIngestJobSettingsPanel.mbLabel.text=MB +EncryptionDetectionIngestJobSettingsPanel.detectionSettingsLabel.text=\u691c\u51fa\u8a2d\u5b9a +EncryptionDetectionIngestJobSettingsPanel.minimumFileSizeTextbox.text= +EncryptionDetectionIngestJobSettingsPanel.minimumEntropyTextbox.text= +EncryptionDetectionTools.errorMessage.minimumEntropyInput=\u6700\u5c0f\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u306e\u5165\u529b\u306f6.0\uff5e8.0\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +EncryptionDetectionTools.errorMessage.minimumFileSizeInput=\u6700\u5c0f\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u5165\u529b\u306f1\u4ee5\u4e0a\u306e\u6574\u6570(\u5358\u4f4d:\u30e1\u30ac\u30d0\u30a4\u30c8)\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties index 4200bd7f58..fb0ec85c09 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties @@ -1,8 +1,10 @@ +CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +ExifParserFileIngestModule.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ - Exif\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\ - \u3053\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001Exif\u60c5\u5831\u3092\u62bd\u51fa\u3057\u3001Exif\u60c5\u5831\u3092\u7d50\u679c\u3068\u3057\u3066\u30dd\u30b9\u30c8\u3057\u307e\u3059\u3002 -OpenIDE-Module-Name=Exif\u30d1\u30fc\u30b5 -OpenIDE-Module-Short-Description=Exif\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -ExifParserFileIngestModule.moduleName.text=Exif\u30d1\u30fc\u30b5 -ExifParserFileIngestModule.getDesc.text=JPEG\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3057\u3001\u305d\u308c\u3089\u306eEXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 + EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 \n\n\ + \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001Exif\u60c5\u5831\u3092\u62bd\u51fa\u3057\u3001Exif\u30c7\u30fc\u30bf\u3092\u7d50\u679c\u3068\u3057\u3066\u6295\u7a3f\u3057\u307e\u3059\u3002 +OpenIDE-Module-Name=ExifParser +OpenIDE-Module-Short-Description=Exif\u30e1\u30bf\u30c7\u30fc\u30bf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 +ExifParserFileIngestModule.moduleName.text=Exif\u89e3\u6790\u30c4\u30fc\u30eb +ExifParserFileIngestModule.getDesc.text=Ingests JPEG\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3057\u3001EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u56de\u53ce\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/exif/ExifParserModuleFactory.java b/Core/src/org/sleuthkit/autopsy/modules/exif/ExifParserModuleFactory.java index 8f1b1a4efe..4b18db33c7 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/exif/ExifParserModuleFactory.java +++ b/Core/src/org/sleuthkit/autopsy/modules/exif/ExifParserModuleFactory.java @@ -38,7 +38,7 @@ public class ExifParserModuleFactory extends IngestModuleFactoryAdapter { return getModuleName(); } - static String getModuleName() { + public static String getModuleName() { return NbBundle.getMessage(ExifParserFileIngestModule.class, "ExifParserFileIngestModule.moduleName.text"); } diff --git a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ja.properties index fc35bab029..24969e973b 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/fileextmismatch/Bundle_ja.properties @@ -1,44 +1,64 @@ -OpenIDE-Module-Name=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4 +AddFileExtensionAction.writeError.message=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u8a2d\u5b9a\u3092\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +FileExtMismatchIngestModule.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +FileExtMismatchIngestModule.readError.message=\u8a2d\u5b9a\u3092\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +FileExtMismatchSettingsPanel.Title=\u30b0\u30ed\u30fc\u30d0\u30eb\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u8b58\u5225\u8a2d\u5b9a +OpenIDE-Module-Name=FileExtMismatch OptionsCategory_Name_FileExtMismatchOptions=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4 OptionsCategory_FileExtMismatch=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4 -AddFileExtensionAction.msgDlg.msg=XML\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304f\u306e\u3092\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -AddFileExtensionAction.msgDlg.title=\u4e0d\u4e00\u81f4\u62e1\u5f35\u5b50\u306e\u30a8\u30e9\u30fc\u3092\u8ffd\u52a0 -FileExtMismatchConfigPanel.addExtButton.errLabel.empty=\u62e1\u5f35\u5b50\u30c6\u30ad\u30b9\u30c8\u304c\u7a7a\u767d\u3067\u3059\uff01 -FileExtMismatchConfigPanel.addExtButton.errLabel.noMimeType=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01 -FileExtMismatchConfigPanel.addExtButton.errLabel.extExists=\u62e1\u5f35\u5b50\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\uff01 -FileExtMismatchConfigPanel.addExtButton.errLabel.extAdded=\u62e1\u5f35\u5b50{0}\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.addTypeButton.empty=MIME\u30bf\u30a4\u30d7\u30c6\u30ad\u30b9\u30c8\u304c\u7a7a\u767d\u3067\u3059\uff01 -FileExtMismatchConfigPanel.addTypeButton.mimeTypeNotSupported=MIME\u30bf\u30a4\u30d7\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01 -FileExtMismatchConfigPanel.addTypeButton.mimeTypeExists=MIME\u30bf\u30a4\u30d7\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\uff01 -FileExtMismatchConfigPanel.addTypeButton.mimeTypeNotDetectable=MIME\u30bf\u30a4\u30d7\u304c\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u306f\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 -FileExtMismatchConfigPanel.addTypeButton.mimeTypeAdded=MIME\u30bf\u30a4\u30d7{0}\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.removeTypeButton.noneSelected=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01 -FileExtMismatchConfigPanel.remoteTypeButton.deleted=MIME\u30bf\u30a4\u30d7{0}\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.removeExtButton.noneSelected=\u62e1\u5f35\u5b50\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01 -FileExtMismatchConfigPanel.removeExtButton.noMimeTypeSelected=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff01 -FileExtMismatchConfigPanel.removeExtButton.deleted=\u62e1\u5f35\u5b50{0}\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.store.msg=\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.store.msgDlg.msg=XML\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304f\u306e\u3092\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -FileExtMismatchConfigPanel.save.msgDlg.title=\u4fdd\u5b58\u30a8\u30e9\u30fc -FileExtMismatchConfigPanel.ok.confDlg.msg=\u8a2d\u5b9a\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b\uff1f +AddFileExtensionAction.msgDlg.msg2=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u8a2d\u5b9a\u304c\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u62e1\u5f35\u5b50\u306e\u66f4\u65b0\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +AddFileExtensionAction.msgDlg.title=\u4e0d\u4e00\u81f4\u62e1\u5f35\u5b50\u30a8\u30e9\u30fc\u3092\u8ffd\u52a0 +AddFileExtensionAction.extHeaderLbl.text=\u62e1\u5f35\u5b50\u306e\u8a31\u53ef\u5148 +FileExtMismatchConfigPanel.store.msg=\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002 +FileExtMismatchConfigPanel.store.msgDlg.msg=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +FileExtMismatchConfigPanel.save.msgDlg.title=\u30a8\u30e9\u30fc\u3092\u4fdd\u5b58 +FileExtMismatchConfigPanel.ok.confDlg.msg=\u69cb\u6210\u306e\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u3059\u304b? FileExtMismatchConfigPanel.confDlg.title=\u4fdd\u5b58\u3055\u308c\u3066\u3044\u306a\u3044\u5909\u66f4 FileExtMismatchConfigPanel.mimeTableModel.colName=MIME\u30bf\u30a4\u30d7 FileExtMismatchConfigPanel.extTableModel.colName=\u62e1\u5f35\u5b50 -FileExtMismatchContextMenuActionsProvider.menuItemStr=\u62e1\u5f35\u5b50{0}\u3092MIME\u30bf\u30a4\u30d7{1}\u306e\u4e00\u81f4\u3068\u3057\u3066\u8ffd\u52a0 -FileExtMismatchIngestModule.moduleName=\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u30c7\u30a3\u30c6\u30af\u30bf\u30fc -FileExtMismatchIngestModule.moduleDesc.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306b\u57fa\u3065\u3044\u3066\u3001\u6a19\u6e96\u7684\u3067\u306f\u306a\u3044\u62e1\u5f35\u5b50\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u3092\u30d5\u30e9\u30b0\u3057\u307e\u3059\u3002d +FileExtMismatchContextMenuActionsProvider.menuItemStr=\u4e00\u81f4\u3059\u308bMIME\u30bf\u30a4\u30d7 {1} \u3068\u3057\u3066\u62e1\u5f35\u5b50 {0} \u3092\u8ffd\u52a0 +FileExtMismatchIngestModule.moduleName=\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u691c\u51fa\u30c4\u30fc\u30eb +FileExtMismatchIngestModule.moduleDesc.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306b\u57fa\u3065\u304d\u3001\u975e\u6a19\u6e96\u306e\u62e1\u5f35\u5b50\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u306b\u30d5\u30e9\u30b0\u3092\u7acb\u3066\u307e\u3059\u3002 FileExtMismatchIngestModule.complete.totalProcTime=\u5408\u8a08\u51e6\u7406\u6642\u9593 -FileExtMismatchIngestModule.complete.totalFiles=\u5408\u8a08\u51e6\u7406\u30d5\u30a1\u30a4\u30eb\u6570 +FileExtMismatchIngestModule.complete.totalFiles=\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u306b\u8cbb\u3084\u3057\u305f\u5408\u8a08\u6642\u9593 FileExtMismatchIngestModule.complete.svcMsg.text=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u4e0d\u4e00\u81f4\u7d50\u679c FileExtMismatchOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -FileExtMismatchOptionsPanelController.moduleErr.msg=FileExtMismatchOptionsPanelController\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306e\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\u3092\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 -AddFileExtensionAction.extHeaderLbl.text=\u4e0b\u8a18\u7528\u306b\u8a31\u53ef\u3059\u308b\u62e1\u5f35\u5b50 -FileExtMismatchModuleSettingsPanel.skipNoExtCheckBox.text=\u62e1\u5f35\u5b50\u306e\u7121\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30ad\u30c3\u30d7 -FileExtMismatchSettingsPanel.extHeaderLabel.text=\u8a31\u53ef\u3059\u308b\u62e1\u5f35\u5b50\uff1a -FileExtMismatchSettingsPanel.removeExtButton.text=\u9078\u629e\u3057\u305f\u62e1\u5f35\u5b50\u3092\u524a\u9664 -FileExtMismatchDetectorModuleFactory.getIngestJobSettingsPanel.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof FileExtMismatchDetectorModuleSettings\u3067\u3059\u3002 -FileExtMismatchDetectorModuleFactory.createFileIngestModule.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof FileExtMismatchDetectorModuleSettings\u3067\u3059\u3002 -FileExtMismatchSettingsPanel.removeTypeButton.text=\u9078\u629e\u3057\u305f\u30bf\u30a4\u30d7\u3092\u524a\u9664 -FileExtMismatchSettingsPanel.newTypeButton.text=\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0 -FileExtMismatchSettingsPanel.jLabel1.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\uff1a -FileExtMismatchSettingsPanel.newExtButton.text=\u62e1\u5f35\u5b50\u3092\u8ffd\u52a0 +FileExtMismatchOptionsPanelController.moduleErr.msg=FileExtMismatchOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +FileExtMismatchModuleSettingsPanel.skipNoExtCheckBox.text=\u62e1\u5f35\u5b50\u306e\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30ad\u30c3\u30d7 +FileExtMismatchSettingsPanel.extHeaderLabel.text=\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u62e1\u5f35\u5b50: +FileExtMismatchSettingsPanel.removeExtButton.text=\u62e1\u5f35\u5b50\u3092\u524a\u9664 +FileExtMismatchDetectorModuleFactory.getIngestJobSettingsPanel.exception.msg=instanceof FileExtMismatchDetectorModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +FileExtMismatchDetectorModuleFactory.createFileIngestModule.exception.msg=instanceof FileExtMismatchDetectorModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +FileExtMismatchModuleSettingsPanel.skipKnownFiles.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30ad\u30c3\u30d7 +FileExtMismatchSettingsPanel.removeTypeButton.text=\u30bf\u30a4\u30d7\u3092\u524a\u9664 +FileExtMismatchSettingsPanel.newTypeButton.text=\u65b0\u898f\u30bf\u30a4\u30d7 +FileExtMismatchSettingsPanel.jLabel1.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: +FileExtMismatchSettingsPanel.newExtButton.text=\u65b0\u898f\u62e1\u5f35\u5b50 +FileExtMismatchSettingsPanel.newMimePrompt.message=\u65b0\u898fMIME\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0: +FileExtMismatchSettingsPanel.newMimePrompt.title=\u65b0\u898fMIME +FileExtMismatchSettingsPanel.newMimePrompt.emptyMime.message=MIME\u30bf\u30a4\u30d7\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3059\! +FileExtMismatchSettingsPanel.newMimePrompt.emptyMime.title=\u7a7a(\u672a\u5165\u529b)\u306e\u30bf\u30a4\u30d7 +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotSupported.message=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044MIME\u30bf\u30a4\u30d7\u3067\u3059\! +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotSupported.title=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30bf\u30a4\u30d7 +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeExists.message=MIME\u30bf\u30a4\u30d7\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\! +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeExists.title=\u30bf\u30a4\u30d7\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotDetectable.message=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u306fMIME\u30bf\u30a4\u30d7\u3092\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002 +FileExtMismatchSettingsPanel.newMimePrompt.mimeTypeNotDetectable.title=\u691c\u51fa\u4e0d\u80fd\u306e\u30bf\u30a4\u30d7 +FileExtMismatchSettingsPanel.removeTypeButton.noneSelected.message=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\! +FileExtMismatchSettingsPanel.removeTypeButton.noneSelected.title=\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +FileExtMismatchSettingsPanel.newExtPrompt.message=\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u62e1\u5f35\u5b50\u3092\u8ffd\u52a0: +FileExtMismatchSettingsPanel.newExtPrompt.title=\u65b0\u898f\u8a31\u53ef\u3055\u308c\u305f\u62e1\u5f35\u5b50 +FileExtMismatchSettingsPanel.newExtPrompt.empty.message=\u62e1\u5f35\u5b50\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3059\! +FileExtMismatchSettingsPanel.newExtPrompt.empty.title=\u62e1\u5f35\u5b50\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u7a7a\u5165\u529b)\u3067\u3059 +FileExtMismatchSettingsPanel.newExtPrompt.noMimeType.message=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\! +FileExtMismatchSettingsPanel.newExtPrompt.noMimeType.title=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +FileExtMismatchSettingsPanel.newExtPrompt.extExists.message=\u62e1\u5f35\u5b50\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\! +FileExtMismatchSettingsPanel.newExtPrompt.extExists.title=\u62e1\u5f35\u5b50\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +FileExtMismatchSettingsPanel.removeExtButton.noneSelected.message=\u62e1\u5f35\u5b50\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\! +FileExtMismatchSettingsPanel.removeExtButton.noneSelected.title=\u62e1\u5f35\u5b50\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +FileExtMismatchSettingsPanel.removeExtButton.noMimeTypeSelected.message=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\! +FileExtMismatchSettingsPanel.removeExtButton.noMimeTypeSelected.title=MIME\u30bf\u30a4\u30d7\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +FileExtMismatchSettingsPanel.removeTypeButton.toolTipText= +FileExtMismatchModuleSettingsPanel.checkAllRadioButton.text=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u30c1\u30a7\u30c3\u30af +FileExtMismatchModuleSettingsPanel.checkNoTextRadioButton.text=\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u30c1\u30a7\u30c3\u30af +FileExtMismatchModuleSettingsPanel.checkMediaExeRadioButton.text=\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u30d5\u30a1\u30a4\u30eb\u3068\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u3092\u30c1\u30a7\u30c3\u30af diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties index 61626e69aa..8620a7ca3d 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties @@ -1,42 +1,75 @@ -OpenIDE-Module-Name=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7ID -FileTypeIdIngestModule.moduleName.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u7279\u5b9a -FileTypeIdIngestModule.moduleDesc.text=\u30d0\u30a4\u30ca\u30ea\u30b7\u30b0\u30cd\u30c1\u30e3\u306b\u57fa\u3065\u3044\u3066\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u4e00\u81f4\u3057\u307e\u3059\u3002 -FileTypeIdIngestModule.complete.totalProcTime=\u5408\u8a08\u51e6\u7406\u6642\u9593 -FileTypeIdIngestModule.complete.totalFiles=\u5408\u8a08\u51e6\u7406\u30d5\u30a1\u30a4\u30eb\u6570 -FileTypeIdIngestModule.complete.srvMsg.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7ID\u306e\u7d50\u679c -FileTypeIdModuleFactory.getIngestJobSettingsPanel.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof FileTypeIdModuleSettings\u3067\u3059\u3002 -FileTypeIdModuleFactory.createFileIngestModule.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof FileTypeIdModuleSettings\u3067\u3059\u3002 -FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.toolTipText=\u65e2\u77e5\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u6570\u306b\u3088\u3063\u3066\u306f\u3001\u3053\u306e\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u7279\u5b9a\u3092\u52a0\u901f\u3057\u307e\u3059\u3002 -FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\uff08NSRL\uff09\u3092\u30b9\u30ad\u30c3\u30d7 -FileTypeIdGlobalSettingsPanel.deleteTypeButton.text=\u524a\u9664 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.title=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u304c\u6b20\u3051\u3066\u3044\u307e\u3059 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.message=MIME\u30bf\u30a4\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.title=MIME\u30bf\u30a4\u30d7\u304c\u6b20\u3051\u3066\u3044\u307e\u3059 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.message=\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u6b63\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u3044\u3051\u307e\u305b\u3093\u3002 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.title=\u7121\u52b9\u306a\u30aa\u30d5\u30bb\u30c3\u30c8 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidRawSignatureBytes.message=\u3053\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u306b\u4e00\u3064\u4ee5\u4e0a\u306e\u7121\u52b9\u306a16\u9032\u6570\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.message=\u30b7\u30b0\u30cd\u30c1\u30e3\u304c\u5fc5\u8981\u3067\u3059\u3002 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.title=\u30b7\u30b0\u30cd\u30c1\u30e3\u304c\u6b20\u3051\u3066\u3044\u307e\u3059 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignatureBytes.title=\u30b7\u30b0\u30cd\u30c1\u30e3\u304c\u7121\u52b9\u3067\u3059 -FileTypeIdGlobalSettingsPanel.JOptionPane.loadFailed.title=\u8aad\u307f\u8fbc\u307f\u304c\u5931\u6557\u3057\u307e\u3057\u305f -FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title=\u4fdd\u5b58\u304c\u5931\u6557\u3057\u307e\u3057\u305f -FileTypeIdGlobalSettingsPanel.newTypeButton.text=\u65b0\u898f\u30bf\u30a4\u30d7 -FileTypeIdGlobalSettingsPanel.signatureComboBox.asciiItem=\u30b9\u30c8\u30ea\u30f3\u30b0\uff08ASCII\uff09 -FileTypeIdGlobalSettingsPanel.signatureComboBox.rawItem=\u30d0\u30a4\u30c8\uff08HEX\uff09 -OptionsCategory_Keywords_FileTypeId=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7ID +# {0} - \u30bf\u30a4\u30d7\u540d +AddFileTypePanel.containsIllegalCharacter.message=\u4ee3\u308f\u308a\u306bMIME\u30bf\u30a4\u30d7\u306e\u7121\u52b9\u306a\u6587\u5b57 {0} \u304c\u63d0\u6848\u3055\u308c\u307e\u3057\u305f +AddFileTypePanel.containsIllegalCharacter.title=MIME\u30bf\u30a4\u30d7\u306e\u7121\u52b9\u306a\u6587\u5b57 +AddFileTypePanel.mimeFormatLabel.text=MIME\u30bf\u30a4\u30d7\u306e\u5f62\u5f0f\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: \u30e1\u30c7\u30a3\u30a2\u30bf\u30a4\u30d7/\u30e1\u30c7\u30a3\u30a2\u30b5\u30d6\u30bf\u30a4\u30d7 +# {0} - \u30e1\u30c7\u30a3\u30a2\u30b5\u30d6\u30bf\u30a4\u30d7 +AddFileTypePanel.nonStandardMIMEType.message=MIME\u30bf\u30a4\u30d7\u306e\u5f62\u5f0f\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093: \u30e1\u30c7\u30a3\u30a2\u30bf\u30a4\u30d7/\u30e1\u30c7\u30a3\u30a2\u30b5\u30d6\u30bf\u30a4\u30d7\u3002\u4ee3\u308f\u308a\u306b\u30ab\u30b9\u30bf\u30e0/{0} \u304c\u63d0\u6848\u3055\u308c\u307e\u3057\u305f\u3002 +AddFileTypePanel.nonStandardMIMEType.title=\u975e\u6a19\u6e96\u306eMIME\u30bf\u30a4\u30d7 +AddFileTypeSignatureDialog.addButton.title=OK +AddFileTypeSignatureDialog.cancelButton.title=\u53d6\u308a\u6d88\u3057 +AddFileTypeSignatureDialog.invalidSignature.message=\u7121\u52b9\u306a\u7f72\u540d +AddFileTypeSignaturePanel.signatureStringFail.text=\u7f72\u540d\u6587\u5b57\u5217\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +AddMimeTypeDialog.addButton.title=OK +AddMimeTypeDialog.cancelButton.title=\u53d6\u308a\u6d88\u3057 +AddMimeTypedialog.title=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +AddMimeTypePanel.emptySetName.message=\u30a2\u30e9\u30fc\u30c8\u304c\u8981\u6c42\u3055\u308c\u305f\u5834\u5408\u3001\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +AddMimeTypePanel.emptySetName.title=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +AddMimeTypePanel.emptySigList.message=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u7f72\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +AddMimeTypePanel.emptySigList.title=\u7121\u52b9\u306a\u7f72\u540d\u30ea\u30b9\u30c8 +CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +FileTypeIdGlobalSettingsPanel.Title=\u30b0\u30ed\u30fc\u30d0\u30eb\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u8a2d\u5b9a OptionsCategory_Name_FileTypeId=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 -FileTypeIdGlobalSettingsPanel.loadFileTypes.errorMessage=\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f -FileTypeIdGlobalSettingsPanel.saveFileTypes.errorMessage=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.message=\u30a2\u30e9\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +OptionsCategory_Keywords_FileTypeId=FileTypeId +OpenIDE-Module-Name=FileTypeId +FileTypeIdIngestModule.moduleName.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225 +FileTypeIdIngestModule.moduleDesc.text=\u30d0\u30a4\u30ca\u30ea\u30fc\u7f72\u540d\u306b\u57fa\u3065\u304d\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u7167\u5408\u3057\u307e\u3059\u3002 +FileTypeIdIngestModule.complete.totalProcTime=\u5408\u8a08\u51e6\u7406\u6642\u9593 +FileTypeIdIngestModule.complete.totalFiles=\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u306b\u8cbb\u3084\u3057\u305f\u5408\u8a08\u6642\u9593 +FileTypeIdIngestModule.complete.srvMsg.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7ID\u7d50\u679c +FileTypeIdModuleFactory.getIngestJobSettingsPanel.exception.msg=instanceof FileTypeIdModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +FileTypeIdModuleFactory.createFileIngestModule.exception.msg=instanceof FileTypeIdModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.toolTipText=\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u6570\u306b\u5fdc\u3058\u3066\u3001\u3053\u306e\u30dc\u30c3\u30af\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3068\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u901f\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 +FileTypeIdIngestJobSettingsPanel.skipKnownCheckBox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb(NSRL)\u3092\u30b9\u30ad\u30c3\u30d7 +FileTypeIdGlobalSettingsPanel.deleteTypeButton.text=\u30bf\u30a4\u30d7\u3092\u524a\u9664 +FileTypeIdGlobalSettingsPanel.signatureComboBox.rawItem=\u30d0\u30a4\u30c8(16\u9032\u6570) +FileTypeIdGlobalSettingsPanel.signatureComboBox.asciiItem=\u6587\u5b57\u5217(ASCII) FileTypeIdGlobalSettingsPanel.offsetComboBox.startItem=\u958b\u59cb -FileTypeIdGlobalSettingsPanel.offsetComboBox.endItem=\u505c\u6b62 -FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.length=\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u30b7\u30b0\u30cd\u30c1\u30e3\u30b5\u30a4\u30ba\u3088\u308a\u5c0f\u3055\u304f\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002 -FileTypeIdGlobalSettingsPanel.jLabel2.text=MIME\u30bf\u30a4\u30d7\uff1a -FileTypeIdGlobalSettingsPanel.startUp.fileTypeDetectorInitializationException.msg=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u30c7\u30a3\u30c6\u30af\u30bf\u3092\u8d77\u52d5\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -AddFileTypeSignaturePanel.signatureTypeLabel.text=\u30b7\u30b0\u30cd\u30c1\u30e3\u30bf\u30a4\u30d7 -AddFileTypeSignaturePanel.signatureLabel.text=\u30b7\u30b0\u30cd\u30c1\u30e3 -AddFileTypeSignaturePanel.offsetRelativeToLabel.text=\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u6b21\u3068\u76f8\u5bfe\u7684 +FileTypeIdGlobalSettingsPanel.offsetComboBox.endItem=\u7d42\u4e86 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.message=MIME\u30bf\u30a4\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidMIMEType.title=MIME\u30bf\u30a4\u30d7\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.message=\u7f72\u540d\u304c\u5fc5\u8981\u3067\u3059\u3002 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignature.title=\u7f72\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.length=\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u7f72\u540d\u30b5\u30a4\u30ba\u3088\u308a\u3082\u5c0f\u3055\u304f\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.message=\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u6b63\u306e\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidOffset.title=\u7121\u52b9\u306a\u30aa\u30d5\u30bb\u30c3\u30c8 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidRawSignatureBytes.message=\u7f72\u540d\u306b1\u3064\u4ee5\u4e0a\u306e\u7121\u52b9\u306a16\u9032\u6570\u306e\u6841\u304c\u3042\u308a\u307e\u3059\u3002 +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidSignatureBytes.title=\u7121\u52b9\u306a\u7f72\u540d +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.message= +FileTypeIdGlobalSettingsPanel.JOptionPane.invalidInterestingFilesSetName.title=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title=\u4fdd\u5b58\u5931\u6557 +FileTypeIdGlobalSettingsPanel.JOptionPane.loadFailed.title=\u8aad\u307f\u8fbc\u307f\u5931\u6557 +FileTypeIdGlobalSettingsPanel.loadFileTypes.errorMessage=\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +FileTypeIdGlobalSettingsPanel.saveFileTypes.errorMessage=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +FileTypeIdGlobalSettingsPanel.newTypeButton.text=\u65b0\u898f\u30bf\u30a4\u30d7 +FileTypeIdGlobalSettingsPanel.jLabel2.text=\u30ab\u30b9\u30bf\u30e0MIME\u30bf\u30a4\u30d7: +FileTypeIdGlobalSettingsPanel.startUp.fileTypeDetectorInitializationException.msg=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u691c\u51fa\u30c4\u30fc\u30eb\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 AddFileTypeSignaturePanel.offsetLabel.text=\u30d0\u30a4\u30c8\u30aa\u30d5\u30bb\u30c3\u30c8 +AddFileTypeSignaturePanel.signatureTextField.text= +AddFileTypeSignaturePanel.signatureTypeLabel.text=\u7f72\u540d\u30bf\u30a4\u30d7 +AddFileTypeSignaturePanel.signatureLabel.text=\u7f72\u540d +AddFileTypeSignaturePanel.hexPrefixLabel.text=0x +AddFileTypeSignaturePanel.offsetRelativeToLabel.text=\u30aa\u30d5\u30bb\u30c3\u30c8\u76f8\u5bfe\u5148 +AddFileTypeSignaturePanel.offsetTextField.text= +FileTypeIdGlobalSettingsPanel.jLabel1.text=\u7f72\u540d +FileTypeIdGlobalSettingsPanel.editTypeButton.text=\u30bf\u30a4\u30d7\u3092\u7de8\u96c6 +AddFileTypePanel.mimeTypeTextField.text= AddFileTypePanel.mimeTypeLabel.text=MIME\u30bf\u30a4\u30d7 -FileTypeIdGlobalSettingsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\uff01 -FileTypeIdGlobalSettingsPanel.jLabel3.text=Autopsy\u306f\u81ea\u52d5\u7684\u306b\u591a\u304f\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u691c\u77e5\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u306b\u306f\u3042\u306a\u305f\u306e\u30ab\u30b9\u30bf\u30e0\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +AddFileTypePanel.deleteSigButton.text=\u7f72\u540d\u3092\u524a\u9664 +AddFileTypePanel.jLabel1.text=\u7f72\u540d +AddFileTypePanel.editSigButton.text=\u7f72\u540d\u3092\u7de8\u96c6 +AddFileTypePanel.addSigButton.text=\u7f72\u540d\u3092\u8ffd\u52a0 +AddFileTypePanel.postHitCheckBox.text=\u691c\u51fa\u6642\u306b"\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb"\u3068\u3057\u3066\u30a2\u30e9\u30fc\u30c8 +AddFileTypePanel.setNameLabel.text=\u30bb\u30c3\u30c8\u540d +AddFileTypePanel.setNameTextField.text= +FileTypeIdGlobalSettingsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306f\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093! +FileTypeIdGlobalSettingsPanel.jLabel3.text=Autopsy\u306f\u81ea\u52d5\u7684\u306b\u591a\u304f\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u691c\u51fa\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java index 0c885472de..46b60d9b1e 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeDetector.java @@ -18,6 +18,7 @@ */ package org.sleuthkit.autopsy.modules.filetypeid; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -29,6 +30,7 @@ import org.apache.tika.Tika; import org.apache.tika.io.TikaInputStream; import org.apache.tika.mime.MimeTypes; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.textextractors.TextFileExtractor; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.ReadContentInputStream; import org.sleuthkit.datamodel.TskCoreException; @@ -249,6 +251,17 @@ public class FileTypeDetector { mimeType = tikaType.replace("tika-", ""); //NON-NLS mimeType = removeOptionalParameter(mimeType); } + } else { + /* + * If the file was marked as an octet stream and the extension is .txt, try to detect a text + * encoding with Decodetect. + */ + if (file.getNameExtension().equals("txt")) { + Charset detectedCharset = TextFileExtractor.getEncoding(file); + if (detectedCharset != TextFileExtractor.UNKNOWN_CHARSET) { + mimeType = MimeTypes.PLAIN_TEXT; + } + } } /** diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdModuleFactory.java b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdModuleFactory.java index f80340303d..c8ca8b7a1c 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdModuleFactory.java +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/FileTypeIdModuleFactory.java @@ -41,11 +41,11 @@ public class FileTypeIdModuleFactory extends IngestModuleFactoryAdapter { * * @return The module display name. */ - static String getModuleName() { + public static String getModuleName() { return NbBundle.getMessage(FileTypeIdIngestModule.class, "FileTypeIdIngestModule.moduleName.text"); } - + @Override public String getModuleDisplayName() { return getModuleName(); diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties index 47a18afeda..3f5ea43a61 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties @@ -1,207 +1,297 @@ +HashDbCreateDatabaseDialog.databaseCreationError=\u65b0\u898f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbCreateDatabaseDialog.databaseLookupError=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbCreateDatabaseDialog.duplicateName=\u3053\u306e\u540d\u524d\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +HashDbCreateDatabaseDialog.missingOrg=\u7d44\u7e54\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +HashDbCreateDatabaseDialog.populateOrgsError.message=\u7d44\u7e54\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +HashDbImportDatabaseDialog.databaseLookupError=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbImportDatabaseDialog.duplicateName=\u3053\u306e\u540d\u524d\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u30d0\u30fc\u30b8\u30e7\u30f3\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +HashDbImportDatabaseDialog.missingOrg=\u7d44\u7e54\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +HashDbImportDatabaseDialog.missingVersion=\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +HashDbImportDatabaseDialog.mustEnterHashSetNameMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbImportDatabaseDialog.populateOrgsError.message=\u7d44\u7e54\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +HashDbIngestModule.dialogTitle.errorFindingArtifacts=\u6b21\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +HashDbIngestModule.errorMessage.lookingForFileArtifacts={0} \u306e\u65e2\u5b58\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbIngestModule.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d2\u30c3\u30c8\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashDbIngestModule.knownBadFileSearchWillNotExecuteWarn=\u9855\u8457\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002 +HashDbIngestModule.knownFileSearchWillNotExecuteWarn=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002 +HashDbIngestModule.noKnownBadHashDbSetMsg=\u9855\u8457\u306a\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +HashDbIngestModule.noKnownHashDbSetMsg=\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +HashDbManager.CentralRepoHashDb.orgError=\u7d44\u7e54\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbManager.centralRepoLoadError.message=\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d +HashDbManager.noDbPath.message=\u6b21\u306e\u305f\u3081\u306e\u6709\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +HashDbSearchAction.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +HashDbSearchPanel.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +HashLookupSettingsPanel.centralRepo=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc +HashLookupSettingsPanel.editable=\u7de8\u96c6\u53ef\u80fd +HashLookupSettingsPanel.indexNsrl.text=\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306fNSRL\u306e\u3088\u3046\u306b\u898b\u3048\u308b\u305f\u3081\u3001\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002\n +HashLookupSettingsPanel.indexNsrl.title=NSRL\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u307e\u305b\u3093\u3002 +HashLookupSettingsPanel.notApplicable=N/A +HashLookupSettingsPanel.promptMessage.deleteHashDb=\u3053\u308c\u306b\u3088\u308a\u3001\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u7d9a\u884c\u3057\u307e\u3059\u304b?\n\n\u6ce8: \u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5f8c\u304b\u3089\u3067\u3082\u518d\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002 +HashLookupSettingsPanel.promptTitle.deleteHashDb=\u69cb\u6210\u304b\u3089\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664 +HashLookupSettingsPanel.readOnly=\u8aad\u307f\u53d6\u308a\u5c02\u7528 +# {0} - \u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u540d +HashLookupSettingsPanel.removeDatabaseFailure.message=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +# {0} - nsrlUrlAddress +HashLookupSettingsPanel.removeUnindexedNsrl.text=NSRL\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3059\u308b\u4ee3\u308f\u308a\u306b\u3001\u3053\u3053\u3067\u5165\u624b\u53ef\u80fd\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u6e08\u307f\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044:\n{0} +HashLookupSettingsPanel.removeUnindexedNsrl.title=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u306a\u3044NSRL(s)\u306f\u524a\u9664\u3055\u308c\u307e\u3059 +HashLookupSettingsPanel.saveFail.message=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashLookupSettingsPanel.saveFail.title=\u4fdd\u5b58\u5931\u6557 +HashLookupSettingsPanel.Title=\u30b0\u30ed\u30fc\u30d0\u30eb\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a +# {0} - nsrlHashSet +HashLookupSettingsPanel.unindexedNsrl.base=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306eNSRL\u306e\u3088\u3046\u306b\u898b\u3048\u308b\u305f\u3081\u3001\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002\nHash set:{0}\n +# {0} - nsrlHashSets +HashLookupSettingsPanel.unindexedNsrls.base=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306eNSRL\u306e\u3088\u3046\u306b\u898b\u3048\u308b\u305f\u3081\u3001\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002\nHash sets:{0}\n +HashLookupSettingsPanel.updateStatusError=\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ImportCentralRepoDbProgressDialog.errorParsingFile.message=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ImportCentralRepoDbProgressDialog.linesProcessed.message=\ \u51e6\u7406\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5 +ImportCentralRepoDbProgressDialog.title.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059 OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ - \u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb \n\n\ - \u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u306b\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001\u300c\u65e2\u77e5\u300d\uff08NSRL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u300c\u65e2\u77e5\u300d\u30d5\u30a1\u30a4\u30eb\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u57fa\u306b\uff09\u307e\u305f\u306f\u300c\u60aa\u8cea\uff0f\u7591\u308f\u3057\u3044\u300d\uff08\u30e6\u30fc\u30b6\u30fc\u304c\u6307\u5b9a\u3057\u305f\u5358\u6570\u307e\u305f\u306f\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u57fa\u306b\uff09\u3068\u30de\u30fc\u30af\u3057\u307e\u3059\u3002\n\n\ - \u30cf\u30c3\u30b7\u30e5\u3084\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u306b\u57fa\u3065\u3044\u305f\u30d5\u30a1\u30a4\u30eb\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306a\u3069\u3001\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306fGUI\u306b\u9023\u643a\u3057\u3066\u3044\u308b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3057\u306a\u3044\u3001\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u304c\u542b\u307e\u308c\u307e\u3059\u3002 -OpenIDE-Module-Name=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 + \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 \n\n\ + \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001\u300c\u65e2\u77e5\u300d(\u300c\u65e2\u77e5\u300d\u30d5\u30a1\u30a4\u30eb\u306eNSRL\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306b\u57fa\u3065\u304f)\u304a\u3088\u3073\u300c\u4e0d\u6b63 / \u8208\u5473\u6df1\u3044\u300d(\u30e6\u30fc\u30b6\u30fc\u304c\u63d0\u4f9b\u3059\u308b1\u3064\u4ee5\u4e0a\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u57fa\u3065\u304f)\u3068\u30de\u30fc\u30af\u4ed8\u3051\u3057\u307e\u3059\u3002\n\n\ + \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u3084\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u69cb\u6210\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u306a\u3069\u306e\u3001GUI\u306b\u7d71\u5408\u3055\u308c\u3066\u3044\u308b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30c4\u30fc\u30eb\u4ee5\u5916\u306e\u305d\u306e\u4ed6\u306e\u30c4\u30fc\u30eb\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +OpenIDE-Module-Name=HashDatabases +OptionsCategory_Name_HashDatabase=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +OptionsCategory_Keywords_HashDatabase=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 HashDbSearchPanel.hashTable.columnModel.title0=MD5\u30cf\u30c3\u30b7\u30e5 HashDbSearchPanel.addButton.text=\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 -HashDbSearchPanel.hashLabel.text=MD5\u30cf\u30c3\u30b7\u30e5\uff1a +HashDbSearchPanel.hashField.text= +HashDbSearchPanel.hashLabel.text=MD5\u30cf\u30c3\u30b7\u30e5: HashDbSearchPanel.searchButton.text=\u691c\u7d22 -HashDbSearchPanel.removeButton.text=\u9078\u629e\u3057\u305f\u3082\u306e\u3092\u524a\u9664 -HashDbSearchPanel.titleLabel.text=\u6b21\u306eMD5\u30cf\u30c3\u30b7\u30e5\u4ed8\u304d\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\uff1a -HashDbSearchPanel.errorField.text=\u30a8\u30e9\u30fc\uff1a\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30cf\u30c3\u30b7\u30e5\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashDbSearchPanel.removeButton.text=\u9078\u629e\u3055\u308c\u305f\u9805\u76ee\u3092\u524a\u9664 +HashDbSearchPanel.titleLabel.text=\u6b21\u306eMD5\u30cf\u30c3\u30b7\u30e5\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22: +HashDbSearchPanel.errorField.text=\u30a8\u30e9\u30fc: \u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30cf\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 HashDbSearchPanel.saveBox.text=\u30cf\u30c3\u30b7\u30e5\u3092\u8a18\u61b6 -HashDbSearchPanel.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -OpenIDE-Module-Short-Description=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304a\u3088\u3073\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c4\u30fc\u30eb -HashDbImportDatabaseDialog.jLabel1.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\uff1a -HashDbImportDatabaseDialog.knownBadRadioButton.text=\u65e2\u77e5\u306e\u60aa\u8cea -HashDbImportDatabaseDialog.jLabel2.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30bf\u30a4\u30d7\uff1a +HashDbSearchPanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +OpenIDE-Module-Short-Description=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30c4\u30fc\u30eb +HashDbImportDatabaseDialog.jLabel1.text=\u540d\u524d: +HashDbImportDatabaseDialog.databasePathTextField.text= +HashDbImportDatabaseDialog.knownBadRadioButton.text=\u9855\u8457 +HashDbImportDatabaseDialog.jLabel2.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30bf\u30a4\u30d7: HashDbImportDatabaseDialog.okButton.text=OK -HashDbImportDatabaseDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -HashDbCreateDatabaseDialog.jLabel2.text=\u30bf\u30a4\u30d7\uff1a -HashDbCreateDatabaseDialog.knownBadRadioButton.text=\u65e2\u77e5\u306e\u60aa\u8cea -HashDbCreateDatabaseDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -ModalNoButtons.CURRENTLYON_LABEL.text=y\u306ex\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -ModalNoButtons.GO_GET_COFFEE_LABEL.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d\u3067\u3059\u3002\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 -ModalNoButtons.CANCEL_BUTTON.text=\u30ad\u30e3\u30f3\u30bb\u30eb -HashDbImportDatabaseDialog.knownRadioButton.text=\u65e2\u77e5\uff08NSRL\u307e\u305f\u306f\u305d\u306e\u4ed6\uff09 +HashDbImportDatabaseDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +HashDbCreateDatabaseDialog.jLabel2.text=\u30bf\u30a4\u30d7: +HashDbCreateDatabaseDialog.knownBadRadioButton.text=\u9855\u8457 +HashDbCreateDatabaseDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +ModalNoButtons.CURRENTDB_LABEL.text=(CurrentDb) +ModalNoButtons.CURRENTLYON_LABEL.text=\u73fe\u5728y\u306ex\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4e2d\u3067\u3059 +ModalNoButtons.GO_GET_COFFEE_LABEL.text=\u73fe\u5728\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4e2d\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +ModalNoButtons.CANCEL_BUTTON.text=\u53d6\u308a\u6d88\u3057 +HashDbImportDatabaseDialog.knownRadioButton.text=\u65e2\u77e5(NSRL\u307e\u305f\u306f\u305d\u306e\u4ed6) HashDbCreateDatabaseDialog.knownRadioButton.text=\u65e2\u77e5 -HashDbCreateDatabaseDialog.saveAsButton.text=\u540d\u524d\u3092\u3064\u3051\u3066\u4fdd\u5b58\u2026 -HashDbImportDatabaseDialog.jLabel3.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9\uff1a -HashDbCreateDatabaseDialog.sendIngestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u6bce\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b -HashDbImportDatabaseDialog.sendIngestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u6bce\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b +HashDbCreateDatabaseDialog.saveAsButton.text=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58... +HashDbCreateDatabaseDialog.hashSetNameTextField.text= +HashDbImportDatabaseDialog.jLabel3.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9: +HashDbCreateDatabaseDialog.sendIngestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u3054\u3068\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u53d7\u4fe1\u7bb1\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 +HashDbImportDatabaseDialog.sendIngestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u3054\u3068\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u53d7\u4fe1\u7bb1\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 +HashDbImportDatabaseDialog.hashSetNameTextField.text= HashDbImportDatabaseDialog.openButton.text=\u958b\u304f... -HashDbCreateDatabaseDialog.jLabel3.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\uff1a +HashDbCreateDatabaseDialog.jLabel3.text=\u540d\u524d: HashDbCreateDatabaseDialog.okButton.text=OK -AddContentToHashDbAction.ContentMenu.noHashDbsConfigd=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -AddContentToHashDbAction.ContentMenu.createDbItem=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210... -AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr1.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 -AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr2.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 -AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr3.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 -AddContentToHashDbAction.addFilesToHashSet.unableToAddFileMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b{0}\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -AddContentToHashDbAction.addFilesToHashSet.unableToAddFileSzMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b{0}\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30cf\u30c3\u30b7\u30e5\u304c\u8a08\u7b97\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u9069\u5207\u306a\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u3001\u5b9f\u884c\u3057\u3066\u4e0b\u3055\u3044\u3002 +HashDbCreateDatabaseDialog.databasePathTextField.text= +AddContentToHashDbAction.ContentMenu.noHashDbsConfigd=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +AddContentToHashDbAction.ContentMenu.createDbItem=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f5c\u6210... +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr1.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr2.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 +AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr3.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileMsg={0} \u3092\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002 +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileEmptyMsg={0} \u3092\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +AddContentToHashDbAction.addFilesToHashSet.unableToAddFileSzMsg={0} \u3092\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002\u30cf\u30c3\u30b7\u30e5\u304c\u8a08\u7b97\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u9069\u5207\u306a\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u69cb\u6210\u3057\u3066\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 HashDatabaseOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -HashDatabaseOptionsPanelController.moduleErrMsg=HashDatabaseOptionsPanelController\u306e\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\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u5b8c\u5168\u3067\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 -HashDbConfigPanel.noSelectionText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +HashDatabaseOptionsPanelController.moduleErrMsg=HashDatabaseOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbConfigPanel.noSelectionText= HashDbConfigPanel.errorGettingPathText=\u30d1\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -HashDbConfigPanel.errorGettingIndexStatusText=\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -HashDbConfigPanel.indexButtonText.index=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 -HashDbConfigPanel.indexButtonText.indexing=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -HashDbConfigPanel.indexStatusText.indexGen=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059 -HashDbConfigPanel.indexStatusText.indexOnly=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u307f -HashDbConfigPanel.indexStatusText.indexed=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u6e08\u307f +HashDbConfigPanel.errorGettingIndexStatusText=\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbConfigPanel.indexButtonText.index=\u7d22\u5f15 +HashDbConfigPanel.indexButtonText.indexing=\u7d22\u5f15\u751f\u6210 +HashDbConfigPanel.indexStatusText.indexGen=\u73fe\u5728\u7d22\u5f15\u3092\u751f\u6210\u4e2d\u3067\u3059 +HashDbConfigPanel.indexStatusText.indexOnly=\u7d22\u5f15\u306e\u307f +HashDbConfigPanel.indexButtonText.indexing=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u6e08\u307f HashDbConfigPanel.indexButtonText.reIndex=\u518d\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 -HashDbConfigPanel.indexStatusText.noIndex=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u7121\u3057 -HashDbConfigPanel.dbsNotIndexedMsg=\u6b21\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3057\u307e\u3059\u304b\uff1f\n {0} -HashDbConfigPanel.unindexedDbsMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -HashDbConfigPanel.allUnindexedDbsRmFromListMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059 +HashDbConfigPanel.indexStatusText.noIndex=\u7d22\u5f15\u304c\u3042\u308a\u307e\u305b\u3093 +HashDbConfigPanel.dbsNotIndexedMsg=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4eca\u3059\u3050\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3057\u307e\u3059\u304b? \n {0} +HashDbConfigPanel.dbNotIndexedMsg=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4eca\u3059\u3050\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3057\u307e\u3059\u304b? \n{0} +HashDbConfigPanel.unindexedDbsMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +HashDbConfigPanel.allUnindexedDbsRmFromListMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u306a\u3044\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u30ea\u30b9\u30c8\u304b\u3089\u3059\u3079\u3066\u524a\u9664\u3055\u308c\u307e\u3059 HashDbConfigPanel.nameColLbl=\u540d\u524d -HashDbConfigPanel.editingCellsNotSupportedMsg=\u30bb\u30eb\u306f\u7de8\u96c6\u4e0d\u53ef\u3067\u3059 -HashDbCreateDatabaseDialog.createHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210 -HashDbCreateDatabaseDialog.hashDbMustHaveFileExtensionMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306f .{0} \u306e\u62e1\u5f35\u5b50\u304c\u5fc5\u8981\u3067\u3059\u3002 +HashDbConfigPanel.editingCellsNotSupportedMsg=\u30bb\u30eb\u306e\u7de8\u96c6\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +HashDbCreateDatabaseDialog.defaultFileName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +HashDbCreateDatabaseDialog.createHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f5c\u6210 +HashDbCreateDatabaseDialog.hashDbMustHaveFileExtensionMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306b\u306f .{0} \u62e1\u5f35\u5b50\u304c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 HashDbCreateDatabaseDialog.fileNameErr=\u30d5\u30a1\u30a4\u30eb\u540d\u30a8\u30e9\u30fc -HashDbCreateDatabaseDialog.fileNameAlreadyExistsMsg=\u540c\u540d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u8a2d\u5b9a\u3057\u3066\u4e0b\u3055\u3044\u3002 -HashDbCreateDatabaseDialog.fileExistsErr=\u30d5\u30a1\u30a4\u30eb\u304c\u65e2\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u30a8\u30e9\u30fc -HashDbCreateDatabaseDialog.mustEnterHashSetNameMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\u306e\u5165\u529b\u304c\u5fc5\u8981\u3067\u3059 -HashDbCreateDatabaseDialog.createHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u30a8\u30e9\u30fc -HashDbCreateDatabaseDialog.mustEnterHashDbPathMsg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9\u306e\u5165\u529b\u304c\u5fc5\u8981\u3067\u3059\u3002 -HashDbCreateDatabaseDialog.errMsg.hashDbCreationErr=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u30a8\u30e9\u30fc -HashDbCreateDatabaseDialog.cannotCreateFileAtLocMsg=\u6307\u5b9a\u3055\u308c\u305f\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 -HashDbCreateDatabaseDialog.failedToCreateHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -HashDbImportDatabaseDialog.importHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 -HashDbImportDatabaseDialog.fileNameExtFilter.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb -HashDbImportDatabaseDialog.failedToGetDbPathMsg=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30b9\u306e\u5165\u624b\u3092\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -HashDbImportDatabaseDialog.importHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a8\u30e9\u30fc\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 -HashDbImportDatabaseDialog.mustSelectHashDbFilePathMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u9078\u629e\u304c\u5fc5\u8981\u3067\u3059\u3002 -HashDbImportDatabaseDialog.hashDbDoesNotExistMsg=\u9078\u629e\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -HashDbImportDatabaseDialog.errorMessage.failedToOpenHashDbMsg={0}\u3067\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u304f\u306e\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +HashDbCreateDatabaseDialog.fileNameAlreadyExistsMsg=\u3053\u306e\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +HashDbCreateDatabaseDialog.fileExistsErr=\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306e\u30a8\u30e9\u30fc +HashDbCreateDatabaseDialog.mustEnterHashSetNameMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbCreateDatabaseDialog.createHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u4f5c\u6210\u30a8\u30e9\u30fc +HashDbCreateDatabaseDialog.mustEnterHashDbPathMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbCreateDatabaseDialog.errMsg.hashDbCreationErr=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u4f5c\u6210\u30a8\u30e9\u30fc +HashDbCreateDatabaseDialog.cannotCreateFileAtLocMsg=\u9078\u629e\u3057\u305f\u5834\u6240\u3067\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +HashDbCreateDatabaseDialog.failedToCreateHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashDbImportDatabaseDialog.importHashDbMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +HashDbImportDatabaseDialog.fileNameExtFilter.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb +HashDbImportDatabaseDialog.failedToGetDbPathMsg=\u9078\u629e\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashDbImportDatabaseDialog.importHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a4\u30f3\u30dd\u30fc\u30c8\u30a8\u30e9\u30fc +HashDbImportDatabaseDialog.mustSelectHashDbFilePathMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbImportDatabaseDialog.hashDbDoesNotExistMsg=\u9078\u629e\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +HashDbImportDatabaseDialog.unableToCopyToUserDirMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30e6\u30fc\u30b6\u30fc\u69cb\u6210\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u306b\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 +HashDbImportDatabaseDialog.errorMessage.failedToOpenHashDbMsg={0} \u306b\u3042\u308b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002 HashLookupModuleFactory.moduleName.text=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7 -HashLookupModuleFactory.moduleDescription.text=\u6a19\u6e96\u306eNSRL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306a\u3069\u3001\u63d0\u4f9b\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5229\u7528\u3057\u3066\u3001\u65e2\u77e5\u307e\u305f\u306f\u7591\u308f\u3057\u3044\u3082\u306e\u3092\u691c\u77e5\u3057\u307e\u3059\u3002 -HashDbIngestModule.noKnownHashDbSetMsg=\u65e2\u77e5\u306e\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -HashDbIngestModule.knownFileSearchWillNotExecuteWarn=\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u304c\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002 -HashDbIngestModule.noKnownBadHashDbSetMsg=\u65e2\u77e5\u306e\u60aa\u8cea\u306a\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30bb\u30c3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -HashDbConfigPanel.dbNotIndexedMsg=\u6b21\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3057\u307e\u3059\u304b\uff1f\n{0} -HashDbIngestModule.knownBadFileSearchWillNotExecuteWarn=\u65e2\u77e5\u306e\u60aa\u8cea\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002 -HashDbIngestModule.fileReadErrorMsg=\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\uff1a {0} -HashDbIngestModule.calcHashValueErr={0}\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8a08\u7b97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -HashDbIngestModule.hashLookupErrorMsg=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30a8\u30e9\u30fc\uff1a {0} -HashDbIngestModule.lookingUpKnownBadHashValueErr={0}\u306e\u65e2\u77e5\u306e\u60aa\u8cea\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -HashDbIngestModule.lookingUpKnownHashValueErr={0}\u306e\u65e2\u77e5\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashLookupModuleFactory.moduleDescription.text=\u6a19\u6e96\u306eNSRL\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306a\u3069\u306e\u63d0\u4f9b\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u3001\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3068\u9855\u8457\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u8b58\u5225\u3057\u307e\u3059\u3002 +HashDbIngestModule.fileReadErrorMsg=\u8aad\u307f\u53d6\u308a\u30a8\u30e9\u30fc: {0} +HashDbIngestModule.calcHashValueErr={0} ({1}) \u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u8a08\u7b97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbIngestModule.hashLookupErrorMsg=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30a8\u30e9\u30fc: {0} +HashDbIngestModule.settingKnownBadStateErr={0} \u306e\u9855\u8457\u306a\u72b6\u614b\u306e\u8a2d\u5b9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbIngestModule.lookingUpKnownBadHashValueErr={0} \u306e\u9855\u8457\u306a\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbIngestModule.lookingUpKnownHashValueErr={0} \u306e\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 HashDbIngestModule.postToBB.fileName=\u30d5\u30a1\u30a4\u30eb\u540d HashDbIngestModule.postToBB.md5Hash=MD5\u30cf\u30c3\u30b7\u30e5 HashDbIngestModule.postToBB.hashsetName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d -HashDbIngestModule.postToBB.knownBadMsg=\u65e2\u77e5\u306e\u60aa\u8cea\: {0} -HashDbIngestModule.complete.knownBadsFound=\u767a\u898b\u3055\u308c\u305f\u65e2\u77e5\u306e\u60aa\u8cea\uff1a -HashDbIngestModule.complete.totalCalcTime=\u8a08\u7b97\u6642\u9593\u306e\u5408\u8a08 -HashDbIngestModule.complete.totalLookupTime=\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u9593\u306e\u5408\u8a08 -HashDbIngestModule.complete.databasesUsed=\u5229\u7528\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff1a +HashDbIngestModule.postToBB.knownBadMsg=\u9855\u8457: {0} +HashDbIngestModule.complete.knownBadsFound=\u898b\u3064\u304b\u3063\u305f\u9855\u8457\u6027: +HashDbIngestModule.complete.totalCalcTime=\u5408\u8a08\u8a08\u7b97\u6642\u9593 +HashDbIngestModule.complete.totalLookupTime=\u5408\u8a08\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u9593 +HashDbIngestModule.complete.databasesUsed=\u4f7f\u7528\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8: HashDbIngestModule.complete.hashLookupResults=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u7d50\u679c -HashDbManager.moduleErrorListeningToUpdatesMsg=HashDbManager\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\u304c\u539f\u56e0\u306a\u306e\u304b\u3092\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u5b8c\u5168\u3067\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 -HashDbManager.replacingDuplicateHashsetNameMsg=\u91cd\u8907\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d {0} \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\n {1}\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\u3002 -HashDbManager.openHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u304f\u30a8\u30e9\u30fc -HashDbManager.unableToOpenHashDbMsg=\ {0} \u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002 -HashDbManager.savedBackupOfOldConfigMsg={0}\n\u53e4\u3044\u8a2d\u5b9a\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b3\u30d4\u30fc\u304c\u6b21\u306e\u901a\u308a\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f\u3002\n{1} -HashDbManager.baseMessage.updatedFormatHashDbConfig=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u5f62\u5f0f\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002 -HashDbManager.msgBoxTitle.confFileFmtChanged=\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u306e\u5909\u66f4\u5b8c\u4e86 -HashDbManager.dlgMsg.dbNotFoundAtLoc=\ {0} \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u6b21\u306e\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n {1}\n \u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u307e\u3059\u304b\uff1f -HashDbManager.dlgTitle.MissingDb=\u6b20\u843d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -HashDbManager.progress.indexingHashSet=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d {0} -HashDbManager.dlgMsg.errorIndexingHashSet=\ {0} \u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d\u306e\u30a8\u30e9\u30fc -HashDbManager.hashDbIndexingErr=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d\u306e\u30a8\u30e9\u30fc -HashDbPanelSearchAction.actionName=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u57fa\u3065\u304f\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -HashDbSearchAction.dlgMsg.noFilesHaveMD5Calculated=MD5\u30cf\u30c3\u30b7\u30e5\u304c\u8a08\u7b97\u3055\u308c\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305a\u306fHashDB\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3057\u3066\u4e0b\u3055\u3044\u3002 +HashDbManager.moduleErrorListeningToUpdatesMsg=HashDbManager\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +HashDbManager.replacingDuplicateHashsetNameMsg=\u691c\u51fa\u3055\u308c\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d {0} \u3092\u8907\u88fd\u3057\u307e\u3059\u3002\n{1} \u3067\u7f6e\u304d\u63db\u3048\u4e2d\u3067\u3059\u3002 +HashDbManager.openHashDbErr=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a4\u30f3\u30aa\u30fc\u30d7\u30f3\u30a8\u30e9\u30fc +HashDbManager.unableToOpenHashDbMsg={0} \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u958b\u3051\u307e\u305b\u3093\u3002 +HashDbManager.savedBackupOfOldConfigMsg={0}\n\u53e4\u3044\u69cb\u6210\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b3\u30d4\u30fc\u304c \n{1} \u3068\u3057\u3066\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f +HashDbManager.baseMessage.updatedFormatHashDbConfig=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u306e\u5f62\u5f0f\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002 +HashDbManager.msgBoxTitle.confFileFmtChanged=\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u306e\u5f62\u5f0f\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f +HashDbManager.dlgMsg.dbNotFoundAtLoc=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 {0} \u304c\n{1}\u306e\u5834\u6240\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\n\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u307e\u3059\u304b? +HashDbManager.dlgTitle.MissingDb=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +HashDbManager.progress.indexingHashSet={0} \u306e\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +HashDbManager.dlgMsg.errorIndexingHashSet={0} \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u7d22\u5f15\u751f\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbManager.hashDbIndexingErr=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30a8\u30e9\u30fc +HashDbPanelSearchAction.actionName=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 +HashDbSearchAction.dlgMsg.noFilesHaveMD5Calculated=\u73fe\u5728MD5\u30cf\u30c3\u30b7\u30e5\u304c\u8a08\u7b97\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u6700\u521d\u306bHashDB\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 HashDbSearchManager.MD5HashSearch=MD5\u30cf\u30c3\u30b7\u30e5\u691c\u7d22 -HashDbSearchManager.noResultsFoundMsg=\u4e00\u81f4\u3059\u308b\u3082\u306e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -HashDbSearchPanel.titleText.ingestOngoing=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\uff1b\u5b8c\u4e86\u3059\u308b\u307e\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -HashDbSearchPanel.noFilesHaveMD5HashMsg=MD5\u30cf\u30c3\u30b7\u30e5\u4ed8\u304d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -HashDbSearchPanel.errorText.noHashesAddedMsg=\u30a8\u30e9\u30fc\uff1a\u30cf\u30c3\u30b7\u30e5\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -HashDbSearchPanel.errorText.hashAlreadyAddedMsg=\u30a8\u30e9\u30fc\uff1a\u30cf\u30c3\u30b7\u30e5\u304c\u65e2\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -HashDbSearchPanel.errorText.invalidMD5HashMsg=\u30a8\u30e9\u30fc\uff1a\u6709\u52b9\u306aMD5\u30cf\u30c3\u30b7\u30e5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -HashDbSearchThread.progress.cancellingSearch={0}\uff08\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026\uff09 -HashDbSearchThread.name.searching=\u691c\u7d22\u4e2d -HashDbSearchThread.noMoreFilesWithMD5Msg=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u4ed8\u304d\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4ed6\u306b\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -ModalNoButtons.indexingDbsTitle=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -ModalNoButtons.indexingDbTitle=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -ModalNoButtons.exitHashDbIndexingMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u4e2d\u6b62\u3057\u307e\u3059\u3002\n\ -\u4f5c\u6210\u3055\u308c\u305f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f\u5229\u7528\u4e0d\u53ef\u3068\u306a\u308a\u307e\u3059\u3002\u7d9a\u884c\u3059\u308b\u5834\u5408\u306f\n\ -\u30cf\u30c3\u30b7\u30e5\u30d5\u30a9\u30eb\u30c0\u5185\u306b\u3042\u308b\u3001\u5bfe\u5fdc\u3059\u308b-md5.idx \u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u4e0b\u3055\u3044\u3002\n\ -\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u4e2d\u6b62\u3057\u307e\u3059\u304b\uff1f -ModalNoButtons.dlgTitle.unfinishedIndexing=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u672a\u5b8c\u4e86 -ModalNoButtons.indexThis.currentlyIndexing1Db=\uff11\u3064\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -ModalNoButtons.indexThese.currentlyIndexing1OfNDbs=\uff11\uff0f {0}\u3064\u76ee\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -ModalNoButtons.propChg.currentlyIndexingXofN={0}\uff0f {1}\u3064\u76ee\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u4e2d -HashDbManager.duplicateHashSetNameExceptionMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d''{0}''\u306f\u65e2\u306b\u5225\u306e\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059\u3002 -HashDbManager.hashDbDoesNotExistExceptionMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6b21\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\n{0} -HashDbManager.hashDbFileExistsExceptionMsg=\u65e2\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u6b21\u306b\u5b58\u5728\u3057\u307e\u3059\n{0} -HashDbManager.hashDbAlreadyAddedExceptionMsg=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\n{0}\n\u306f\u65e2\u306b\u4f5c\u6210\u307e\u305f\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -HashDbManager.illegalHashDbFileNameExtensionMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u540d\u306f.{0}\u306e\u62e1\u5f35\u5b50\u304c\u5fc5\u8981\u3067\u3059\u3002 +HashDbSearchManager.noResultsFoundMsg=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +HashDbSearchPanel.titleText.ingestOngoing=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +HashDbSearchPanel.noFilesHaveMD5HashMsg=\u73fe\u5728MD5\u30cf\u30c3\u30b7\u30e5\u304c\u8a08\u7b97\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +HashDbSearchPanel.errorText.noHashesAddedMsg=\u30a8\u30e9\u30fc: \u30cf\u30c3\u30b7\u30e5\u304c\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +HashDbSearchPanel.errorText.hashAlreadyAddedMsg=\u30a8\u30e9\u30fc: \u30cf\u30c3\u30b7\u30e5\u304c\u3059\u3067\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +HashDbSearchPanel.errorText.invalidMD5HashMsg=\u30a8\u30e9\u30fc: \u305d\u308c\u306f\u6709\u52b9\u306aMD5\u30cf\u30c3\u30b7\u30e5\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +HashDbSearchThread.progress.cancellingSearch={0} (\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) +HashDbSearchThread.name.searching=\u691c\u7d22\u4e2d\u3067\u3059 +HashDbSearchThread.noMoreFilesWithMD5Msg=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u4ed6\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ModalNoButtons.indexingDbsTitle=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +ModalNoButtons.indexingDbTitle=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +ModalNoButtons.exitHashDbIndexingMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u7d22\u5f15\u751f\u6210\u3092\u7d42\u4e86\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\n\ +\u751f\u6210\u3055\u308c\u305f\u7d22\u5f15\u306f\u4f7f\u7528\u3067\u304d\u306a\u3044\u72b6\u614b\u306e\u307e\u307e\u306b\u306a\u308a\u307e\u3059\u3002\u7d9a\u884c\u3092\u9078\u629e\u3059\u308b\u5834\u5408\u3001\n\ + \u30cf\u30c3\u30b7\u30e5\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u8a72\u5f53\u3059\u308b-md5.idx\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\ + \u7d22\u5f15\u751f\u6210\u3092\u7d42\u4e86\u3057\u307e\u3059\u304b? +ModalNoButtons.dlgTitle.unfinishedIndexing=\u5b8c\u4e86\u3057\u3066\u3044\u306a\u3044\u7d22\u5f15\u751f\u6210 +ModalNoButtons.indexThis.currentlyIndexing1Db=\u73fe\u57281\u3064\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +ModalNoButtons.indexThese.currentlyIndexing1OfNDbs=\u73fe\u5728 {0} \u306e1\u3064\u3092\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +ModalNoButtons.propChg.currentlyIndexingXofN=\u73fe\u5728 {1} \u306e {0} \u3092\u7d22\u5f15\u751f\u6210\u4e2d\u3067\u3059 +HashDbManager.duplicateHashSetNameExceptionMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d ''{0}'' \u306f\u3059\u3067\u306b\u4ed6\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +HashDbManager.hashDbDoesNotExistExceptionMsg=\n{0} \u306b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +HashDbManager.hashDbFileExistsExceptionMsg=at\n{0} \u306b\u30d5\u30a1\u30a4\u30eb\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +HashDbManager.hashDbAlreadyAddedExceptionMsg=\n{0}\n \u306b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u3059\u3067\u306b\u4f5c\u6210\u307e\u305f\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +HashDbManager.illegalHashDbFileNameExtensionMsg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u306f .{0} \u62e1\u5f35\u5b50\u304c\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 HashDbManager.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -HashDbManager.knownBad.text=\u65e2\u77e5\u306e\u60aa\u8cea +HashDbManager.knownBad.text=\u9855\u8457 HashDbManager.known.text=\u65e2\u77e5 -HashDbManager.fileNameExtensionFilter.title=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb -HashDbSearchAction.dlgMsg.title=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u57fa\u3065\u3044\u305f\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 +HashDbManager.fileNameExtensionFilter.title=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb +HashDbSearchAction.dlgMsg.title=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 HashDbSearchAction.getName.text=\u30cf\u30c3\u30b7\u30e5\u691c\u7d22 -HashDbSearchPanel.dlgMsg.title=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u57fa\u3065\u304f\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 -AddContentToHashDbAction.singleSelectionName=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0 -AddContentToHashDbAction.multipleSelectionName=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0 -OptionsCategory_Name_HashDatabase=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -OptionsCategory_Keywords_HashDatabase=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 -HashDbManager.ingestRunningExceptionMsg=\u51e6\u7406\u4e2d\uff1b\u5b8c\u4e86\u3059\u308b\u307e\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -ModalNoButtons.CURRENTDB_LABEL.text=\uff08\u73fe\u5728\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff09 -HashDbCreateDatabaseDialog.defaultFileName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 -HashDbManager.saveErrorExceptionMsg=\u30cf\u30c3\u30b7\u30e5\u8a2d\u5b9a\u306e\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbSearchPanel.dlgMsg.title=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u3088\u308b\u30d5\u30a1\u30a4\u30eb\u691c\u7d22 +AddContentToHashDbAction.singleSelectionName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0 +AddContentToHashDbAction.multipleSelectionName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0 +AddContentToHashDbAction.singleSelectionNameDuringIngest=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d) +AddContentToHashDbAction.multipleSelectionNameDuringIngest=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d) +AddContentToHashDbAction.singleSelectionNameNoMD5=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(MD5\u30cf\u30c3\u30b7\u30e5\u306a\u3057) +AddContentToHashDbAction.multipleSelectionNameNoMD5=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(MD5\u30cf\u30c3\u30b7\u30e5\u306a\u3057) +AddContentToHashDbAction.singleSelectionNameEmpty=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(\u7a7a(\u672a\u8a18\u5165)\u306e\u30d5\u30a1\u30a4\u30eb) +AddContentToHashDbAction.multipleSelectionNameEmpty=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0(\u7a7a(\u672a\u8a18\u5165)\u306e\u30d5\u30a1\u30a4\u30eb) +HashDbManager.ingestRunningExceptionMsg=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +HashDbManager.saveErrorExceptionMsg=\u30cf\u30c3\u30b7\u30e5\u69cb\u6210\u306e\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashLookupSettingsPanel.jButton3.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +HashLookupSettingsPanel.jLabel6.text=\u30bf\u30a4\u30d7: +HashLookupSettingsPanel.jLabel4.text=\u5834\u6240: +HashLookupSettingsPanel.jLabel2.text=\u540d\u524d: +HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3067\u3082MD5\u3092\u8a08\u7b97 +HashLookupModuleSettingsPanel.knownHashDbsLabel.text=\u4f7f\u7528\u3059\u308b\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u9078\u629e: +HashLookupModuleSettingsPanel.knownBadHashDbsLabel.text=\u4f7f\u7528\u3059\u308b\u9855\u8457\u306a\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u9078\u629e: AddContentToHashDbAction.addFilesToHashSet.files=\u30d5\u30a1\u30a4\u30eb AddContentToHashDbAction.addFilesToHashSet.file=\u30d5\u30a1\u30a4\u30eb -HashDbManager.errCreatingIndex.title=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -HashDbManager.errCreatingIndex.msg=\u6b21\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a {0} -HashLookupSettingsPanel.jButton3.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 -HashLookupSettingsPanel.jLabel6.text=\u30bf\u30a4\u30d7\uff1a -HashLookupSettingsPanel.jLabel4.text=\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\uff1a -HashLookupSettingsPanel.jLabel2.text=\u540d\u524d\uff1a -HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u304f\u3066\u3082\u3001MD5\u3092\u8a08\u7b97 -HashLookupModuleSettingsPanel.knownHashDbsLabel.text=\u5229\u7528\u3059\u308b\u65e2\u77e5\u306e\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\uff1a -HashLookupModuleSettingsPanel.knownBadHashDbsLabel.text=\u51e6\u7406\u306b\u5229\u7528\u3059\u308b\u65e2\u77e5\u306e\u60aa\u8cea\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u9078\u629e\uff1a -HashLookupModuleFactory.createFileIngestModule.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof HashLookupModuleSettings\u3067\u3059\u3002 -HashLookupModuleFactory.getIngestJobSettingsPanel.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof HashLookupModuleSettings\u3067\u3059\u3002 -HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.toolTipText=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u304f\u3066\u3082\u3001MD5\u3092\u8a08\u7b97 +HashDbManager.errCreatingIndex.title=\u7d22\u5f15\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HashDbManager.errCreatingIndex.msg=\u6b21\u306e\u7d22\u5f15\u3092\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +HashLookupModuleFactory.getIngestJobSettingsPanel.exception.msg=instanceof HashLookupModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +HashLookupModuleFactory.createFileIngestModule.exception.msg=instanceof HashLookupModuleSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.toolTipText=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3067\u3082MD5\u3092\u8a08\u7b97 HashDbSearchPanel.hashTable.defaultModel.title.text=MD5\u30cf\u30c3\u30b7\u30e5 -AddContentToHashDbAction.addFilesToHashSet.unableToAddFileEmptyMsg=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b{0}\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -AddHashValuesToDatabaseDialog.JDialog.Title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0\ -HashLookupSettingsPanel.addHashesToDatabaseButton.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 -AddHashValuesToDatabaseDialog.instructionLabel.text_1=\u4e0b\u8a18\u306bMD5\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u8cbc\u308a\u4ed8\u3051\u308b\uff08\u30e9\u30a4\u30f3\u3054\u3068\u306b\u4e00\u3064\u305a\u3064\uff09\uff1a -AddHashValuesToDatabaseDialog.cancelButton.text_2=\u30ad\u30e3\u30f3\u30bb\u30eb -AddHashValuesToDatabaseDialog.pasteFromClipboardButton.text_2=\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u304b\u3089\u8cbc\u308a\u4ed8\u3051\u308b +AddHashValuesToDatabaseDialog.JDialog.Title=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 +AddHashValuesToDatabaseDialog.instructionLabel.text_1=\u4ee5\u4e0b\u306eMD5\u30cf\u30c3\u30b7\u30e5\u5024(1\u30e9\u30a4\u30f3\u306b\u3064\u304d1\u3064)\u3092\u8cbc\u308a\u4ed8\u3051: +AddHashValuesToDatabaseDialog.cancelButton.text_2=\u53d6\u308a\u6d88\u3057 +AddHashValuesToDatabaseDialog.pasteFromClipboardButton.text_2=\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u304b\u3089\u8cbc\u308a\u4ed8\u3051 AddHashValuesToDatabaseProgressDialog.okButton.text=OK AddHashValuesToDatabaseProgressDialog.statusLabel.text=\u30b9\u30c6\u30fc\u30bf\u30b9 -AddHashValuesToDatabaseProgressDialog.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d7\u30ed\u30b0\u30ec\u30b9\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 -AddHashValuesToDatabaseDialog.title=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 +AddHashValuesToDatabaseProgressDialog.title=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3078\u306e\u30cf\u30c3\u30b7\u30e5\u8ffd\u52a0\u306e\u9032\u6357\u72b6\u6cc1 +AddHashValuesToDatabaseDialog.title=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 AddHashValuesToDatabaseProgressDialog.showErrorsButton.text=\u30a8\u30e9\u30fc\u3092\u8868\u793a -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.parsing=MD5\u30cf\u30c3\u30b7\u30e5\u306b\u30c6\u30ad\u30b9\u30c8\u3092\u30d1\u30fc\u30b9\u4e2d... -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invalidHash=\u30a4\u30f3\u30d7\u30c3\u30c8\u306b\u7121\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invaliHash.msg=\u7121\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\uff1a +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.parsing=MD5\u30cf\u30c3\u30b7\u30e5\u306e\u30c6\u30ad\u30b9\u30c8\u306e\u89e3\u6790\u4e2d\u3067\u3059... +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invalidHash=\u5165\u529b\u306b\u7121\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.invaliHash.msg=\u7121\u52b9\u306a\u30cf\u30c3\u30b7\u30e5: AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.noHashesToAdd=\u8ffd\u52a0\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.success={0}\u30cf\u30c3\u30b7\u30e5\u304c\u6b63\u3057\u304f\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash=\u6709\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6709\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -HashLookupSettingsPanel.deleteDatabaseButton.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u524a\u9664 -HashLookupSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -HashLookupSettingsPanel.addHashesToDatabaseButton.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 -HashLookupSettingsPanel.indexPathLabelLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d1\u30b9\uff1a -HashLookupSettingsPanel.createDatabaseButton.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210 -HashLookupSettingsPanel.informationLabel.text=\u60c5\u5831 -HashLookupSettingsPanel.sendIngestMessagesCheckBox.text=\u30d2\u30c3\u30c8\u6bce\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b -HashLookupSettingsPanel.indexButton.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 -HashLookupSettingsPanel.indexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b9\u30c6\u30fc\u30bf\u30b9\uff1a -HashLookupSettingsPanel.hashDbIndexStatusLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -HashLookupSettingsPanel.hashDbTypeLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -HashLookupSettingsPanel.typeLabel.text=\u30bf\u30a4\u30d7\uff1a -HashLookupSettingsPanel.locationLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9\uff1a -HashLookupSettingsPanel.hashDbLocationLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -HashLookupSettingsPanel.hashDbNameLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -HashLookupSettingsPanel.nameLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\uff1a -HashLookupSettingsPanel.hashDatabasesLabel.text=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff1a -HashLookupSettingsPanel.importDatabaseButton.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 -HashDbCreateDatabaseDialog.databasePathLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d1\u30b9\uff1a +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.success={0} \u30cf\u30c3\u30b7\u30e5\u304c\u6b63\u5e38\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash=\u6709\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u306e\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +AddHashValuesToDatabaseProgressDialog.addHashValuesToDatabase.errorAddingValidHash.msg=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u6709\u52b9\u306a\u30cf\u30c3\u30b7\u30e5\u306e\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: +HashLookupSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +HashLookupSettingsPanel.addHashesToDatabaseButton.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 +HashLookupSettingsPanel.indexPathLabelLabel.text=\u7d22\u5f15\u30d1\u30b9: +HashLookupSettingsPanel.createDatabaseButton.toolTipText= +HashLookupSettingsPanel.createDatabaseButton.text=\u65b0\u898f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +HashLookupSettingsPanel.informationLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u8a73\u7d30 +HashLookupSettingsPanel.sendIngestMessagesCheckBox.text=\u30d2\u30c3\u30c8\u3054\u3068\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u53d7\u4fe1\u7bb1\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 +HashLookupSettingsPanel.indexButton.text=\u7d22\u5f15 +HashLookupSettingsPanel.indexLabel.text=\u7d22\u5f15\u30b9\u30c6\u30fc\u30bf\u30b9: +HashLookupSettingsPanel.hashDbIndexStatusLabel.text= +HashLookupSettingsPanel.hashDbTypeLabel.text= +HashLookupSettingsPanel.typeLabel.text=\u30bf\u30a4\u30d7: +HashLookupSettingsPanel.locationLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9: +HashLookupSettingsPanel.hashDbLocationLabel.text= +HashLookupSettingsPanel.hashDbNameLabel.text= +HashLookupSettingsPanel.nameLabel.text=\u540d\u524d: +HashLookupSettingsPanel.hashDatabasesLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8: +HashLookupSettingsPanel.importDatabaseButton.toolTipText= +HashLookupSettingsPanel.importDatabaseButton.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +HashLookupSettingsPanel.deleteDatabaseButton.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u524a\u9664 +ImportHashDatabaseDialog.lbFilePath.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9: +ImportHashDatabaseDialog.tfDatabaseName.tooltip=\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u540d\u524d +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +ImportHashDatabaseDialog.tfDatabaseName.tooltip=\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u540d\u524d +ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +ImportCentralRepoDbProgressDialog.lbProgress.text=\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u958b\u59cb\u3057\u307e\u3059... +ImportCentralRepoDbProgressDialog.bnOk.text=OK +ImportCentralRepoDbProgressDialog.bnCancel.text=\u53d6\u308a\u6d88\u3057 +HashLookupSettingsPanel.versionLabel.text_1=\u30d0\u30fc\u30b8\u30e7\u30f3: +HashLookupSettingsPanel.hashDbVersionLabel.text_1= +HashLookupSettingsPanel.orgLabel.text_1=\u7d44\u7e54: +HashLookupSettingsPanel.hashDbOrgLabel.text_1= +HashLookupSettingsPanel.readOnlyLabel.text_1=\u8aad\u307f\u53d6\u308a\u5c02\u7528: +HashLookupSettingsPanel.hashDbReadOnlyLabel.text_1= +ImportCentralRepoDbProgressDialog.jLabel1.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d\u3067\u3059 +HashDbImportDatabaseDialog.lbVersion.text=\u30d0\u30fc\u30b8\u30e7\u30f3: +HashDbImportDatabaseDialog.lbOrg.text=\u30bd\u30fc\u30b9\u7d44\u7e54: +HashDbImportDatabaseDialog.readOnlyCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306b\u3059\u308b +HashDbImportDatabaseDialog.orgButton.text=\u7d44\u7e54\u3092\u7ba1\u7406 +HashDbImportDatabaseDialog.versionTextField.text=1.0 +HashDbImportDatabaseDialog.fileTypeRadioButton.text=\u30ed\u30fc\u30ab\u30eb +HashDbImportDatabaseDialog.centralRepoRadioButton.text=\u30ea\u30e2\u30fc\u30c8(\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc) +HashDbImportDatabaseDialog.jLabel4.text=\u5b9b\u5148: +HashDbCreateDatabaseDialog.jLabel4.text=\u5b9b\u5148: +HashDbCreateDatabaseDialog.fileTypeRadioButton.text=\u30ed\u30fc\u30ab\u30eb +HashDbCreateDatabaseDialog.centralRepoRadioButton.text=\u30ea\u30e2\u30fc\u30c8(\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc) +HashDbCreateDatabaseDialog.lbOrg.text=\u30bd\u30fc\u30b9\u7d44\u7e54: +HashDbCreateDatabaseDialog.orgButton.text=\u7d44\u7e54\u3092\u7ba1\u7406 +HashDbCreateDatabaseDialog.databasePathLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d1\u30b9: AddHashValuesToDatabaseDialog.okButton.text_2=OK -HashLookupSettingsPanel.indexPathLabel.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +HashDbImportDatabaseDialog.saveInUserConfigFolderCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u30e6\u30fc\u30b6\u30fc\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u306b\u30b3\u30d4\u30fc +HashDbImportDatabaseDialog.saveInUserConfigFolderCheckbox.toolTipText=\u30e9\u30a4\u30d6\u30c8\u30ea\u30a2\u30fc\u30b8\u306e\u72b6\u6cc1\u3067\u306f\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3088\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3078\u306e\u30d1\u30b9\u304c\u6709\u52b9\u3067\u3042\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002 +HashLookupSettingsPanel.indexPathLabel.text= diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleFactory.java b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleFactory.java index af27157fd8..98b2a27759 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleFactory.java +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/HashLookupModuleFactory.java @@ -47,7 +47,7 @@ public class HashLookupModuleFactory extends IngestModuleFactoryAdapter { * * @return The module name. */ - static String getModuleName() { + public static String getModuleName() { return NbBundle.getMessage(HashLookupModuleFactory.class, "HashLookupModuleFactory.moduleName.text"); } diff --git a/Core/src/org/sleuthkit/autopsy/modules/iOS/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/iOS/Bundle_ja.properties index bfccdf05e9..03cd3cc41e 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/iOS/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/iOS/Bundle_ja.properties @@ -1,5 +1,8 @@ -iOSModuleFactory.moduleDescription=\u30B7\u30B9\u30C6\u30E0\u304A\u3088\u3073\u7B2C\u4E09\u8005\u30A2\u30D7\u30EA\u30C7\u30FC\u30BF\u3092\u62BD\u51FA -iOSModuleFactory.moduleName=iOS\u30A2\u30CA\u30E9\u30A4\u30B6 -TextMessageAnalyzer.bbAttribute.incoming=\u53D7\u4FE1 -TextMessageAnalyzer.bbAttribute.outgoing=\u9001\u4FE1 -TextMessageAnalyzer.bbAttribute.smsMessage=SMS\u30E1\u30C3\u30BB\u30FC\u30B8 \ No newline at end of file +CallLogAnalyzer.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u901a\u8a71\u30ed\u30b0\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ContactAnalyzer.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u9023\u7d61\u5148\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +iOSModuleFactory.moduleName=iOS Analyzer +iOSModuleFactory.moduleDescription=\u30b7\u30b9\u30c6\u30e0\u3068\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u88fd\u30a2\u30d7\u30ea\u30c7\u30fc\u30bf\u3092\u62bd\u51fa +TextMessageAnalyzer.bbAttribute.incoming=\u53d7\u4fe1 +TextMessageAnalyzer.bbAttribute.outgoing=\u9001\u4fe1 +TextMessageAnalyzer.bbAttribute.smsMessage=SMS\u30e1\u30c3\u30bb\u30fc\u30b8 +TextMessageAnalyzer.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u30c6\u30ad\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties index 6f6d7f49cf..5a940ca1fd 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties @@ -1,51 +1,142 @@ -FilesIdentifierIngestJobSettingsPanel.border.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u6709\u52b9\u306b\u3059\u308b\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u9078\u629e\uff1a -FilesSetPanel.descPanel.border.title=\u6982\u8981 -FilesSetPanel.descriptionPanel.border.title=\u6982\u8981 -FilesSetPanel.ignoreKnownFilesCheckbox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 -FilesSetPanel.interesting.messages.filesSetsMustBeNamed=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306f\u540d\u524d\u304c\u5fc5\u8981\u3067\u3059\u3002 -FilesSetPanel.interesting.nameLabel.text=\u30bb\u30c3\u30c8\u540d\uff1a -FilesSetPanel.title=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8 -FilesSetRulePanel.extensionRadioButton.text=\u62e1\u5f35\u5b50\u306e\u307f -FilesSetRulePanel.fullNameRadioButton.text=\u30d5\u30eb\u30cd\u30fc\u30e0 -FilesSetRulePanel.jLabel1.text=\u30bf\u30a4\u30d7*\uff1a -FilesSetRulePanel.messages.emptyNameCondition=\u3053\u306e\u30eb\u30fc\u30eb\u306f\u30cd\u30fc\u30e0\u30d1\u30bf\u30fc\u30f3\u3092\u7279\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -FilesSetRulePanel.messages.invalidCharInName=\u6b63\u898f\u8868\u73fe\u4ee5\u5916\u306f\\\u3001/\u3001\:\u3001*\u3001?\u3001"\u3001<\u3001>\u3092\u540d\u524d\u306b\u542b\u3081\u307e\u305b\u3093\u3002 -FilesSetRulePanel.messages.invalidCharInPath=\u6b63\u898f\u8868\u73fe\u4ee5\u5916\u306f\\\u3001\:\u3001*\u3001?\u3001"\u3001<\u3001>\u3092\u30d1\u30b9\u306b\u542b\u3081\u307e\u305b\u3093\u3002 -FilesSetRulePanel.messages.invalidNameRegex=\u6b63\u898f\u8868\u73fe\u306f\u6709\u52b9\u306a\u540d\u524d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a\n\n{0} -FilesSetRulePanel.messages.invalidPathRegex=\u6b63\u898f\u8868\u73fe\u306f\u6709\u52b9\u306a\u30d1\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a\n\n{0} -FilesSetRulePanel.nameRegexCheckbox.text=\u6b63\u898f\u8868\u73fe -FilesSetRulePanel.pathRegexCheckBox.text=\u6b63\u898f\u8868\u73fe -FilesSetRulePanel.pathSeparatorInfoLabel.text=/\u3092\u30d1\u30b9\u533a\u5207\u308a\u6587\u5b57\u3068\u3057\u3066\u5229\u7528 -FilesSetRulePanel.ruleNameLabel.text=\u30eb\u30fc\u30eb\u540d\uff1a -FilesSetRulePanel.title=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u30eb\u30fc\u30eb -InterestingItemsIdentifierIngestModule.moduleDescription=\u7591\u308f\u3057\u3044\u30a2\u30a4\u30c6\u30e0\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306e\u5b9a\u7fa9\u3092\u3082\u3068\u306b\u7591\u308f\u3057\u3044\u30a2\u30a4\u30c6\u30e0\u3092\u691c\u77e5\u3057\u307e\u3059\u3002 -InterestingItemsIdentifierIngestModule.moduleName=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u691c\u77e5 +FilesIdentifierIngestJobSettingsPanel.getError=\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +FilesIdentifierIngestJobSettingsPanel.updateError=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +FilesIdentifierIngestModule.getFilesError=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +FilesIdentifierIngestModule.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u30d2\u30c3\u30c8\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +# {0} - daysIncluded +FilesSet.rule.dateRule.toString=({0} \u65e5\u4ee5\u5185\u306b\u4fee\u6b63) +FilesSetDefsPanel.bytes=\u30d0\u30a4\u30c8 +FilesSetDefsPanel.cancelImportMsg=\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u53d6\u308a\u6d88\u3059 +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +FilesSetDefsPanel.exportButtonActionPerformed.fileExistPrompt=\u30d5\u30a1\u30a4\u30eb {0} \u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? +FilesSetDefsPanel.gigaBytes=\u30ae\u30ac\u30d0\u30a4\u30c8 +# {0} - \u30d5\u30a3\u30eb\u30bf\u30fc\u540d +# {1} - \u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d +FilesSetDefsPanel.ingest.fileFilterInUseError=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc {0} \u3092\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb {1} \u304c\u4f7f\u7528\u4e2d\u3067\u3059\u3002\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u9593\u306f\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002 +FilesSetDefsPanel.Ingest.Title=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc\u8a2d\u5b9a +FilesSetDefsPanel.interesting.copySetButton.text=\u30bb\u30c3\u30c8\u3092\u30b3\u30d4\u30fc +FilesSetDefsPanel.interesting.exportButtonAction.featureName=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +FilesSetDefsPanel.interesting.ExportedMsg=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f +FilesSetDefsPanel.interesting.exportSetButton.text=\u30bb\u30c3\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +FilesSetDefsPanel.interesting.failExportMsg=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f +FilesSetDefsPanel.interesting.failImportMsg=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +FilesSetDefsPanel.interesting.fileExtensionFilterLbl=Autopsy\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb(xml) +FilesSetDefsPanel.interesting.importButtonAction.featureName=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30a4\u30f3\u30dd\u30fc\u30c8 +FilesSetDefsPanel.interesting.importOwConflict=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +FilesSetDefsPanel.interesting.importSetButton.text=\u30bb\u30c3\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +# {0} - \u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d +FilesSetDefsPanel.interesting.overwriteSetPrompt=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8 <{0}> \u304c\u3059\u3067\u306b\u30ed\u30fc\u30ab\u30eb\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? +FilesSetDefsPanel.Interesting.Title=\u8208\u5473\u6df1\u3044\u9805\u76ee\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +FilesSetDefsPanel.kiloBytes=\u30ad\u30ed\u30d0\u30a4\u30c8 +FilesSetDefsPanel.loadError=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +FilesSetDefsPanel.megaBytes=\u30e1\u30ac\u30d0\u30a4\u30c8 +FilesSetDefsPanel.noSkipMsg=\u3044\u3044\u3048\u3001\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059 +FilesSetDefsPanel.saveError=\u30d5\u30a1\u30a4\u30eb\u306b\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +FilesSetDefsPanel.yesOwMsg=\u306f\u3044\u3001\u4e0a\u66f8\u304d\u3057\u307e\u3059 +FilesSetPanel.filter.title=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc +FilesSetPanel.ingest.createNewFilter=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f5c\u6210/\u7de8\u96c6... +FilesSetPanel.ingest.messages.filtersMustBeNamed=\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +FilesSetPanel.rule.title=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc\u30eb\u30fc\u30eb +FilesSetRulePanel.bytes=\u30d0\u30a4\u30c8 +# {0} - \u6b63\u898f\u8868\u73fe +FilesSetRulePanel.CommaInRegexWarning=\u8b66\u544a: \u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u30ab\u30f3\u30de\u306f\u6b63\u898f\u8868\u73fe\u306e\u4e00\u90e8\u3068\u3057\u3066\u89e3\u91c8\u3055\u308c\u3001\u8907\u6570\u306e\u62e1\u5f35\u5b50 (\u5165\u529b\u6570: "{0}") \u306b\u5165\u529b\u3092\u5206\u5272\u3057\u307e\u305b\u3093\u3002 +FilesSetRulePanel.DaysIncludedEmptyError=\u542b\u307e\u308c\u308b\u65e5\u6570\u306f\u7a7a(\u672a\u5165\u529b)\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +FilesSetRulePanel.DaysIncludedEmptyError=\u542b\u307e\u308c\u308b\u65e5\u6570\u306f\u6b63\u306e\u6574\u6570\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FilesSetRulePanel.gigaBytes=\u30ae\u30ac\u30d0\u30a4\u30c8 +FilesSetRulePanel.kiloBytes=\u30ad\u30ed\u30d0\u30a4\u30c8 +FilesSetRulePanel.megaBytes=\u30e1\u30ac\u30d0\u30a4\u30c8 +FilesSetRulePanel.nameTextField.extensionExample=\u4f8b: "jpg" \u307e\u305f\u306f "jpg,jpeg,gif" +FilesSetRulePanel.nameTextField.fullNameExample=\u4f8b: "file.exe" +FilesSetRulePanel.NoConditionError=\u30eb\u30fc\u30eb\u3092\u4f5c\u308b\u305f\u3081\u306e\u6761\u4ef6\u304c\u5c11\u306a\u304f\u3068\u30821\u3064\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +FilesSetRulePanel.NoMimeTypeError=\u6709\u52b9\u306aMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +FilesSetRulePanel.NoNameError=\u540d\u524d\u306f\u7a7a(\u672a\u5165\u529b)\u306b\u3067\u304d\u307e\u305b\u3093 +FilesSetRulePanel.NoPathError=\u30d1\u30b9\u306f\u7a7a(\u672a\u5165\u529b)\u306b\u3067\u304d\u307e\u305b\u3093 +FilesSetRulePanel.ZeroFileSizeError=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u6761\u4ef6\u5024\u306f0\u306b\u3067\u304d\u307e\u305b\u3093(= \u3092\u9078\u629e\u3059\u308b\u5834\u5408\u3092\u9664\u304f)\u3002 +FilesSetsManager.allFilesAndDirectories=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc(\u672a\u4f7f\u7528\u9818\u57df\u4ee5\u5916) +FilesSetsManager.allFilesDirectoriesAndUnallocated=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3001\u672a\u4f7f\u7528\u9818\u57df +InterestingItemsIngestModuleFactory.defaultSettingsError=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OpenIDE-Module-Long-Description=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u691c\u77e5\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306e\u5b9a\u7fa9\u3092\u3082\u3068\u306b\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u77e5\u3057\u307e\u3059\u3002 -OpenIDE-Module-Name=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u691c\u77e5 -OpenIDE-Module-Short-Description=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u691c\u77e5\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OptionsCategory_Name_InterestingItemDefinitions=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb -OptionsCategory_Keywords_InterestingItemDefinitions=\u7591\u308f\u3057\u3044\u30a2\u30a4\u30c6\u30e0\u5b9a\u7fa9 -FilesSetDefsPanel.doFileSetsDialog.duplicateRuleSet.text=\u540d\u524d\u304c{0}\u306e\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 -FilesSetRulePanel.interesting.jLabel5.text=\u898b\u3064\u3051\u305f\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -FilesSetDefsPanel.interesting.setsListLabel.text=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8 +OpenIDE-Module-Long-Description=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u8b58\u5225\u5b50\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n \u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u3067\u5b9a\u3081\u308b\u3068\u304a\u308a\u306b\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u3092\u8b58\u5225\u3057\u307e\u3059\u3002 +OpenIDE-Module-Short-Description=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u8b58\u5225\u5b50\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 +OpenIDE-Module-Name=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u8b58\u5225\u5b50 +OptionsCategory_Name_InterestingItemDefinitions=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb +OptionsCategory_Keywords_InterestingItemDefinitions=InterestingItemDefinitions +InterestingItemsIdentifierIngestModule.moduleName=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u8b58\u5225\u5b50 +InterestingItemsIdentifierIngestModule.moduleDescription=\u8208\u5473\u6df1\u3044\u9805\u76ee\u306e\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u3067\u5b9a\u3081\u308b\u3068\u304a\u308a\u306b\u8208\u5473\u6df1\u3044\u9805\u76ee\u3092\u8b58\u5225\u3057\u307e\u3059\u3002 +FilesSetPanel.interesting.title=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30eb\u30fc\u30eb +FilesSetPanel.interesting.messages.filesSetsMustBeNamed=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +FilesSetPanel.messages.filesSetsReservedName=\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u30ea\u30b6\u30fc\u30d6\u3059\u308b\u540d\u524d\u3092\u9078\u629e\u3057\u307e\u3057\u305f\u3002\u5225\u306e\u540d\u524d\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +FilesSetPanel.ignoreKnownFilesCheckbox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 +FilesSetPanel.descriptionPanel.border.title=\u8aac\u660e +FilesSetPanel.interesting.nameLabel.text=\u30bb\u30c3\u30c8\u540d: +FilesSetPanel.ingest.nameLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc\u540d: +FilesSetPanel.descPanel.border.title=\u8aac\u660e +FilesSetPanel.ignoreUnallocCheckbox.toolTipText=\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u3001\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u307e\u3059\u3002\u5b9f\u884c\u901f\u5ea6\u304c\u901f\u304f\u306a\u308a\u3001\u3088\u308a\u5b8c\u5168\u3067\u306f\u306a\u3044\u7d50\u679c\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002 +FilesSetPanel.ignoreUnallocCheckbox.text=\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996 +FilesSetRulePanel.title=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30eb\u30fc\u30eb +FilesSetRulePanel.extensionRadioButton.text=\u62e1\u5f35\u5b50\u306e\u307f +FilesSetRulePanel.pathRegexCheckBox.text=\u6b63\u898f\u8868\u73fe +FilesSetRulePanel.pathTextField.text= +FilesSetRulePanel.fullNameRadioButton.text=\u5b8c\u5168\u306a\u540d\u524d +FilesSetRulePanel.nameRegexCheckbox.text=\u5f93\u5c5e\u6587\u5b57\u5217 / \u6b63\u898f\u8868\u73fe +FilesSetRulePanel.ruleNameTextField.text= +FilesSetRulePanel.nameTextField.text= +FilesSetRulePanel.ruleNameLabel.text=\u30eb\u30fc\u30eb\u540d(\u4efb\u610f): +FilesSetRulePanel.messages.emptyNameCondition=\u3053\u306e\u30eb\u30fc\u30eb\u306e\u540d\u524d\u30d1\u30bf\u30fc\u30f3\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +FilesSetRulePanel.messages.invalidNameRegex=\u540d\u524d\u306e\u6b63\u898f\u8868\u73fe\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093:\n\n{0} +FilesSetRulePanel.messages.invalidCharInName=\u540d\u524d\u306b\u306f \\\u3001/\u3001 :\u3001*\u3001?\u3001\"\u3001 <\u3001> \u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093(\u6b63\u898f\u8868\u73fe\u306e\u5834\u5408\u3092\u9664\u304f)\u3002 +FilesSetRulePanel.messages.invalidCharInPath=\u30d1\u30b9\u306b\u306f \\\u3001/\u3001 :\u3001*\u3001?\u3001\"\u3001 <\u3001> \u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093(\u6b63\u898f\u8868\u73fe\u306e\u5834\u5408\u3092\u9664\u304f)\u3002 +FilesSetRulePanel.messages.invalidPathRegex=\u30d1\u30b9\u306e\u6b63\u898f\u8868\u73fe\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093:\n\n{0} +FilesSetDefsPanel.doFileSetsDialog.duplicateRuleSet.text= {0} \u306e\u540d\u524d\u306e\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +FilesSetRulePanel.pathSeparatorInfoLabel.text=\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u89aa\u30d1\u30b9\u306b\u542b\u307e\u308c\u3066\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002'/\u2019 \u3092\u4f7f\u7528\u3057\u3066\u9023\u7d9a\u3059\u308b\u540d\u524d\u3092\u53d6\u5f97 +FilesIdentifierIngestJobSettingsPanel.border.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u6709\u52b9\u5316\u3059\u308b\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u9078\u629e: +FilesSetRulePanel.jLabel1.text=\u30bf\u30a4\u30d7: +FilesSetRulePanel.interesting.jLabel5.text=\u691c\u7d22\u3057\u305f\u3044\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +FilesSetRulePanel.ingest.jLabel5.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u305f\u3044\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +FilesSetRulePanel.nameCheck.text=\u540d\u524d: +FilesSetRulePanel.pathCheck.text=\u30d5\u30a9\u30eb\u30c0\u30fc\u540d: +FilesSetRulePanel.filesRadioButton.text=\u30d5\u30a1\u30a4\u30eb +FilesSetRulePanel.dirsRadioButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +FilesSetDefsPanel.interesting.setsListLabel.text=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8: +FilesSetDefsPanel.ingest.setsListLabel.text=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc: +FilesSetDefsPanel.interesting.jTextArea1.text=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u6307\u5b9a\u3057\u305f\u6761\u4ef6\u3068\u4e00\u81f4\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u5404\u30bb\u30c3\u30c8\u306b\u3001\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u7279\u5fb4\u3068\u4e00\u81f4\u3059\u308b\u30eb\u30fc\u30eb\u30ea\u30b9\u30c8\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u691c\u7d22\u5bfe\u8c61\u3068\u306a\u308b1\u3064\u306e\u30eb\u30fc\u30eb\u3068\u4e00\u81f4\u3059\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002 +FilesSetDefsPanel.ingest.jTextArea1.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u306e\u307f\u3092\u5206\u6790\u3059\u308b\u3088\u3046\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30eb\u30fc\u30eb\u3092\u30bb\u30c3\u30c8\u306b\u69cb\u9020\u5316\u3057\u307e\u3059\u3002\u4e00\u5ea6\u306b1\u3064\u306e\u30bb\u30c3\u30c8\u306e\u307f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u5206\u6790\u5bfe\u8c61\u3068\u306a\u308b1\u3064\u306e\u30eb\u30fc\u30eb\u3068\u4e00\u81f4\u3059\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002 FilesSetDefsPanel.interesting.editSetButton.text=\u30bb\u30c3\u30c8\u3092\u7de8\u96c6 +FilesSetDefsPanel.ingest.editSetButton.text=\u7de8\u96c6\u30d5\u30a3\u30eb\u30bf\u30fc FilesSetDefsPanel.interesting.newSetButton.text=\u65b0\u898f\u30bb\u30c3\u30c8 +FilesSetDefsPanel.ingest.newSetButton.text=\u65b0\u898f\u30d5\u30a3\u30eb\u30bf\u30fc FilesSetDefsPanel.interesting.deleteSetButton.text=\u30bb\u30c3\u30c8\u3092\u524a\u9664 +FilesSetDefsPanel.ingest.deleteSetButton.text=\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u524a\u9664 +FilesSetDefsPanel.interesting.jLabel6.text=\u8a73\u7d30\u3092\u8a2d\u5b9a +FilesSetDefsPanel.ingest.jLabel6.text=\u30d5\u30a3\u30eb\u30bf\u30fc\u8a73\u7d30 FilesSetDefsPanel.newRuleButton.text=\u65b0\u898f\u30eb\u30fc\u30eb +FilesSetDefsPanel.jLabel8.text=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba: +FilesSetDefsPanel.jLabel7.text=MIME\u30bf\u30a4\u30d7: FilesSetDefsPanel.rulePathConditionRegexCheckBox.text=\u6b63\u898f\u8868\u73fe -FilesSetDefsPanel.jLabel4.text=\u30d1\u30b9\u30d1\u30bf\u30fc\u30f3\uff1a +FilesSetDefsPanel.jLabel4.text=\u30d1\u30b9\u306e\u5f93\u5c5e\u6587\u5b57\u5217: FilesSetDefsPanel.jLabel1.text=\u30eb\u30fc\u30eb\u8a73\u7d30 -FilesSetDefsPanel.dirsRadioButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea -FilesSetDefsPanel.jLabel2.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\uff1a +FilesSetDefsPanel.dirsRadioButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +FilesSetDefsPanel.jLabel2.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7: FilesSetDefsPanel.deleteRuleButton.text=\u30eb\u30fc\u30eb\u3092\u524a\u9664 -FilesSetDefsPanel.fileNameRegexCheckbox.text=\u6b63\u898f\u8868\u73fe +FilesSetDefsPanel.fileNameRegexCheckbox.text=\u5f93\u5c5e\u6587\u5b57\u5217 / \u6b63\u898f\u8868\u73fe FilesSetDefsPanel.ignoreKnownFilesCheckbox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 -FilesSetDefsPanel.fileNameRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u540d -FilesSetDefsPanel.jLabel5.text=\u6982\u8981\uff1a -FilesSetDefsPanel.jLabel3.text=\u30cd\u30fc\u30e0\u30d1\u30bf\u30fc\u30f3 +FilesSetDefsPanel.rulePathConditionTextField.text= +FilesSetDefsPanel.fileNameRadioButton.text=\u5b8c\u5168\u306a\u540d\u524d +FilesSetDefsPanel.jLabel5.text=\u8aac\u660e: +FilesSetDefsPanel.fileNameTextField.text= +FilesSetDefsPanel.jLabel3.text=\u540d\u524d: FilesSetDefsPanel.fileNameExtensionRadioButton.text=\u62e1\u5f35\u5b50\u306e\u307f -FilesSetDefsPanel.rulesListLabel.text=\u30eb\u30fc\u30eb\uff1a +FilesSetDefsPanel.rulesListLabel.text=\u30eb\u30fc\u30eb: FilesSetDefsPanel.editRuleButton.text=\u30eb\u30fc\u30eb\u3092\u7de8\u96c6 FilesSetDefsPanel.filesRadioButton.text=\u30d5\u30a1\u30a4\u30eb -FilesSetDefsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +FilesSetRulePanel.allRadioButton.text=\u3059\u3079\u3066 +FilesSetDefsPanel.ingoreUnallocCheckbox.text=\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996 +FilesSetDefsPanel.ingoreUnallocCheckbox.toolTipText=\u524a\u9664\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u3001\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u307e\u3059\u3002\u5b9f\u884c\u901f\u5ea6\u304c\u901f\u304f\u306a\u308a\u3001\u3088\u308a\u5b8c\u5168\u3067\u306f\u306a\u3044\u7d50\u679c\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002 +FilesSetDefsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +FilesSetDefsPanel.allRadioButton.text=\u3059\u3079\u3066 +FilesSetRulePanel.dateCheck.text=\u6b21\u306e\u4e2d\u3067\u4fee\u6b63\u6e08\u307f: +FilesSetRulePanel.fileSizeCheck.text=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba: +FilesSetRulePanel.mimeCheck.text=MIME\u30bf\u30a4\u30d7: +FilesSetDefsPanel.modifiedDateLabel.text=\u6b21\u306e\u4e2d\u3067\u4fee\u6b63\u6e08\u307f: +FilesSetDefsPanel.daysIncludedTextField.text= +FilesSetDefsPanel.daysIncludedLabel.text=\u65e5 +FilesSetRulePanel.daysIncludedLabel.text=\u65e5 diff --git a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties index d97b6ae613..864c9c27f4 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties @@ -1,25 +1,30 @@ -moduleDescription.text=\u30b7\u30b9\u30c6\u30e0\u306e\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306b\u5bfe\u3057\u3066PhotoRec\u30ab\u30fc\u30d0\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 -moduleDisplayName.text=PhotoRec\u30ab\u30fc\u30d0 +# {0} - \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u540d +cannotCreateOutputDir.message=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}\u3002 +cannotRunExecutable.message=PhotoRec\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +missingExecutable.message=\u5b9f\u884c\u53ef\u80fd\u306aPhotoRec\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002 +OpenIDE-Module-Name=PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OpenIDE-Module-Long-Description=PhotoRec\u30ab\u30fc\u30d0\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u3092\u5207\u308a\u51fa\u3057\u3001\u5207\u308a\u51fa\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3059\u308b\u3081\u306b\u30b7\u30b9\u30c6\u30e0\u3078\u30d5\u30a3\u30fc\u30c9\u3057\u307e\u3059\u3002 -OpenIDE-Module-Name=PhotoRec\u30ab\u30fc\u30d0\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OpenIDE-Module-Short-Description=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u3092\u5207\u308a\u51fa\u3057\u3001\u5207\u308a\u51fa\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u306e\u305f\u3081\u306b\u30b7\u30b9\u30c6\u30e0\u3078\u30d5\u30a3\u30fc\u30c9\u3057\u307e\u3059\u3002 -unallocatedSpaceProcessingSettingsError.message=\u300c\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u3092\u51e6\u7406\u300d\u304c\u30c1\u30a7\u30c3\u30af\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002PhotoRec\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u3092\u30ab\u30fc\u30d6\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u306e\u51e6\u7406\u3092\u6709\u52b9\u306b\u3059\u308b\u304b\u3001\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -missingExecutable.message=PhotoRec\u306e\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -cannotRunExecutable.message=PhotoRec\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -cannotCreateOutputDir.message=\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea{0}\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -PhotoRecIngestModule.processTerminated=\u30b9\u30ad\u30e3\u30f3\u306b\u304b\u3051\u308c\u308b\u6700\u5927\u306e\u6642\u9593\u304c\u904e\u304e\u305f\u306e\u3067\u3001PhotoRec\u30ab\u30fc\u30d0\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u505c\u6b62\u3057\u307e\u3057\u305f -PhotoRecIngestModule.moduleError=PhotoRec\u30ab\u30fc\u30d0\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -PhotoRecIngestModule.UnableToCarve=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ab\u30fc\u30d6\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -PhotoRecIngestModule.NotEnoughDiskSpace=\u672a\u5272\u308a\u5f53\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u306e\u306b\u30c7\u30a3\u30b9\u30af\u30b9\u30da\u30fc\u30b9\u304c\u8db3\u308a\u307e\u305b\u3093\u3002\u30ab\u30fc\u30d3\u30f3\u30b0\u304c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002 -PhotoRecIngestModule.complete.numberOfCarved=\u30ab\u30fc\u30d6\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570\uff1a -PhotoRecIngestModule.complete.totalWritetime=\u30c7\u30a3\u30b9\u30af\u3078\u306e\u66f8\u304d\u8fbc\u307f\u6642\u9593\u306e\u5408\u8a08 -PhotoRecIngestModule.complete.totalParsetime=\u30d1\u30fc\u30b7\u30f3\u30b0\u6642\u9593\u306e\u5408\u8a08\uff1a +OpenIDE-Module-Long-Description=PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n \u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u3001\u7d50\u679c\u3068\u3057\u3066\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b7\u30b9\u30c6\u30e0\u306b\u623b\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002 +OpenIDE-Module-Short-Description=\u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u3068\u3057\u3066\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b7\u30b9\u30c6\u30e0\u306b\u623b\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002 +moduleDisplayName.text=PhotoRec Carver +moduleDescription.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u672a\u4f7f\u7528\u9818\u57df\u306b\u5bfe\u3057\u3066PhotoRec Carver\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 +PhotoRecIngestModule.nonHostnameUNCPathUsed=PhotoRec\u306f\u3001IP\u30a2\u30c9\u30ec\u30b9\u3092\u542b\u3080UNC\u30d1\u30b9\u3092\u4f7f\u3063\u3066\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002 +PhotoRecIngestModule.PermissionsNotSufficient=\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093 +PhotoRecIngestModule.PermissionsNotSufficientSeeReference=Autopsy\u30d8\u30eb\u30d7\u306e\u300c\u5171\u6709\u30c9\u30e9\u30a4\u30d6\u8a8d\u8a3c\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +PhotoRecIngestModule.processTerminated=\u30b9\u30ad\u30e3\u30f3\u6642\u306e\u6700\u5927\u8a31\u5bb9\u5b9f\u884c\u56de\u6570\u3092\u8d85\u3048\u305f\u305f\u3081\u3001PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f +PhotoRecIngestModule.moduleError=PhotoRec Carver\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +PhotoRecIngestModule.UnableToCarve=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3067\u304d\u307e\u305b\u3093: {0} +PhotoRecIngestModule.NotEnoughDiskSpace=\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ab\u30fc\u30d3\u30f3\u30b0\u304c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002 +PhotoRecIngestModule.complete.numberOfCarved=\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570: +PhotoRecIngestModule.complete.totalWritetime=\u30c7\u30a3\u30b9\u30af\u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u8981\u3059\u308b\u5408\u8a08\u6642\u9593: +PhotoRecIngestModule.complete.totalParsetime=\u5408\u8a08\u89e3\u6790\u6642\u9593: PhotoRecIngestModule.complete.photoRecResults=PhotoRec\u7d50\u679c -PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg={0}\u3092{1}\u3067\u51e6\u7406\u3059\u308b\u969b\u306bPhotoRec\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u672a\u5272\u308a\u5f53\u3066\u30b9\u30da\u30fc\u30b9\u3092\u30d7\u30e9\u30a4\u30de\u30ea\u30fc\u30c7\u30a3\u30b9\u30af\u306b\u4fdd\u5b58\u3059\u308b\u306e\u306b\u30b9\u30da\u30fc\u30b9\u304c\u8db3\u308a\u307e\u305b\u3093\u3002 -PhotoRecIngestModule.cancelledByUser=PhotoRec\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u308a\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\u3002 -PhotoRecIngestModule.error.exitValue=PhotoRec\u304c\u30a8\u30e9\u30fc\u3092\u51fa\u3057\u307e\u3057\u305f\u3002Exit\u30d0\u30ea\u30e5\u30fc\uff1d{1}\u3092\u30b9\u30ad\u30e3\u30f3\u4e2d\u306b{0} -PhotoRecIngestModule.error.msg=PhotoRec\u30ab\u30fc\u30d0\u3067{0}\u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -PhotoRecIngestModule.complete.numberOfErrors=\u30ab\u30fc\u30d3\u30f3\u30b0\u4e2d\u306e\u30a8\u30e9\u30fc\u6570\uff1a -PhotoRecIngestModule.PermissionsNotSufficient=\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306e\u30a2\u30af\u30bb\u30b9\u304c\u4e0d\u5341\u5206\u3067\u3059 -PhotoRecIngestModule.PermissionsNotSufficientSeeReference=Autopsy\u30d8\u30eb\u30d7\u3067\u300c\u5171\u6709\u30c9\u30e9\u30a4\u30d6\u8a8d\u8a3c\u300d\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 \ No newline at end of file +PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg={1} \u3092\u4f7f\u3063\u3066 {0} \u3092\u51e6\u7406\u4e2d\u306bPhotoRec\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u30021\u6b21\u30c7\u30a3\u30b9\u30af\u306b\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +PhotoRecIngestModule.cancelledByUser=PhotoRec\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +PhotoRecIngestModule.error.exitValue={1} \u3092\u30b9\u30ad\u30e3\u30f3\u4e2d\u306bPhotoRec Carver\u304c \u9593\u9055\u3063\u305f\u7d42\u4e86\u5024 \= {0} \u3092\u8fd4\u3057\u307e\u3057\u305f +PhotoRecIngestModule.error.msg=PhotoRec Carver\u3067 {0} \u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +PhotoRecIngestModule.complete.numberOfErrors=\u30ab\u30fc\u30d3\u30f3\u30b0\u4e2d\u306e\u30a8\u30e9\u30fc\u6570: +PhotoRecCarverIngestJobSettingsPanel.detectionSettingsLabel.text=PhotoRec\u8a2d\u5b9a +PhotoRecCarverIngestJobSettingsPanel.keepCorruptedFilesCheckbox.text=\u7834\u640d\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7dad\u6301 +unallocatedSpaceProcessingSettingsError.message=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u304c\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u307e\u3059\u3002\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u307e\u3059\u3002\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u306a\u3044\u304b\u3001\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u5316\u3057\u306a\u3044\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +unsupportedOS.message=PhotoRec\u30e2\u30b8\u30e5\u30fc\u30eb\u306fWindows\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u307f\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/plaso/PlasoIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/plaso/PlasoIngestModule.java index c9fad6c1bc..d359332f84 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/plaso/PlasoIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/modules/plaso/PlasoIngestModule.java @@ -85,7 +85,7 @@ public class PlasoIngestModule implements DataSourceIngestModule { private static final int LOG2TIMELINE_WORKERS = 2; private static final long TERMINATION_CHECK_INTERVAL = 5; private static final TimeUnit TERMINATION_CHECK_INTERVAL_UNITS = TimeUnit.SECONDS; - + private File log2TimeLineExecutable; private File psortExecutable; @@ -103,8 +103,7 @@ public class PlasoIngestModule implements DataSourceIngestModule { @NbBundle.Messages({ "PlasoIngestModule.executable.not.found=Plaso Executable Not Found.", - "PlasoIngestModule.requires.windows=Plaso module requires windows.", - "PlasoIngestModule.dataSource.not.an.image=Datasource is not an Image."}) + "PlasoIngestModule.requires.windows=Plaso module requires windows."}) @Override public void startUp(IngestJobContext context) throws IngestModuleException { this.context = context; @@ -121,11 +120,6 @@ public class PlasoIngestModule implements DataSourceIngestModule { throw new IngestModuleException(Bundle.PlasoIngestModule_executable_not_found(), exception); } - Content dataSource = context.getDataSource(); - if (!(dataSource instanceof Image)) { - throw new IngestModuleException(Bundle.PlasoIngestModule_dataSource_not_an_image()); - } - image = (Image) dataSource; } @NbBundle.Messages({ @@ -138,80 +132,90 @@ public class PlasoIngestModule implements DataSourceIngestModule { "PlasoIngestModule.psort.cancelled=psort run was canceled", "PlasoIngestModule.bad.imageFile=Cannot find image file name and path", "PlasoIngestModule.completed=Plaso Processing Completed", - "PlasoIngestModule.has.run=Plaso Plugin has been run.", - "PlasoIngestModule.psort.fail=Plaso returned an error when sorting events. Results are not complete."}) + "PlasoIngestModule.has.run=Plaso", + "PlasoIngestModule.psort.fail=Plaso returned an error when sorting events. Results are not complete.", + "PlasoIngestModule.dataSource.not.an.image=Skipping non-disk image datasource"}) @Override public ProcessResult process(Content dataSource, DataSourceIngestModuleProgress statusHelper) { - assert dataSource.equals(image); - statusHelper.switchToDeterminate(100); - currentCase = Case.getCurrentCase(); - fileManager = currentCase.getServices().getFileManager(); + if (!(dataSource instanceof Image)) { + IngestMessage message = IngestMessage.createMessage(IngestMessage.MessageType.DATA, + Bundle.PlasoIngestModule_has_run(), + Bundle.PlasoIngestModule_dataSource_not_an_image()); + IngestServices.getInstance().postMessage(message); + return ProcessResult.OK; + } else { + image = (Image) dataSource; - String currentTime = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss z", Locale.US).format(System.currentTimeMillis());//NON-NLS - Path moduleOutputPath = Paths.get(currentCase.getModuleDirectory(), PLASO, currentTime); - try { - Files.createDirectories(moduleOutputPath); - } catch (IOException ex) { - logger.log(Level.SEVERE, "Error creating Plaso module output directory.", ex); //NON-NLS - return ProcessResult.ERROR; - } + statusHelper.switchToDeterminate(100); + currentCase = Case.getCurrentCase(); + fileManager = currentCase.getServices().getFileManager(); - // Run log2timeline - logger.log(Level.INFO, "Starting Plaso Run.");//NON-NLS - statusHelper.progress(Bundle.PlasoIngestModule_starting_log2timeline(), 0); - ProcessBuilder log2TimeLineCommand = buildLog2TimeLineCommand(moduleOutputPath, image); - try { - Process log2TimeLineProcess = log2TimeLineCommand.start(); - try (BufferedReader log2TimeLineOutpout = new BufferedReader(new InputStreamReader(log2TimeLineProcess.getInputStream()))) { - L2TStatusProcessor statusReader = new L2TStatusProcessor(log2TimeLineOutpout, statusHelper, moduleOutputPath); - new Thread(statusReader, "log2timeline status reader").start(); //NON-NLS - ExecUtil.waitForTermination(LOG2TIMELINE_EXECUTABLE, log2TimeLineProcess, TERMINATION_CHECK_INTERVAL, TERMINATION_CHECK_INTERVAL_UNITS, new DataSourceIngestModuleProcessTerminator(context)); - statusReader.cancel(); - } - - if (context.dataSourceIngestIsCancelled()) { - logger.log(Level.INFO, "Log2timeline run was canceled"); //NON-NLS - return ProcessResult.OK; - } - if (Files.notExists(moduleOutputPath.resolve(PLASO))) { - logger.log(Level.WARNING, "Error running log2timeline: there was no storage file."); //NON-NLS + String currentTime = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss z", Locale.US).format(System.currentTimeMillis());//NON-NLS + Path moduleOutputPath = Paths.get(currentCase.getModuleDirectory(), PLASO, currentTime); + try { + Files.createDirectories(moduleOutputPath); + } catch (IOException ex) { + logger.log(Level.SEVERE, "Error creating Plaso module output directory.", ex); //NON-NLS return ProcessResult.ERROR; } - // sort the output - statusHelper.progress(Bundle.PlasoIngestModule_running_psort(), 33); - ProcessBuilder psortCommand = buildPsortCommand(moduleOutputPath); - int result = ExecUtil.execute(psortCommand, new DataSourceIngestModuleProcessTerminator(context)); - if (result != 0) { - logger.log(Level.SEVERE, String.format("Error running Psort, error code returned %d", result)); //NON-NLS - MessageNotifyUtil.Notify.error(MODULE_NAME, Bundle.PlasoIngestModule_psort_fail()); - return ProcessResult.ERROR; - } + // Run log2timeline + logger.log(Level.INFO, "Starting Plaso Run.");//NON-NLS + statusHelper.progress(Bundle.PlasoIngestModule_starting_log2timeline(), 0); + ProcessBuilder log2TimeLineCommand = buildLog2TimeLineCommand(moduleOutputPath, image); + try { + Process log2TimeLineProcess = log2TimeLineCommand.start(); + try (BufferedReader log2TimeLineOutpout = new BufferedReader(new InputStreamReader(log2TimeLineProcess.getInputStream()))) { + L2TStatusProcessor statusReader = new L2TStatusProcessor(log2TimeLineOutpout, statusHelper, moduleOutputPath); + new Thread(statusReader, "log2timeline status reader").start(); //NON-NLS + ExecUtil.waitForTermination(LOG2TIMELINE_EXECUTABLE, log2TimeLineProcess, TERMINATION_CHECK_INTERVAL, TERMINATION_CHECK_INTERVAL_UNITS, new DataSourceIngestModuleProcessTerminator(context)); + statusReader.cancel(); + } - if (context.dataSourceIngestIsCancelled()) { - logger.log(Level.INFO, "psort run was canceled"); //NON-NLS - return ProcessResult.OK; - } - Path plasoFile = moduleOutputPath.resolve("plasodb.db3"); //NON-NLS - if (Files.notExists(plasoFile)) { - logger.log(Level.SEVERE, "Error running Psort: there was no sqlite db file."); //NON-NLS + if (context.dataSourceIngestIsCancelled()) { + logger.log(Level.INFO, "Log2timeline run was canceled"); //NON-NLS + return ProcessResult.OK; + } + if (Files.notExists(moduleOutputPath.resolve(PLASO))) { + logger.log(Level.WARNING, "Error running log2timeline: there was no storage file."); //NON-NLS + return ProcessResult.ERROR; + } + + // sort the output + statusHelper.progress(Bundle.PlasoIngestModule_running_psort(), 33); + ProcessBuilder psortCommand = buildPsortCommand(moduleOutputPath); + int result = ExecUtil.execute(psortCommand, new DataSourceIngestModuleProcessTerminator(context)); + if (result != 0) { + logger.log(Level.SEVERE, String.format("Error running Psort, error code returned %d", result)); //NON-NLS + MessageNotifyUtil.Notify.error(MODULE_NAME, Bundle.PlasoIngestModule_psort_fail()); + return ProcessResult.ERROR; + } + + if (context.dataSourceIngestIsCancelled()) { + logger.log(Level.INFO, "psort run was canceled"); //NON-NLS + return ProcessResult.OK; + } + Path plasoFile = moduleOutputPath.resolve("plasodb.db3"); //NON-NLS + if (Files.notExists(plasoFile)) { + logger.log(Level.SEVERE, "Error running Psort: there was no sqlite db file."); //NON-NLS + return ProcessResult.ERROR; + } + + // parse the output and make artifacts + createPlasoArtifacts(plasoFile.toString(), statusHelper); + + } catch (IOException ex) { + logger.log(Level.SEVERE, "Error running Plaso.", ex);//NON-NLS return ProcessResult.ERROR; } - // parse the output and make artifacts - createPlasoArtifacts(plasoFile.toString(), statusHelper); - - } catch (IOException ex) { - logger.log(Level.SEVERE, "Error running Plaso.", ex);//NON-NLS - return ProcessResult.ERROR; + IngestMessage message = IngestMessage.createMessage(IngestMessage.MessageType.DATA, + Bundle.PlasoIngestModule_has_run(), + Bundle.PlasoIngestModule_completed()); + IngestServices.getInstance().postMessage(message); + return ProcessResult.OK; } - - IngestMessage message = IngestMessage.createMessage(IngestMessage.MessageType.DATA, - Bundle.PlasoIngestModule_has_run(), - Bundle.PlasoIngestModule_completed()); - IngestServices.getInstance().postMessage(message); - return ProcessResult.OK; } private ProcessBuilder buildLog2TimeLineCommand(Path moduleOutputPath, Image image) { @@ -240,8 +244,10 @@ public class PlasoIngestModule implements DataSourceIngestModule { static private ProcessBuilder buildProcessWithRunAsInvoker(String... commandLine) { ProcessBuilder processBuilder = new ProcessBuilder(commandLine); - /* Add an environment variable to force log2timeline/psort to run with - * the same permissions Autopsy uses. */ + /* + * Add an environment variable to force log2timeline/psort to run with + * the same permissions Autopsy uses. + */ processBuilder.environment().put("__COMPAT_LAYER", "RunAsInvoker"); //NON-NLS return processBuilder; } @@ -277,31 +283,30 @@ public class PlasoIngestModule implements DataSourceIngestModule { "PlasoIngestModule.create.artifacts.cancelled=Cancelled Plaso Artifact Creation ", "# {0} - file that events are from", "PlasoIngestModule.artifact.progress=Adding events to case: {0}", - "PlasoIngestModule.info.empty.database=Plaso database was empty.", - }) + "PlasoIngestModule.info.empty.database=Plaso database was empty.",}) private void createPlasoArtifacts(String plasoDb, DataSourceIngestModuleProgress statusHelper) { Blackboard blackboard = currentCase.getSleuthkitCase().getBlackboard(); String sqlStatement = "SELECT substr(filename,1) AS filename, " - + " strftime('%s', datetime) AS epoch_date, " - + " description, " - + " source, " - + " type, " - + " sourcetype " - + " FROM log2timeline " - + " WHERE source NOT IN ('FILE', " - + " 'WEBHIST') " // bad dates and duplicates with what we have. - + " AND sourcetype NOT IN ('UNKNOWN', " - + " 'PE Import Time');"; // lots of bad dates //NON-NLS + + " strftime('%s', datetime) AS epoch_date, " + + " description, " + + " source, " + + " type, " + + " sourcetype " + + " FROM log2timeline " + + " WHERE source NOT IN ('FILE', " + + " 'WEBHIST') " // bad dates and duplicates with what we have. + + " AND sourcetype NOT IN ('UNKNOWN', " + + " 'PE Import Time');"; // lots of bad dates //NON-NLS try (SQLiteDBConnect tempdbconnect = new SQLiteDBConnect("org.sqlite.JDBC", "jdbc:sqlite:" + plasoDb); //NON-NLS ResultSet resultSet = tempdbconnect.executeQry(sqlStatement)) { - + boolean dbHasData = false; - + while (resultSet.next()) { dbHasData = true; - + if (context.dataSourceIngestIsCancelled()) { logger.log(Level.INFO, "Cancelled Plaso Artifact Creation."); //NON-NLS return; @@ -314,20 +319,20 @@ public class PlasoIngestModule implements DataSourceIngestModule { logger.log(Level.INFO, "File {0} from Plaso output not found in case. Associating it with the data source instead.", currentFileName);//NON-NLS resolvedFile = image; } - + String description = resultSet.getString("description"); TimelineEventType eventType = findEventSubtype(currentFileName, resultSet); - + // If the description is empty use the event type display name // as the description. - if ( description == null || description.isEmpty() ) { + if (description == null || description.isEmpty()) { if (eventType != TimelineEventType.OTHER) { description = eventType.getDisplayName(); } else { continue; } } - + Collection bbattributes = Arrays.asList( new BlackboardAttribute( TSK_DATETIME, MODULE_NAME, @@ -338,14 +343,16 @@ public class PlasoIngestModule implements DataSourceIngestModule { new BlackboardAttribute( TSK_TL_EVENT_TYPE, MODULE_NAME, eventType.getTypeID())); - + try { BlackboardArtifact bbart = resolvedFile.newArtifact(TSK_TL_EVENT); bbart.addAttributes(bbattributes); try { - /* Post the artifact which will index the artifact for + /* + * Post the artifact which will index the artifact for * keyword search, and fire an event to notify UI of - * this new artifact */ + * this new artifact + */ blackboard.postArtifact(bbart, MODULE_NAME); } catch (BlackboardException ex) { logger.log(Level.SEVERE, "Error Posting Artifact.", ex);//NON-NLS @@ -354,12 +361,12 @@ public class PlasoIngestModule implements DataSourceIngestModule { logger.log(Level.SEVERE, "Exception Adding Artifact.", ex);//NON-NLS } } - + // Check if there is data the db - if( !dbHasData ) { + if (!dbHasData) { logger.log(Level.INFO, String.format("PlasoDB was empty: %s", plasoDb)); MessageNotifyUtil.Notify.info(MODULE_NAME, Bundle.PlasoIngestModule_info_empty_database()); - } + } } catch (SQLException ex) { logger.log(Level.SEVERE, "Error while trying to read into a sqlite db.", ex);//NON-NLS } @@ -377,8 +384,8 @@ public class PlasoIngestModule implements DataSourceIngestModule { // check the cached file //TODO: would we reduce 'cache misses' if we retrieved the events sorted by file? Is that overhead worth it? if (previousFile != null - && previousFile.getName().equalsIgnoreCase(fileName) - && previousFile.getParentPath().equalsIgnoreCase(filePath)) { + && previousFile.getName().equalsIgnoreCase(fileName) + && previousFile.getParentPath().equalsIgnoreCase(filePath)) { return previousFile; } @@ -416,7 +423,7 @@ public class PlasoIngestModule implements DataSourceIngestModule { switch (row.getString("source")) { case "WEBHIST": //These shouldn't actually be present, but keeping the logic just in case... if (fileName.toLowerCase().contains(COOKIE) - || row.getString("type").toLowerCase().contains(COOKIE)) {//NON-NLS + || row.getString("type").toLowerCase().contains(COOKIE)) {//NON-NLS return TimelineEventType.WEB_COOKIE; } else { diff --git a/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ja.properties index 17ff042186..5b6cba0d5f 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/vmextractor/Bundle_ja.properties @@ -1,11 +1,15 @@ -VMExtractorIngestModuleFactory.moduleDisplayName=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30A8\u30AF\u30B9\u30C8\u30E9\u30AF\u30BF\u30FC -VMExtractorIngestModuleFactory.moduleDescription=\u4EEE\u60F3\u30DE\u30B7\u30F3\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u62BD\u51FA\u3057\u3001\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3068\u3057\u3066\u30B1\u30FC\u30B9\u306B\u8FFD\u52A0\u3057\u307E\u3059\u3002 -VMExtractorIngestModule.cannotCreateOutputDir.message=\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF1A{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -VMExtractorIngestModule.addedVirtualMachineImage.message=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30A4\u30E1\u30FC\u30B8{0}\u3092\u8FFD\u52A0 -VMExtractorIngestModule.searchingImage.message=\u30A4\u30E1\u30FC\u30B8\u306B\u4EEE\u60F3\u30DE\u30B7\u30F3\u30D5\u30A1\u30A4\u30EB\u304C\u306A\u3044\u304B\u691C\u7D22\u4E2D -VMExtractorIngestModule.exportingToDisk.message=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30B9\u30AF\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u4E2D -VMExtractorIngestModule.queuingIngestJobs.message=\u62BD\u51FA\u3055\u308C\u305F\u4EEE\u60F3\u30DE\u30B7\u30F3\u306E\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30B8\u30E7\u30D6\u3092\u30AD\u30E5\u30FC\u30A4\u30F3\u30B0 -VMExtractorIngestModule.msgNotify.failedExtractVM.title.txt=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30D5\u30A1\u30A4\u30EB\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -VMExtractorIngestModule.msgNotify.failedExtractVM.msg.txt=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30D5\u30A1\u30A4\u30EB{0}\u3092\u30C7\u30A3\u30B9\u30AF\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -VMExtractorIngestModule.msgNotify.failedIngestVM.title.txt=\u4EEE\u60F3\u30DE\u30B7\u30F3\u3092\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -VMExtractorIngestModule.msgNotify.failedIngestVM.msg.txt=\u4EEE\u60F3\u30DE\u30B7\u30F3\u30D5\u30A1\u30A4\u30EB{0}\u3092\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 \ No newline at end of file +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +deviceIdQueryErrMsg=\u30c7\u30d0\u30a4\u30b9ID\u306e\u306a\u3044\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 {0} +# {0} - \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u540d +VMExtractorIngestModule.cannotCreateOutputDir.message=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}\u3002 +VMExtractorIngestModule.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +VMExtractorIngestModuleFactory.moduleDisplayName=\u4eee\u60f3\u30de\u30b7\u30f3\u62bd\u51fa\u30c4\u30fc\u30eb +VMExtractorIngestModuleFactory.moduleDescription=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3057\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3068\u3057\u3066\u30b1\u30fc\u30b9\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002 +VMExtractorIngestModule.addedVirtualMachineImage.message=\u8ffd\u52a0\u3055\u308c\u305f\u4eee\u60f3\u30de\u30b7\u30f3\u30a4\u30e1\u30fc\u30b8 {0} +VMExtractorIngestModule.searchingImage.message=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u691c\u7d22\u4e2d\u3067\u3059 +VMExtractorIngestModule.exportingToDisk.message=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u3067\u3059 +VMExtractorIngestModule.queuingIngestJobs.message=\u62bd\u51fa\u3055\u308c\u305f\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0\u4e2d\u3067\u3059 +VMExtractorIngestModule.msgNotify.failedExtractVM.title.txt=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +VMExtractorIngestModule.msgNotify.failedExtractVM.msg.txt=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30c7\u30a3\u30b9\u30af\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +VMExtractorIngestModule.msgNotify.failedIngestVM.title.txt=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +VMExtractorIngestModule.msgNotify.failedIngestVM.msg.txt=\u4eee\u60f3\u30de\u30b7\u30f3\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/progress/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/progress/Bundle_ja.properties new file mode 100644 index 0000000000..d56b88e754 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/progress/Bundle_ja.properties @@ -0,0 +1,6 @@ +# \u3053\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3] \u3067 [\u30e9\u30a4\u30bb\u30f3\u30b9\u30d8\u30c3\u30c0\u30fc] \u3092\u9078\u629e\u3057\u307e\u3059\u3002 +# \u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb | \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] \u3092\u9078\u629e\u3057\u3001 +# \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u958b\u304d\u307e\u3059\u3002 + +ProgressPanel.progressMessage.text=\u30e1\u30c3\u30bb\u30fc\u30b8 +TaskCanceller.progress.cancellingMessage=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059... diff --git a/Core/src/org/sleuthkit/autopsy/python/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/python/Bundle_ja.properties index c407b6cf35..fdbd43efd7 100644 --- a/Core/src/org/sleuthkit/autopsy/python/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/python/Bundle_ja.properties @@ -1,2 +1,2 @@ -JythonModuleLoader.errorMessages.failedToOpenModule={0}\u304C\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -JythonModuleLoader.errorMessages.failedToLoadModule={0}. {1}. \u304C\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 \ No newline at end of file +JythonModuleLoader.errorMessages.failedToOpenModule={0}\u304c\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +JythonModuleLoader.errorMessages.failedToLoadModule={0}. {1}. \u304c\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties index f666513e92..6dde31add8 100644 --- a/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties @@ -1,8 +1,334 @@ OpenIDE-Module-Name=\u30ec\u30dd\u30fc\u30c8 -DefaultReportConfigurationPanel.infoLabel.text=\u3053\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u6b21\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002 -ReportBranding.defaultReportTitle.text=Autopsy\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30ec\u30dd\u30fc\u30c8 -ReportBranding.defaultReportFooter.text=Autopsy\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30fb\u30c7\u30b8\u30bf\u30eb\u30fb\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30fb\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u3088\u308a\u63d0\u4f9b - www.sleuthkit.org -ReportProgressPanel.pathLabel.text=\u30d1\u30b9\u30e9\u30d9\u30eb -ReportProgressPanel.reportLabel.text=\u30ec\u30dd\u30fc\u30c8\u30e9\u30d9\u30eb -ReportProgressPanel.statusMessageLabel.text=\u30d7\u30ed\u30bb\u30b7\u30f3\u30b0\u30e9\u30d9\u30eb +CTL_ReportWizardAction=\u30ec\u30dd\u30fc\u30c8\u3092\u5b9f\u884c +ArtifactSelectionDialog.titleLabel.text=\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u5bfe\u8c61\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u9078\u629e: +ArtifactSelectionDialog.okButton.text=OK +PortableCaseInterestingItemsListPanel.error.errorLoadingTags=\u8208\u5473\u6df1\u3044\u9805\u76ee\u30bb\u30c3\u30c8\u540d\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseInterestingItemsListPanel.error.errorTitle=\u30b1\u30fc\u30b9\u306e\u8208\u5473\u6df1\u3044\u9805\u76ee\u30bb\u30c3\u30c8\u540d\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseInterestingItemsListPanel.error.noOpenCase=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u305b\u3093 +PortableCaseReportModule.compressCase.canceled=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u5727\u7e2e\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f +PortableCaseReportModule.compressCase.errorCompressingCase=\u30b1\u30fc\u30b9\u306e\u5727\u7e2e\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - \u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u30fc\u30d1\u30b9 +PortableCaseReportModule.compressCase.errorCreatingTempFolder=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u30fc {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +PortableCaseReportModule.compressCase.errorFinding7zip=7-Zip\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +PortableCaseReportModule.copyContentToPortableCase.copyingFile={0} \u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc\u4e2d\u3067\u3059 +# {0} - \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc +PortableCaseReportModule.createCase.caseDirExists=\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc {0} \u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059 +PortableCaseReportModule.createCase.errorCreatingCase=\u30b1\u30fc\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - \u30d5\u30a9\u30eb\u30c0\u30fc +PortableCaseReportModule.createCase.errorCreatingFolder=Error creating \u30d5\u30a9\u30eb\u30c0\u30fc {0} \u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.createCase.errorStoringMaxIds=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9ID\u306e\u6700\u5927\u6570\u3092\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.caseClosed=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u304c\u9589\u3058\u3089\u308c\u307e\u3057\u305f\u3002 +PortableCaseReportModule.generateReport.compressingCase=\u30b1\u30fc\u30b9\u3092\u5727\u7e2e\u4e2d\u3067\u3059... +# {0} - \u30bf\u30b0\u540d +PortableCaseReportModule.generateReport.copyingArtifacts={0} \u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30b3\u30d4\u30fc\u4e2d\u3067\u3059... +# {0} - \u30bf\u30b0\u540d +PortableCaseReportModule.generateReport.copyingFiles={0} \u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u4e2d\u3067\u3059... +PortableCaseReportModule.generateReport.copyingTags=\u30bf\u30b0\u3092\u30b3\u30d4\u30fc\u4e2d\u3067\u3059... +PortableCaseReportModule.generateReport.creatingCase=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059... +PortableCaseReportModule.generateReport.errorCopyingArtifacts=\u30bf\u30b0\u4ed8\u304d\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.errorCopyingFiles=\u30bf\u30b0\u4ed8\u304d\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.errorCopyingInterestingFiles=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.errorCopyingInterestingResults=\u8208\u5473\u6df1\u3044\u7d50\u679c\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.errorCopyingTags=\u30bf\u30b0\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +# {0} - \u5c5e\u6027\u30bf\u30a4\u30d7\u540d +PortableCaseReportModule.generateReport.errorLookingUpAttrType=\u5c5e\u6027\u30bf\u30a4\u30d7 {0} \u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.interestingItemError=\u8208\u5473\u6df1\u3044\u9805\u76ee\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.noContentToCopy=\u30b3\u30d4\u30fc\u3059\u308b\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u3001\u7d50\u679c\u3001\u307e\u305f\u306f\u30bf\u30b0\u4ed8\u304d\u9805\u76ee\u304c\u3042\u308a\u307e\u305b\u3093 +# {0} - \u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc +PortableCaseReportModule.generateReport.outputDirDoesNotExist=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc {0} \u304c\u5b58\u5728\u3057\u307e\u305b\u3093 +# {0} - \u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc +PortableCaseReportModule.generateReport.outputDirIsNotDir=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc {0} \u306f\u30d5\u30a9\u30eb\u30c0\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +PortableCaseReportModule.generateReport.verifying=\u9078\u629e\u3057\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u691c\u8a3c\u4e2d\u3067\u3059... +PortableCaseReportModule.getDescription.description=\u9078\u629e\u3057\u305f\u9805\u76ee\u3092\u7c21\u5358\u306b\u5171\u6709\u53ef\u80fd\u306a\u65b0\u898f\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059 +PortableCaseReportModule.getName.name=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9 +PortableCaseTagsListPanel.error.errorLoadingTags=\u30bf\u30b0\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseTagsListPanel.error.errorTitle=\u30b1\u30fc\u30b9\u306e\u30bf\u30b0\u540d\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseTagsListPanel.error.noOpenCase=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u305b\u3093 +ReportExcel.exceptionMessage.dataTooLarge=\u5024\u304c\u9577\u3059\u304e\u3066Excel\u306e\u30bb\u30eb\u5185\u306b\u53ce\u307e\u308a\u307e\u305b\u3093\u3002 +ReportExcel.exceptionMessage.errorText=Excel\u306e\u30bb\u30eb\u5185\u3067\u30c7\u30fc\u30bf\u3092\u8868\u793a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ReportExcel.writeSummary.caseName=\u30b1\u30fc\u30b9\u540d: +ReportExcel.writeSummary.caseNotes=\u30b1\u30fc\u30b9\u5099\u8003: +ReportExcel.writeSummary.caseNum=\u30b1\u30fc\u30b9\u756a\u53f7: +ReportExcel.writeSummary.examiner=\u8abf\u67fb\u54e1: +ReportExcel.writeSummary.numImages=\u30a4\u30e1\u30fc\u30b8\u6570: +ReportExcel.writeSummary.sheetName=\u30b5\u30de\u30ea\u30fc +ReportExcel.writeSummary.summary=\u30b5\u30de\u30ea\u30fc +ReportGenerator.artTableColHdr.comment=\u30b3\u30e1\u30f3\u30c8 +ReportGenerator.errList.noOpenCase=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +ReportGenerator.tagTable.header.userName=\u30e6\u30fc\u30b6\u30fc\u540d +ReportHTML.writeSum.case=\u30b1\u30fc\u30b9: +ReportHTML.writeSum.caseNotes=\u5099\u8003: +ReportHTML.writeSum.caseNumber=\u30b1\u30fc\u30b9\u756a\u53f7: +ReportHTML.writeSum.caseNumImages=\u30a4\u30e1\u30fc\u30b8\u6570: +ReportHTML.writeSum.examiner=\u8abf\u67fb\u54e1: +ReportVisualPanel1.reportModulesLabel.text=\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb: +ReportVisualPanel1.invalidModuleWarning=\u7121\u52b9\u306a\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb ({0}) \u306b\u906d\u9047\u3057\u307e\u3057\u305f +DefaultReportConfigurationPanel.infoLabel.text=\u3053\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u6b21\u306e\u753b\u9762\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002 +ReportVisualPanel2.dataLabel.text=\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u5bfe\u8c61\u306e\u30c7\u30fc\u30bf\u3092\u9078\u629e: +ReportVisualPanel2.deselectAllButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +ReportVisualPanel2.selectAllButton.text=\u3059\u3079\u3066\u9078\u629e +ReportVisualPanel2.advancedButton.text=\u30c7\u30fc\u30bf\u30bf\u30a4\u30d7 +ArtifactSelectionDialog.deselectAllButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +ArtifactSelectionDialog.selectAllButton.text=\u3059\u3079\u3066\u9078\u629e +ReportGenerationPanel.closeButton.text=\u9589\u3058\u308b +ReportProgressPanel.reportLabel.text=reportLabel +ReportProgressPanel.pathLabel.text=pathLabel ReportProgressPanel.separationLabel.text=: +ReportProgressPanel.statusMessageLabel.text=processingLabel +ReportGenerationPanel.titleLabel.text=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u9032\u6357\u72b6\u6cc1 +ReportVisualPanel2.taggedResultsRadioButton.text=\u30bf\u30b0\u4ed8\u304d\u7d50\u679c +ReportVisualPanel2.allResultsRadioButton.text=\u3059\u3079\u3066\u306e\u7d50\u679c +ReportWizardFileOptionsVisualPanel.selectAllButton.text=\u3059\u3079\u3066\u9078\u629e +ReportWizardFileOptionsVisualPanel.deselectAllButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +ReportWizardFileOptionsVisualPanel.jLabel1.text=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u30ec\u30dd\u30fc\u30c8\u306b\u542b\u3081\u308b\u9805\u76ee\u3092\u9078\u629e: +ArtifactSelectionDialog.dlgTitle.text=\u9ad8\u5ea6\u306a\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u9078\u629e +FileReportDataTypes.filename.text=\u540d\u524d +FileReportDataTypes.fileExt.text=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50 +FileReportDataTypes.fileType.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +FileReportDataTypes.isDel.text=\u524a\u9664\u3055\u308c\u3066\u3044\u307e\u3059 +FileReportDataTypes.aTime.text=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5 +FileReportDataTypes.crTime.text=\u4f5c\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +FileReportDataTypes.mTime.text=\u6700\u7d42\u66f4\u65b0\u65e5 +FileReportDataTypes.size.text=\u30b5\u30a4\u30ba +FileReportDataTypes.address.text=\u30a2\u30c9\u30ec\u30b9 +FileReportDataTypes.hash.text=\u30cf\u30c3\u30b7\u30e5\u5024 +FileReportDataTypes.knownStatus.text=\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9 +FileReportDataTypes.perms.text=\u30a2\u30af\u30bb\u30b9\u6a29 +FileReportDataTypes.path.text=\u5b8c\u5168\u306a\u30d1\u30b9 +FileReportText.getName.text=\u30d5\u30a1\u30a4\u30eb - \u30c6\u30ad\u30b9\u30c8 +FileReportText.getDesc.text=\u30b1\u30fc\u30b9\u306e\u500b\u3005\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u542b\u3080\u533a\u5207\u308a\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002 +ReportBodyFile.progress.querying=\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30a8\u30ea\u4e2d\u3067\u3059... +ReportBodyFile.ingestWarning.text=\u8b66\u544a: \u3053\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b5\u30fc\u30d3\u30b9\u306e\u5b8c\u4e86\u524d\u306b\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\\uff01 +ReportBodyFile.progress.loading=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059... +ReportBodyFile.progress.processing={0} \u3092\u73fe\u5728\u51e6\u7406\u4e2d\u3067\u3059... +ReportBodyFile.getName.text=TSK Body\u30d5\u30a1\u30a4\u30eb +ReportBodyFile.getDesc.text=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u5fdc\u3057\u305f\u3001MAC\u56de\u6570\u3092\u6301\u3064Body\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3067\u3059\u3002\u3053\u306e\u5f62\u5f0f\u306f\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30d3\u30e5\u30fc\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +ReportBodyFile.getFilePath.text=BodyFile.txt +ReportKML.progress.querying=\u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30a8\u30ea\u4e2d\u3067\u3059... +ReportKML.progress.loading=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059... +ReportKML.getName.text=Google Earth KML +ReportKML.getDesc.text=\u95a2\u9023\u30d5\u30a1\u30a4\u30eb\u306e\u5ea7\u6a19\u3092\u6301\u3064KML\u5f62\u5f0f\u30ec\u30dd\u30fc\u30c8\u3067\u3059\u3002\u3053\u306e\u5f62\u5f0f\u306fGoogle Earth\u30d3\u30e5\u30fc\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +ReportKML.getFilePath.text=ReportKML.kml +ReportBranding.defaultReportTitle.text=Autopsy\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30ec\u30dd\u30fc\u30c8 +ReportBranding.defaultReportFooter.text=Autopsy\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30c7\u30b8\u30bf\u30eb\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4f7f\u7528 - www.sleuthkit.org +ReportExcel.numAartifacts.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u6570: +ReportExcel.getName.text=Excel\u30ec\u30dd\u30fc\u30c8 +ReportExcel.getDesc.text=\u7d50\u679c\u3068\u30bf\u30b0\u4ed8\u304d\u9805\u76ee\u306b\u95a2\u3059\u308bExcel (XLS)\u5f62\u5f0f\u306e\u30ec\u30dd\u30fc\u30c8\u3067\u3059\u3002 +ReportExcel.sheetName.text=\u30b5\u30de\u30ea\u30fc +ReportExcel.cellVal.summary=\u30b5\u30de\u30ea\u30fc +ReportExcel.cellVal.caseName=\u30b1\u30fc\u30b9\u540d: +ReportExcel.cellVal.caseNum=\u30b1\u30fc\u30b9\u756a\u53f7: +ReportExcel.cellVal.examiner=\u8abf\u67fb\u54e1: +ReportExcel.cellVal.numImages=\u30a4\u30e1\u30fc\u30b8\u6570: +ReportGenerationPanel.confDlg.sureToClose.msg=\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u9589\u3058\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?\n\u3059\u3079\u3066\u306e\u30ec\u30dd\u30fc\u30c8\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3059\u3002 +ReportGenerationPanel.confDlg.title.closing=\u9589\u3058\u3066\u3044\u307e\u3059 +ReportGenerationPanel.confDlg.cancelReport.msg=\u30ec\u30dd\u30fc\u30c8\u3092\u53d6\u308a\u6d88\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +ReportGenerator.displayProgress.title.text=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u9032\u6357\u72b6\u6cc1... +ReportGenerator.progress.queryingDb.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30af\u30a8\u30ea\u4e2d\u3067\u3059... +ReportGenerator.progress.processingFile.text={0} \u3092\u73fe\u5728\u51e6\u7406\u4e2d\u3067\u3059... +ReportGenerator.artifactTable.taggedResults.text=\u6b21\u306e\u3044\u305a\u308c\u304b\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u7d50\u679c\u3092\u542b\u307f\u307e\u3059: +ReportGenerator.progress.processing={0} \u3092\u73fe\u5728\u51e6\u7406\u4e2d\u3067\u3059...\u3002 +ReportGenerator.msgShow.skippingArtType.title=\u30ec\u30dd\u30fc\u30c8\u5185\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 {0} \u306e\u30b9\u30ad\u30c3\u30d7\u4e2d\u3067\u3059 +ReportGenerator.msgShow.skippingArtType.msg=\u4e0d\u660e\u306a\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u5bfe\u8c61\u306e\u5217 +ReportGenerator.makeContTagTab.taggedFiles.msg=\u6b21\u306e\u3044\u305a\u308c\u304b\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u542b\u307f\u307e\u3059: +ReportGenerator.makeBbArtTagTab.taggedRes.msg=\u3053\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u6b21\u3067\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u7d50\u679c\u306e\u307f\u3092\u542b\u307f\u307e\u3059: +ReportGenerator.tagTable.header.resultType=\u7d50\u679c\u30bf\u30a4\u30d7 +ReportGenerator.tagTable.header.tag=\u30bf\u30b0 +ReportGenerator.tagTable.header.comment=\u30b3\u30e1\u30f3\u30c8 +ReportGenerator.tagTable.header.srcFile=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb +ReportGenerator.progress.createdThumb.text=\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210\u4e2d\u3067\u3059... +ReportGenerator.htmlOutput.header.file=\u30d5\u30a1\u30a4\u30eb +ReportGenerator.htmlOutput.header.tag=\u30bf\u30b0 +ReportGenerator.htmlOutput.header.comment=\u30b3\u30e1\u30f3\u30c8 +ReportGenerator.htmlOutput.header.timeModified=MFT\u5909\u66f4\u6642\u523b +ReportGenerator.htmlOutput.header.timeChanged=\u5909\u66f4\u3055\u308c\u305f\u523b\u523b +ReportGenerator.htmlOutput.header.timeAccessed=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u6642\u523b +ReportGenerator.htmlOutput.header.timeCreated=\u4f5c\u6210\u3055\u308c\u305f\u6642\u523b +ReportGenerator.htmlOutput.header.size=\u30b5\u30a4\u30ba(\u30d0\u30a4\u30c8) +ReportGenerator.htmlOutput.header.hash=\u30cf\u30c3\u30b7\u30e5 +ReportGenerator.thumbnailTable.name=\u30bf\u30b0\u4ed8\u304d\u30a4\u30e1\u30fc\u30b8 +ReportGenerator.thumbnailTable.desc=\u30bf\u30b0\u4ed8\u304d\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u7d50\u679c\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a4\u30e1\u30fc\u30b8\u306e\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u542b\u307f\u307e\u3059\u3002 +ReportGenerator.writeKwHits.userSrchs=\u30e6\u30fc\u30b6\u30fc\u691c\u7d22 +ReportGenerator.progress.processing={0} ({1}) \u3092\u73fe\u5728\u51e6\u7406\u4e2d\u3067\u3059... +ReportGenerator.artTableColHdr.url=URL +ReportGenerator.artTableColHdr.title=\u30bf\u30a4\u30c8\u30eb +ReportGenerator.artTableColHdr.dateCreated=\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30fc\u30bf +ReportGenerator.artTableColHdr.program=\u30d7\u30ed\u30b0\u30e9\u30e0 +ReportGenerator.artTableColHdr.urlDomainDecoded=URL\u30c9\u30e1\u30a4\u30f3 +ReportGenerator.artTableColHdr.srcFile=\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb +ReportGenerator.artTableColHdr.dateTime=\u65e5\u6642 +ReportGenerator.artTableColHdr.name=\u540d\u524d +ReportGenerator.artTableColHdr.value=\u5024 +ReportGenerator.artTableColHdr.dateAccessed=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u30c7\u30fc\u30bf +ReportGenerator.artTableColHdr.referrer=\u30ea\u30d5\u30a1\u30e9\u30fc +ReportGenerator.artTableColHdr.dest=\u5b9b\u5148 +ReportGenerator.artTableColHdr.sourceUrl=\u30bd\u30fc\u30b9URL +ReportGenerator.artTableColHdr.path=\u30d1\u30b9 +ReportGenerator.artTableColHdr.progName=\u30d7\u30ed\u30b0\u30e9\u30e0\u540d +ReportGenerator.artTableColHdr.dateTime=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65e5\u6642 +ReportGenerator.artTableColHdr.preview=\u30d7\u30ec\u30d3\u30e5\u30fc +ReportGenerator.artTableColHdr.file=\u30d5\u30a1\u30a4\u30eb +ReportGenerator.artTableColHdr.size=\u30b5\u30a4\u30ba +ReportGenerator.artTableColHdr.deviceId=\u30c7\u30d0\u30a4\u30b9ID +ReportGenerator.artTableColHdr.text=\u30c6\u30ad\u30b9\u30c8 +ReportGenerator.artTableColHdr.domain=\u30c9\u30e1\u30a4\u30f3 +ReportGenerator.artTableColHdr.dateTaken=\u53d6\u5f97\u65e5 +ReportGenerator.artTableColHdr.devManufacturer=\u30c7\u30d0\u30a4\u30b9\u30e1\u30fc\u30ab\u30fc +ReportGenerator.artTableColHdr.devMake=\u30c7\u30d0\u30a4\u30b9\u30e1\u30fc\u30ab\u30fc +ReportGenerator.artTableColHdr.devModel=\u30c7\u30d0\u30a4\u30b9\u578b\u5f0f +ReportGenerator.artTableColHdr.latitude=\u7def\u5ea6 +ReportGenerator.artTableColHdr.longitude=\u7d4c\u5ea6 +ReportGenerator.artTableColHdr.latitudeStart=\u958b\u59cb\u7def\u5ea6 +ReportGenerator.artTableColHdr.longitudeStart=\u958b\u59cb\u7d4c\u5ea6 +ReportGenerator.artTableColHdr.latitudeEnd=\u7d42\u4e86\u7def\u5ea6 +ReportGenerator.artTableColHdr.longitudeEnd=\u7d42\u4e86\u7d4c\u5ea6 +ReportGenerator.artTableColHdr.associatedArtifact=\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8 +ReportGenerator.artTableColHdr.count=\u30ab\u30a6\u30f3\u30c8 +ReportGenerator.artTableColHdr.personName=\u4eba\u540d +ReportGenerator.artTableColHdr.phoneNumber=\u96fb\u8a71\u756a\u53f7 +ReportGenerator.artTableColHdr.phoneNumHome=\u96fb\u8a71\u756a\u53f7(\u81ea\u5b85) +ReportGenerator.artTableColHdr.phoneNumOffice=\u96fb\u8a71\u756a\u53f7(\u4f1a\u793e) +ReportGenerator.artTableColHdr.phoneNumMobile=\u96fb\u8a71\u756a\u53f7(\u643a\u5e2f) +ReportGenerator.artTableColHdr.email=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.msgType=\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7 +ReportGenerator.artTableColHdr.direction=\u65b9\u5411 +ReportGenerator.artTableColHdr.readStatus=\u8aad\u307f\u53d6\u308a\u30b9\u30c6\u30fc\u30bf\u30b9 +ReportGenerator.artTableColHdr.fromPhoneNum=\u767a\u4fe1\u5143\u96fb\u8a71\u756a\u53f7 +ReportGenerator.artTableColHdr.fromEmail=\u9001\u4fe1\u5143\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.toPhoneNum=\u76f8\u624b\u5148\u96fb\u8a71\u756a\u53f7 +ReportGenerator.artTableColHdr.toEmail=\u9001\u4fe1\u5148\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.subject=\u4ef6\u540d +ReportGenerator.artTableColHdr.tskEmailTo=To\u306e\u5b9b\u5148\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.tskEmailTo=CC\u306e\u5b9b\u5148\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.tskEmailTo=BCC\u306e\u5b9b\u5148\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.tskEmailTo=\u5dee\u51fa\u4eba\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.tskMsgId=\u30e1\u30c3\u30bb\u30fc\u30b8ID +ReportGenerator.artTableColHdr.tskDateTimeRcvd=\u53d7\u4fe1\u65e5 +ReportGenerator.artTableColHdr.tskDateTimeSent=\u9001\u4fe1\u65e5 +ReportGenerator.artTableColHdr.tskSubject=\u4ef6\u540d +ReportGenerator.artTableColHdr.tskSetName=\u30bb\u30c3\u30c8\u540d +ReportGenerator.artTableColHdr.tskInterestingFilesCategory=\u30eb\u30fc\u30eb +ReportGenerator.artTableColHdr.tskGpsRouteCategory=\u30ab\u30c6\u30b4\u30ea\u30fc +ReportGenerator.artTableColHdr.tskPath=\u30d1\u30b9 +ReportGenerator.artTableColHdr.calendarEntryType=\u30ab\u30ec\u30f3\u30c0\u30fc\u5165\u529b\u30bf\u30a4\u30d7 +ReportGenerator.artTableColHdr.description=\u8aac\u660e +ReportGenerator.artTableColHdr.startDateTime=\u958b\u59cb\u65e5\u6642 +ReportGenerator.artTableColHdr.endDateTime=\u7d42\u4e86\u65e5\u6642 +ReportGenerator.artTableColHdr.location=\u5834\u6240 +ReportGenerator.artTableColHdr.shortCut=\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8 +ReportGenerator.artTableColHdr.deviceName=\u30c7\u30d0\u30a4\u30b9\u540d +ReportGenerator.artTableColHdr.deviceAddress=\u30c7\u30d0\u30a4\u30b9\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.altitude=\u6a19\u9ad8 +ReportGenerator.artTableColHdr.locationAddress=\u6240\u5728\u5730\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.category=\u30ab\u30c6\u30b4\u30ea\u30fc +ReportGenerator.artTableColHdr.userId=\u30e6\u30fc\u30b6\u30fcID +ReportGenerator.artTableColHdr.userName=\u30e6\u30fc\u30b6\u30fc\u540d +ReportGenerator.artTableColHdr.password=\u30d1\u30b9\u30ef\u30fc\u30c9 +ReportGenerator.artTableColHdr.appName=\u30a2\u30d7\u30ea\u540d +ReportGenerator.artTableColHdr.appPath=\u30a2\u30d7\u30ea\u30d1\u30b9 +ReportGenerator.artTableColHdr.replytoAddress=\u8fd4\u4fe1\u5148\u30a2\u30c9\u30ec\u30b9 +ReportGenerator.artTableColHdr.mailServer=\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u30fc +ReportGenerator.artTableColHdr.tags=\u30bf\u30b0 +ReportGenerator.artTableColHdr.localPath=\u30ed\u30fc\u30ab\u30eb\u30d1\u30b9 +ReportGenerator.artTableColHdr.remotePath=\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9 +ReportGenerator.errors.reportErrorTitle=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ReportGenerator.errors.reportErrorText=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: +ReportHTML.addThumbRows.dataType.title=\u30bf\u30b0\u4ed8\u3051\u30a4\u30e1\u30fc\u30b8 - {0} +ReportHTML.addThumbRows.dataType.msg=\u30a4\u30e1\u30fc\u30b8\u3092\u542b\u3080\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u7d50\u679c\u3068\u30b3\u30f3\u30c6\u30f3\u30c4 +ReportHTML.thumbLink.tags=\u30bf\u30b0: +ReportHTML.getName.text=HTML\u30ec\u30dd\u30fc\u30c8 +ReportHTML.getDesc.text=\u7d50\u679c\u3068\u30bf\u30b0\u4ed8\u304d\u9805\u76ee\u306b\u95a2\u3059\u308bHTML\u5f62\u5f0f\u306e\u30ec\u30dd\u30fc\u30c8\u3067\u3059\u3002 +ReportHTML.writeIndex.title=\u30b1\u30fc\u30b9 {0} \u306e +ReportHTML.writeIndex.noFrames.msg=\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306f\u5f53\u793e\u306e\u30d5\u30ec\u30fc\u30e0\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +ReportHTML.writeIndex.noFrames.seeNav=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u30ea\u30f3\u30af\u306f\u3001the navigation page \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ReportHTML.writeIndex.seeSum=and \u30b1\u30fc\u30b9\u30b5\u30de\u30ea\u30fc\u306e \u30b5\u30de\u30ea\u30fc\u30da\u30fc\u30b8\u3067\u3059\u3002 +ReportHTML.writeNav.title=\u30ec\u30dd\u30fc\u30c8\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 +ReportHTML.writeNav.h1=\u30ec\u30dd\u30fc\u30c8\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 +ReportHTML.writeNav.summary=\u30b1\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +ReportHTML.writeSum.title=\u30b1\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +ReportHTML.writeSum.warningMsg=\u8b66\u544a: \u3053\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b5\u30fc\u30d3\u30b9\u306e\u5b8c\u4e86\u524d\u306b\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\! +# +# autopsy/test/scripts/regression.py._html_report_diff()\u306f reportGenOn.text\u3001caseName\u3001caseNum\u3001 +# examiner\u3092\u6b63\u898f\u8868\u73fe\u30b7\u30b0\u30cd\u30c1\u30e3\u30fc\u3068\u3057\u3066\u4f7f\u7528\u3057\u3001report.html\u3068summary.html\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059\u3002 +# +ReportHTML.writeSum.reportGenOn.text={0} \u3067\u751f\u6210\u3055\u308c\u305fHTML\u30ec\u30dd\u30fc\u30c8 +ReportHTML.writeSum.imageInfoHeading=

    \u30a4\u30e1\u30fc\u30b8\u60c5\u5831:

    +ReportHTML.writeSum.softwareInfoHeading=

    \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u60c5\u5831:

    +ReportHTML.writeSum.ingestHistoryHeading=

    \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5c65\u6b74:

    +ReportHTML.writeSum.modulesEnabledHeading=\u6709\u52b9\u5316\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb: +ReportHTML.writeSum.autopsyVersion=Autopsy\u30d0\u30fc\u30b8\u30e7\u30f3: +ReportHTML.writeSum.timezone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: +ReportHTML.writeSum.path=\u30d1\u30b9: +ReportProgressPanel.progress.queuing=\u30ad\u30e5\u30fc\u30a4\u30f3\u30b0\u4e2d\u3067\u3059... +ReportProgressPanel.initPathLabel.noFile=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093 +ReportProgressPanel.start.cancelButton.text=\u53d6\u308a\u6d88\u3057 +ReportProgressPanel.start.progress.text=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u59cb\u4e2d\u3067\u3059... +ReportProgressPanel.complete.processLbl.text=\u5b8c\u4e86 +ReportProgressPanel.complete.processLb2.text=\u30a8\u30e9\u30fc\u3067\u5b8c\u4e86\u3057\u307e\u3057\u305f +ReportProgressPanel.complete.cancelButton.text=\u5b8c\u4e86 +ReportProgressPanel.cancel.cancelButton.toolTipText=\u53d6\u308a\u6d88\u3057\u6e08\u307f +ReportProgressPanel.cancel.procLbl.text=\u53d6\u308a\u6d88\u3057\u6e08\u307f +ReportVisualPanel1.getName.text=\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u9078\u629e\u3057\u3066\u69cb\u6210 +ReportVisualPanel2.getName.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30ec\u30dd\u30fc\u30c8\u3092\u69cb\u6210 +ReportWizardAction.actionName.text=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 +ReportWizardAction.reportWiz.title=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 +ReportWizardAction.toolBarButton.text=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 +ReportWizardFileOptionsPanel.finishButton.text=\u5b8c\u4e86 +ReportWizardFileOptionsVisualPanel.getName.text=\u30d5\u30a1\u30a4\u30eb\u30ec\u30dd\u30fc\u30c8\u3092\u69cb\u6210 +ReportWizardPanel1.nextButton.text=\u6b21\u3078 > +ReportWizardPanel1.finishButton.text=\u5b8c\u4e86 +ReportWizardPanel2.finishButton.text=\u5b8c\u4e86 +ReportWizardPanel2.nextButton.text=\u6b21\u3078 > +ReportBodyFile.generateReport.srcModuleName.text=TSK Body\u30d5\u30a1\u30a4\u30eb +ReportExcel.endReport.srcModuleName.text=Excel\u30ec\u30dd\u30fc\u30c8 +ReportHTML.writeIndex.srcModuleName.text=HTML\u30ec\u30dd\u30fc\u30c8 +ReportKML.genReport.srcModuleName.text=\u5730\u7406\u7a7a\u9593\u30c7\u30fc\u30bf +ReportKML.genReport.reportName=KML\u30ec\u30dd\u30fc\u30c8 +ReportGenerator.artTableColHdr.extension.text=\u62e1\u5f35\u5b50 +ReportGenerator.artTableColHdr.mimeType.text=MIME\u30bf\u30a4\u30d7 +ReportGenerator.artTableColHdr.processorArchitecture.text=\u30d7\u30ed\u30bb\u30c3\u30b5\u30fc\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3 +ReportGenerator.artTableColHdr.osName.text=\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\u540d +ReportGenerator.artTableColHdr.osInstallDate.text=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65e5 +ReportGenerator.errList.failedMakeRptFolder=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +ReportGenerator.notifyErr.errsDuringRptGen=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: +ReportGenerator.errList.failedGetContentTags=\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30b0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedGetBBArtifactTags=\u30d6\u30e9\u30c3\u30af\u30dc\u30fc\u30c9\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30b0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.errGetContentFromBBArtifact=\u30ec\u30dd\u30fc\u30c8\u4f5c\u6210\u5bfe\u8c61\u306e\u30d6\u30e9\u30c3\u30af\u30dc\u30fc\u30c9\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ReportGenerator.errList.failedGetBBAttribs=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u4e2d\u306b\u30d6\u30e9\u30c3\u30af\u30dc\u30fc\u30c9\u5c5e\u6027\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedGetBBArtifacts=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u4e2d\u306b\u30d6\u30e9\u30c3\u30af\u30dc\u30fc\u30c9\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedQueryKWLists=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30af\u30a8\u30ea\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedGetAbstractFileByID=ID\u5225\u306b\u62bd\u8c61\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedQueryKWs=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30af\u30a8\u30ea\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedQueryHashsetLists=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30ea\u30b9\u30c8\u3092\u30af\u30a8\u30ea\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedGetAbstractFileFromID=ID\u304b\u3089\u62bd\u8c61\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.failedQueryHashsetHits=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d2\u30c3\u30c8\u3092\u30af\u30a8\u30ea\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ReportGenerator.errList.coreExceptionWhileGenRptRow=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30ec\u30dd\u30fc\u30c8\u306e\u5217\u30c7\u30fc\u30bf\u306e\u751f\u6210\u4e2d\u306b\u30b3\u30a2\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ReportKML.latLongStartPoint={0};{1};;{2} (\u958b\u59cb)\n +ReportKML.latLongEndPoint={0};{1};;{2} (\u7d42\u4e86)\n +ReportGenerationPanel.cancelButton.actionCommand=\u53d6\u308a\u6d88\u3057 +ReportGenerationPanel.cancelButton.text=\u53d6\u308a\u6d88\u3057 +ReportHTMLConfigurationPanel.headerTextField.text= +ReportHTMLConfigurationPanel.footerTextField.text= +ReportHTMLConfigurationPanel.headerLabel.text=\u30d8\u30c3\u30c0\u30fc: +ReportHTMLConfigurationPanel.footerLabel.text=\u30d5\u30c3\u30bf\u30fc: +CreatePortableCasePanel.selectAllButton.text=\u3059\u3079\u3066\u9078\u629e +CreatePortableCasePanel.deselectAllButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +CreatePortableCasePanel.outputFolderTextField.text=jTextField1 +CreatePortableCasePanel.chooseOutputFolderButton.text=\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e +CreatePortableCasePanel.jLabel1.text=\u6b21\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8: +CreatePortableCasePanel.jLabel2.text=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e: +CreatePortableCasePanel.errorLabel.text_1=Windows\u306e\u307f +ReportWizardPortableCaseOptionsVisualPanel.errorLabel.text=Windows\u306e\u307f +ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.text=\u30b1\u30fc\u30b9\u3092\u30a2\u30fc\u30ab\u30a4\u30d6\u5185\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u5316: +PortableCaseTagsListPanel.deselectButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +PortableCaseTagsListPanel.selectButton.text=\u3059\u3079\u3066\u9078\u629e +PortableCaseInterestingItemsListPanel.selectButton.text=\u3059\u3079\u3066\u9078\u629e +PortableCaseInterestingItemsListPanel.deselectButton.text=\u3059\u3079\u3066\u9078\u629e\u89e3\u9664 +ReportFileTextConfigurationPanel.tabDelimitedButton.text=\u533a\u5207\u308a\u30bf\u30d6 +ReportFileTextConfigurationPanel.commaDelimitedButton.text=\u533a\u5207\u308a\u30ab\u30f3\u30de +PortableCaseTagsListPanel.descLabel.text=\u6b21\u306e\u30bf\u30b0\u3092\u542b\u3080: +PortableCaseInterestingItemsListPanel.descLabel.text=\u3053\u308c\u3089\u306e\u30bb\u30c3\u30c8\u306e\u8208\u5473\u6df1\u3044\u9805\u76ee\u3092\u542b\u3080: +ReportWizardPortableCaseOptionsVisualPanel.compressCheckbox.toolTipText= +ReportWizardPortableCaseOptionsVisualPanel.getName.title=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u8a2d\u5b9a\u3092\u9078\u629e +TableReportGenerator.StatusColumn.Header=\u30ec\u30d3\u30e5\u30fc\u30b9\u30c6\u30fc\u30bf\u30b9 diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ArtifactSelectionDialog.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ArtifactSelectionDialog.java index 8fef4083ef..78ae4479a5 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ArtifactSelectionDialog.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ArtifactSelectionDialog.java @@ -77,8 +77,16 @@ class ArtifactSelectionDialog extends javax.swing.JDialog { BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO.getDisplayName())); doNotReport.add(new BlackboardArtifact.Type(BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getTypeID(), BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getLabel(), - BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getDisplayName())); // output is too unstructured for table review - + BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getDisplayName())); // output is too unstructured for table review + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getDisplayName())); + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getDisplayName())); + artifactTypes = Case.getCurrentCaseThrows().getSleuthkitCase().getArtifactTypesInUse(); artifactTypes.removeAll(doNotReport); Collections.sort(artifactTypes, new Comparator() { diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties old mode 100755 new mode 100644 index c911dd381d..5077b78fd1 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties @@ -183,4 +183,4 @@ FileReportDataTypes.address.text=\u30a2\u30c9\u30ec\u30b9 FileReportDataTypes.hash.text=\u30cf\u30c3\u30b7\u30e5\u5024 FileReportDataTypes.knownStatus.text=\u65e2\u77e5\u30b9\u30c6\u30fc\u30bf\u30b9 FileReportDataTypes.perms.text=\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3 -FileReportDataTypes.path.text=\u30d5\u30eb\u30d1\u30b9 \ No newline at end of file +FileReportDataTypes.path.text=\u30d5\u30eb\u30d1\u30b9 diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel2.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel2.java index 7a69681322..e804f0384f 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel2.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportVisualPanel2.java @@ -206,7 +206,14 @@ final class ReportVisualPanel2 extends JPanel { doNotReport.add(new BlackboardArtifact.Type(BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getTypeID(), BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getLabel(), BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getDisplayName())); // output is too unstructured for table review - + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getDisplayName())); + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getDisplayName())); // get artifact types that exist in the current case artifacts = openCase.getSleuthkitCase().getArtifactTypesInUse(); diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardAction.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardAction.java index e336538d4d..634f779988 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardAction.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/ReportWizardAction.java @@ -58,7 +58,7 @@ import org.sleuthkit.autopsy.coreutils.Logger; @ActionReferences(value = { @ActionReference(path = "Menu/Tools", position = 301, separatorAfter = 399) , - @ActionReference(path = "Toolbars/Case", position = 105)}) + @ActionReference(path = "Toolbars/Case", position = 106)}) public final class ReportWizardAction extends CallableSystemAction implements Presenter.Toolbar, ActionListener { private static final Logger logger = Logger.getLogger(ReportWizardAction.class.getName()); diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/TableReportGenerator.java b/Core/src/org/sleuthkit/autopsy/report/infrastructure/TableReportGenerator.java index 264ed461c4..3d4355f233 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/TableReportGenerator.java +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/TableReportGenerator.java @@ -108,6 +108,14 @@ class TableReportGenerator { doNotReport.add(new BlackboardArtifact.Type(BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getTypeID(), BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getLabel(), BlackboardArtifact.ARTIFACT_TYPE.TSK_TOOL_OUTPUT.getDisplayName())); // output is too unstructured for table review + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT.getDisplayName())); + doNotReport.add(new BlackboardArtifact.Type( + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getTypeID(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getLabel(), + BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT.getDisplayName())); Case.getCurrentCaseThrows().getSleuthkitCase().getArtifactTypes().forEach(artifactTypes::add); artifactTypes.removeAll(doNotReport); diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/bodyfile/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/bodyfile/Bundle_ja.properties old mode 100755 new mode 100644 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties old mode 100755 new mode 100644 index 0c990dc024..fd9a57fb2a --- a/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties @@ -7,4 +7,4 @@ ReportExcel.cellVal.caseName=\u30b1\u30fc\u30b9\u540d\uff1a ReportExcel.cellVal.caseNum=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a ReportExcel.cellVal.examiner=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a ReportExcel.cellVal.numImages=\u30a4\u30e1\u30fc\u30b8\u6570\uff1a -ReportExcel.endReport.srcModuleName.text=Excel\u30ec\u30dd\u30fc\u30c8 \ No newline at end of file +ReportExcel.endReport.srcModuleName.text=Excel\u30ec\u30dd\u30fc\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/file/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/file/Bundle_ja.properties old mode 100755 new mode 100644 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties old mode 100755 new mode 100644 index 50dfb93246..f05aa0e273 --- a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties @@ -22,4 +22,4 @@ ReportHTML.writeSum.imageInfoHeading=

    \u30a4\u30e1\u30fc\u30b8\u60c5\u5831\uf ReportHTML.writeSum.timezone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\uff1a ReportHTML.writeSum.reportGenOn.text={0}\u306bHTML\u30ec\u30dd\u30fc\u30c8\u306f\u751f\u6210\u3055\u308c\u307e\u3057\u305f ReportHTML.writeSum.noCaseNum=\u30b1\u30fc\u30b9\u756a\u53f7\u304c\u3042\u308a\u307e\u305b\u3093 -ReportHTML.writeIndex.srcModuleName.text=HTML\u30ec\u30dd\u30fc\u30c8 \ No newline at end of file +ReportHTML.writeIndex.srcModuleName.text=HTML\u30ec\u30dd\u30fc\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties old mode 100755 new mode 100644 index 27048c26c1..4593a4b4b6 --- a/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties @@ -3,4 +3,4 @@ ReportKML.getName.text=Google Earth/KML ReportKML.progress.loading=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u2026 ReportKML.progress.querying=\u30d5\u30a1\u30a4\u30eb\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u4e2d\u2026 ReportKML.genReport.reportName=KML\u30ec\u30dd\u30fc\u30c8 -ReportKML.getFilePath.text=\u30ec\u30dd\u30fc\u30c8KML.kml \ No newline at end of file +ReportKML.getFilePath.text=\u30ec\u30dd\u30fc\u30c8KML.kml diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/kml/KMLReport.java b/Core/src/org/sleuthkit/autopsy/report/modules/kml/KMLReport.java index a140338524..a002a0279d 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/kml/KMLReport.java +++ b/Core/src/org/sleuthkit/autopsy/report/modules/kml/KMLReport.java @@ -33,6 +33,7 @@ import java.io.OutputStream; import java.nio.file.Path; import java.nio.file.Paths; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import org.jdom2.Document; @@ -59,7 +60,7 @@ import org.sleuthkit.datamodel.TskCoreException; /** * Generates a KML file based on geospatial information from the BlackBoard. */ -class KMLReport implements GeneralReportModule { +public final class KMLReport implements GeneralReportModule { private static final Logger logger = Logger.getLogger(KMLReport.class.getName()); private static final String KML_STYLE_FILE = "style.kml"; @@ -79,6 +80,8 @@ class KMLReport implements GeneralReportModule { private Element gpsSearchesFolder; private Element gpsTrackpointsFolder; + private List waypointList = null; + private enum FeatureColor { RED("style.kml#redFeature"), GREEN("style.kml#greenFeature"), @@ -141,6 +144,11 @@ class KMLReport implements GeneralReportModule { "Route_Details_Header=GPS Route" }) + public void generateReport(String baseReportDir, ReportProgressPanel progressPanel, List waypointList) { + this.waypointList = waypointList; + generateReport(baseReportDir, progressPanel); + } + @Override public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) { try { @@ -298,7 +306,7 @@ class KMLReport implements GeneralReportModule { * @throws IOException */ void addExifMetadataContent(List points, String baseReportDirectory) throws IOException { - for(Waypoint point: points) { + for (Waypoint point : points) { Element mapPoint = makePoint(point); if (mapPoint == null) { return; @@ -332,41 +340,49 @@ class KMLReport implements GeneralReportModule { * @throws IOException */ void addLocationsToReport(SleuthkitCase skCase, String baseReportDir) throws GeoLocationDataException, IOException { - addExifMetadataContent(WaypointBuilder.getEXIFWaypoints(skCase), baseReportDir); - addWaypoints(WaypointBuilder.getBookmarkWaypoints(skCase), gpsBookmarksFolder, FeatureColor.BLUE, Bundle.Waypoint_Bookmark_Display_String()); - addWaypoints(WaypointBuilder.getLastKnownWaypoints(skCase), gpsLastKnownLocationFolder, FeatureColor.PURPLE, Bundle.Waypoint_Last_Known_Display_String()); - addWaypoints(WaypointBuilder.getSearchWaypoints(skCase), gpsSearchesFolder, FeatureColor.WHITE, Bundle.Waypoint_Search_Display_String()); - addWaypoints(WaypointBuilder.getTrackpointWaypoints(skCase), gpsTrackpointsFolder, FeatureColor.WHITE, Bundle.Waypoint_Trackpoint_Display_String()); + if (waypointList == null) { + addExifMetadataContent(WaypointBuilder.getEXIFWaypoints(skCase), baseReportDir); + addWaypoints(WaypointBuilder.getBookmarkWaypoints(skCase), gpsBookmarksFolder, FeatureColor.BLUE, Bundle.Waypoint_Bookmark_Display_String()); + addWaypoints(WaypointBuilder.getLastKnownWaypoints(skCase), gpsLastKnownLocationFolder, FeatureColor.PURPLE, Bundle.Waypoint_Last_Known_Display_String()); + addWaypoints(WaypointBuilder.getSearchWaypoints(skCase), gpsSearchesFolder, FeatureColor.WHITE, Bundle.Waypoint_Search_Display_String()); + addWaypoints(WaypointBuilder.getTrackpointWaypoints(skCase), gpsTrackpointsFolder, FeatureColor.WHITE, Bundle.Waypoint_Trackpoint_Display_String()); + } else { + addExifMetadataContent(WaypointBuilder.getEXIFWaypoints(waypointList), baseReportDir); + addWaypoints(WaypointBuilder.getBookmarkWaypoints(waypointList), gpsBookmarksFolder, FeatureColor.BLUE, Bundle.Waypoint_Bookmark_Display_String()); + addWaypoints(WaypointBuilder.getLastKnownWaypoints(waypointList), gpsLastKnownLocationFolder, FeatureColor.PURPLE, Bundle.Waypoint_Last_Known_Display_String()); + addWaypoints(WaypointBuilder.getSearchWaypoints(waypointList), gpsSearchesFolder, FeatureColor.WHITE, Bundle.Waypoint_Search_Display_String()); + addWaypoints(WaypointBuilder.getTrackpointWaypoints(waypointList), gpsTrackpointsFolder, FeatureColor.WHITE, Bundle.Waypoint_Trackpoint_Display_String()); + } } - + /** - * For each point in the waypoint list an Element to represent the given waypoint - * is created and added it to the given Element folder. - * - * @param points List of waypoints to add to the report - * @param folder The Element folder to add the points to + * For each point in the waypoint list an Element to represent the given + * waypoint is created and added it to the given Element folder. + * + * @param points List of waypoints to add to the report + * @param folder The Element folder to add the points to * @param waypointColor The color the waypoint should appear in the report */ void addWaypoints(List points, Element folder, FeatureColor waypointColor, String headerLabel) { - for(Waypoint point: points) { + for (Waypoint point : points) { addContent(folder, point.getLabel(), waypointColor, getFormattedDetails(point, headerLabel), point.getTimestamp(), makePoint(point), point.getLatitude(), point.getLongitude()); } } - + /** * Adds the waypoint Element with details to the report in the given folder. - * - * @param folder Element folder to add the waypoint to - * @param waypointLabel String waypoint Label - * @param waypointColor FeatureColor for the waypoint + * + * @param folder Element folder to add the waypoint to + * @param waypointLabel String waypoint Label + * @param waypointColor FeatureColor for the waypoint * @param formattedDetails String HTML formatted waypoint details - * @param timestamp Long timestamp (unix\jave epoch seconds) - * @param point Element point object - * @param latitude Double latitude value - * @param longitude Double longitude value + * @param timestamp Long timestamp (unix\jave epoch seconds) + * @param point Element point object + * @param latitude Double latitude value + * @param longitude Double longitude value */ void addContent(Element folder, String waypointLabel, FeatureColor waypointColor, String formattedDetails, Long timestamp, Element point, Double latitude, Double longitude) { - if(folder != null && point != null) { + if (folder != null && point != null) { String formattedCords = formattedCoordinates(latitude, longitude); folder.addContent(makePlacemark(waypointLabel, waypointColor, formattedDetails, timestamp, point, formattedCords)); } @@ -380,17 +396,19 @@ class KMLReport implements GeneralReportModule { * @throws TskCoreException */ void makeRoutes(SleuthkitCase skCase) throws GeoLocationDataException { - List routes = Route.getRoutes(skCase); - - if(routes == null) { - return; + List routes = null; + + if (waypointList == null) { + routes = Route.getRoutes(skCase); + } else { + routes = new ArrayList<>(); } for (Route route : routes) { addRouteToReport(route); } } - + void addRouteToReport(Route route) { List routePoints = route.getRoute(); Waypoint start = null; @@ -423,15 +441,15 @@ class KMLReport implements GeneralReportModule { } if (startingPoint != null) { - gpsRouteFolder.addContent(makePlacemark(start.getLabel(), - FeatureColor.GREEN, getFormattedDetails(start, Bundle.Waypoint_Route_Point_Display_String()), + gpsRouteFolder.addContent(makePlacemark(start.getLabel(), + FeatureColor.GREEN, getFormattedDetails(start, Bundle.Waypoint_Route_Point_Display_String()), start.getTimestamp(), startingPoint, formattedStart)); //NON-NLS } if (endingPoint != null) { - gpsRouteFolder.addContent(makePlacemark(end.getLabel(), - FeatureColor.GREEN, - getFormattedDetails(end, Bundle.Waypoint_Route_Point_Display_String()), + gpsRouteFolder.addContent(makePlacemark(end.getLabel(), + FeatureColor.GREEN, + getFormattedDetails(end, Bundle.Waypoint_Route_Point_Display_String()), end.getTimestamp(), endingPoint, formattedEnd)); //NON-NLS } } @@ -688,11 +706,11 @@ class KMLReport implements GeneralReportModule { /** * Get the nicely formatted details for the given waypoint. - * - * @param point Waypoint object + * + * @param point Waypoint object * @param header String details header - * - * @return HTML formatted String of details for given waypoint + * + * @return HTML formatted String of details for given waypoint */ private String getFormattedDetails(Waypoint point, String header) { StringBuilder result = new StringBuilder(); //NON-NLS @@ -706,15 +724,15 @@ class KMLReport implements GeneralReportModule { result.append(formatAttribute("Latitude", point.getLatitude().toString())) .append(formatAttribute("Longitude", point.getLongitude().toString())); - + if (point.getAltitude() != null) { result.append(formatAttribute("Altitude", point.getAltitude().toString())); } List list = point.getOtherProperties(); - for(Waypoint.Property prop: list) { + for (Waypoint.Property prop : list) { String value = prop.getValue(); - if(value != null && !value.isEmpty()) { + if (value != null && !value.isEmpty()) { result.append(formatAttribute(prop.getDisplayName(), value)); } } @@ -733,8 +751,7 @@ class KMLReport implements GeneralReportModule { * * @return A HTML formatted list of the Route attributes */ - - private String getFormattedDetails(Route route) { + private String getFormattedDetails(Route route) { List points = route.getRoute(); StringBuilder result = new StringBuilder(); //NON-NLS @@ -752,38 +769,38 @@ class KMLReport implements GeneralReportModule { result.append(formatAttribute("Start Latitude", start.getLatitude().toString())) .append(formatAttribute("Start Longitude", start.getLongitude().toString())); - + Double altitude = start.getAltitude(); - if(altitude != null) { + if (altitude != null) { result.append(formatAttribute("Start Altitude", altitude.toString())); } - + result.append(formatAttribute("End Latitude", end.getLatitude().toString())) .append(formatAttribute("End Longitude", end.getLongitude().toString())); - + altitude = end.getAltitude(); - if(altitude != null) { + if (altitude != null) { result.append(formatAttribute("End Altitude", altitude.toString())); } } List list = route.getOtherProperties(); - for(Waypoint.Property prop: list) { + for (Waypoint.Property prop : list) { String value = prop.getValue(); - if(value != null && !value.isEmpty()) { + if (value != null && !value.isEmpty()) { result.append(formatAttribute(prop.getDisplayName(), value)); } } return result.toString(); } - + /** * Helper functions for consistently formatting longitude and latitude. - * - * @param latitude Double latitude value + * + * @param latitude Double latitude value * @param longitude Double longitude value - * + * * @return String Nicely formatted double values separated by a comma */ private String formattedCoordinates(Double latitude, Double longitude) { diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java index 38e53b5eb6..bf2e8c8507 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java @@ -55,6 +55,7 @@ import org.sleuthkit.datamodel.ContentTag; import org.sleuthkit.datamodel.FileSystem; import org.sleuthkit.datamodel.Image; import org.sleuthkit.datamodel.LocalFilesDataSource; +import org.sleuthkit.datamodel.Pool; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.SleuthkitCase.CaseDbTransaction; import org.sleuthkit.datamodel.TagName; @@ -891,6 +892,9 @@ public class PortableCaseReportModule implements ReportModule { Volume vs = (Volume)content; newContent = portableSkCase.addVolume(parentId, vs.getAddr(), vs.getStart(), vs.getLength(), vs.getDescription(), vs.getFlags(), trans); + } else if (content instanceof Pool) { + Pool pool = (Pool)content; + newContent = portableSkCase.addPool(parentId, pool.getType(), trans); } else if (content instanceof FileSystem) { FileSystem fs = (FileSystem)content; newContent = portableSkCase.addFileSystem(parentId, fs.getImageOffset(), fs.getFsType(), fs.getBlock_size(), diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/stix/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/stix/Bundle_ja.properties index 5dfc25469b..b57761ac09 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/stix/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/stix/Bundle_ja.properties @@ -10,4 +10,4 @@ STIXReportModuleConfigPanel.jButton1.text=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u STIXReportModuleConfigPanel.jCheckBox1.text=\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u8aa4\u3063\u305f\u30a4\u30f3\u30b8\u30b1\u30fc\u30bf\u30fc\u306e\u7d50\u679c\u3082\u542b\u3080 STIXReportModuleConfigPanel.jLabel2.text=STIX\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306fSTIX\u30d5\u30a1\u30a4\u30eb\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u9078\u629e STIXReportModule.notifyErr.noFildDirProvided=STIX\u30d5\u30a1\u30a4\u30eb\uff0f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -STIXReportModule.progress.noFildDirProvided=STIX\u30d5\u30a1\u30a4\u30eb\uff0f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093 \ No newline at end of file +STIXReportModule.progress.noFildDirProvided=STIX\u30d5\u30a1\u30a4\u30eb\uff0f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093 diff --git a/Core/src/org/sleuthkit/autopsy/test/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/test/Bundle_ja.properties new file mode 100644 index 0000000000..5e2cc58164 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/test/Bundle_ja.properties @@ -0,0 +1,3 @@ +CustomArtifactsCreatorDataSourceIngestModule.exceptionMessage.errorCreatingCustomType=\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +CustomArtifactsCreatorFileIngestModule.exceptionMessage.errorCreatingCustomType=\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +InterestingArtifactCreatorIngestModule.exceptionMessage.errorCreatingCustomType=\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ja.properties old mode 100755 new mode 100644 index 5d243eba03..8966e582e2 --- a/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/textextractors/Bundle_ja.properties @@ -1,2 +1,2 @@ -AbstractFileTikaTextExtract.index.exception.tikaParse.msg=\u4f8b\u5916\uff1a\u30d5\u30a1\u30a4\u30eb\uff1a{0}, {1}\u306eApache Tika\u30d1\u30fc\u30b9\u30bf\u30b9\u30af\u5b9f\u884c\u4e2d\u306e\u4e88\u671f\u305b\u306c\u4f8b\u5916 -AbstractFileTikaTextExtract.index.tikaParseTimeout.text=\u4f8b\u5916\uff1a\u30b3\u30f3\u30c6\u30f3\u30c4\uff1a{0}, {1}\u306eApache Tika\u30d1\u30fc\u30b9\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 \ No newline at end of file +AbstractFileTikaTextExtract.index.tikaParseTimeout.text=\u4f8b\u5916: \u6b21\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306eTika\u89e3\u6790\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8: {0}\u3001{1} +AbstractFileTikaTextExtract.index.exception.tikaParse.msg=\u4f8b\u5916: \u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u306eTika\u89e3\u6790\u30bf\u30b9\u30af\u5b9f\u884c\u6642\u306e\u4e88\u671f\u305b\u306c\u4f8b\u5916: {0}\u3001{1} diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java b/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java index 2c8316ba60..ff0ba51dd1 100755 --- a/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java +++ b/Core/src/org/sleuthkit/autopsy/textextractors/TextExtractorFactory.java @@ -89,6 +89,7 @@ public class TextExtractorFactory { */ private static List getFileExtractors(AbstractFile content, Lookup context) { List fileExtractors = Arrays.asList( + new TextFileExtractor(content), new HtmlTextExtractor(content), new SqliteTextExtractor(content), new TikaTextExtractor(content)); diff --git a/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java b/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java new file mode 100644 index 0000000000..3efb6b1aed --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/textextractors/TextFileExtractor.java @@ -0,0 +1,135 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2018-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.textextractors; + +import com.ethteck.decodetect.core.Decodetect; +import com.ethteck.decodetect.core.DecodetectResult; +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.charset.UnsupportedCharsetException; +import java.util.List; +import org.apache.tika.parser.txt.CharsetDetector; +import org.apache.tika.parser.txt.CharsetMatch; +import org.sleuthkit.datamodel.AbstractFile; +import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.ReadContentInputStream; + +/** + * Extract text from text files + */ +public final class TextFileExtractor implements TextExtractor { + public static Charset UNKNOWN_CHARSET = new Charset("unknown", null) { + @Override + public boolean contains(Charset cs) { + return false; + } + + @Override + public CharsetDecoder newDecoder() { + return null; + } + + @Override + public CharsetEncoder newEncoder() { + return null; + } + }; + + // This value will be used as a threshold for determining which encoding + // detection library to use. If Tika's own confidence is at least + // MIN_MATCH_CONFIDENCE, Tika's result will be used for decoding. + // Otherwise, Decodetect will be used. + static final private int MIN_TIKA_MATCH_CONFIDENCE = 35; + + // This value determines whether we will consider Decodetect's top-scoring + // result a legitimate match or if we will disregard its findings + // + // Possible values are 0 to 1, inclusive + static final private double MIN_DECODETECT_MATCH_CONFIDENCE = 0.4; + + private final AbstractFile file; + + public TextFileExtractor(AbstractFile file) { + this.file = file; + } + + @Override + public Reader getReader() { + Charset encoding = getEncoding(file); + if (encoding.equals(UNKNOWN_CHARSET)) { + encoding = StandardCharsets.UTF_8; + } + return getReader(encoding); + } + + public Reader getReader(Charset encoding) { + return new InputStreamReader(new BufferedInputStream(new ReadContentInputStream(file)), encoding); + } + + @Override + public boolean isSupported() { + return file.getMIMEType().equals("text/plain"); + } + + public class TextFileExtractorException extends Exception { + public TextFileExtractorException(String msg, Throwable ex) { + super(msg, ex); + } + public TextFileExtractorException(String msg) { + super(msg); + } + } + + public static Charset getEncoding(Content content) { + try (InputStream stream = new BufferedInputStream(new ReadContentInputStream(content))) { + // Tika first + CharsetDetector detector = new CharsetDetector(); + detector.setText(stream); + CharsetMatch tikaResult = detector.detect(); + if (tikaResult != null && tikaResult.getConfidence() >= MIN_TIKA_MATCH_CONFIDENCE) { + try { + return Charset.forName(tikaResult.getName()); + } catch (UnsupportedCharsetException ignored) { + } + } + + // Decodetect if Tika fails or falls below confidence threshold + int maxBytes = 100000; + int numBytes = Math.min(stream.available(), maxBytes); + byte[] targetArray = new byte[numBytes]; + stream.read(targetArray); + List results = Decodetect.DECODETECT.getResults(targetArray); + if (!results.isEmpty()) { + DecodetectResult topResult = results.get(0); + if (topResult.getConfidence() >= MIN_DECODETECT_MATCH_CONFIDENCE) { + return topResult.getEncoding(); + } + } + } catch (IOException ignored) { + } + return UNKNOWN_CHARSET; + } +} diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties new file mode 100644 index 0000000000..f09a84b18c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties @@ -0,0 +1,12 @@ +OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 +OptionsCategory_Keywords_Machine_Translation_Settings=\u6a5f\u68b0\u7ffb\u8a33\u8a2d\u5b9a +TranslationContentPanel.ocrLabel.text=OCR: +TranslationOptionsPanel.noTextTranslators.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 +TranslationOptionsPanel.noTextTranslators.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 +TranslationOptionsPanel.textTranslatorsUnavailable.text=\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 +TranslationOptionsPanel.translationDisabled.text=\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059 +TranslationOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +TranslationOptionsPanelController.moduleErr.msg=TranslationSettingsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TranslationContentPanel.showLabel.text=\u8868\u793a: +TranslationOptionsPanel.translationServiceLabel.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb: +TranslationOptionsPanel.translationOptionsDescription.text=\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u88fd\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u6210\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties new file mode 100644 index 0000000000..885df0f635 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties @@ -0,0 +1,30 @@ +BingTranslator.name.text=Bing\u3067\u7ffb\u8a33\u8005\u3092\u691c\u7d22 +BingTranslatorSettingsPanel.warning.invalidKey=\u7121\u52b9\u306a\u7ffb\u8a33\u8a8d\u8a3c\u30ad\u30fc\u3067\u3059 +BingTranslatorSettingsPanel.warning.targetLanguageFailure=\u5bfe\u8c61\u8a00\u8a9e\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u306a\u3044\u304b\u3001\u53d7\u4fe1\u3057\u305f\u7d50\u679c\u3092\u89e3\u6790\u3067\u304d\u307e\u305b\u3093 +GoogleTranslator.name.text=Google\u7ffb\u8a33 +GoogleTranslatorSettingsPanel.browseButton.text=\u53c2\u7167 +GoogleTranslatorSettingsPanel.credentialsLabel.text=\u8cc7\u683c\u60c5\u5831\u306e\u30d1\u30b9: +GoogleTranslatorSettingsPanel.errorMessage.fileNotFound=\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u6709\u52b9\u306aJSON\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +GoogleTranslatorSettingsPanel.errorMessage.noFileSelected=Google\u7ffb\u8a33\u306b\u8cc7\u683c\u60c5\u5831\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u30011\u3064\u306eJSON\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +GoogleTranslatorSettingsPanel.errorMessage.translationFailure=\u6307\u5b9a\u3057\u305f\u8cc7\u683c\u60c5\u5831\u3067\u306f\u7ffb\u8a33\u3067\u304d\u307e\u305b\u3093 +GoogleTranslatorSettingsPanel.errorMessage.unableToMakeCredentials=\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8cc7\u683c\u60c5\u5831\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u69cb\u7bc9\u3067\u304d\u307e\u305b\u3093\u3002\u6709\u52b9\u306aJSON\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +GoogleTranslatorSettingsPanel.errorMessage.unableToReadCredentials=\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8cc7\u683c\u60c5\u5831\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002\u6709\u52b9\u306aJSON\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u5834\u6240\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +GoogleTranslatorSettingsPanel.errorMessage.unknownFailureGetting=\u73fe\u5728\u306e\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 +GoogleTranslatorSettingsPanel.errorMessage.unknownFailurePopulating=\u73fe\u5728\u306e\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u306e\u30ea\u30b9\u30c8\u3092\u5165\u529b\u3067\u304d\u307e\u305b\u3093\u3002 +GoogleTranslatorSettingsPanel.fileChooser.confirmButton=\u9078\u629e +GoogleTranslatorSettingsPanel.json.description=JSON\u30d5\u30a1\u30a4\u30eb +GoogleTranslatorSettingsPanel.warningLabel.text= +GoogleTranslatorSettingsPanel.targetLanguageLabel.text=\u5bfe\u8c61\u8a00\u8a9e: +BingTranslatorSettingsPanel.testButton.text=\u30c6\u30b9\u30c8 +BingTranslatorSettingsPanel.testResultValueLabel.text= +BingTranslatorSettingsPanel.resultLabel.text=\u7d50\u679c: +BingTranslatorSettingsPanel.untranslatedLabel.text=\u672a\u7ffb\u8a33: +BingTranslatorSettingsPanel.targetLanguageLabel.text=\u5bfe\u8c61\u8a00\u8a9e: +BingTranslatorSettingsPanel.authenticationKeyField.toolTipText=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u5165\u529b\u3059\u308b +GoogleTranslatorSettingsPanel.testButton.text=\u30c6\u30b9\u30c8 +GoogleTranslatorSettingsPanel.untranslatedLabel.text=\u672a\u7ffb\u8a33: +GoogleTranslatorSettingsPanel.resultLabel.text=\u7d50\u679c: +GoogleTranslatorSettingsPanel.testResultValueLabel.text= +BingTranslatorSettingsPanel.authenticationKeyLabel.text=\u8a8d\u8a3c\u30ad\u30fc: +BingTranslatorSettingsPanel.instructionsTextArea.text=\u304a\u4f7f\u3044\u306eMicrosoft Translator\u30a2\u30ab\u30a6\u30f3\u30c8\u306bMicrosoft Translator\u8a8d\u8a3c\u30ad\u30fc\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ad\u30fc\u306e\u53d6\u5f97\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u624b\u9806\u306f\u3053\u3061\u3089\u306b\u3042\u308a\u307e\u3059: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-text-how-to-signup +GoogleTranslatorSettingsPanel.instructionsTextArea.text=\u304a\u4f7f\u3044\u306eGoogle\u7ffb\u8a33\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u306b\u542b\u307e\u308c\u308bJSON\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u306e\u4f5c\u6210\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u60c5\u5831\u306f\u3053\u3061\u3089\u306b\u3042\u308a\u3042\u307e\u3059: https://cloud.google.com/iam/docs/creating-managing-service-account-keys diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties new file mode 100644 index 0000000000..b9442d6a12 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties @@ -0,0 +1,22 @@ +OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 +OptionsCategory_Keywords_Machine_Translation_Settings=\u6a5f\u68b0\u7ffb\u8a33\u8a2d\u5b9a +TranslatedContentPanel.comboBoxOption.originalText=\u30aa\u30ea\u30b8\u30ca\u30eb\u30c6\u30ad\u30b9\u30c8(\u6700\u592725KB) +TranslatedContentPanel.comboBoxOption.translatedText=\u7ffb\u8a33\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8 +TranslatedContentViewer.emptyTranslation=\u751f\u6210\u3055\u308c\u305f\u7ffb\u8a33\u7d50\u679c\u306f\u7a7a(\u672a\u5165\u529b)\u3067\u3057\u305f\u3002 +TranslatedContentViewer.errorExtractingText=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +TranslatedContentViewer.errorMsg=\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +TranslatedContentViewer.extractingFileText=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +TranslatedContentViewer.extractingImageText=\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +TranslatedContentViewer.noIndexedTextMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u3001\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 +TranslatedContentViewer.noServiceProvider=\u6a5f\u68b0\u7ffb\u8a33\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +TranslatedContentViewer.textAlreadyIndexed=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u306e\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u30aa\u30ea\u30b8\u30ca\u30eb\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +TranslatedContentViewer.translatingText=\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33\u4e2d\u3067\u3059\u3002T\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +TranslatedContentViewer.translationException=\u7ffb\u8a33\u3092\u8a66\u307f\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +TranslatedTextViewer.maxPayloadSize=\u30c6\u30ad\u30b9\u30c8\u306e\u6700\u521d\u306e %dKB \u307e\u3067\u7ffb\u8a33\u3055\u308c\u307e\u3059 +TranslatedTextViewer.title=\u7ffb\u8a33 +TranslatedTextViewer.toolTip=\u7ffb\u8a33\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +TranslationContentPanel.autoDetectOCR=\u81ea\u52d5\u691c\u51fa\u3055\u308c\u305f\u8a00\u8a9e +TranslationContentPanel.ocrLabel.text=OCR: +TranslationOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +TranslationOptionsPanelController.moduleErr.msg=TranslationSettingsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TranslationContentPanel.showLabel.text=\u8868\u793a: diff --git a/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ja.properties old mode 100755 new mode 100644 index c631cee729..918ab67c66 --- a/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/Bundle_ja.properties @@ -1,47 +1,66 @@ -CTL_MakeTimeline=\u300c\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u300d -CTL_TimeLineTopComponent=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30a6\u30a3\u30f3\u30c9\u30a6 -CTL_TimeLineTopComponentAction=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c8\u30c3\u30d7\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8 -OpenTimelineAction.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +CTL_MakeTimeline=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +CTL_TimeLineTopComponentAction=TimeLineTopComponent +CTL_TimeLineTopComponent=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 + +OpenTimelineAction.displayName=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +OpenTimeLineAction.msgdlg.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +OpenTimelineAction.settingsErrorMessage=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u8a2d\u5b9a\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +PrompDialogManager.buttonType.continueNoUpdate=\u66f4\u65b0\u305b\u305a\u306b\u7d9a\u884c +PrompDialogManager.buttonType.showTimeline=\u7d9a\u884c +PrompDialogManager.buttonType.update=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0 +PromptDialogManager.confirmDuringIngest.contentText=\u7d9a\u884c\u3057\u307e\u3059\u304b? +PromptDialogManager.confirmDuringIngest.headerText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3048\u306b\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5b8c\u5168\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +PromptDialogManager.progressDialog.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u3092\u5165\u529b\u4e2d\u3067\u3059 +PromptDialogManager.rebuildPrompt.details=\u8a73\u7d30 +PromptDialogManager.rebuildPrompt.headerText=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u304c\u5b8c\u5168\u304a\u3088\u3073/\u307e\u305f\u306f\u6700\u65b0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u4e00\u90e8\u306e\u30a4\u30d9\u30f3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u6b63\u78ba\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +PromptDialogManager.showTimeLineDisabledMessage.contentText=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u6a5f\u80fd\u306f\u307e\u3060\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 +PromptDialogManager.showTimeLineDisabledMessage.headerText= +PromptDialogManager.showTooManyFiles.contentText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u6570\u304c\u591a\u3059\u304e\u3066\u3001\u76f8\u5fdc\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u305b\u3093\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 +PromptDialogManager.showTooManyFiles.headerText= +ShowInTimelineDialog.amountValidator.message=\u5165\u529b\u3059\u308b\u91cf\u306b\u306f\u6570\u5b57\u306e\u307f\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 +ShowInTimelineDialog.artifactTitle=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u7d50\u679c\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ShowInTimelineDialog.eventSelectionValidator.message=\u30a4\u30d9\u30f3\u30c8\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +# {0} - \u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 +ShowInTimelineDialog.fileTitle=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b {0} \u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ShowInTimelineDialog.showTimelineButtonType.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u8868\u793a +Timeline.dialogs.title=\ \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 Timeline.frameName.text={0} - Autopsy\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 -Timeline.goToButton.text=\u4e0b\u8a18\u3078\u79fb\u52d5\uff1a -Timeline.pushDescrLOD.confdlg.msg={0}\u30a4\u30d9\u30f3\u30c8\u306e\u8a73\u7d30\u304c\u8868\u793a\u53ef\u80fd\u3067\u3059\u3002\u3053\u306e\u51e6\u7406\u306f\u9577\u6642\u9593\u304b\u304b\u308b\u3082\u3057\u304f\u306fAutopsy\u3092\u30af\u30e9\u30c3\u30b7\u30e5\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f -Timeline.resultPanel.loading=\u30ed\u30fc\u30c9\u4e2d\u30fb\u30fb\u30fb Timeline.resultsPanel.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u7d50\u679c -Timeline.runJavaFxThread.progress.creating=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u4f5c\u6210\u4e2d\u30fb\u30fb\u30fb +Timeline.runJavaFxThread.progress.creating=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u4f5c\u6210\u4e2d\u3067\u3059 ... Timeline.zoomOutButton.text=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8 +Timeline.goToButton.text=\u79fb\u52d5: +Timeline.yearBarChart.x.years=\u5e74 +Timeline.resultPanel.loading=\u8aad\u307f\u8fbc\u307f\u4e2d... + +TimeLineController.errorTitle=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30a8\u30e9\u30fc\u3067\u3059\u3002 +TimeLineController.outOfDate.errorMessage=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u6700\u65b0\u306e\u60c5\u5831\u3067\u306f\u306a\u3044\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u4eee\u5b9a\u3057\u307e\u3059\u3002 \u30ed\u30b0\u3092\u8868\u793a\u3057\u3066\u8a73\u7d30\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +TimeLineController.rebuildReasons.incompleteOldSchema=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u4ee5\u524d\u306b\u4e0d\u5b8c\u5168\u306a\u60c5\u5831\u3067\u5165\u529b\u3055\u308c\u307e\u3057\u305f: \u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u306a\u3044\u9650\u308a\u3001\u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u304b\u6a5f\u80fd\u3057\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLineController.rebuildReasons.ingestWasRunning=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u4ee5\u524d\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306b\u5165\u529b\u3055\u308c\u307e\u3057\u305f: \u4e00\u90e8\u306e\u30a4\u30d9\u30f3\u30c8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u3001\u4e0d\u5b8c\u5168\u304b\u3001\u6b63\u78ba\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLineController.rebuildReasons.outOfDate=\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u306f\u6700\u65b0\u3067\u306f\u3042\u308a\u307e\u305b\u3093: \u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3067\u304d\u307e\u305b\u3093\u3002 +TimeLineController.rebuildReasons.outOfDateError=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u304c\u6700\u65b0\u306e\u60c5\u5831\u3067\u306f\u306a\u3044\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +TimeLineController.setEventsDBStale.errMsgNotStale=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u53e4\u3044\u3082\u306e\u3068\u3057\u3066\u30de\u30fc\u30af\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u7d50\u679c\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u898b\u3064\u304b\u3089\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLineController.setEventsDBStale.errMsgStale=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u53e4\u3044\u3082\u306e\u3068\u3057\u3066\u30de\u30fc\u30af\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u7d50\u679c\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u898b\u3064\u304b\u3089\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLinecontroller.setIngestRunning.errMsgNotRunning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b9f\u884c\u3057\u3066\u3044\u306a\u3044\u9593\u306b\u3001\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5165\u529b\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u7d50\u679c\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u898b\u3064\u304b\u3089\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLineController.setIngestRunning.errMsgRunning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306b\u3001\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5165\u529b\u6e08\u307f\u3068\u3057\u3066\u30de\u30fc\u30af\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4e00\u90e8\u306e\u7d50\u679c\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u898b\u3064\u304b\u3089\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +TimeLinecontroller.updateNowQuestion=\u4eca\u3059\u3050\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u307e\u3059\u304b? TimelineFrame.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +TimelinePanel.jButton1.text=6m +TimelinePanel.jButton13.text=\u3059\u3079\u3066 +TimelinePanel.jButton10.text=1h +TimelinePanel.jButton9.text=12h +TimelinePanel.jButton11.text=5y +TimelinePanel.jButton12.text=10y +TimelinePanel.jButton6.text=1w +TimelinePanel.jButton5.text=1y +TimelinePanel.jButton8.text=1d +TimelinePanel.jButton7.text=3d +TimelinePanel.jButton2.text=1m +TimelinePanel.jButton3.text=3m +TimelinePanel.jButton4.text=2w +ProgressWindow.progressHeader.text=\ +# {0} - \u65e5\u4ed8\u7bc4\u56f2\u306e\u958b\u59cb +# {1} - \u65e5\u4ed8\u7bc4\u56f2\u306e\u7d42\u4e86 +TimeLineResultView.startDateToEndDate.text={0} ~ {1} TimeLineTopComponent.eventsTab.name=\u30a4\u30d9\u30f3\u30c8 TimeLineTopComponent.filterTab.name=\u30d5\u30a3\u30eb\u30bf\u30fc -OpenTimeLineAction.msgdlg.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -PrompDialogManager.buttonType.continueNoUpdate=\u66f4\u65b0\u305b\u305a\u6b21\u3078 -PrompDialogManager.buttonType.showTimeline=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u8868\u793a -PrompDialogManager.buttonType.update=\u66f4\u65b0 -PromptDialogManager.confirmDuringIngest.contentText=\u6b21\u3078\u9032\u307f\u307e\u3059\u304b\uff1f -PromptDialogManager.confirmDuringIngest.headerText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u524d\u306b\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3092\u8868\u793a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002\n\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u5b8c\u6210\u3057\u3066\u3044\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -PromptDialogManager.progressDialog.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u3092\u5165\u529b\u4e2d -PromptDialogManager.rebuildPrompt.details=\u8a73\u7d30\uff1a -PromptDialogManager.rebuildPrompt.headerText=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4e0d\u5b8c\u5168\u307e\u305f\u306f\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\n \u6b20\u843d\u3057\u3066\u3044\u308b\u307e\u305f\u306f\u4e0d\u6b63\u78ba\u306a\u30a4\u30d9\u30f3\u30c8\u304c\u4e00\u90e8\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -Timeline.confirmation.dialogs.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u307e\u3059\u304b\uff1f -Timeline.pushDescrLOD.confdlg.title=\u8aac\u660e\u306e\u8a18\u8ff0\u30ec\u30d9\u30eb\u3092\u5909\u66f4\u3057\u307e\u3059\u304b\uff1f -TimeLineController.errorTitle=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30a8\u30e9\u30fc -TimeLineController.outOfDate.errorMessage=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u6700\u65b0\u304b\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u66f4\u65b0\u304c\u5fc5\u8981\u3060\u3068\u60f3\u5b9a\u3057\u307e\u3059\u3002 -TimeLineController.rebuildReasons.incompleteOldSchema=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30a4\u30d9\u30f3\u30c8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4e0d\u5b8c\u5168\u306a\u60c5\u5831\u304c\u4ee5\u524d\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u3057\u305f\uff1a\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u306a\u3044\u3068\u3001\u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u3001\u307e\u305f\u306f\u6a5f\u80fd\u3057\u306a\u3044\u304b\u3082\u3057\u308c\u306a\u3044\u3067\u3059\u3002 -TimeLineController.rebuildReasons.ingestWasRunning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b9f\u884c\u4e2d\u306b\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30a4\u30d9\u30f3\u30c8\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u60c5\u5831\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u3057\u305f\uff1a\u30a4\u30d9\u30f3\u30c8\u304c\u6b20\u3051\u3066\u3044\u308b\u3001\u4e0d\u5b8c\u5168\u3001\u307e\u305f\u306f\u4e0d\u6b63\u78ba\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -TimeLineController.rebuildReasons.outOfDate=\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u304c\u6700\u65b0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff1a\u898b\u308c\u306a\u3044\u30a4\u30d9\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002 -TimeLineController.rebuildReasons.outOfDateError=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30c7\u30fc\u30bf\u304c\u6700\u65b0\u304b\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -TimeLinecontroller.updateNowQuestion=\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4eca\u66f4\u65b0\u3057\u307e\u3059\u304b\uff1f -TimelinePanel.jButton13.text=\u5168\u3066 -Timeline.yearBarChart.x.years=\u5e74 -TimelinePanel.jButton1.text=6\u30f6\u6708 -TimelinePanel.jButton10.text=1\u6642\u9593 -TimelinePanel.jButton9.text=12\u6642\u9593 -TimelinePanel.jButton11.text=5\u5e74 -TimelinePanel.jButton12.text=10\u5e74 -TimelinePanel.jButton6.text=1\u9031\u9593 -TimelinePanel.jButton5.text=1\u5e74 -TimelinePanel.jButton8.text=1\u65e5 -TimelinePanel.jButton7.text=3\u65e5 -TimelinePanel.jButton2.text=1\u30f6\u6708 -TimelinePanel.jButton3.text=3\u30f6\u6708 -TimelinePanel.jButton4.text=2\u9031\u9593 -TimeLineResultView.startDateToEndDate.text={0}\u304b\u3089{1} \ No newline at end of file +TimelineTopComponent.selectedEventListener.errorMsg=\u9078\u629e\u3057\u305f\u30a4\u30d9\u30f3\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java b/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java new file mode 100755 index 0000000000..c75c7c814e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/EventsModel.java @@ -0,0 +1,804 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2014-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.timeline; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableList; +import com.google.common.eventbus.EventBus; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import javafx.beans.InvalidationListener; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.ReadOnlyObjectWrapper; +import javafx.collections.FXCollections; +import javafx.collections.ObservableMap; +import static org.apache.commons.collections4.CollectionUtils.emptyIfNull; +import static org.apache.commons.collections4.CollectionUtils.isNotEmpty; +import org.joda.time.DateTimeZone; +import org.joda.time.Interval; +import org.openide.util.NbBundle; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagDeletedEvent; +import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagDeletedEvent.DeletedBlackboardArtifactTagInfo; +import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; +import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent.DeletedContentTagInfo; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; +import org.sleuthkit.autopsy.timeline.events.RefreshRequestedEvent; +import org.sleuthkit.autopsy.timeline.events.TagsAddedEvent; +import org.sleuthkit.autopsy.timeline.events.TagsDeletedEvent; +import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.FilterState; +import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; +import org.sleuthkit.autopsy.timeline.utils.CacheLoaderImpl; +import org.sleuthkit.autopsy.timeline.utils.FilterUtils; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; +import org.sleuthkit.datamodel.AbstractFile; +import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.BlackboardArtifactTag; +import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.ContentTag; +import org.sleuthkit.datamodel.DataSource; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TimelineManager; +import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.datamodel.TimelineEvent; +import org.sleuthkit.datamodel.TimelineEventType; +import org.sleuthkit.datamodel.TimelineFilter; +import org.sleuthkit.datamodel.TimelineFilter.DataSourceFilter; +import org.sleuthkit.datamodel.TimelineFilter.DataSourcesFilter; +import org.sleuthkit.datamodel.TimelineFilter.EventTypeFilter; +import org.sleuthkit.datamodel.TimelineFilter.FileTypesFilter; +import org.sleuthkit.datamodel.TimelineFilter.HashHitsFilter; +import org.sleuthkit.datamodel.TimelineFilter.HideKnownFilter; +import org.sleuthkit.datamodel.TimelineFilter.RootFilter; +import org.sleuthkit.datamodel.TimelineFilter.TagsFilter; +import org.sleuthkit.datamodel.TimelineFilter.TextFilter; +import org.sleuthkit.datamodel.TimelineLevelOfDetail; + +/** + * In the timeline implementation of the MVC pattern, this class acts as the + * model. The views are the event counts view, the event details view and the + * events list view. + * + * Concurrency Policy: TimelineManager is internally synchronized, so methods + * that only access the TimelineManager atomically do not need further + * synchronization. All other member state variables should only be accessed + * with intrinsic lock of the containing FilteredEventsModel held. + * + */ +public final class EventsModel { + + private static final Logger logger = Logger.getLogger(EventsModel.class.getName()); + private final EventBus eventbus = new EventBus("EventsModel_EventBus"); //NON-NLS + private final Case currentCase; + private final TimelineManager caseDbEventManager; + + /* + * User-specified parameters for the model exposed as JFX properties. These + * parameters apply across all of the views of the model and are set using + * GUI elements such the event filters panel. + * + * IMPORTANT: Note that the parameters are exposed both as a set and + * individually. + */ + private final ReadOnlyObjectWrapper modelParamsProperty = new ReadOnlyObjectWrapper<>(); + private final ReadOnlyObjectWrapper filterStateProperty = new ReadOnlyObjectWrapper<>(); + private final ReadOnlyObjectWrapper timeRangeProperty = new ReadOnlyObjectWrapper<>(); + private final ReadOnlyObjectWrapper eventTypesHierarchyLevelProperty = new ReadOnlyObjectWrapper<>(TimelineEventType.HierarchyLevel.CATEGORY); + private final ReadOnlyObjectWrapper timelineLODProperty = new ReadOnlyObjectWrapper<>(TimelineLevelOfDetail.LOW); + + /* + * Caches of model data from the case database. + */ + private final ObservableMap datasourceIDsToNamesMap = FXCollections.observableHashMap(); + private final LoadingCache maxEventTimeCache; + private final LoadingCache minEventTimeCache; + private final LoadingCache idsToEventsCache; + private final LoadingCache> eventCountsCache; + + /** + * Makes a new data source filter from a given entry in the cache of data + * source object IDs to data source names. + * + * @param dataSourceEntry The cache entry. + * + * @return A new DataSourceFilter. + */ + private static DataSourceFilter newDataSourceFilter(Map.Entry dataSourceEntry) { + return new DataSourceFilter(dataSourceEntry.getValue(), dataSourceEntry.getKey()); + } + + /** + * Constructs the model in the timeline implementation of the MVC pattern. + * + * @param currentCase The current case. + * @param modelParams The initial state of the model parameters. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public EventsModel(Case currentCase, ReadOnlyObjectProperty modelParams) throws TskCoreException { + this.currentCase = currentCase; + this.caseDbEventManager = currentCase.getSleuthkitCase().getTimelineManager(); + + /* + * Set up the caches of model data from the case database. Note that the + * build() method calls specify the methods used to create default cache + * entries when a call to get() would otherwise return a cache miss. + */ + populateDataSourcesCache(); + idsToEventsCache = CacheBuilder.newBuilder() + .maximumSize(5000L) + .expireAfterAccess(10, TimeUnit.MINUTES) + .build(new CacheLoaderImpl<>(caseDbEventManager::getEventById)); + eventCountsCache = CacheBuilder.newBuilder() + .maximumSize(1000L) + .expireAfterAccess(10, TimeUnit.MINUTES) + .build(new CacheLoaderImpl<>(this::countEventsByType)); + maxEventTimeCache = CacheBuilder.newBuilder() + .build(new CacheLoaderImpl<>(ignored -> caseDbEventManager.getMaxEventTime())); + minEventTimeCache = CacheBuilder.newBuilder() + .build(new CacheLoaderImpl<>(ignored -> caseDbEventManager.getMinEventTime())); + + /* + * Add a listener to the data sources cache that adds a data source + * filter to the event filter state model parameter when a data source + * is added to the cache. + */ + InvalidationListener dataSourcesMapListener = observable -> { + RootFilterState rootFilter = filterStateProperty.getReadOnlyProperty().get(); + addDataSourceFilters(rootFilter); + filterStateProperty.set(rootFilter.copyOf()); + }; + datasourceIDsToNamesMap.addListener(dataSourcesMapListener); + + /* + * Initialize the events filter state model parameter with the default + * events filter. + */ + filterStateProperty.set(getDefaultEventFilterState()); + + /* + * Add a listener to the model parameters property that updates the + * properties that expose the individual model parameters when they are + * changed through the model parameters property. + */ + modelParamsProperty.addListener(observable -> { + final EventsModelParams params = modelParamsProperty.get(); + if (params != null) { + synchronized (EventsModel.this) { + eventTypesHierarchyLevelProperty.set(params.getEventTypesHierarchyLevel()); + filterStateProperty.set(params.getEventFilterState()); + timeRangeProperty.set(params.getTimeRange()); + timelineLODProperty.set(params.getTimelineLOD()); + } + } + }); + + modelParamsProperty.bind(modelParams); + } + + /** + * Populates the map of data source object IDs to data source names from the + * data source data in the case database. + */ + synchronized private void populateDataSourcesCache() throws TskCoreException { + datasourceIDsToNamesMap.clear(); + SleuthkitCase skCase = currentCase.getSleuthkitCase(); + for (DataSource ds : skCase.getDataSources()) { + datasourceIDsToNamesMap.putIfAbsent(ds.getId(), ds.getName()); + } + } + + /** + * Adds a data source filter for each data source in the data sources cache + * to a given root filter state object. + * + * @param rootFilterState A root filter state object. + */ + synchronized void addDataSourceFilters(RootFilterState rootFilterState) { + DataSourcesFilter dataSourcesFilter = rootFilterState.getDataSourcesFilterState().getFilter(); + datasourceIDsToNamesMap.entrySet().forEach(entry -> dataSourcesFilter.addSubFilter(newDataSourceFilter(entry))); + } + + /** + * Gets the count of all events that fit the given model parameters. The + * counts are organized by event type for the given event types hierarchy + * level. + * + * @param modelParams The model parameters. + * + * @return A mapping of event types to event counts at the given event types + * hierarchy level. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + private Map countEventsByType(EventsModelParams modelParams) throws TskCoreException { + if (modelParams.getTimeRange() == null) { + return Collections.emptyMap(); + } else { + return caseDbEventManager.countEventsByType(modelParams.getTimeRange().getStartMillis() / 1000, + modelParams.getTimeRange().getEndMillis() / 1000, + modelParams.getEventFilterState().getActiveFilter(), + modelParams.getEventTypesHierarchyLevel()); + } + } + + /** + * Gets the case database events manager. + * + * @return The case database events manager. + */ + public TimelineManager getEventManager() { + return caseDbEventManager; + } + + /** + * Gets the case database. + * + * @return The case database. + */ + public SleuthkitCase getSleuthkitCase() { + return currentCase.getSleuthkitCase(); + } + + /** + * Gets the model parameters property. + * + * @return A read only, observable property for the current model + * parameters. + */ + synchronized public ReadOnlyObjectProperty modelParamsProperty() { + return modelParamsProperty.getReadOnlyProperty(); + } + + /** + * Gets a read only, observable property for the time range model parameter. + * + * @return The time range model parameter property. + */ + @NbBundle.Messages({ + "FilteredEventsModel.timeRangeProperty.errorTitle=Timeline", + "FilteredEventsModel.timeRangeProperty.errorMessage=Error getting spanning interval."}) + synchronized public ReadOnlyObjectProperty timeRangeProperty() { + if (timeRangeProperty.get() == null) { + try { + timeRangeProperty.set(EventsModel.this.getSpanningInterval()); + } catch (TskCoreException timelineCacheException) { + MessageNotifyUtil.Notify.error(Bundle.FilteredEventsModel_timeRangeProperty_errorTitle(), + Bundle.FilteredEventsModel_timeRangeProperty_errorMessage()); + logger.log(Level.SEVERE, "Error getting spanning interval.", timelineCacheException); + } + } + return timeRangeProperty.getReadOnlyProperty(); + } + + /** + * Gets a read only, observable property for the timeline level of detail + * model parameter. + * + * @return The timeline level of detail model parameter property. + */ + synchronized public ReadOnlyObjectProperty descriptionLODProperty() { + return timelineLODProperty.getReadOnlyProperty(); + } + + /** + * Gets a read only, observable property for the event filter model + * parameter. + * + * @return The event filter model parameter property. + */ + synchronized public ReadOnlyObjectProperty eventFilterProperty() { + return filterStateProperty.getReadOnlyProperty(); + } + + /** + * Gets a read only, observable property for the event types hierarchy level + * model parameter. + * + * @return The event types hierarchy level model parameter property. + */ + synchronized public ReadOnlyObjectProperty eventTypesHierarchyLevelProperty() { + return eventTypesHierarchyLevelProperty.getReadOnlyProperty(); + } + + /** + * Gets the current model parameters. + * + * @return The current model parameters. + */ + synchronized public EventsModelParams getModelParams() { + return modelParamsProperty.get(); + } + + /** + * Gets the time range model parameter. + * + * @return The time range model parameter. + */ + synchronized public Interval getTimeRange() { + return getModelParams().getTimeRange(); + } + + /** + * Gets the time range model parameter. + * + * @return The time range model parameter. + */ + synchronized public TimelineLevelOfDetail getDescriptionLOD() { + return getModelParams().getTimelineLOD(); + } + + /** + * Gets the event filter model parameter. + * + * @return The event filter model parameter. + */ + synchronized public RootFilterState getEventFilterState() { + return getModelParams().getEventFilterState(); + } + + /** + * Gets the event types hierarchy level model model parameter. + * + * @return The event types hierarchy level model model parameter. + */ + synchronized public TimelineEventType.HierarchyLevel getEventTypeZoom() { + return getModelParams().getEventTypesHierarchyLevel(); + } + + /** + * Gets a new instance of the default event filter state model parameter, + * with data source filters for every data source currently in the data + * sopurces cache. + * + * @return An instance of the default filter state model parameter. + */ + public synchronized RootFilterState getDefaultEventFilterState() { + /* + * Construct data source filters for all of the data sources in the data + * sources cache. + */ + DataSourcesFilter dataSourcesFilter = new DataSourcesFilter(); + datasourceIDsToNamesMap.entrySet().forEach(dataSourceEntry + -> dataSourcesFilter.addSubFilter(newDataSourceFilter(dataSourceEntry))); + + /* + * Make the rest of the event filters and wrap all of the filters with + * filter state objects for the GUI. + */ + RootFilterState rootFilterState = new RootFilterState(new RootFilter( + new HideKnownFilter(), + new TagsFilter(), + new HashHitsFilter(), + new TextFilter(), + new EventTypeFilter(TimelineEventType.ROOT_EVENT_TYPE), + dataSourcesFilter, + FilterUtils.createDefaultFileTypesFilter(), + Collections.emptySet())); + + return rootFilterState; + } + + /** + * Gets an event given its event ID. + * + * @param eventID The event ID. + * + * @return The event. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public TimelineEvent getEventById(Long eventID) throws TskCoreException { + try { + return idsToEventsCache.get(eventID); + } catch (ExecutionException ex) { + throw new TskCoreException("Error getting cached event from ID", ex); + } + } + + /** + * Gets a set of events given their event IDs. + * + * @param eventIDs The event IDs. + * + * @return THe events. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Set getEventsById(Collection eventIDs) throws TskCoreException { + Set events = new HashSet<>(); + for (Long id : eventIDs) { + events.add(getEventById(id)); + } + return events; + } + + /** + * Gets a list of event IDs for a given time range and a given events + * filter. + * + * @param timeRange The time range. + * @param filterState A filter state object for the events filter. + * + * @return The events. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public List getEventIDs(Interval timeRange, FilterState filterState) throws TskCoreException { + final Interval overlap; + RootFilter intersection; + synchronized (this) { + overlap = EventsModel.this.getSpanningInterval().overlap(timeRange); + intersection = getEventFilterState().intersect(filterState).getActiveFilter(); + } + return caseDbEventManager.getEventIDs(overlap, intersection); + } + + /** + * Gets a set of event IDs associated with a given file. + * + * @param file The file. + * @param includeDerivedArtifacts If true, also gets the event IDs of events + * associated with artifacts for which the + * file is the source file. + * + * @return The event IDs. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Set getEventIDsForFile(AbstractFile file, boolean includeDerivedArtifacts) throws TskCoreException { + return caseDbEventManager.getEventIDsForContent(file, includeDerivedArtifacts); + } + + /** + * Gets a set of event IDs associated with a given artifact. + * + * @param artifact The artifact. + * + * @return The event IDs. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public List getEventIDsForArtifact(BlackboardArtifact artifact) throws TskCoreException { + return caseDbEventManager.getEventIDsForArtifact(artifact); + } + + /** + * Gets counts by event type of the events within a given time range. + * + * @param timeRange The time range. + * + * @return The event counts by type. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Map getEventCounts(Interval timeRange) throws TskCoreException { + final RootFilterState filter; + final TimelineEventType.HierarchyLevel typeZoom; + synchronized (this) { + filter = getEventFilterState(); + typeZoom = getEventTypeZoom(); + } + try { + return eventCountsCache.get(new EventsModelParams(timeRange, typeZoom, filter, null)); + } catch (ExecutionException executionException) { + throw new TskCoreException("Error getting cached event counts.`1", executionException); + } + } + + /** + * Gets the spanning interval for the events that fall within the time range + * and event filter model parameters, in terms of a given time zone. + * + * @param timeZone The time zone. + * + * @return The spanning interval. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Interval getSpanningInterval(DateTimeZone timeZone) throws TskCoreException { + return caseDbEventManager.getSpanningInterval(modelParamsProperty().get().getTimeRange(), getEventFilterState().getActiveFilter(), timeZone); + } + + /** + * Gets the spanning interval for all of the events in the case database. + * + * @return The spanning interval. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Interval getSpanningInterval() throws TskCoreException { + return new Interval(getMinEventTime() * 1000, 1000 + getMaxEventTime() * 1000); + } + + /** + * Gets the spanning interval for a collection of events. + * + * @param eventIDs The event IDs of the events. + * + * @return The spanning interval. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Interval getSpanningInterval(Collection eventIDs) throws TskCoreException { + return caseDbEventManager.getSpanningInterval(eventIDs); + } + + /** + * Gets the minimum event time in the case database, in seconds since the + * UNIX epoch. + * + * @return The minimum event time. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Long getMinEventTime() throws TskCoreException { + try { + return minEventTimeCache.get("min"); // NON-NLS + } catch (ExecutionException ex) { + throw new TskCoreException("Error getting cached min time.", ex); + } + } + + /** + * Gets the maximum event time in the case database, in seconds since the + * UNIX epoch. + * + * @return The maximum event time. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + public Long getMaxEventTime() throws TskCoreException { + try { + return maxEventTimeCache.get("max"); // NON-NLS + } catch (ExecutionException ex) { + throw new TskCoreException("Error getting cached max time.", ex); + } + } + + /** + * Updates the events model for a content tag added event and publishes a + * tag added event via the model's event bus. + * + * @param evt The event. + * + * @return If a tags added event was published via the model's event bus. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + synchronized public boolean handleContentTagAdded(ContentTagAddedEvent evt) throws TskCoreException { + ContentTag contentTag = evt.getAddedTag(); + Content content = contentTag.getContent(); + Set updatedEventIDs = caseDbEventManager.updateEventsForContentTagAdded(content); + if (isNotEmpty(updatedEventIDs)) { + invalidateCaches(updatedEventIDs); + } + return postTagsAdded(updatedEventIDs); + } + + /** + * Updates the events model for an artifact tag added event and publishes a + * tag added event via the model's event bus. + * + * @param evt The event. + * + * @return If a tags added event was published via the model's event bus. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + synchronized public boolean handleArtifactTagAdded(BlackBoardArtifactTagAddedEvent evt) throws TskCoreException { + BlackboardArtifactTag artifactTag = evt.getAddedTag(); + BlackboardArtifact artifact = artifactTag.getArtifact(); + Set updatedEventIDs = caseDbEventManager.updateEventsForArtifactTagAdded(artifact); + if (isNotEmpty(updatedEventIDs)) { + invalidateCaches(updatedEventIDs); + } + return postTagsAdded(updatedEventIDs); + } + + /** + * Updates the events model for a content tag deleted event and publishes a + * tag deleted event via the model's event bus. + * + * @param evt The event. + * + * @return If a tags deleted event was published via the model's event bus. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + synchronized public boolean handleContentTagDeleted(ContentTagDeletedEvent evt) throws TskCoreException { + DeletedContentTagInfo deletedTagInfo = evt.getDeletedTagInfo(); + Content content = currentCase.getSleuthkitCase().getContentById(deletedTagInfo.getContentID()); + Set updatedEventIDs = caseDbEventManager.updateEventsForContentTagDeleted(content); + if (isNotEmpty(updatedEventIDs)) { + invalidateCaches(updatedEventIDs); + } + return postTagsDeleted(updatedEventIDs); + } + + /** + * Updates the events model for an artifact tag deleted event and publishes + * a tag deleted event via the model's event bus. + * + * @param evt The event. + * + * @return If a tags deleted event was published via the model's event bus. + * + * @throws TskCoreException If there is an error reading model data from the + * case database. + */ + synchronized public boolean handleArtifactTagDeleted(BlackBoardArtifactTagDeletedEvent evt) throws TskCoreException { + DeletedBlackboardArtifactTagInfo deletedTagInfo = evt.getDeletedTagInfo(); + BlackboardArtifact artifact = currentCase.getSleuthkitCase().getBlackboardArtifact(deletedTagInfo.getArtifactID()); + Set updatedEventIDs = caseDbEventManager.updateEventsForArtifactTagDeleted(artifact); + if (isNotEmpty(updatedEventIDs)) { + invalidateCaches(updatedEventIDs); + } + return postTagsDeleted(updatedEventIDs); + } + + /** + * Post a TagsAddedEvent to all registered subscribers, if the given set of + * updated event IDs is not empty. + * + * @param updatedEventIDs The set of event ids to be included in the + * TagsAddedEvent. + * + * @return True if an event was posted. + */ + private boolean postTagsAdded(Set updatedEventIDs) { + boolean tagsUpdated = !updatedEventIDs.isEmpty(); + if (tagsUpdated) { + eventbus.post(new TagsAddedEvent(updatedEventIDs)); + } + return tagsUpdated; + } + + /** + * Post a TagsDeletedEvent to all registered subscribers, if the given set + * of updated event IDs is not empty. + * + * @param updatedEventIDs The set of event ids to be included in the + * TagsDeletedEvent. + * + * @return True if an event was posted. + */ + private boolean postTagsDeleted(Set updatedEventIDs) { + boolean tagsUpdated = !updatedEventIDs.isEmpty(); + if (tagsUpdated) { + eventbus.post(new TagsDeletedEvent(updatedEventIDs)); + } + return tagsUpdated; + } + + /** + * Register the given object to receive events. + * + * @param subscriber The object to register. Must implement public methods + * annotated with Subscribe. + */ + synchronized public void registerForEvents(Object subscriber) { + eventbus.register(subscriber); + } + + /** + * Un-register the given object, so it no longer receives events. + * + * @param subscriber The object to un-register. + */ + synchronized public void unRegisterForEvents(Object subscriber) { + eventbus.unregister(subscriber); + } + + /** + * Posts a refresh requested event to all registered subscribers. + */ + public void postRefreshRequest() { + eventbus.post(new RefreshRequestedEvent()); + } + + /** + * Gets a list of the event types from the case database. + * + * @return The list of event types. + */ + public ImmutableList getEventTypes() { + return caseDbEventManager.getEventTypes(); + } + + /** + * Sets the hash set hits flag for the events associated with the source + * files for a collection of hash set hit artifacts. + * + * @param hashSetHitArtifacts The hash set hit artifacts. + * + * @return The event IDs of the updated events. + * + * @throws TskCoreException If there is an error reading model data from or + * writing model data to the case database. + */ + synchronized public Set updateEventsForHashSetHits(Collection hashSetHitArtifacts) throws TskCoreException { + Set updatedEventIDs = new HashSet<>(); + for (BlackboardArtifact artifact : hashSetHitArtifacts) { + Content content = currentCase.getSleuthkitCase().getContentById(artifact.getObjectID()); + updatedEventIDs.addAll(caseDbEventManager.updateEventsForHashSetHit(content)); + } + if (isNotEmpty(updatedEventIDs)) { + invalidateCaches(updatedEventIDs); + } + return updatedEventIDs; + } + + /** + * Invalidates all of the the model caches and publishes a caches + * invalidated event. Optionally, a collection of event IDs may be supplied, + * in which case only the corresponding entries in the event IDs cache are + * invalidated. + * + * @param updatedEventIDs Either null or a collection of the event IDs. + * + * @throws TskCoreException + */ + public synchronized void invalidateCaches(Collection updatedEventIDs) throws TskCoreException { + populateDataSourcesCache(); + minEventTimeCache.invalidateAll(); + maxEventTimeCache.invalidateAll(); + idsToEventsCache.invalidateAll(emptyIfNull(updatedEventIDs)); + eventCountsCache.invalidateAll(); + eventbus.post(new CacheInvalidatedEvent()); + } + + /** + * Event fired when a cache has been invalidated and the views need to be + * refreshed + */ + public static class CacheInvalidatedEvent { + + private CacheInvalidatedEvent() { + } + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/FilteredEventsModel.java b/Core/src/org/sleuthkit/autopsy/timeline/FilteredEventsModel.java deleted file mode 100755 index 483172844f..0000000000 --- a/Core/src/org/sleuthkit/autopsy/timeline/FilteredEventsModel.java +++ /dev/null @@ -1,651 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2011-2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.timeline; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableList; -import com.google.common.eventbus.EventBus; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import javafx.beans.InvalidationListener; -import javafx.beans.property.ReadOnlyObjectProperty; -import javafx.beans.property.ReadOnlyObjectWrapper; -import javafx.collections.FXCollections; -import javafx.collections.ObservableMap; -import static org.apache.commons.collections4.CollectionUtils.emptyIfNull; -import static org.apache.commons.collections4.CollectionUtils.isNotEmpty; -import org.joda.time.DateTimeZone; -import org.joda.time.Interval; -import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagAddedEvent; -import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagDeletedEvent; -import org.sleuthkit.autopsy.casemodule.events.BlackBoardArtifactTagDeletedEvent.DeletedBlackboardArtifactTagInfo; -import org.sleuthkit.autopsy.casemodule.events.ContentTagAddedEvent; -import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; -import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent.DeletedContentTagInfo; -import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; -import org.sleuthkit.autopsy.events.AutopsyEvent; -import org.sleuthkit.autopsy.timeline.events.RefreshRequestedEvent; -import org.sleuthkit.autopsy.timeline.events.TagsAddedEvent; -import org.sleuthkit.autopsy.timeline.events.TagsDeletedEvent; -import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.FilterState; -import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; -import org.sleuthkit.autopsy.timeline.utils.CacheLoaderImpl; -import org.sleuthkit.autopsy.timeline.utils.FilterUtils; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; -import org.sleuthkit.datamodel.AbstractFile; -import org.sleuthkit.datamodel.BlackboardArtifact; -import org.sleuthkit.datamodel.BlackboardArtifactTag; -import org.sleuthkit.datamodel.Content; -import org.sleuthkit.datamodel.ContentTag; -import org.sleuthkit.datamodel.DataSource; -import org.sleuthkit.datamodel.SleuthkitCase; -import org.sleuthkit.datamodel.TimelineManager; -import org.sleuthkit.datamodel.TskCoreException; -import org.sleuthkit.datamodel.TimelineEvent; -import org.sleuthkit.datamodel.TimelineEventType; -import org.sleuthkit.datamodel.TimelineFilter; -import org.sleuthkit.datamodel.TimelineFilter.DataSourceFilter; -import org.sleuthkit.datamodel.TimelineFilter.DataSourcesFilter; -import org.sleuthkit.datamodel.TimelineFilter.EventTypeFilter; -import org.sleuthkit.datamodel.TimelineFilter.FileTypesFilter; -import org.sleuthkit.datamodel.TimelineFilter.HashHitsFilter; -import org.sleuthkit.datamodel.TimelineFilter.HideKnownFilter; -import org.sleuthkit.datamodel.TimelineFilter.RootFilter; -import org.sleuthkit.datamodel.TimelineFilter.TagsFilter; -import org.sleuthkit.datamodel.TimelineFilter.TextFilter; -import org.sleuthkit.datamodel.TimelineLevelOfDetail; - -/** - * This class acts as the model for a TimelineView - * - * Views can register listeners on properties returned by methods. - * - * This class is implemented as a filtered view into an underlying - * TimelineManager. - * - * Maintainers, NOTE: as many methods as possible should cache their results so - * as to avoid unnecessary db calls through the TimelineManager -jm - * - * Concurrency Policy: TimelineManager is internally synchronized, so methods - * that only access the TimelineManager atomically do not need further - * synchronization. All other member state variables should only be accessed - * with intrinsic lock of containing FilteredEventsModel held. - * - */ -public final class FilteredEventsModel { - - private static final Logger logger = Logger.getLogger(FilteredEventsModel.class.getName()); - - private final TimelineManager eventManager; - - private final Case autoCase; - private final EventBus eventbus = new EventBus("FilteredEventsModel_EventBus"); //NON-NLS - - //Filter and zoome state - private final ReadOnlyObjectWrapper requestedFilter = new ReadOnlyObjectWrapper<>(); - private final ReadOnlyObjectWrapper requestedTimeRange = new ReadOnlyObjectWrapper<>(); - private final ReadOnlyObjectWrapper requestedZoomState = new ReadOnlyObjectWrapper<>(); - private final ReadOnlyObjectWrapper requestedTypeZoom = new ReadOnlyObjectWrapper<>(TimelineEventType.HierarchyLevel.CATEGORY); - private final ReadOnlyObjectWrapper requestedLOD = new ReadOnlyObjectWrapper<>(TimelineLevelOfDetail.LOW); - // end Filter and zoome state - - //caches - private final LoadingCache maxCache; - private final LoadingCache minCache; - private final LoadingCache idToEventCache; - private final LoadingCache> eventCountsCache; - /** - * Map from datasource id to datasource name. - */ - private final ObservableMap datasourcesMap = FXCollections.observableHashMap(); - // end caches - - /** - * Make a DataSourceFilter from an entry from the datasourcesMap. - * - * @param dataSourceEntry A map entry from datasource id to datasource name. - * - * @return A new DataSourceFilter for the given datsourcesMap entry. - */ - private static DataSourceFilter newDataSourceFromMapEntry(Map.Entry dataSourceEntry) { - return new DataSourceFilter(dataSourceEntry.getValue(), dataSourceEntry.getKey()); - } - - public FilteredEventsModel(Case autoCase, ReadOnlyObjectProperty currentStateProperty) throws TskCoreException { - this.autoCase = autoCase; - this.eventManager = autoCase.getSleuthkitCase().getTimelineManager(); - populateFilterData(); - - //caches - idToEventCache = CacheBuilder.newBuilder() - .maximumSize(5000L) - .expireAfterAccess(10, TimeUnit.MINUTES) - .build(new CacheLoaderImpl<>(eventManager::getEventById)); - eventCountsCache = CacheBuilder.newBuilder() - .maximumSize(1000L) - .expireAfterAccess(10, TimeUnit.MINUTES) - .build(new CacheLoaderImpl<>(this::countEventsByType)); - - maxCache = CacheBuilder.newBuilder() - .build(new CacheLoaderImpl<>(ignored -> eventManager.getMaxEventTime())); - minCache = CacheBuilder.newBuilder() - .build(new CacheLoaderImpl<>(ignored -> eventManager.getMinEventTime())); - - InvalidationListener filterSyncListener = observable -> { - RootFilterState rootFilter = filterProperty().get(); - syncFilters(rootFilter); - requestedFilter.set(rootFilter.copyOf()); - }; - - datasourcesMap.addListener(filterSyncListener); - - requestedFilter.set(getDefaultFilter()); - - requestedZoomState.addListener(observable -> { - final ZoomState zoomState = requestedZoomState.get(); - - if (zoomState != null) { - synchronized (FilteredEventsModel.this) { - requestedTypeZoom.set(zoomState.getTypeZoomLevel()); - requestedFilter.set(zoomState.getFilterState()); - requestedTimeRange.set(zoomState.getTimeRange()); - requestedLOD.set(zoomState.getDescriptionLOD()); - } - } - }); - - requestedZoomState.bind(currentStateProperty); - } - - /** - * get the count of all events that fit the given zoom params organized by - * the EvenType of the level specified in the zoomState - * - * @param zoomState The params that control what events to count and how to - * organize the returned map - * - * @return a map from event type( of the requested level) to event counts - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - private Map countEventsByType(ZoomState zoomState) throws TskCoreException { - if (zoomState.getTimeRange() == null) { - return Collections.emptyMap(); - } else { - return eventManager.countEventsByType(zoomState.getTimeRange().getStartMillis() / 1000, - zoomState.getTimeRange().getEndMillis() / 1000, - zoomState.getFilterState().getActiveFilter(), zoomState.getTypeZoomLevel()); - } - } - - public TimelineManager getEventManager() { - return eventManager; - } - - public SleuthkitCase getSleuthkitCase() { - return autoCase.getSleuthkitCase(); - } - - public Interval getBoundingEventsInterval(Interval timeRange, RootFilter filter, DateTimeZone timeZone) throws TskCoreException { - return eventManager.getSpanningInterval(timeRange, filter, timeZone); - } - - /** - * Readonly observable property for the current ZoomState - * - * @return A readonly observable property for the current ZoomState. - */ - synchronized public ReadOnlyObjectProperty zoomStateProperty() { - return requestedZoomState.getReadOnlyProperty(); - } - - /** - * Get the current ZoomState - * - * @return The current ZoomState - */ - synchronized public ZoomState getZoomState() { - return requestedZoomState.get(); - } - - /** - * Update the data used to determine the available filters. - */ - synchronized private void populateFilterData() throws TskCoreException { - SleuthkitCase skCase = autoCase.getSleuthkitCase(); - - //because there is no way to remove a datasource we only add to this map. - for (DataSource ds : skCase.getDataSources()) { - datasourcesMap.putIfAbsent(ds.getId(), ds.getName()); - } - } - - /** - * "sync" the given root filter with the state of the casee: Disable filters - * for tags that are not in use in the case, and add new filters for tags, - * hashsets, and datasources, that don't have them. New filters are selected - * by default. - * - * @param rootFilterState the filter state to modify so it is consistent - * with the tags in use in the case - */ - public void syncFilters(RootFilterState rootFilterState) { - DataSourcesFilter dataSourcesFilter = rootFilterState.getDataSourcesFilterState().getFilter(); - datasourcesMap.entrySet().forEach(entry -> dataSourcesFilter.addSubFilter(newDataSourceFromMapEntry(entry))); - } - - /** - * Get a read only view of the time range currently in view. - * - * @return A read only view of the time range currently in view. - */ - @NbBundle.Messages({ - "FilteredEventsModel.timeRangeProperty.errorTitle=Timeline", - "FilteredEventsModel.timeRangeProperty.errorMessage=Error getting spanning interval."}) - synchronized public ReadOnlyObjectProperty timeRangeProperty() { - if (requestedTimeRange.get() == null) { - try { - requestedTimeRange.set(getSpanningInterval()); - } catch (TskCoreException timelineCacheException) { - MessageNotifyUtil.Notify.error(Bundle.FilteredEventsModel_timeRangeProperty_errorTitle(), - Bundle.FilteredEventsModel_timeRangeProperty_errorMessage()); - logger.log(Level.SEVERE, "Error getting spanning interval.", timelineCacheException); - } - } - return requestedTimeRange.getReadOnlyProperty(); - } - - synchronized public ReadOnlyObjectProperty descriptionLODProperty() { - return requestedLOD.getReadOnlyProperty(); - } - - synchronized public ReadOnlyObjectProperty filterProperty() { - return requestedFilter.getReadOnlyProperty(); - } - - synchronized public ReadOnlyObjectProperty eventTypeZoomProperty() { - return requestedTypeZoom.getReadOnlyProperty(); - } - - /** - * The time range currently in view. - * - * @return The time range currently in view. - */ - synchronized public Interval getTimeRange() { - return getZoomState().getTimeRange(); - } - - synchronized public TimelineLevelOfDetail getDescriptionLOD() { - return getZoomState().getDescriptionLOD(); - } - - synchronized public RootFilterState getFilterState() { - return getZoomState().getFilterState(); - } - - synchronized public TimelineEventType.HierarchyLevel getEventTypeZoom() { - return getZoomState().getTypeZoomLevel(); - } - - /** - * Get the default filter used at startup. - * - * @return the default filter used at startup - */ - public synchronized RootFilterState getDefaultFilter() { - DataSourcesFilter dataSourcesFilter = new DataSourcesFilter(); - datasourcesMap.entrySet().forEach(dataSourceEntry - -> dataSourcesFilter.addSubFilter(newDataSourceFromMapEntry(dataSourceEntry))); - - HashHitsFilter hashHitsFilter = new HashHitsFilter(); - - TagsFilter tagsFilter = new TagsFilter(); - - FileTypesFilter fileTypesFilter = FilterUtils.createDefaultFileTypesFilter(); - - return new RootFilterState(new RootFilter(new HideKnownFilter(), - tagsFilter, - hashHitsFilter, - new TextFilter(), - new EventTypeFilter(TimelineEventType.ROOT_EVENT_TYPE), - dataSourcesFilter, - fileTypesFilter, - Collections.emptySet())); - } - - public Interval getBoundingEventsInterval(DateTimeZone timeZone) throws TskCoreException { - return eventManager.getSpanningInterval(zoomStateProperty().get().getTimeRange(), getFilterState().getActiveFilter(), timeZone); - } - - public TimelineEvent getEventById(Long eventID) throws TskCoreException { - try { - return idToEventCache.get(eventID); - } catch (ExecutionException ex) { - throw new TskCoreException("Error getting cached event from ID", ex); - } - } - - public Set getEventsById(Collection eventIDs) throws TskCoreException { - Set events = new HashSet<>(); - for (Long id : eventIDs) { - events.add(getEventById(id)); - } - return events; - } - - public List getEventIDs(Interval timeRange, FilterState filter) throws TskCoreException { - - final Interval overlap; - RootFilter intersection; - synchronized (this) { - overlap = getSpanningInterval().overlap(timeRange); - intersection = getFilterState().intersect(filter).getActiveFilter(); - } - - return eventManager.getEventIDs(overlap, intersection); - } - - /** - * Return the number of events that pass the requested filter and are within - * the given time range. - * - * NOTE: this method does not change the requested time range - * - * @param timeRange - * - * @return - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Map getEventCounts(Interval timeRange) throws TskCoreException { - - final RootFilterState filter; - final TimelineEventType.HierarchyLevel typeZoom; - synchronized (this) { - filter = getFilterState(); - typeZoom = getEventTypeZoom(); - } - try { - return eventCountsCache.get(new ZoomState(timeRange, typeZoom, filter, null)); - } catch (ExecutionException executionException) { - throw new TskCoreException("Error getting cached event counts.`1", executionException); - } - } - - /** - * @return The smallest interval spanning all the events from the case, - * ignoring any filters or requested ranges. - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Interval getSpanningInterval() throws TskCoreException { - return new Interval(getMinTime() * 1000, 1000 + getMaxTime() * 1000); - } - - /** - * Get the smallest interval spanning all the given events. - * - * @param eventIDs The IDs of the events to get a spanning interval arround. - * - * @return the smallest interval spanning all the given events - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Interval getSpanningInterval(Collection eventIDs) throws TskCoreException { - return eventManager.getSpanningInterval(eventIDs); - } - - /** - * @return the time (in seconds from unix epoch) of the absolutely first - * event available from the repository, ignoring any filters or - * requested ranges - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Long getMinTime() throws TskCoreException { - try { - return minCache.get("min"); // NON-NLS - } catch (ExecutionException ex) { - throw new TskCoreException("Error getting cached min time.", ex); - } - } - - /** - * @return the time (in seconds from unix epoch) of the absolutely last - * event available from the repository, ignoring any filters or - * requested ranges - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Long getMaxTime() throws TskCoreException { - try { - return maxCache.get("max"); // NON-NLS - } catch (ExecutionException ex) { - throw new TskCoreException("Error getting cached max time.", ex); - } - } - - synchronized public boolean handleContentTagAdded(ContentTagAddedEvent evt) throws TskCoreException { - ContentTag contentTag = evt.getAddedTag(); - Content content = contentTag.getContent(); - Set updatedEventIDs = eventManager.updateEventsForContentTagAdded(content); - if (isNotEmpty(updatedEventIDs)) { - invalidateCaches(updatedEventIDs); - } - return postTagsAdded(updatedEventIDs); - } - - synchronized public boolean handleArtifactTagAdded(BlackBoardArtifactTagAddedEvent evt) throws TskCoreException { - BlackboardArtifactTag artifactTag = evt.getAddedTag(); - BlackboardArtifact artifact = artifactTag.getArtifact(); - Set updatedEventIDs = eventManager.updateEventsForArtifactTagAdded(artifact); - if (isNotEmpty(updatedEventIDs)) { - invalidateCaches(updatedEventIDs); - } - return postTagsAdded(updatedEventIDs); - } - - synchronized public boolean handleContentTagDeleted(ContentTagDeletedEvent evt) throws TskCoreException { - DeletedContentTagInfo deletedTagInfo = evt.getDeletedTagInfo(); - Content content = autoCase.getSleuthkitCase().getContentById(deletedTagInfo.getContentID()); - Set updatedEventIDs = eventManager.updateEventsForContentTagDeleted(content); - if (isNotEmpty(updatedEventIDs)) { - invalidateCaches(updatedEventIDs); - } - return postTagsDeleted(updatedEventIDs); - } - - synchronized public boolean handleArtifactTagDeleted(BlackBoardArtifactTagDeletedEvent evt) throws TskCoreException { - DeletedBlackboardArtifactTagInfo deletedTagInfo = evt.getDeletedTagInfo(); - BlackboardArtifact artifact = autoCase.getSleuthkitCase().getBlackboardArtifact(deletedTagInfo.getArtifactID()); - Set updatedEventIDs = eventManager.updateEventsForArtifactTagDeleted(artifact); - if (isNotEmpty(updatedEventIDs)) { - invalidateCaches(updatedEventIDs); - } - return postTagsDeleted(updatedEventIDs); - } - - /** - * Get a Set of event IDs for the events that are derived from the given - * file. - * - * @param file The AbstractFile to get derived event IDs - * for. - * @param includeDerivedArtifacts If true, also get event IDs for events - * derived from artifacts derived form this - * file. If false, only gets events derived - * directly from this file (file system - * timestamps). - * - * @return A Set of event IDs for the events that are derived from the given - * file. - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public Set getEventIDsForFile(AbstractFile file, boolean includeDerivedArtifacts) throws TskCoreException { - return eventManager.getEventIDsForContent(file, includeDerivedArtifacts); - } - - /** - * Get a List of event IDs for the events that are derived from the given - * artifact. - * - * @param artifact The BlackboardArtifact to get derived event IDs for. - * - * @return A List of event IDs for the events that are derived from the - * given artifact. - * - * @throws org.sleuthkit.datamodel.TskCoreException - */ - public List getEventIDsForArtifact(BlackboardArtifact artifact) throws TskCoreException { - return eventManager.getEventIDsForArtifact(artifact); - } - - /** - * Post a TagsAddedEvent to all registered subscribers, if the given set of - * updated event IDs is not empty. - * - * @param updatedEventIDs The set of event ids to be included in the - * TagsAddedEvent. - * - * @return True if an event was posted. - */ - private boolean postTagsAdded(Set updatedEventIDs) { - boolean tagsUpdated = !updatedEventIDs.isEmpty(); - if (tagsUpdated) { - eventbus.post(new TagsAddedEvent(updatedEventIDs)); - } - return tagsUpdated; - } - - /** - * Post a TagsDeletedEvent to all registered subscribers, if the given set - * of updated event IDs is not empty. - * - * @param updatedEventIDs The set of event ids to be included in the - * TagsDeletedEvent. - * - * @return True if an event was posted. - */ - private boolean postTagsDeleted(Set updatedEventIDs) { - boolean tagsUpdated = !updatedEventIDs.isEmpty(); - if (tagsUpdated) { - eventbus.post(new TagsDeletedEvent(updatedEventIDs)); - } - return tagsUpdated; - } - - /** - * Register the given object to receive events. - * - * @param subscriber The object to register. Must implement public methods - * annotated with Subscribe. - */ - synchronized public void registerForEvents(Object subscriber) { - eventbus.register(subscriber); - } - - /** - * Un-register the given object, so it no longer receives events. - * - * @param subscriber The object to un-register. - */ - synchronized public void unRegisterForEvents(Object subscriber) { - eventbus.unregister(subscriber); - } - - /** - * Post a RefreshRequestedEvent to all registered subscribers. - */ - public void postRefreshRequest() { - eventbus.post(new RefreshRequestedEvent()); - } - - /** - * (Re)Post an AutopsyEvent received from another event distribution system - * locally to all registered subscribers. - * - * @param event The event to re-post. - */ - public void postAutopsyEventLocally(AutopsyEvent event) { - eventbus.post(event); - } - - public ImmutableList getEventTypes() { - return eventManager.getEventTypes(); - } - - synchronized public Set setHashHit(Collection artifacts) throws TskCoreException { - Set updatedEventIDs = new HashSet<>(); - for (BlackboardArtifact artifact : artifacts) { - Content content = autoCase.getSleuthkitCase().getContentById(artifact.getObjectID()); - updatedEventIDs.addAll(eventManager.updateEventsForHashSetHit(content)); - } - if (isNotEmpty(updatedEventIDs)) { - invalidateCaches(updatedEventIDs); - } - return updatedEventIDs; - } - - /** - * Invalidate the timeline caches for the given event IDs. Also forces the - * filter values to be updated with any new values from the case data.( data - * sources, tags, etc) - * - * @param updatedEventIDs A collection of the event IDs whose cached event - * objects should be invalidated. Can be null or an - * empty sett to invalidate the general caches, such - * as min/max time, or the counts per event type. - * - * @throws TskCoreException - */ - public synchronized void invalidateCaches(Collection updatedEventIDs) throws TskCoreException { - minCache.invalidateAll(); - maxCache.invalidateAll(); - idToEventCache.invalidateAll(emptyIfNull(updatedEventIDs)); - eventCountsCache.invalidateAll(); - - populateFilterData(); - - eventbus.post(new CacheInvalidatedEvent()); - } - - /** - * Event fired when a cache has been invalidated. The UI should make it - * clear that the view is potentially out of date and present an action to - * refresh the view. - */ - public static class CacheInvalidatedEvent { - - private CacheInvalidatedEvent() { - } - } -} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ShowInTimelineDialog.java b/Core/src/org/sleuthkit/autopsy/timeline/ShowInTimelineDialog.java index 1c1dae4165..abad95b2ff 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ShowInTimelineDialog.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ShowInTimelineDialog.java @@ -195,7 +195,7 @@ final class ShowInTimelineDialog extends Dialog { //add events to table Set events = new HashSet<>(); - FilteredEventsModel eventsModel = controller.getEventsModel(); + EventsModel eventsModel = controller.getEventsModel(); for (Long eventID : eventIDS) { try { events.add(eventsModel.getEventById(eventID)); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java index 8235fb79f3..adf4509e76 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/TimeLineController.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2014-2018 Basis Technology Corp. + * Copyright 2014-2019 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -85,11 +85,10 @@ import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.DescriptionFilterSt import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; import org.sleuthkit.autopsy.timeline.utils.IntervalUtils; import org.sleuthkit.autopsy.timeline.zooming.TimeUnits; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT; -import org.sleuthkit.datamodel.TimelineEvent; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TimelineEventType; import org.sleuthkit.datamodel.TimelineFilter.EventTypeFilter; @@ -200,16 +199,16 @@ public class TimeLineController { private final ReadOnlyObjectWrapper viewMode = new ReadOnlyObjectWrapper<>(ViewMode.COUNTS); @GuardedBy("filteredEvents") - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; @GuardedBy("this") - private final ZoomState InitialZoomState; + private final EventsModelParams InitialZoomState; @GuardedBy("this") - private final History historyManager = new History<>(); + private final History historyManager = new History<>(); @GuardedBy("this") - private final ReadOnlyObjectWrapper currentParams = new ReadOnlyObjectWrapper<>(); + private final ReadOnlyObjectWrapper currentParams = new ReadOnlyObjectWrapper<>(); //selected events (ie shown in the result viewer) @GuardedBy("this") @@ -281,7 +280,7 @@ public class TimeLineController { TimeLineController(Case autoCase) throws TskCoreException { this.autoCase = autoCase; - filteredEvents = new FilteredEventsModel(autoCase, currentParams.getReadOnlyProperty()); + filteredEvents = new EventsModel(autoCase, currentParams.getReadOnlyProperty()); /* * as the history manager's current state changes, modify the tags * filter to be in sync, and expose that as propery from @@ -289,16 +288,16 @@ public class TimeLineController { * filters? */ historyManager.currentState().addListener((observable, oldState, newState) -> { - ZoomState historyManagerState = newState; - filteredEvents.syncFilters(historyManagerState.getFilterState()); + EventsModelParams historyManagerState = newState; + filteredEvents.addDataSourceFilters(historyManagerState.getEventFilterState()); currentParams.set(historyManagerState); }); try { - InitialZoomState = new ZoomState(filteredEvents.getSpanningInterval(), + InitialZoomState = new EventsModelParams(filteredEvents.getSpanningInterval(), TimelineEventType.HierarchyLevel.CATEGORY, - filteredEvents.filterProperty().get(), + filteredEvents.eventFilterProperty().get(), TimelineLevelOfDetail.LOW); } catch (TskCoreException ex) { throw new TskCoreException("Error getting spanning interval.", ex); @@ -318,17 +317,17 @@ public class TimeLineController { /** * @return a shared events model */ - public FilteredEventsModel getEventsModel() { + public EventsModel getEventsModel() { return filteredEvents; } public void applyDefaultFilters() { - pushFilters(filteredEvents.getDefaultFilter()); + pushFilters(filteredEvents.getDefaultEventFilterState()); } public void zoomOutToActivity() throws TskCoreException { - Interval boundingEventsInterval = filteredEvents.getBoundingEventsInterval(getJodaTimeZone()); - advance(filteredEvents.zoomStateProperty().get().withTimeRange(boundingEventsInterval)); + Interval boundingEventsInterval = filteredEvents.getSpanningInterval(getJodaTimeZone()); + advance(filteredEvents.modelParamsProperty().get().withTimeRange(boundingEventsInterval)); } private final ObservableSet pinnedEvents = FXCollections.observableSet(); @@ -494,7 +493,7 @@ public class TimeLineController { } synchronized public void pushEventTypeZoom(TimelineEventType.HierarchyLevel typeZoomeLevel) { - ZoomState currentZoom = filteredEvents.zoomStateProperty().get(); + EventsModelParams currentZoom = filteredEvents.modelParamsProperty().get(); if (currentZoom == null) { advance(InitialZoomState.withTypeZoomLevel(typeZoomeLevel)); } else if (currentZoom.hasTypeZoomLevel(typeZoomeLevel) == false) { @@ -525,7 +524,7 @@ public class TimeLineController { } } - ZoomState currentZoom = filteredEvents.zoomStateProperty().get(); + EventsModelParams currentZoom = filteredEvents.modelParamsProperty().get(); if (currentZoom == null) { advance(InitialZoomState.withTimeRange(clampedTimeRange)); return true; @@ -556,7 +555,7 @@ public class TimeLineController { } synchronized public void pushDescrLOD(TimelineLevelOfDetail newLOD) { - ZoomState currentZoom = filteredEvents.zoomStateProperty().get(); + EventsModelParams currentZoom = filteredEvents.modelParamsProperty().get(); if (currentZoom == null) { advance(InitialZoomState.withDescrLOD(newLOD)); } else if (currentZoom.hasDescrLOD(newLOD) == false) { @@ -567,7 +566,7 @@ public class TimeLineController { @SuppressWarnings("AssignmentToMethodParameter") //clamp timerange to case synchronized public void pushTimeAndType(Interval timeRange, TimelineEventType.HierarchyLevel typeZoom) throws TskCoreException { Interval overlappingTimeRange = this.filteredEvents.getSpanningInterval().overlap(timeRange); - ZoomState currentZoom = filteredEvents.zoomStateProperty().get(); + EventsModelParams currentZoom = filteredEvents.modelParamsProperty().get(); if (currentZoom == null) { advance(InitialZoomState.withTimeAndType(overlappingTimeRange, typeZoom)); } else if (currentZoom.hasTimeRange(overlappingTimeRange) == false && currentZoom.hasTypeZoomLevel(typeZoom) == false) { @@ -580,7 +579,7 @@ public class TimeLineController { } synchronized public void pushFilters(RootFilterState filter) { - ZoomState currentZoom = filteredEvents.zoomStateProperty().get(); + EventsModelParams currentZoom = filteredEvents.modelParamsProperty().get(); if (currentZoom == null) { advance(InitialZoomState.withFilterState(filter)); } else if (currentZoom.hasFilterState(filter) == false) { @@ -596,7 +595,7 @@ public class TimeLineController { historyManager.retreat(); } - synchronized private void advance(ZoomState newState) { + synchronized private void advance(EventsModelParams newState) { historyManager.advance(newState); } @@ -746,7 +745,7 @@ public class TimeLineController { case DATA_ADDED: ModuleDataEvent eventData = (ModuleDataEvent) evt.getOldValue(); if (null != eventData && eventData.getBlackboardArtifactType().getTypeID() == TSK_HASHSET_HIT.getTypeID()) { - logFutureException(executor.submit(() -> filteredEvents.setHashHit(eventData.getArtifacts())), + logFutureException(executor.submit(() -> filteredEvents.updateEventsForHashSetHits(eventData.getArtifacts())), "Error executing task in response to DATA_ADDED event.", "Error executing response to new data."); } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ja.properties old mode 100755 new mode 100644 index af71283ca2..ae83b8c4ac --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/Bundle_ja.properties @@ -1,26 +1,39 @@ -Back.longText=\u6700\u5F8C\u306E\u30D3\u30E5\u30FC\u8A2D\u5B9A\u306B\u623B\u308B\u3002 -Back.text=\u623B\u308B -Forward.text=\u6B21\u3078 -OpenReportAction.DisplayName=\u30EC\u30DD\u30FC\u30C8\u3092\u958B\u304F -OpenReportAction.MessageBoxTitle=\u30EC\u30DD\u30FC\u30C8\u3092\u958B\u304F\u306E\u3092\u5931\u6557\u3057\u307E\u3057\u305F -OpenReportAction.MissingReportFileMessage=\u30EC\u30DD\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002 -OpenReportAction.NoAssociatedEditorMessage=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u30EC\u30DD\u30FC\u30C8\u306E\u95A2\u9023\u30A8\u30C7\u30A3\u30BF\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u307E\u305F\u306F\u95A2\u9023\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u8D77\u52D5\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -OpenReportAction.NoOpenInEditorSupportMessage=\u3053\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\uFF08\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30B7\u30B9\u30C6\u30E0\uFF09\u306F\u3053\u306E\u3088\u3046\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u958B\u304F\u306E\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 -OpenReportAction.ReportFileOpenPermissionDeniedMessage=\u30EC\u30DD\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u8A31\u53EF\u304C\u5374\u4E0B\u3055\u308C\u307E\u3057\u305F\u3002 -ResetFilters.text=\u5168\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30EA\u30BB\u30C3\u30C8 -RestFilters.longText=\u5168\u3066\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u72B6\u614B\u306B\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002 -SaveSnapshot.action.longText=\u30EC\u30DD\u30FC\u30C8\u3068\u3057\u3066\u30D3\u30B8\u30E5\u30A2\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\uFF08\u53EF\u8996\u5316\uFF09\u306E\u30B9\u30AF\u30EA\u30FC\u30F3\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002 -SaveSnapshot.action.name.text=\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u30EC\u30DD\u30FC\u30C8 -SaveSnapshot.fileChoose.title.text=\u6B21\u3078\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3092\u4FDD\u5B58 -SaveSnapShotAsReport.ErrorWritingReport=\u30EC\u30DD\u30FC\u30C8{0}\u3092\u30C7\u30A3\u30B9\u30AF\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -SaveSnapShotAsReport.FailedToAddReport=\u30EC\u30DD\u30FC\u30C8\u3068\u3057\u3066\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -SaveSnapsHotAsReport.ReportName=\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30FC\u30EC\u30DD\u30FC\u30C8\u30FC{0} -SaveSnapShotAsReport.ReportSavedAt=\u30EC\u30DD\u30FC\u30C8\u306F\u6B21\u3078\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F[{0}] -SaveSnapShotAsReport.Success=\u6210\u529F -Timeline.ModuleName=\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3 -ZoomIn.action.text=\u62E1\u5927 -ZoomIn.longText=\u304A\u3088\u305D\u534A\u5206\u306E\u6642\u9593\u3092\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u62E1\u5927\u3057\u307E\u3059\u3002 -ZoomOut.action.text=\u7E2E\u5C0F -ZoomOut.longText=\u304A\u3088\u305D50%\u591A\u304F\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u7E2E\u5C0F\u3057\u307E\u3059\u3002 -ZoomToEvents.action.text=\u30A4\u30D9\u30F3\u30C8\u306B\u30BA\u30FC\u30E0 -ZoomToEvents.longText=\u4E00\u756A\u8FD1\u304F\u306E\u30A4\u30D9\u30F3\u30C8\u304C\u8868\u793A\u3055\u308C\u308B\u3088\u3046\u306B\u7E2E\u5C0F\u3057\u307E\u3059\u3002 +# {0} - \u30a2\u30af\u30b7\u30e7\u30f3\u30fb\u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30bf\u30fb\u30ad\u30fc +Back.longText=\u623b\u308b: {0}\n\u524d\u306e\u30d3\u30e5\u30fc\u8a2d\u5b9a\u306b\u623b\u308a\u307e\u3059\u3002 +Back.text=\u623b\u308b +# {0} - \u30a2\u30af\u30b7\u30e7\u30f3\u30fb\u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30bf\u30fb\u30ad\u30fc +Forward.longText=\u9032\u3080: {0}\n\u6b21\u306e\u30d3\u30e5\u30fc\u8a2d\u5b9a\u306b\u9032\u307f\u307e\u3059\u3002 +Forward.text=\u9032\u3080 +OpenReportAction.DisplayName=\u30ec\u30dd\u30fc\u30c8\u3092\u958b\u304f +OpenReportAction.MessageBoxTitle=\u30ec\u30dd\u30fc\u30c8\u30aa\u30fc\u30d7\u30f3\u5931\u6557 +OpenReportAction.MissingReportFileMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +OpenReportAction.NoAssociatedEditorMessage=\u3053\u306e\u30bf\u30a4\u30d7\u306e\u30ec\u30dd\u30fc\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a8\u30c7\u30a3\u30bf\u30fc\u304c\u306a\u3044\u304b\u3001\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +OpenReportAction.NoOpenInEditorSupportMessage=\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0(\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0)\u306f\u3053\u306e\u65b9\u6cd5\u3067\u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 +OpenReportAction.ReportFileOpenPermissionDeniedMessage=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u8a31\u53ef\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002 +RebuildDataBase.longText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u3066\u65b0\u3057\u3044\u30a4\u30d9\u30f3\u30c8\u3092\u542b\u3081\u307e\u3059\u3002 +RebuildDataBase.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0 +ResetFilters.text=\u3059\u3079\u3066\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u30ea\u30bb\u30c3\u30c8 +RestFilters.longText=\u3059\u3079\u3066\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u72b6\u614b\u306b\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\u3002 +SaveSnapShotAsReport.action.dialogs.title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +SaveSnapShotAsReport.action.longText=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u73fe\u5728\u306e\u30d3\u30e5\u30fc\u306e\u30b9\u30af\u30ea\u30fc\u30f3\u30ad\u30e3\u30d7\u30c1\u30e3\u30fc\u3092\u30ec\u30dd\u30fc\u30c8\u3068\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3059\u3002 +SaveSnapShotAsReport.action.name.text=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8 +SaveSnapShotAsReport.duplicateReportNameError.text=\u305d\u306e\u540d\u524d\u306e\u30ec\u30dd\u30fc\u30c8\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +# {0} - \u30ec\u30dd\u30fc\u30c8\u30d1\u30b9 +SaveSnapShotAsReport.ErrorWritingReport={0} \u306b\u3042\u308b\u30c7\u30a3\u30b9\u30af\u306b\u30ec\u30dd\u30fc\u30c8\u3092\u66f8\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +SaveSnapShotAsReport.FailedToAddReport=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u30b1\u30fc\u30b9\u3068\u3057\u3066\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +SaveSnapShotAsReport.reportName.header=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u30fb\u30ec\u30dd\u30fc\u30c8\u306e\u30ec\u30dd\u30fc\u30c8\u540d\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +# {0} - \u751f\u6210\u3055\u308c\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u30ec\u30dd\u30fc\u30c8\u540d +SaveSnapShotAsReport.reportName.prompt=\u6b21\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30ec\u30dd\u30fc\u30c8\u540d\u3092\u7a7a(\u672a\u5165\u529b)\u306e\u307e\u307e\u306b\u3059\u308b: {0}\u3002 +# {0} - \u30ec\u30dd\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9 +SaveSnapShotAsReport.ReportSavedAt=[{0}] \u306b\u30ec\u30dd\u30fc\u30c8\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f +SaveSnapShotAsReport.Success=\u6210\u529f +Timeline.ModuleName=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +ViewArtifactInTimelineAction.displayName=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u7d50\u679c\u3092\u8868\u793a... +ViewFileInTimelineAction.viewFile.displayName=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a... +DataResultFilterNode.action.viewSrcFileInDir.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a... +ZoomIn.action.text=\u30ba\u30fc\u30e0\u30a4\u30f3 +ZoomIn.longText=\u30ba\u30fc\u30e0\u30a4\u30f3\u3057\u3066\u7d04\u534a\u5206\u306e\u6642\u9593\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ZoomOut.action.text=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8 +ZoomOut.longText=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8\u3057\u3066\u7d0450%\u4ee5\u4e0a\u306e\u6642\u9593\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +ZoomToEvents.action.text=\u30a4\u30d9\u30f3\u30c8\u306b\u30ba\u30fc\u30e0 +ZoomToEvents.longText=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8\u3057\u3066\u6700\u3082\u6700\u8fd1\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/ResetFilters.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/ResetFilters.java index 30ed0ebb81..57f0ed61e5 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/ResetFilters.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/ResetFilters.java @@ -22,7 +22,7 @@ import javafx.beans.binding.BooleanBinding; import javafx.event.ActionEvent; import org.controlsfx.control.action.Action; import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; /** @@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.timeline.TimeLineController; "RestFilters.longText=Reset all filters to their default state."}) public class ResetFilters extends Action { - private FilteredEventsModel eventsModel; + private EventsModel eventsModel; public ResetFilters(final TimeLineController controller) { this(Bundle.ResetFilters_text(), controller); @@ -44,12 +44,12 @@ public class ResetFilters extends Action { eventsModel = controller.getEventsModel(); disabledProperty().bind(new BooleanBinding() { { - bind(eventsModel.zoomStateProperty()); + bind(eventsModel.modelParamsProperty()); } @Override protected boolean computeValue() { - return eventsModel.zoomStateProperty().getValue().getFilterState().equals(eventsModel.getDefaultFilter()); + return eventsModel.modelParamsProperty().getValue().getEventFilterState().equals(eventsModel.getDefaultEventFilterState()); } }); setEventHandler((ActionEvent t) -> { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java index 6208714e06..b5949b7f01 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshotAsReport.java @@ -137,7 +137,7 @@ public class SaveSnapshotAsReport extends Action { reportMainFilePath = new SnapShotReportWriter(currentCase, reportFolderPath, reportName, - controller.getEventsModel().getZoomState(), + controller.getEventsModel().getModelParams(), generationDate, snapshot).writeReport(); } catch (IOException ex) { LOGGER.log(Level.SEVERE, "Error writing report to disk at " + reportFolderPath, ex); //NON_NLS diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomOut.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomOut.java index 9550004e1c..5022d3e8da 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomOut.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomOut.java @@ -26,7 +26,7 @@ import javafx.scene.image.ImageView; import org.controlsfx.control.action.Action; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.datamodel.TskCoreException; @@ -58,10 +58,10 @@ public class ZoomOut extends Action { //disable action when the current time range already encompases the entire case. disabledProperty().bind(new BooleanBinding() { - private final FilteredEventsModel eventsModel = controller.getEventsModel(); + private final EventsModel eventsModel = controller.getEventsModel(); { - bind(eventsModel.zoomStateProperty(), eventsModel.timeRangeProperty()); + bind(eventsModel.modelParamsProperty(), eventsModel.timeRangeProperty()); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomToEvents.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomToEvents.java index e85de25b5f..799208bf8e 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomToEvents.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/ZoomToEvents.java @@ -27,7 +27,7 @@ import org.controlsfx.control.action.Action; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.timeline.TimeLineController; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.datamodel.TskCoreException; /** @@ -56,10 +56,10 @@ public class ZoomToEvents extends Action { //disable action when the current time range already encompases the entire case. disabledProperty().bind(new BooleanBinding() { - private final FilteredEventsModel eventsModel = controller.getEventsModel(); + private final EventsModel eventsModel = controller.getEventsModel(); { - bind(eventsModel.zoomStateProperty()); + bind(eventsModel.modelParamsProperty()); } @Override diff --git a/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ja.properties new file mode 100644 index 0000000000..56871db82c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/datamodel/eventtype/Bundle_ja.properties @@ -0,0 +1,22 @@ +BaseTypes.fileSystem.name=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0 +BaseTypes.webActivity.name=Web\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30fc +BaseTypes.miscTypes.name=\u3055\u307e\u3056\u307e\u306a\u30bf\u30a4\u30d7 +FileSystemTypes.fileModified.name=\u4fee\u6b63\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +FileSystemTypes.fileAccessed.name=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +FileSystemTypes.fileCreated.name=\u4f5c\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +FileSystemTypes.fileChanged.name=\u5909\u66f4\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +MiscTypes.message.name=\u30e1\u30c3\u30bb\u30fc\u30b8 +MiscTypes.GPSRoutes.name=GPS\u30eb\u30fc\u30c8 +MiscTypes.GPSTrackpoint.name=\u5834\u6240\u5c65\u6b74 +MiscTypes.Calls.name=\u547c\u3073\u51fa\u3057 +MiscTypes.Email.name=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 +MiscTypes.recentDocuments.name=\u6700\u8fd1\u4f7f\u3063\u305f\u6587\u66f8 +MiscTypes.installedPrograms.name=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u30d7\u30ed\u30b0\u30e9\u30e0 +MiscTypes.exif.name=\u7d42\u4e86 +MiscTypes.devicesAttached.name=\u88c5\u7740\u3055\u308c\u3066\u3044\u308b\u30c7\u30d0\u30a4\u30b9 +RootEventType.eventTypes.name=\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7 +WebTypes.webDownloads.name=Web\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +WebTypes.webCookies.name=Web\u30af\u30c3\u30ad\u30fc +WebTypes.webBookmarks.name=Web\u30d6\u30c3\u30af\u30de\u30fc\u30af +WebTypes.webHistory.name=Web\u5c65\u6b74 +WebTypes.webSearch.name=Web\u691c\u7d22 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ja.properties old mode 100755 new mode 100644 index 7096881555..8e1199be05 --- a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/Bundle_ja.properties @@ -1 +1,11 @@ -EventRoodNode.tooManyNode.displayName=\u8868\u793a\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002\u6700\u5927 \= {0}\u3002\u8868\u793a\u3059\u308b\u30a4\u30d9\u30f3\u30c8\u306f{1}\u3042\u308a\u307e\u3059\u3002 \ No newline at end of file +EventNode.getAction.errorTitle=\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +EventNode.getAction.linkedFileMessage=\u9078\u629e\u3057\u305f\u7d50\u679c\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 [\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a] \u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +# {0} - \u8868\u793a\u53ef\u80fd\u306a\u6700\u5927\u30a4\u30d9\u30f3\u30c8\u6570 +# {1} - \u591a\u3059\u304e\u308b\u30a4\u30d9\u30f3\u30c8\u6570 +EventRoodNode.tooManyNode.displayName=\u30a4\u30d9\u30f3\u30c8\u304c\u591a\u3059\u304e\u3066\u8868\u793a\u3067\u304d\u307e\u305b\u3093\u3002 \u6700\u5927 = {0} \u3067\u3059\u3002\u305f\u3060\u3057\u3001{1} \u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002 +NodeProperty.displayName.baseType=\u57fa\u672c\u30bf\u30a4\u30d7 +NodeProperty.displayName.dateTime=\u65e5/\u6642\u9593 +NodeProperty.displayName.description=\u8a18\u8ff0 +NodeProperty.displayName.icon=\u30a2\u30a4\u30b3\u30f3 +NodeProperty.displayName.known=\u65e2\u77e5 +NodeProperty.displayName.subType=\u30b5\u30d6\u30bf\u30a4\u30d7 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventNode.java b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventNode.java index 56dc02daed..018adf1018 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventNode.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventNode.java @@ -45,7 +45,7 @@ import org.sleuthkit.autopsy.datamodel.DataModelActionsFactory; import org.sleuthkit.autopsy.datamodel.DisplayableItemNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor; import org.sleuthkit.autopsy.datamodel.NodeProperty; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.actions.ViewFileInTimelineAction; import org.sleuthkit.autopsy.timeline.ui.EventTypeUtils; @@ -262,7 +262,7 @@ public class EventNode extends DisplayableItemNode { * @return An EventNode with the content (and possible artifact) backing * this event in its lookup. */ - public static EventNode createEventNode(final Long eventID, FilteredEventsModel eventsModel) throws TskCoreException { + public static EventNode createEventNode(final Long eventID, EventsModel eventsModel) throws TskCoreException { SleuthkitCase sleuthkitCase = eventsModel.getSleuthkitCase(); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventRootNode.java b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventRootNode.java index e7c14d87f9..833d6ccc41 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventRootNode.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/explorernodes/EventRootNode.java @@ -32,7 +32,7 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.DisplayableItemNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.datamodel.TskCoreException; /** @@ -49,7 +49,7 @@ public class EventRootNode extends DisplayableItemNode { */ public static final int MAX_EVENTS_TO_DISPLAY = 5000; - public EventRootNode(Collection eventIds, FilteredEventsModel filteredEvents) { + public EventRootNode(Collection eventIds, EventsModel filteredEvents) { super(Children.create(new EventNodeChildFactory(eventIds, filteredEvents), true), Lookups.singleton(eventIds)); } @@ -83,10 +83,10 @@ public class EventRootNode extends DisplayableItemNode { /** * filteredEvents is used to lookup the events from their IDs */ - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; private final Map nodesMap = new HashMap<>(); - EventNodeChildFactory(Collection eventIds, FilteredEventsModel filteredEvents) { + EventNodeChildFactory(Collection eventIds, EventsModel filteredEvents) { this.eventIDs = eventIds; this.filteredEvents = filteredEvents; } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/snapshot/SnapShotReportWriter.java b/Core/src/org/sleuthkit/autopsy/timeline/snapshot/SnapShotReportWriter.java index c7734dbeea..994b23d845 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/snapshot/SnapShotReportWriter.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/snapshot/SnapShotReportWriter.java @@ -27,14 +27,14 @@ import javax.imageio.ImageIO; import org.joda.time.format.DateTimeFormat; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.report.uisnapshot.UiSnapShotReportWriter; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; /** * Generate and write the Timeline snapshot report to disk. */ public class SnapShotReportWriter extends UiSnapShotReportWriter{ - private final ZoomState zoomState; + private final EventsModelParams zoomState; private final BufferedImage image; /** @@ -49,7 +49,7 @@ public class SnapShotReportWriter extends UiSnapShotReportWriter{ * @param generationDate The generation Date of the report. * @param snapshot A snapshot of the view to include in the report. */ - public SnapShotReportWriter(Case currentCase, Path reportFolderPath, String reportName, ZoomState zoomState, Date generationDate, BufferedImage snapshot) { + public SnapShotReportWriter(Case currentCase, Path reportFolderPath, String reportName, EventsModelParams zoomState, Date generationDate, BufferedImage snapshot) { super(currentCase, reportFolderPath, reportName, generationDate); this.zoomState = zoomState; this.image = snapshot; diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractTimeLineView.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractTimeLineView.java index d9a51f2023..7a4fc4db85 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractTimeLineView.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/AbstractTimeLineView.java @@ -37,7 +37,7 @@ import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.LoggedTask; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.events.RefreshRequestedEvent; @@ -75,7 +75,7 @@ public abstract class AbstractTimeLineView extends BorderPane { private Task updateTask; private final TimeLineController controller; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; /** * Constructor @@ -86,7 +86,7 @@ public abstract class AbstractTimeLineView extends BorderPane { this.controller = controller; this.filteredEvents = controller.getEventsModel(); this.filteredEvents.registerForEvents(this); - this.filteredEvents.zoomStateProperty().addListener(updateListener); + this.filteredEvents.modelParamsProperty().addListener(updateListener); TimeLineController.timeZoneProperty().addListener(updateListener); } @@ -170,7 +170,7 @@ public abstract class AbstractTimeLineView extends BorderPane { * * @return The FilteredEventsModel for this view. */ - protected FilteredEventsModel getEventsModel() { + protected EventsModel getEventsModel() { return filteredEvents; } @@ -224,7 +224,7 @@ public abstract class AbstractTimeLineView extends BorderPane { updateTask = null; } //remvoe and gc updateListener - this.filteredEvents.zoomStateProperty().removeListener(updateListener); + this.filteredEvents.modelParamsProperty().removeListener(updateListener); TimeLineController.timeZoneProperty().removeListener(updateListener); updateListener = null; filteredEvents.unRegisterForEvents(this); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ja.properties old mode 100755 new mode 100644 index 5c8dacfed2..2be73fcb0d --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/Bundle_ja.properties @@ -1,27 +1,31 @@ -Timeline.node.root=\u30eb\u30fc\u30c8 -Timeline.ui.TimeLineChart.tooltip.text=\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3067\u4e0b\u8a18\u306e\u7bc4\u56f2\u3078\u30ba\u30fc\u30e0\uff1a\n{0}\u301c{1}\n\u53f3\u30af\u30ea\u30c3\u30af\u3067\u5143\u306b\u623b\u308a\u307e\u3059\u3002 -Timeline.ui.ZoomRanges.all.text=\u5168\u3066 +/* + * Autopsy\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30fb\u30d6\u30e9\u30a6\u30b6\u30fc + * + * Copyright 2013-15 Basis Technology Corp. + * \u9023\u7d61\u5148: carrier sleuthkit org + * + * Apache License, Version 2.0 (\u4ee5\u4e0b\u300c\u30e9\u30a4\u30bb\u30f3\u30b9\u300d\u3068\u3044\u3044\u307e\u3059)\u306b\u304a\u3044\u3066\u4f7f\u7528\u8a31\u8afe\u3055\u308c\u3066\u3044\u307e\u3059\u3002 + * \u672c\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u9075\u5b88\u3059\u308b\u3053\u3068\u306a\u304f\u3057\u3066\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 + * \u672c\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u30b3\u30d4\u30fc\u306f\u6b21\u306e\u30b5\u30a4\u30c8\u3067\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * \u9069\u7528\u6cd5\u4ee4\u306b\u3088\u3063\u3066\u7fa9\u52d9\u4ed8\u3051\u3089\u308c\u308b\u5834\u5408\u307e\u305f\u306f\u66f8\u9762\u306b\u3066\u5408\u610f\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3092\u9664\u304d\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f + * \u660e\u793a\u7684\u3067\u3042\u308c\u9ed9\u793a\u7684\u3067\u3042\u308c\u3001\u3044\u304b\u306a\u308b\u985e\u306e\u4fdd\u8a3c\u307e\u305f\u306f\u6761\u4ef6\u306a\u3057\u306b\u3001 + * \u672c\u30e9\u30a4\u30bb\u30f3\u30b9\u306b\u304a\u3044\u3066\u300c\u73fe\u72b6\u300d\u306e\u307e\u307e\u3067\u914d\u5e03\u3055\u308c\u307e\u3059\u3002 + * \u672c\u30e9\u30a4\u30bb\u30f3\u30b9\u306b\u304a\u3051\u308b\u30a2\u30af\u30bb\u30b9\u6a29\u304a\u3088\u3073\u5236\u9650\u4e8b\u9805\u3092\u898f\u5b9a\u3059\u308b + * \u7279\u5b9a\u306e\u8a00\u8a9e\u306b\u3064\u3044\u3066\u306f\u3001\u300c\u30e9\u30a4\u30bb\u30f3\u30b9\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 + */ -ViewFrame.histogramTask.preparing=\u6e96\u5099\u4e2d -ViewFrame.histogramTask.queryDb=DB\u3092\u30af\u30a8\u30ea\u4e2d -ViewFrame.histogramTask.resetUI=ui\u3092\u518d\u8a2d\u5b9a\u4e2d -ViewFrame.histogramTask.title=\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u518d\u30d3\u30eb\u30c9 -ViewFrame.histogramTask.updateUI2=ui\u3092\u66f4\u65b0\u4e2d -TimeZonePanel.localRadio.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 -ViewFrame.countsToggle.text=\u30ab\u30a6\u30f3\u30c8 -ViewFrame.detailsToggle.text=\u8a73\u7d30 -ViewFrame.endLabel.text=\u30a8\u30f3\u30c9\uff1a -ViewFrame.noEventsDialogLabel.text=\u73fe\u5728\u306e\u30ba\u30fc\u30e0\uff0f\u30d5\u30a3\u30eb\u30bf\u30fc\u8a2d\u5b9a\u3067\u306f\u898b\u3048\u308b\u30a4\u30d9\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -ViewFrame.resetFiltersButton.text=\u5168\u3066\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u30ea\u30bb\u30c3\u30c8 -ViewFrame.startLabel.text=\u30b9\u30bf\u30fc\u30c8\uff1a -ViewFrame.viewModeLabel.text=\u30d3\u30b8\u30e5\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9\uff1a -ViewFrame.zoomButton.text=\u30a4\u30d9\u30f3\u30c8\u3078\u30ba\u30fc\u30e0 -ViewFrame.zoomMenuButton.text=\u4e0b\u8a18\u3078\u30ba\u30fc\u30e0\u30a4\u30f3\uff0f\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8 -*=Autopsy\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30d6\u30e9\u30a6\u30b6 -AbstractTimelineChart.defaultTooltip.text=\u30de\u30a6\u30b9\u3092\u30c9\u30e9\u30c3\u30b0\u3057\u3066\u30ba\u30fc\u30e0\u3059\u308b\u30bf\u30a4\u30e0\u9593\u9694\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\u305d\u306e\u4ed6\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 -IntervalSelector.ClearSelectedIntervalAction.tooltTipText=\u9078\u629e\u3057\u305f\u9593\u9694\u3092\u30af\u30ea\u30a2\u3059\u308b +AbstractTimelineChart.defaultTooltip.text=\u30de\u30a6\u30b9\u3092\u30c9\u30e9\u30c3\u30b0\u3057\u3001\u30ba\u30fc\u30e0\u30a4\u30f3\u3059\u308b\u6642\u9593\u9593\u9694\u3092\u9078\u629e\u3057\u307e\u3059\u3002\n\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001\u3055\u3089\u306a\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002 +HistoryToolBar.historyLabel.text=\u5c65\u6b74 +IntervalSelector.ClearSelectedIntervalAction.tooltTipText=\u9078\u629e\u3057\u305f\u9593\u9694\u3092\u6d88\u53bb IntervalSelector.ZoomAction.name=\u30ba\u30fc\u30e0 -NoEventsDialog.titledPane.text=\u898b\u308c\u308b\u30a4\u30d9\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093 +NoEventsDialog.titledPane.text=\u8868\u793a\u53ef\u80fd\u306a\u30a4\u30d9\u30f3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093 +Timeline.node.root=\u30eb\u30fc\u30c8 +# {0} - \u958b\u59cb\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 +# {1} - \u7d42\u4e86\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 +Timeline.ui.TimeLineChart.tooltip.text=\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u7bc4\u56f2\u306b\u30ba\u30fc\u30e0\u30a4\u30f3:\n{0} to {1}.\n\n\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u9589\u3058\u307e\u3059\u3002 Timeline.ui.ZoomRanges.onemin.text=1\u5206 Timeline.ui.ZoomRanges.fifteenmin.text=15\u5206 Timeline.ui.ZoomRanges.onehour.text=1\u6642\u9593 @@ -31,15 +35,38 @@ Timeline.ui.ZoomRanges.oneday.text=1\u65e5 Timeline.ui.ZoomRanges.threedays.text=3\u65e5 Timeline.ui.ZoomRanges.oneweek.text=1\u9031\u9593 Timeline.ui.ZoomRanges.twoweeks.text=2\u9031\u9593 -Timeline.ui.ZoomRanges.onemonth.text=1\u30f6\u6708 -Timeline.ui.ZoomRanges.threemonths.text=3\u30f6\u6708 -Timeline.ui.ZoomRanges.sixmonths.text=6\u30f6\u6708 +Timeline.ui.ZoomRanges.onemonth.text=1\u30f5\u6708 +Timeline.ui.ZoomRanges.threemonths.text=3\u30f5\u6708 +Timeline.ui.ZoomRanges.sixmonths.text=6\u30f5\u6708 Timeline.ui.ZoomRanges.oneyear.text=1\u5e74 Timeline.ui.ZoomRanges.threeyears.text=3\u5e74 Timeline.ui.ZoomRanges.fiveyears.text=5\u5e74 Timeline.ui.ZoomRanges.tenyears.text=10\u5e74 +Timeline.ui.ZoomRanges.all.text=\u3059\u3079\u3066 TimeLineChart.zoomHistoryActionGroup.name=\u30ba\u30fc\u30e0\u5c65\u6b74 -TimeZonePanel.title=\u6642\u9593\u3092\u6b21\u3067\u8868\u793a\uff1a -ViewFrame.refresh=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5 -ViewFrame.tagsAddedOrDeleted=\u30bf\u30b0\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u304a\u3088\u3073\u307e\u305f\u306f\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002\u30d3\u30b8\u30e5\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -ViewRefreshTask.preparing=\u30ba\u30fc\u30e0\u304a\u3088\u3073\u30d5\u30a3\u30eb\u30bf\u30fc\u8a2d\u5b9a\u3092\u89e3\u6790\u4e2d +TimeZonePanel.title=\u6b21\u306b\u6642\u9593\u3092\u8868\u793a: +ViewFrame.countsToggle.text=\u30ab\u30a6\u30f3\u30c8 +ViewFrame.detailsToggle.text=\u8a73\u7d30 +ViewFrame.endLabel.text=\u7d42\u4e86: +ViewFrame.histogramTask.preparing=\u6e96\u5099\u4e2d +ViewFrame.histogramTask.queryDb=FB\u3092\u30af\u30a8\u30ea\u4e2d\u3067\u3059 +ViewFrame.histogramTask.resetUI=UI\u3092\u30ea\u30bb\u30c3\u30c8\u4e2d\u3067\u3059 +ViewFrame.histogramTask.title=\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u306e\u518d\u69cb\u7bc9\u4e2d\u3067\u3059 +ViewFrame.histogramTask.updateUI2=UI\u3092\u66f4\u65b0\u4e2d\u3067\u3059 +ViewFrame.listToggle.text=\u30ea\u30b9\u30c8 +ViewFrame.noEventsDialogLabel.text=\u73fe\u5728\u306e\u30ba\u30fc\u30e0 / \u30d5\u30a3\u30eb\u30bf\u30fc\u8a2d\u5b9a\u3067\u8868\u793a\u53ef\u80fd\u306a\u30a4\u30d9\u30f3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +ViewFrame.notification.analysisComplete={0} \u306e\u5206\u6790\u306f\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +# {0} - \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d +ViewFrame.notification.newDataSource={0} \u304c\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3068\u3057\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +ViewFrame.refresh.longText=\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u3057\u3001\u65b0\u305f\u306b\u66f4\u65b0\u3055\u308c\u305f\u30bf\u30b0\u306a\u3069\u3001\u8868\u793a\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u306e\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306b\u3042\u308b\u60c5\u5831\u3092\u542b\u3081\u307e\u3059\u3002 +ViewFrame.refresh.text=\u30d3\u30e5\u30fc\u3092\u66f4\u65b0 +ViewFrame.startLabel.text=\u958b\u59cb: +ViewFrame.tagsAddedOrDeleted=\u30bf\u30b0\u304c\u4f5c\u6210\u304a\u3088\u3073/\u307e\u305f\u306f\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 \u30d3\u30e5\u30fc\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +ViewFrame.viewModeLabel.text=\u30d3\u30e5\u30fc\u30e2\u30fc\u30c9: +ViewFrame.zoomButton.text=\u30a4\u30d9\u30f3\u30c8\u306b\u30ba\u30fc\u30e0 +TimeZonePanel.localRadio.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +TimeZonePanel.otherRadio.text=GMT / UTC +ViewFrame.resetFiltersButton.text=\u3059\u3079\u3066\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u30ea\u30bb\u30c3\u30c8 +ViewFrame.zoomMenuButton.text=\u30ba\u30fc\u30e0\u30a4\u30f3/\u30a2\u30a6\u30c8 +ViewRefreshTask.preparing=\u30ba\u30fc\u30e0\u8a2d\u5b9a\u3068\u30d5\u30a3\u30eb\u30bf\u30fc\u8a2d\u5b9a\u3092\u5206\u6790\u4e2d\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java index 9e780277f3..39506554ac 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/ViewFrame.java @@ -77,7 +77,7 @@ import org.sleuthkit.autopsy.coreutils.LoggedTask; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; import org.sleuthkit.autopsy.timeline.FXMLConstructor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.actions.AddManualEvent; @@ -236,7 +236,7 @@ final public class ViewFrame extends BorderPane { private final NotificationPane notificationPane = new NotificationPane(); private final TimeLineController controller; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; /** * Listen to changes in the range slider selection and forward to the @@ -426,7 +426,7 @@ final public class ViewFrame extends BorderPane { //listen for changes in the time range / zoom params TimeLineController.timeZoneProperty().addListener(timeZoneProp -> refreshTimeUI()); filteredEvents.timeRangeProperty().addListener(timeRangeProp -> refreshTimeUI()); - filteredEvents.zoomStateProperty().addListener(zoomListener); + filteredEvents.modelParamsProperty().addListener(zoomListener); refreshTimeUI(); //populate the view refreshHistorgram(); @@ -474,7 +474,7 @@ final public class ViewFrame extends BorderPane { @Subscribe @NbBundle.Messages({ "ViewFrame.notification.cacheInvalidated=The event data has been updated, the visualization may be out of date."}) - public void handleCacheInvalidated(FilteredEventsModel.CacheInvalidatedEvent event) { + public void handleCacheInvalidated(EventsModel.CacheInvalidatedEvent event) { Platform.runLater(() -> { if (hostedView.needsRefresh() == false) { hostedView.setNeedsRefresh(); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ja.properties old mode 100755 new mode 100644 index e60d46f934..138bb42bfe --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/Bundle_ja.properties @@ -1,14 +1,25 @@ -CountsViewPane.numberOfEvents=\u30a4\u30d9\u30f3\u30c8\u6570 -CountsViewPane.detailSwitchMessage=\u79d2\u3088\u308a\u5c0f\u3055\u3044\u5358\u4f4d\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\u8a73\u7d30\u30d3\u30e5\u30fc\u306b\u5909\u66f4\u3057\u307e\u3059\u304b\uff1f -CountsViewPane.detailSwitchTitle=\u8a73\u7d30\u30d3\u30e5\u30fc\u306b\u5909\u66f4\u3057\u307e\u3059\u304b\uff1f +CountsViewPane.detailSwitchMessage=\u79d2\u3088\u308a\u3082\u5c0f\u3055\u3044\u6642\u9593\u5206\u89e3\u80fd\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n\u4ee3\u308f\u308a\u306b\u8a73\u7d30\u30d3\u30e5\u30fc\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u304b? +CountsViewPane.detailSwitchTitle=\u8a73\u7d30\u30d3\u30e5\u30fc\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u304b? +CountsViewPane.linearRadio.text=\u7dda\u5f62 +CountsViewPane.loggedTask.name=\u30ab\u30a6\u30f3\u30c8\u30d3\u30e5\u30fc\u306e\u66f4\u65b0\u4e2d\u3067\u3059 +CountsViewPane.loggedTask.updatingCounts=\u30d3\u30e5\u30fc\u306e\u5165\u529b\u4e2d\u3067\u3059 +CountsViewPane.logRadio.text=\u5bfe\u6570 +# {0} - \u76ee\u76db\u540d +CountsViewPane.numberOfEvents=\u30a4\u30d9\u30f3\u30c8\u6570 ({0}) +CountsViewPane.scaleHelp.label.text=\u76ee\u76db: +CountsViewPane.scaleHelpLinear=\u7dda\u5f62\u76ee\u76db\u306f\u591a\u304f\u306e\u4f7f\u7528\u4e8b\u4f8b\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u306e\u76ee\u76db\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u30d0\u30fc\u306e\u9ad8\u3055\u304c1\u5bfe1\u306e\u7dda\u5f62\u3067\u30ab\u30a6\u30f3\u30c8\u3092\u8868\u3057\u3001y\u8ef8\u306b\u5024\u30e9\u30d9\u30eb\u304c\u4ed8\u304d\u307e\u3059\u3002\u5024\u306e\u7bc4\u56f2\u304c\u975e\u5e38\u306b\u5927\u304d\u3044\u3068\u3001\u30ab\u30a6\u30f3\u30c8\u306e\u5c11\u306a\u3044\u6642\u9593\u5468\u671f\u306b\u5c0f\u3055\u3059\u304e\u3066\u8868\u793a\u3067\u304d\u306a\u3044\u30d0\u30fc\u304c\u3042\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 \u30e6\u30fc\u30b6\u30fc\u304c\u3053\u308c\u3092\u5224\u5225\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u3042\u308b\u30c7\u30fc\u30bf\u7bc4\u56f2\u306e\u30e9\u30d9\u30eb\u304c\u592a\u5b57\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u5c0f\u3055\u3059\u304e\u308b\u30d0\u30fc\u3092\u8868\u793a\u3059\u308b\u9078\u629e\u80a2\u306f\u6b21\u306e3\u3064\u3067\u3059: \u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u306e\u7e26\u9818\u57df\u3092\u5e83\u3052\u308b\u305f\u3081\u306b\u30a6\u30a3\u30f3\u30c9\u30a6\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3001\u3088\u308a\u5927\u304d\u3044\u30d0\u30fc\u306e\u3042\u308b\u6642\u9593\u5468\u671f\u304c\u9664\u5916\u3055\u308c\u308b\u3088\u3046\u6642\u9593\u7bc4\u56f2\u3092\u8abf\u6574\u3001\u3082\u3057\u304f\u306f\u76ee\u76db\u8a2d\u5b9a\u3092\u5bfe\u6570\u306b\u8abf\u6574 +CountsViewPane.scaleHelpLog=\u5bfe\u6570\u76ee\u76db\u306f\u3001\u5927\u304d\u3044\u6570\u5b57\u3068\u5c0f\u3055\u3044\u6570\u5b57\u306e\u5dee\u3092\u5727\u7e2e\u3059\u308b\u975e\u7dda\u5f62\u306a\u65b9\u6cd5\u3067\u30a4\u30d9\u30f3\u30c8\u6570\u3092\u8868\u3057\u307e\u3059\u3002\u5bfe\u6570\u76ee\u76db\u3092\u7528\u3044\u3066\u3082\u3001\u6975\u7aef\u306b\u5927\u304d\u3044\u30ab\u30a6\u30f3\u30c8\u5dee\u306b\u3088\u3063\u3066\u5c0f\u3055\u3059\u304e\u3066\u8868\u793a\u3067\u304d\u306a\u3044\u30d0\u30fc\u304c\u751f\u6210\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u306e\u5834\u5408\u3001\u30a4\u30d9\u30f3\u30c8\u3092\u30d5\u30a3\u30eb\u30bf\u30fc\u3057\u3066\u30ab\u30a6\u30f3\u30c8\u5dee\u3092\u7e2e\u3081\u308b\u3053\u3068\u304c\u552f\u4e00\u306e\u9078\u629e\u80a2\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u6ce8: \u5bfe\u6570\u76ee\u76db\u306f\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7\u3054\u3068\u306b\u500b\u5225\u306b\u9069\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u8907\u5408\u30d0\u30fc\u306e\u9ad8\u3055\u306e\u610f\u5473\u306f\u76f4\u611f\u7684\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u3053\u308c\u3092\u5f37\u8abf\u3059\u308b\u305f\u3081\u306b\u3001\u5bfe\u6570\u76ee\u76db\u3092\u7528\u3044\u305fy\u8ef8\u4e0a\u306b\u30e9\u30d9\u30eb\u3092\u8868\u793a\u3057\u307e\u305b\u3093\u3002\u5bfe\u6570\u76ee\u76db\u306f\u30011\u3064\u306e\u30bf\u30a4\u30d7\u5185\u306e\u6642\u9593\u5168\u57df\u3001\u307e\u305f\u306f1\u3064\u306e\u6642\u9593\u5468\u671f\u306e\u30bf\u30a4\u30d7\u5168\u57df\u3067 +CountsViewPane.scaleHelpLog2=\u30ab\u30a6\u30f3\u30c8\u3092\u8fc5\u901f\u306b\u6bd4\u8f03\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u4e21\u65b9\u4e00\u5ea6\u306b\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +CountsViewPane.scaleHelpLog3=\ \u5b9f\u969b\u306e\u30ab\u30a6\u30f3\u30c8(\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u307e\u305f\u306f\u7d50\u679c\u30d3\u30e5\u30fc\u3067\u5229\u7528\u53ef\u80fd)\u306f\u7d76\u5bfe\u6bd4\u8f03\u306b\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u614e\u91cd\u306b\u5bfe\u6570\u76ee\u76db\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +CountsViewPane.scaleLabel.text=\u76ee\u76db: +# {0} - \u30ab\u30a6\u30f3\u30c8 +# {1} - \u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7\u306e\u8868\u793a\u540d +# {2} - \u958b\u59cb\u65e5\u6642 +# {3} - \u7d42\u4e86\u65e5\u6642 +CountsViewPane.tooltip.text={2}\n\u3068 {3}\n\u9593\u306e {0} {1} \u30a4\u30d9\u30f3\u30c8 +ScaleType.Linear=\u7dda\u5f62 +ScaleType.Logarithmic=\u5bfe\u6570 Timeline.ui.countsview.menuItem.selectEventType=\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7\u3092\u9078\u629e Timeline.ui.countsview.menuItem.selectTimeandType=\u6642\u9593\u3068\u30bf\u30a4\u30d7\u3092\u9078\u629e Timeline.ui.countsview.menuItem.selectTimeRange=\u6642\u9593\u7bc4\u56f2\u3092\u9078\u629e -Timeline.ui.countsview.menuItem.zoomIntoTimeRange=\u6642\u9593\u7bc4\u56f2\u3078\u30ba\u30fc\u30e0\u30a4\u30f3 -CountsViewPane.loggedTask.name=\u30ab\u30a6\u30f3\u30c8\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u4e2d -CountsViewPane.loggedTask.updatingCounts=\u30d3\u30b8\u30e5\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3\uff08\u53ef\u8996\u5316\uff09\u3092\u5165\u529b\u4e2d -CountsViewPane.tooltip.text={0} {1} \u30a4\u30d9\u30f3\u30c8\n{2}\u3068\n{3}\u306e\u9593 -CountsViewPane.linearRadio.text=\u30ea\u30cb\u30a2 -CountsViewPane.logRadio.text=\u5bfe\u6570\u7684 -CountsViewPane.scaleLabel.text=\u30b9\u30b1\u30fc\u30eb\uff1a -*=Autopsy\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30d6\u30e9\u30a6\u30b6 \ No newline at end of file +Timeline.ui.countsview.menuItem.zoomIntoTimeRange=\u6642\u9593\u7bc4\u56f2\u306b\u30ba\u30fc\u30e0\u30a4\u30f3 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/CountsViewPane.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/CountsViewPane.java index 70197ff3e3..53e79210b2 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/CountsViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/countsview/CountsViewPane.java @@ -56,7 +56,7 @@ import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; import org.sleuthkit.autopsy.timeline.FXMLConstructor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.ui.AbstractTimelineChart; @@ -374,7 +374,7 @@ public class CountsViewPane extends AbstractTimelineChart implements private ContextMenu chartContextMenu; private final TimeLineController controller; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; private IntervalSelector intervalSelector; diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ja.properties old mode 100755 new mode 100644 index bf305b6d72..d7ee0e7dd5 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/Bundle_ja.properties @@ -1,35 +1,40 @@ -DetailViewPane.loggedTask.name=\u8A73\u7D30\u30D3\u30E5\u30FC\u3092\u66F4\u65B0 -DetailViewPane.loggedTask.queryDb=\u30A4\u30D9\u30F3\u30C8\u30C7\u30FC\u30BF\u3092\u53D6\u5F97\u4E2D -DetailViewPane.loggedTask.updateUI=\u30D3\u30B8\u30E5\u30A2\u30E9\u30A4\u30BC\u30FC\u30B7\u30E7\u30F3\u306B\u60C5\u5831\u3092\u5165\u529B\u4E2D -EventDetailChart.chartContextMenu.placeMarker.name=\u30DE\u30FC\u30AB\u30FC\u3092\u8A2D\u7F6E -DetailViewPan.truncateAllBox.text=\u8AAC\u660E\u3092\u524A\u9664 -DetailViewPan.truncateAllBoxMenuItem.text=\u8AAC\u660E\u3092\u524A\u9664 -DetailViewPane.advancedLayoutOptionsButtonLabel.text=\u30A2\u30C9\u30D0\u30F3\u30B9\u30EC\u30A4\u30A2\u30A6\u30C8\u30AA\u30D7\u30B7\u30E7\u30F3 -DetailViewPane.countsRadio.text=\u30AB\u30A6\u30F3\u30C8\u306E\u307F\u8868\u793A -DetailViewPane.countsRadioMenuItem.text=\u30AB\u30A6\u30F3\u30C8\u306E\u307F\u8868\u793A -DetailViewPane.descVisSeparatorMenuItem.text=\u8AAC\u660E\u30D3\u30B8\u30D3\u30EA\u30C6\u30A3\uFF08\u53EF\u8996\u6027\uFF09 -DetailViewPane.hiddenRadio.text=\u8AAC\u660E\u3092\u96A0\u3059 -DetailViewPane.hiddenRadioMenuItem.text=\u8AAC\u660E\u3092\u96A0\u3059 -DetailViewPane.oneEventPerRowBox.text=1\u5217\u306B\u3064\u304D1\u30A4\u30D9\u30F3\u30C8 -DetailViewPane.oneEventPerRowBoxMenuItem.text=1\u5217\u306B\u3064\u304D1\u30A4\u30D9\u30F3\u30C8 -DetailViewPane.showRadio.text=\u8A73\u7D30\u8AAC\u660E\u3092\u8868\u793A -DetailViewPane.showRadioMenuItem.text=\u8A73\u7D30\u8AAC\u660E\u3092\u8868\u793A -DetailViewPane.truncateSlideLabelMenuItem.text=\u8AAC\u660E\u306E\u6700\u5927\u5E45\uFF08px\uFF09 -DetailViewPane.truncateSliderLabel.text=\u8AAC\u660E\u306E\u6700\u5927\u5E45\uFF08px\uFF09\uFF1A -DetailViewPane.bandByTypeBox.text=\u30D0\u30F3\u30C9\u30D0\u30A4\u30BF\u30A4\u30D7 -DetailViewPane.bandByTypeBoxMenuItem.text=\u30D0\u30F3\u30C9\u30D0\u30A4\u30BF\u30A4\u30D7 -CollapseClusterAction.text=\u30B3\u30E9\u30D7\u30B9 -DetailViewPane.loggedTask.backButton=\u623B\u308B\uFF08\u53D6\u6D88\uFF09 -DetailViewPane.loggedTask.continueButton=\u9032\u3080 -DetailViewPane.loggedTask.prompt={0}\u30A4\u30D9\u30F3\u30C8\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u3053\u308C\u306F\u975E\u5E38\u306B\u6642\u9593\u304C\u304B\u304B\u308B\u3001\u307E\u305F\u306FAutopsy\u3092\u30AF\u30E9\u30C3\u30B7\u30E5\u3059\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002\n\n\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F -EventBundleNodeBase.toolTip.hashSetHits=\n\n\u30CF\u30C3\u30B7\u30E5\u30BB\u30C3\u30C8\u30D2\u30C3\u30C8\n{0} -EventBundleNodeBase.toolTip.loading=\u8AAD\u307F\u8FBC\u307F\u4E2D... -EventBundleNodeBase.toolTip.loading2=\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D -EventBundleNodeBase.toolTip.tags=\n\n\u30BF\u30B0\n{0} -EventBundleNodeBase.tooltip.text={0} {1} \u30A4\u30D9\u30F3\u30C8\n{2}\n{3}\u3068{4}\u306E\u9593 -EventStripeNode.loggedTask.name=\u30B5\u30D6\u30AF\u30E9\u30B9\u30BF\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D -ExpandClusterAction.text=\u30A8\u30AF\u30B9\u30D1\u30F3\u30C9 -GuideLine.tooltip.text={0}\n\u53F3\u30AF\u30EA\u30C3\u30AF\u3067\u524A\u9664\u3002\n\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4F4D\u7F6E\u5909\u66F4\u3002 -HideDescriptionAction.displayMsg=\u8A73\u7D30\u30D3\u30E5\u30FC\u304B\u3089\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u96A0\u3059\u3002 -HideDescriptionAction.displayName=\u96A0\u3059 -UnhideDescriptionAction.displayName=\u96A0\u3057\u305F\u3082\u306E\u3092\u8868\u793A \ No newline at end of file +CollapseClusterAction.text=\u6298\u308a\u305f\u305f\u3080 +DetailViewPane.advancedLayoutOptionsButtonLabel.text=\u9ad8\u5ea6\u306a\u30ec\u30a4\u30a2\u30a6\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3 +DetailViewPane.bandByTypeBox.text=\u30bf\u30a4\u30d7\u5225\u306b\u7d50\u5408 +DetailViewPane.countsRadio.text=\u30ab\u30a6\u30f3\u30c8\u306e\u307f\u8868\u793a +DetailViewPane.hiddenRadio.text=\u8a18\u8ff0\u3092\u975e\u8868\u793a +DetailViewPane.loggedTask.backButton=\u623b\u308b(\u53d6\u308a\u6d88\u3057) +DetailViewPane.loggedTask.continueButton=\u7d9a\u884c +DetailViewPane.loggedTask.name=\u8a73\u7d30\u30d3\u30e5\u30fc\u306e\u66f4\u65b0\u4e2d\u3067\u3059 +# {0} - \u30a4\u30d9\u30f3\u30c8\u6570 +DetailViewPane.loggedTask.prompt= {0} \u30a4\u30d9\u30f3\u30c8\u306e\u8a73\u7d30\u3092\u8868\u793a\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308a\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u30e1\u30e2\u30ea\u30fc\u304c\u6d88\u8cbb\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u7d9a\u884c\u3057\u307e\u3059\u304b? +DetailViewPane.loggedTask.queryDb=\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u306e\u691c\u7d22\u4e2d\u3067\u3059 +DetailViewPane.loggedTask.updateUI=\u30d3\u30e5\u30fc\u306e\u5165\u529b\u4e2d\u3067\u3059 +DetailViewPane.oneEventPerRowBox.text=1\u5217\u306b\u3064\u304d1\u3064 +DetailViewPane.pinnedLaneLabel.text=\u30d4\u30f3\u7559\u3081\u3057\u305f\u30a4\u30d9\u30f3\u30c8 +DetailViewPane.primaryLaneLabel.text=\u3059\u3079\u3066\u306e\u30a4\u30d9\u30f3\u30c8(\u30d5\u30a3\u30eb\u30bf\u30fc\u6e08\u307f) +DetailViewPane.showRadio.text=\u5b8c\u5168\u306a\u8a18\u8ff0\u3092\u8868\u793a +DetailViewPane.truncateAllBox.text=\u8a18\u8ff0\u3092\u4e00\u62ec\u524a\u9664 +DetailViewPane.truncateSliderLabel.text=\u6700\u5927\u8a18\u8ff0\u5e45(px): +EventBundleNodeBase.toolTip.loading=\u8aad\u307f\u8fbc\u307f\u4e2d... +EventClusterNode.loggedTask.name=\u30b5\u30d6\u30a4\u30d9\u30f3\u30c8\u3092\u8aad\u307f\u8fbc\u3080 +# {0} - \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30ab\u30a6\u30f3\u30c8\u6587\u5b57\u5217 +EventNodeBase.toolTip.hashSetHits=\n\n\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306e\u30d2\u30c3\u30c8\n{0} +EventNodeBase.toolTip.loading2=\u30c4\u30fc\u30eb\u30c1\u30c3\u30d7\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059 +# {0} - \u30bf\u30b0\u30ab\u30a6\u30f3\u30c8\u6587\u5b57\u5217 +EventNodeBase.toolTip.tags=\n\n\u30bf\u30b0\n{0} +# {0} - \u30ab\u30a6\u30f3\u30c8 +# {1} - \u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7 +# {2} - \u8a18\u8ff0 +# {3} - \u958b\u59cb\u65e5/\u6642\u9593 +# {4} - \u7d42\u4e86\u65e5/\u6642\u9593 +EventNodeBase.tooltip.text=\t{3}\n\u3068 \t{4}\n{2}\n\u9593\u306e {0} {1} \u30a4\u30d9\u30f3\u30c8 +ExpandClusterAction.text=\u5c55\u958b +# {0} - \u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u4f4d\u7f6e\u306e\u65e5\u4ed8/\u6642\u9593 +GuideLine.tooltip.text={0}\n\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u524a\u9664\u3057\u307e\u3059\u3002\n\u30c9\u30e9\u30c3\u30b0\u3057\u3066\u518d\u914d\u7f6e\u3057\u307e\u3059\u3002 +HideDescriptionAction.displayMsg=\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u8a73\u7d30\u30d3\u30e5\u30fc\u304b\u3089\u975e\u8868\u793a\u306b\u3057\u307e\u3059\u3002 +HideDescriptionAction.displayName=\u975e\u8868\u793a +PinEventAction.text=\u30d4\u30f3\u7559\u3081\u3059\u308b +PlaceMArkerAction.name=\u5834\u6240\u30de\u30fc\u30ab\u30fc +UnhideDescriptionAction.displayName=\u518d\u8868\u793a +UnPinEventAction.text=\u30d4\u30f3\u7559\u3081\u3092\u5916\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java index 8736c46103..004dd21a03 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/DetailViewPane.java @@ -53,7 +53,7 @@ import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; import org.sleuthkit.autopsy.timeline.FXMLConstructor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.ui.AbstractTimelineChart; @@ -61,7 +61,7 @@ import org.sleuthkit.autopsy.timeline.ui.detailview.datamodel.DetailViewEvent; import org.sleuthkit.autopsy.timeline.ui.detailview.datamodel.DetailsViewModel; import org.sleuthkit.autopsy.timeline.ui.detailview.datamodel.EventStripe; import org.sleuthkit.autopsy.timeline.utils.MappedList; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; import org.sleuthkit.datamodel.TimelineLevelOfDetail; import org.sleuthkit.datamodel.TskCoreException; @@ -99,7 +99,7 @@ final public class DetailViewPane extends AbstractTimelineChart { this.pinnedDateAxis = pinnedDateAxis; this.selectedNodes = selectedNodes; - FilteredEventsModel eventsModel = getController().getEventsModel(); + EventsModel eventsModel = getController().getEventsModel(); /* * If the time range is changed, clear the guide line and the interval @@ -147,7 +147,7 @@ final class DetailsChart extends Control implements TimeLineChart { eventsModel.timeRangeProperty().addListener(observable -> clearTimeBasedUIElements()); //if the view paramaters change, clear the selection - eventsModel.zoomStateProperty().addListener(observable -> getSelectedNodes().clear()); + eventsModel.modelParamsProperty().addListener(observable -> getSelectedNodes().clear()); } /** diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventClusterNode.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventClusterNode.java index 402cefe2b6..581b79d7d6 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventClusterNode.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventClusterNode.java @@ -58,7 +58,7 @@ import org.sleuthkit.autopsy.timeline.ui.detailview.datamodel.SingleDetailsViewE import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.SqlFilterState; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.DescriptionFilter; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; import org.sleuthkit.datamodel.TimelineLevelOfDetail; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TimelineEventType; @@ -177,12 +177,12 @@ final class EventClusterNode extends MultiEventNodeBase( new EventTypeFilter(getEventType()), true)); final Interval subClusterSpan = new Interval(getStartMillis(), getEndMillis() + 1000); final TimelineEventType.HierarchyLevel eventTypeZoomLevel = eventsModel.getEventTypeZoom(); - final ZoomState zoom = new ZoomState(subClusterSpan, eventTypeZoomLevel, subClusterFilter, getDescriptionLevel()); + final EventsModelParams zoom = new EventsModelParams(subClusterSpan, eventTypeZoomLevel, subClusterFilter, getDescriptionLevel()); DescriptionFilter descriptionFilter = new DescriptionFilter(getEvent().getDescriptionLevel(), getDescription()); /* diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventNodeBase.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventNodeBase.java index 8caad5f6fb..7c37c274a6 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventNodeBase.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/EventNodeBase.java @@ -67,7 +67,7 @@ import org.joda.time.DateTime; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.ThreadConfined; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.events.TagsAddedEvent; import org.sleuthkit.autopsy.timeline.events.TagsDeletedEvent; @@ -126,7 +126,7 @@ public abstract class EventNodeBase extends StackP final HBox controlsHBox = new HBox(5); final HBox infoHBox = new HBox(5, eventTypeImageView, hashIV, tagIV, descrLabel, countLabel, controlsHBox); final SleuthkitCase sleuthkitCase; - final FilteredEventsModel eventsModel; + final EventsModel eventsModel; private Timeline timeline; private Button pinButton; private final Border SELECTION_BORDER; diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java index ff0b77d49c..4045c05ffd 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/datamodel/DetailsViewModel.java @@ -45,13 +45,13 @@ import org.joda.time.DateTimeZone; import org.joda.time.Interval; import org.joda.time.Period; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.UIFilter; import org.sleuthkit.autopsy.timeline.utils.CacheLoaderImpl; import org.sleuthkit.autopsy.timeline.utils.RangeDivision; import org.sleuthkit.autopsy.timeline.zooming.TimeUnits; -import org.sleuthkit.autopsy.timeline.zooming.ZoomState; +import org.sleuthkit.autopsy.timeline.zooming.EventsModelParams; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TimelineManager; import org.sleuthkit.datamodel.TskCoreException; @@ -68,12 +68,12 @@ final public class DetailsViewModel { private final static Logger logger = Logger.getLogger(DetailsViewModel.class.getName()); - private final FilteredEventsModel eventsModel; - private final LoadingCache> eventCache; + private final EventsModel eventsModel; + private final LoadingCache> eventCache; private final TimelineManager eventManager; private final SleuthkitCase sleuthkitCase; - public DetailsViewModel(FilteredEventsModel eventsModel) { + public DetailsViewModel(EventsModel eventsModel) { this.eventsModel = eventsModel; this.eventManager = eventsModel.getEventManager(); this.sleuthkitCase = eventsModel.getSleuthkitCase(); @@ -86,7 +86,7 @@ final public class DetailsViewModel { } @Subscribe - void handleCacheInvalidation(FilteredEventsModel.CacheInvalidatedEvent event) { + void handleCacheInvalidation(EventsModel.CacheInvalidatedEvent event) { eventCache.invalidateAll(); } @@ -99,7 +99,7 @@ final public class DetailsViewModel { * * @throws org.sleuthkit.datamodel.TskCoreException */ - public List getEventStripes(ZoomState zoom) throws TskCoreException { + public List getEventStripes(EventsModelParams zoom) throws TskCoreException { return getEventStripes(UIFilter.getAllPassFilter(), zoom); } @@ -113,11 +113,11 @@ final public class DetailsViewModel { * * @throws org.sleuthkit.datamodel.TskCoreException */ - public List getEventStripes(UIFilter uiFilter, ZoomState zoom) throws TskCoreException { + public List getEventStripes(UIFilter uiFilter, EventsModelParams zoom) throws TskCoreException { DateTimeZone timeZone = TimeLineController.getJodaTimeZone(); //unpack params Interval timeRange = zoom.getTimeRange(); - TimelineLevelOfDetail descriptionLOD = zoom.getDescriptionLOD(); + TimelineLevelOfDetail descriptionLOD = zoom.getTimelineLOD(); //intermediate results Map> eventClusters = new HashMap<>(); @@ -156,10 +156,10 @@ final public class DetailsViewModel { * @throws org.sleuthkit.datamodel.TskCoreException If there is an error * querying the db. */ - private List getEvents(ZoomState zoom, DateTimeZone timeZone) throws TskCoreException { + private List getEvents(EventsModelParams zoom, DateTimeZone timeZone) throws TskCoreException { //unpack params Interval timeRange = zoom.getTimeRange(); - TimelineFilter.RootFilter activeFilter = zoom.getFilterState().getActiveFilter(); + TimelineFilter.RootFilter activeFilter = zoom.getEventFilterState().getActiveFilter(); return eventManager.getEvents(timeRange, activeFilter); } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ja.properties old mode 100755 new mode 100644 index 5252dcf4f3..ce6bd8ed7d --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/detailview/tree/Bundle_ja.properties @@ -1,4 +1,4 @@ -EventsTree.Label.text=\u30BD\u30FC\u30C8\u30D0\u30A4\uFF1A -TreeComparator.Count.displayName=\u30AB\u30A6\u30F3\u30C8 -TreeComparator.Description.displayName=\u8AAC\u660E -TreeComparator.Type.displayName=\u30BF\u30A4\u30D7 \ No newline at end of file +EventsTree.Label.text=\u6b21\u3067\u30bd\u30fc\u30c8: +TreeComparator.Count.displayName=\u30ab\u30a6\u30f3\u30c8 +TreeComparator.Description.displayName=\u8a18\u8ff0 +TreeComparator.Type.displayName=\u30bf\u30a4\u30d7 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle.properties-MERGED index 149c2da610..e637c111e2 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle.properties-MERGED @@ -1,7 +1,7 @@ FilsetSetPanel.hiddenDescriptionsPane.displayName=Hidden Descriptions FilterSetPanel.applyButton.longText=(Re)Apply filters FilterSetPanel.applyButton.text=Apply -FilterSetPanel.defaultButton.text=Default +FilterSetPanel.defaultButton.text=Reset FilterSetPanel.hiddenDescriptionsListView.remove=Remove from list FilterSetPanel.hiddenDescriptionsListView.unhideAndRemove=Unhide and remove from list Timeline.ui.filtering.menuItem.all=all diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ja.properties old mode 100755 new mode 100644 index bad4e2e9ca..6c9352b270 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/Bundle_ja.properties @@ -1,12 +1,12 @@ -Timeline.ui.filtering.menuItem.all=\u5168\u3066 -Timeline.ui.filtering.menuItem.none=\u7121\u3057 -Timeline.ui.filtering.menuItem.only=\u4E0B\u8A18\u306B\u9650\u5B9A -Timeline.ui.filtering.menuItem.others=\u305D\u306E\u4ED6 -Timeline.ui.filtering.menuItem.select=\u9078\u629E -Timeline.ui.filtering.promptText=\u30D5\u30A3\u30EB\u30BF\u30B9\u30C8\u30EA\u30F3\u30B0\u3092\u5165\u529B +FilsetSetPanel.hiddenDescriptionsPane.displayName=\u975e\u8868\u793a\u306e\u8aac\u660e +FilterSetPanel.applyButton.longText=\u30d5\u30a3\u30eb\u30bf\u30fc\u3092(\u6700)\u9069\u7528 FilterSetPanel.applyButton.text=\u9069\u7528 -FilterSetPanel.defaultButton.text=\u30C7\u30D5\u30A9\u30EB\u30C8 -FilsetSetPanel.hiddenDescriptionsPane.displayName=\u96A0\u3055\u308C\u305F\u8AAC\u660E -FilterSetPanel.applyButton.longText=\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\uFF08\u518D\uFF09\u9069\u7528 -FilterSetPanel.hiddenDescriptionsListView.remove=\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664 -FilterSetPanel.hiddenDescriptionsListView.unhideAndRm=\u96A0\u3057\u305F\u3082\u306E\u3092\u8868\u793A\u3057\u3001\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664 \ No newline at end of file +FilterSetPanel.defaultButton.text=\u30c7\u30d5\u30a9\u30eb\u30c8 +FilterSetPanel.hiddenDescriptionsListView.remove=\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664 +FilterSetPanel.hiddenDescriptionsListView.unhideAndRemove=\u975e\u8868\u793a\u306b\u3057\u3066\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664 +Timeline.ui.filtering.menuItem.all=\u3059\u3079\u3066 +Timeline.ui.filtering.menuItem.none=\u306a\u3057 +Timeline.ui.filtering.menuItem.only=\u306e\u307f +Timeline.ui.filtering.menuItem.others=\u305d\u306e\u4ed6 +Timeline.ui.filtering.menuItem.select=\u9078\u629e +Timeline.ui.filtering.promptText=\u30d5\u30a3\u30eb\u30bf\u30fc\u6587\u5b57\u5217\u3092\u5165\u529b diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java index 5d28e24c82..1fa268ffc2 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/FilterSetPanel.java @@ -40,7 +40,7 @@ import org.controlsfx.control.action.Action; import org.controlsfx.control.action.ActionUtils; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.timeline.FXMLConstructor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.actions.ResetFilters; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.DescriptionFilterState; @@ -79,7 +79,7 @@ final public class FilterSetPanel extends BorderPane { @FXML private SplitPane splitPane; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; private final TimeLineController controller; /** @@ -90,7 +90,7 @@ final public class FilterSetPanel extends BorderPane { private double dividerPosition; @NbBundle.Messages({ - "FilterSetPanel.defaultButton.text=Default", + "FilterSetPanel.defaultButton.text=Reset", "FilsetSetPanel.hiddenDescriptionsPane.displayName=Hidden Descriptions"}) @FXML void initialize() { @@ -115,16 +115,16 @@ final public class FilterSetPanel extends BorderPane { legendColumn.setCellFactory(col -> new LegendCell(this.controller)); //type is the only filter expanded initialy - expansionMap.put(filteredEvents.getFilterState().getFilter(), true); - expansionMap.put(filteredEvents.getFilterState().getEventTypeFilterState().getFilter(), true); + expansionMap.put(filteredEvents.getEventFilterState().getFilter(), true); + expansionMap.put(filteredEvents.getEventFilterState().getEventTypeFilterState().getFilter(), true); InvalidationListener applyFiltersListener = observable -> applyFilters(); - filteredEvents.eventTypeZoomProperty().addListener(applyFiltersListener); + filteredEvents.eventTypesHierarchyLevelProperty().addListener(applyFiltersListener); filteredEvents.descriptionLODProperty().addListener(applyFiltersListener); filteredEvents.timeRangeProperty().addListener(applyFiltersListener); - filteredEvents.filterProperty().addListener(observable -> refreshFilterUI()); + filteredEvents.eventFilterProperty().addListener(observable -> refreshFilterUI()); refreshFilterUI(); hiddenDescriptionsListView.setItems(controller.getQuickHideFilters()); @@ -164,7 +164,7 @@ final public class FilterSetPanel extends BorderPane { private void refreshFilterUI() { Platform.runLater(() - -> filterTreeTable.setRoot(new FilterTreeItem(filteredEvents.filterProperty().get().copyOf(), expansionMap))); + -> filterTreeTable.setRoot(new FilterTreeItem(filteredEvents.eventFilterProperty().get().copyOf(), expansionMap))); } private void applyFilters() { diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/LegendCell.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/LegendCell.java index 53ffec84a6..9a4b6cd080 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/LegendCell.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/LegendCell.java @@ -28,13 +28,13 @@ import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ui.EventTypeUtils; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.FilterState; import org.sleuthkit.datamodel.TimelineEventType; -import org.sleuthkit.datamodel.TimelineFilter.TextFilter; import org.sleuthkit.datamodel.TimelineFilter.EventTypeFilter; +import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.TextFilterState; /** * A TreeTableCell that shows an icon and color corresponding to the represented @@ -46,7 +46,7 @@ final class LegendCell extends TreeTableCell, FilterState> { private final TimeLineController controller; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; //We need a controller so we can listen to changes in EventTypeZoom to show/hide legends LegendCell(TimeLineController controller) { @@ -65,9 +65,16 @@ final class LegendCell extends TreeTableCell, FilterState> { setBackground(null); }); } else { - + //TODO: make some subclasses rather than use this if else chain. - if (item.getFilter() instanceof EventTypeFilter) { + if (item instanceof TextFilterState) { + TextFilterState filterState = (TextFilterState)item; + TextField textField = new TextField(); + textField.setPromptText(Bundle.Timeline_ui_filtering_promptText()); + textField.textProperty().bindBidirectional(filterState.descriptionSubstringProperty()); + Platform.runLater(() -> setGraphic(textField)); + + } else if (item.getFilter() instanceof EventTypeFilter) { EventTypeFilter filter = (EventTypeFilter) item.getFilter(); Rectangle rect = new Rectangle(20, 20); @@ -75,7 +82,7 @@ final class LegendCell extends TreeTableCell, FilterState> { rect.setArcWidth(5); rect.setStrokeWidth(3); setLegendColor(filter, rect, this.filteredEvents.getEventTypeZoom()); - this.filteredEvents.eventTypeZoomProperty().addListener((obs, oldZoomLevel, newZoomLevel) -> { + this.filteredEvents.eventTypesHierarchyLevelProperty().addListener((obs, oldZoomLevel, newZoomLevel) -> { setLegendColor(filter, rect, newZoomLevel); }); @@ -88,13 +95,6 @@ final class LegendCell extends TreeTableCell, FilterState> { setContentDisplay(ContentDisplay.CENTER); }); - } else if (item.getFilter() instanceof TextFilter) { - TextFilter filter = (TextFilter) item.getFilter(); - TextField textField = new TextField(); - textField.setPromptText(Bundle.Timeline_ui_filtering_promptText()); - textField.textProperty().bindBidirectional(filter.substringProperty()); - Platform.runLater(() -> setGraphic(textField)); - } else { Platform.runLater(() -> { setGraphic(null); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/AbstractFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/AbstractFilterState.java index ca902eb53c..eeea44bbad 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/AbstractFilterState.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/AbstractFilterState.java @@ -26,26 +26,41 @@ import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; /** - * Abstract base class for FilterStates. Provides selected, disabled, and active - * properties. + * An abstract base class for implementations of the FilterState interface. + * Filter state classes are wrappers that adapt a timeline data model filtering + * object for display by the timeline GUI by providing selected, disabled, and + * active properties for the wrapped filter. + * + * @param The type of the wrapped filter. */ -abstract class AbstractFilterState implements FilterState { +abstract class AbstractFilterState implements FilterState { private final SimpleBooleanProperty selected = new SimpleBooleanProperty(false); private final SimpleBooleanProperty disabled = new SimpleBooleanProperty(false); - private final BooleanBinding activeProp = Bindings.and(selected, disabled.not()); - private final F filter; + private final BooleanBinding active = Bindings.and(selected, disabled.not()); + private final FilterType filter; @Override - public F getFilter() { + public FilterType getFilter() { return filter; } - AbstractFilterState(F filter, Boolean select) { + /** + * Constructs the base class part for implementations of the FilterState + * interface. Filter state classes are wrappers that adapt a timeline data + * model filtering object for display by the timeline GUI by providing + * selected, disabled, and active properties for the wrapped filter. + * + * @param filter The filter to be wrapped. + * @param selected Whether or not the filter is selected. The filter is + * disabled by default and is therefore not active by + * default. + */ + AbstractFilterState(FilterType filter, Boolean selected) { this.filter = filter; - selected.set(select); - } - + this.selected.set(selected); + } + @Override public BooleanProperty selectedProperty() { return selected; @@ -83,11 +98,11 @@ abstract class AbstractFilterState implements FilterState { @Override public BooleanExpression activeProperty() { - return activeProp; + return active; } @Override - public F getActiveFilter() { + public FilterType getActiveFilter() { return isActive() ? getFilter() : null; } @@ -120,4 +135,5 @@ abstract class AbstractFilterState implements FilterState { } return Objects.equals(this.isDisabled(), other.isDisabled()); } + } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java index e85fabe4da..6884d275a8 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/CompoundFilterState.java @@ -24,9 +24,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import javafx.collections.FXCollections; -import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; -import org.openide.util.Exceptions; import org.sleuthkit.datamodel.TimelineFilter; import org.sleuthkit.datamodel.TimelineFilter.CompoundFilter; @@ -81,30 +79,6 @@ public class CompoundFilterState change) -> { - while (change.next()) { - change.getAddedSubList().forEach((SubFilterType newSubFilter) -> { - //if there is not already a state for this filter - if (getSubFilterStates().stream().map(FilterState::getFilter).noneMatch(newSubFilter::equals)) { - //add the appropriate filter type: default or compound - if (newSubFilter instanceof CompoundFilter) { - @SuppressWarnings("unchecked") - FilterState compoundFilterState = (FilterState) new CompoundFilterState<>((CompoundFilter) newSubFilter); - addSubFilterStateInternal(compoundFilterState); - - } else { - addSubFilterStateInternal(new SqlFilterState<>(newSubFilter)); - } - - } - }); - } - }); - } catch (Exception e) { - Exceptions.printStackTrace(e); - } activeProperty().addListener(activeProperty -> disableSubFiltersIfNotActive()); disableSubFiltersIfNotActive(); @@ -150,7 +124,7 @@ public class CompoundFilterState { - //set this compound filter state selected af any of the subfilters are selected. + //set this compound filter state selected if any of the subfilters are selected. setSelected(subFilterStates.stream().anyMatch(FilterState::isSelected)); }); newSubFilterState.setDisabled(isActive() == false); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/FilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/FilterState.java index a32267f3b5..298967acee 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/FilterState.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/FilterState.java @@ -22,34 +22,102 @@ import javafx.beans.binding.BooleanExpression; import javafx.beans.property.BooleanProperty; /** - * The state of a filter: selected, disabled, active, etc. + * An interface for filter state classes. Filter state classes are wrappers that + * adapt a timeline data model filtering object for display by the timeline GUI + * by providing selected, disabled, and active properties for the wrapped + * filter. A filter that is selected and not disabled is active. * - * @param The type of filter this is the state for. + * @param The type of the wrapped filter. */ public interface FilterState { + /** + * Gets the display name that will be used to identify the wrapped filter in + * the timeline GUI. + * + * @return The display name of the wrapped filter. + */ String getDisplayName(); + /** + * Gets the wrapped filter. + * + * @return The wrapped filter. + */ FilterType getFilter(); + /** + * Gets the wrapped filter only if it is active. A filter that is selected + * and not disabled is active. If the wrapped filter is not active, null is + * returned. + * + * @return The wrapped filter or null. + */ FilterType getActiveFilter(); + /** + * Makes a deep copy of this filter state object. + * + * @return The copy. + */ FilterState copyOf(); + /** + * Gets the active property of this filter state object. A filter that is + * selected and not disabled is active. + * + * @return The active property. + */ BooleanExpression activeProperty(); + /** + * Gets the value of the active property of this filter state object. A + * filter that is selected and not disabled is active. + * + * @return True or false. + */ boolean isActive(); + /** + * Gets the disabled property of this filter state object. + * + * @return The disabled property. + */ BooleanProperty disabledProperty(); + /** + * Gets the value of the disabled property of this filter state object. + * + * @return True or false. + */ boolean isDisabled(); - void setDisabled(Boolean act); + /** + * Sets the value of the disabled property of this filter state object. + * + * @param value True or false. + */ + void setDisabled(Boolean value); + /** + * Gets the selected property of this filter state object. + * + * @return The selected property. + */ BooleanProperty selectedProperty(); + /** + * Gets the value of the selected property of this filter state object. + * + * @return True or false. + */ boolean isSelected(); - void setSelected(Boolean act); + /** + * Sets the value of the selected property of this filter state object. + * + * @param value True or false. + */ + void setSelected(Boolean value); } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/HashHitsFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/HashHitsFilterState.java new file mode 100755 index 0000000000..63917f5b45 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/HashHitsFilterState.java @@ -0,0 +1,68 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.timeline.ui.filtering.datamodel; + +import org.sleuthkit.datamodel.TimelineFilter; + +/** + * A wrapper for a TimelineFilter.HashHitsFilter object that allows it to be + * displayed by the timeline GUI via the filter panel by providing selected, + * disabled, and active properties for the HashHitsFilter. + */ +public class HashHitsFilterState extends SqlFilterState { + + /** + * Constructs a wrapper for a TimelineFilter.HashHitsFilter object that + * allows it to be displayed by the timeline GUI via the filter panel by + * providing selected, disabled, and active properties for the + * HashHitsFilter. + * + * @param hashHitsFilter A TimelineFilter.HashHitsFilter object. + */ + public HashHitsFilterState(TimelineFilter.HashHitsFilter hashHitsFilter) { + super(hashHitsFilter); + addSelectionListener(); + } + + /** + * "Copy constructs" a wrapper for a TimelineFilter.HashHitsFilter object + * that allows it to be displayed by the timeline GUI via the filter panel + * by providing selected, disabled, and active properties for the + * HashHitsFilter. + * + * @param other A HashHitsFilterState object. + */ + public HashHitsFilterState(HashHitsFilterState other) { + super(other.getFilter().copyOf()); + setSelected(other.isSelected()); + setDisabled(other.isDisabled()); + addSelectionListener(); + } + + /* + * Adds a listener to the selected property that updates the flag that turns + * the wrapped hash hits filter on/off. + */ + private void addSelectionListener() { + selectedProperty().addListener(selectedProperty -> { + getFilter().setEventSourcesHaveHashSetHits(isSelected()); + }); + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/RootFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/RootFilterState.java index e3c8b8d6d5..2c17398db3 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/RootFilterState.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/RootFilterState.java @@ -40,45 +40,73 @@ import org.sleuthkit.datamodel.TimelineFilter.RootFilter; import org.sleuthkit.datamodel.TimelineFilter.TextFilter; import org.sleuthkit.datamodel.TimelineFilter.TagsFilter; -/** A FilterState for RootFilters. Provides named access to the sub - * filter states. +/** + * An implementation of the FilterState interface that wraps a RootFilter object + * for display via the timeline filter panel by providing selected, disabled, + * and active properties for the object. The wrapped root filter is a compound + * filter, so additional behavior is provided for the management of child + * subfilter state objects. */ public class RootFilterState extends CompoundFilterState { + private final static BooleanProperty ALWAYS_TRUE = new SimpleBooleanProperty(true); + private final static BooleanProperty ALWAYS_FALSE = new SimpleBooleanProperty(false); private final CompoundFilterState eventTypeFilterState; private final SqlFilterState knownFilterState; - private final SqlFilterState textFilterState; - private final SqlFilterState tagsFilterState; - private final SqlFilterState hashHitsFilterState; + private final TextFilterState textFilterState; + private final TagsFilterState tagsFilterState; + private final HashHitsFilterState hashHitsFilterState; private final CompoundFilterState dataSourcesFilterState; private final CompoundFilterState fileTypesFilterState; - - private static final BooleanProperty ALWAYS_TRUE = new SimpleBooleanProperty(true); - private final static BooleanProperty ALWAYS_FALSE = new SimpleBooleanProperty(false); - private final Set> namedFilterStates = new HashSet<>(); - public RootFilterState(RootFilter delegate) { - this(delegate, - new CompoundFilterState<>(delegate.getEventTypeFilter()), - new SqlFilterState<>(delegate.getKnownFilter()), - new SqlFilterState<>(delegate.getTextFilter()), - new SqlFilterState<>(delegate.getTagsFilter()), - new SqlFilterState<>(delegate.getHashHitsFilter()), - new CompoundFilterState<>(delegate.getDataSourcesFilter()), - new CompoundFilterState<>(delegate.getFileTypesFilter()) + /** + * Constructs an implementation of the FilterState interface that wraps a + * RootFilter object for display via the timeline filter panel by providing + * selected, disabled, and active properties for the object. The underlying + * root filter is a compound filter, so additional behavior is provided for + * the management of child subfilter state objects. + * + * @param rootFilter The TimelineFilter.RootFilter object to be wrapped. + */ + public RootFilterState(RootFilter rootFilter) { + this(rootFilter, + new CompoundFilterState<>(rootFilter.getEventTypeFilter()), + new SqlFilterState<>(rootFilter.getKnownFilter()), + new TextFilterState(rootFilter.getTextFilter()), + new TagsFilterState(rootFilter.getTagsFilter()), + new HashHitsFilterState(rootFilter.getHashHitsFilter()), + new CompoundFilterState<>(rootFilter.getDataSourcesFilter()), + new CompoundFilterState<>(rootFilter.getFileTypesFilter()) ); } - private RootFilterState(RootFilter filter, - CompoundFilterState eventTypeFilterState, - SqlFilterState knownFilterState, - SqlFilterState textFilterState, - SqlFilterState tagsFilterState, - SqlFilterState hashHitsFilterState, - CompoundFilterState dataSourcesFilterState, - CompoundFilterState fileTypesFilterState) { - super(filter, Arrays.asList(eventTypeFilterState, knownFilterState, textFilterState, tagsFilterState, hashHitsFilterState, dataSourcesFilterState, fileTypesFilterState)); + /** + * Constructs an implementation of the FilterState interface that wraps a + * RootFilter object for display via the timeline filter panel by providing + * selected, disabled, and active properties for the object. The underlying + * root filter is a compound filter, so additional behavior is provided for + * the management of child subfilter state objects. + * + * @param rootFilter The TimelineFilter.RootFilter object to be + * wrapped. + * @param eventTypeFilterState The top-level event types subfilter. + * @param knownFilterState The known state subfilter. + * @param textFilterState The text subfilter. + * @param tagsFilterState The tags subfilter. + * @param hashHitsFilterState The hash set hits subfilter. + * @param dataSourcesFilterState The data sources subfilter. + * @param fileTypesFilterState The file types subfilter. + */ + private RootFilterState(RootFilter rootFilter, + CompoundFilterState eventTypeFilterState, + SqlFilterState knownFilterState, + TextFilterState textFilterState, + TagsFilterState tagsFilterState, + HashHitsFilterState hashHitsFilterState, + CompoundFilterState dataSourcesFilterState, + CompoundFilterState fileTypesFilterState) { + super(rootFilter, Arrays.asList(eventTypeFilterState, knownFilterState, textFilterState, tagsFilterState, hashHitsFilterState, dataSourcesFilterState, fileTypesFilterState)); this.eventTypeFilterState = eventTypeFilterState; this.knownFilterState = knownFilterState; this.textFilterState = textFilterState; @@ -86,21 +114,21 @@ public class RootFilterState extends CompoundFilterState otherFilter) { + public RootFilterState intersect(FilterState< ? extends TimelineFilter> other) { RootFilterState copyOf = copyOf(); - copyOf.addSubFilterState(otherFilter); + copyOf.addSubFilterState(other); return copyOf; } @@ -109,9 +137,9 @@ public class RootFilterState extends CompoundFilterState { - if (filter instanceof TimelineFilter.TagsFilter) { - ((TimelineFilter.TagsFilter)filter).setEventSourcesAreTagged(isSelected()); - } else if (filter instanceof TimelineFilter.HashHitsFilter) { - ((TimelineFilter.HashHitsFilter)filter).setEventSourcesHaveHashSetHits(isSelected()); - } - }); - + this(filter, false); } /** - * Disabled = false + * /** + * Constructs an implementation of the FilterState interface for wrapping + * TimelineFilter objects. TimelineFilter objects provide SQL WHERE clauses + * for querying the case database and are displayed in the timeline GUI via + * the filters panel. * - * @param filter - * @param selected True to select this filter initially. + * @param filter The TimelineFilter object to be wrapped. + * @param selected The initial value for the selected property. */ public SqlFilterState(FilterType filter, boolean selected) { super(filter, selected); @@ -74,9 +76,10 @@ public class SqlFilterState extends AbstractF @Override public String toString() { return "TimelineFilterState{" - + " filter=" + getFilter().toString() - + ", selected=" + isSelected() - + ", disabled=" + isDisabled() - + ", activeProp=" + isActive() + '}'; //NON-NLS + + " filter=" + getFilter().toString() + + ", selected=" + isSelected() + + ", disabled=" + isDisabled() + + ", activeP=" + isActive() + '}'; //NON-NLS } + } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TagsFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TagsFilterState.java new file mode 100755 index 0000000000..4e56c47633 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TagsFilterState.java @@ -0,0 +1,67 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.timeline.ui.filtering.datamodel; + +import org.sleuthkit.datamodel.TimelineFilter; + +/** + * A wrapper for a TimelineFilter.TagsFilter object that allows it to be + * displayed by the timeline GUI via the filter panel by providing selected, + * disabled, and active properties for the TagsFilter. + */ +public class TagsFilterState extends SqlFilterState { + + /** + * Constructs a wrapper for a TimelineFilter.TagsFilter object that allows + * it to be displayed by the timeline GUI via the filter panel by providing + * selected, disabled, and active properties for the TagsFilter. + * + * @param tagsFilter A TimelineFilter.TagsFilter object. + */ + public TagsFilterState(TimelineFilter.TagsFilter tagsFilter) { + super(tagsFilter); + addSelectionListener(); + } + + /** + * "Copy constructs" a wrapper for a TimelineFilter.TagsFilter object + * that allows it to be displayed by the timeline GUI via the filter panel + * by providing selected, disabled, and active properties for the + * TagsFilter. + * + * @param other A TagsFilterState object. + */ + public TagsFilterState(TagsFilterState other) { + super(other.getFilter().copyOf()); + setSelected(other.isSelected()); + setDisabled(other.isDisabled()); + addSelectionListener(); + } + + /* + * Adds a listener to the selected property that updates the flag that turns + * the wrapped tags filter on/off. + */ + private void addSelectionListener() { + selectedProperty().addListener(selectedProperty -> { + getFilter().setEventSourcesAreTagged(isSelected()); + }); + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TextFilterState.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TextFilterState.java new file mode 100755 index 0000000000..188b2d7247 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/filtering/datamodel/TextFilterState.java @@ -0,0 +1,85 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2019-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.timeline.ui.filtering.datamodel; + +import org.sleuthkit.datamodel.TimelineFilter; +import javafx.beans.property.Property; +import javafx.beans.property.SimpleStringProperty; + +/** + * A wrapper for a TimelineFilter.TextFilter object that allows it to be + * displayed by the timeline GUI via the filter panel by providing selected, + * disabled, and active properties for the TextFilter. The description substring + * of the TextFilter is also exposed as a JFX property so that it can be bound + * to the text filter text field of the filter panel. + */ +public class TextFilterState extends SqlFilterState { + + private final SimpleStringProperty descriptionSubstring; + + /** + * Constructs a wrapper for a TimelineFilter.TextFilter object that allows + * it to be displayed by the timeline GUI via filter panel by providing + * selected, disabled, and active properties for the TextFilter. The + * description substring of the TextFilter is also exposed as a JFX property + * so that it can be bound to the text filter text field of the filter + * panel. + * + * @param textFilter A TimelineFilter.TextFilter object. + */ + public TextFilterState(TimelineFilter.TextFilter textFilter) { + super(textFilter); + this.descriptionSubstring = new SimpleStringProperty(textFilter.getDescriptionSubstring()); + } + + /** + * "Copy constructs" a wrapper for a TimelineFilter.TextFilter object + * that allows it to be displayed by the timeline GUI via the filter panel + * by providing selected, disabled, and active properties for the + * TextFilter. + * + * @param other A HashHitsFilterState object. + */ + public TextFilterState(TextFilterState other) { + super(other.getFilter().copyOf()); + setSelected(other.isSelected()); + setDisabled(other.isDisabled()); + this.descriptionSubstring = new SimpleStringProperty(other.getFilter().getDescriptionSubstring()); + } + + @Override + public TimelineFilter.TextFilter getFilter() { + TimelineFilter.TextFilter textFilter = super.getFilter(); + textFilter.setDescriptionSubstring(descriptionSubstringProperty().getValue()); + return textFilter; + } + + /** + * Gets the substring that must be present in one or more of the + * descriptions of each event that passes the filter. The property is + * intended to be bound to the text filter text field of the filter panel in + * the timeline GUI. + * + * @return The required substring as a Property. + */ + public Property descriptionSubstringProperty() { + return descriptionSubstring; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ja.properties new file mode 100644 index 0000000000..7b5a853206 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/Bundle_ja.properties @@ -0,0 +1,16 @@ +ListChart.errorMsg=\u9078\u629e\u3057\u305f\u30a4\u30d9\u30f3\u30c8\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 +# {0} - \u30a4\u30d9\u30f3\u30c8\u6570 +ListTimeline.eventCountLabel.text={0} \u30a4\u30d9\u30f3\u30c8 +ListTimeline.hashHitTooltip.error=\u9078\u629e\u3057\u305f\u30a4\u30d9\u30f3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 +# {0} - \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d +ListTimeline.hashHitTooltip.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8:\n{0} +ListTimeline.taggedTooltip.error=\u9078\u629e\u3057\u305f\u30a4\u30d9\u30f3\u30c8\u306e\u30bf\u30b0\u540d\u3092\u53d6\u5f97\u4e2d\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\u3002 +# {0} - \u30bf\u30b0\u540d +ListTimeline.taggedTooltip.text=\u30bf\u30b0:\n{0} +ListView.EventTypeCell.accessedTooltip=\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb( A ) +ListView.EventTypeCell.changedTooltip=\u5909\u66f4\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb( C ) +ListView.EventTypeCell.createdTooltip=\u4f5c\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb( B, for Born ) +ListView.EventTypeCell.modifiedTooltip=\u4fee\u6b63\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb( M ) +ListViewPane.loggedTask.name=\u30ea\u30b9\u30c8\u30d3\u30e5\u30fc\u306e\u66f4\u65b0\u4e2d\u3067\u3059 +ListViewPane.loggedTask.queryDb=\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u306e\u691c\u7d22\u4e2d\u3067\u3059 +ListViewPane.loggedTask.updateUI=\u30d3\u30e5\u30fc\u306e\u5165\u529b\u4e2d\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListViewPane.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListViewPane.java index b94e7956bd..6cb7d55160 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListViewPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/ListViewPane.java @@ -28,7 +28,7 @@ import javafx.concurrent.Task; import javafx.scene.Node; import org.joda.time.Interval; import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.events.ViewInTimelineRequestedEvent; @@ -116,7 +116,7 @@ public class ListViewPane extends AbstractTimeLineView { return null; } - FilteredEventsModel eventsModel = getEventsModel(); + EventsModel eventsModel = getEventsModel(); Set selectedEventIDs; TimeLineController controller = getController(); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/datamodel/ListViewModel.java b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/datamodel/ListViewModel.java index 957b17265c..d51e454247 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/datamodel/ListViewModel.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/ui/listvew/datamodel/ListViewModel.java @@ -29,7 +29,7 @@ import java.util.Map.Entry; import java.util.Objects; import static java.util.stream.Collectors.groupingBy; import org.joda.time.Interval; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; import org.sleuthkit.datamodel.TimelineManager; import org.sleuthkit.datamodel.TskCoreException; @@ -44,10 +44,10 @@ import org.sleuthkit.datamodel.TimelineLevelOfDetail; */ public class ListViewModel { - private final FilteredEventsModel eventsModel; + private final EventsModel eventsModel; private final TimelineManager eventManager; - public ListViewModel(FilteredEventsModel eventsModel) { + public ListViewModel(EventsModel eventsModel) { this.eventsModel = eventsModel; this.eventManager = eventsModel.getEventManager(); } @@ -63,7 +63,7 @@ public class ListViewModel { * @throws org.sleuthkit.datamodel.TskCoreException */ public List getCombinedEvents() throws TskCoreException { - return getCombinedEvents(eventsModel.getTimeRange(), eventsModel.getFilterState()); + return getCombinedEvents(eventsModel.getTimeRange(), eventsModel.getEventFilterState()); } /** diff --git a/Core/src/org/sleuthkit/autopsy/timeline/utils/FilterUtils.java b/Core/src/org/sleuthkit/autopsy/timeline/utils/FilterUtils.java index 52d8fa4ddf..53c84755f8 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/utils/FilterUtils.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/utils/FilterUtils.java @@ -54,12 +54,10 @@ public final class FilterUtils { "FilterUtils.otherFilter.displayName=Other"}) public static FileTypesFilter createDefaultFileTypesFilter() { FileTypesFilter fileTypesFilter = new FileTypesFilter(); - fileTypesFilter.addSubFilter(new FileTypeFilter(MEDIA.getDisplayName(), MEDIA.getMediaTypes())); fileTypesFilter.addSubFilter(new FileTypeFilter(DOCUMENTS.getDisplayName(), DOCUMENTS.getMediaTypes())); fileTypesFilter.addSubFilter(new FileTypeFilter(EXECUTABLE.getDisplayName(), EXECUTABLE.getMediaTypes())); fileTypesFilter.addSubFilter(new InverseFileTypeFilter(Bundle.FilterUtils_otherFilter_displayName(), NON_OTHER_MIME_TYPES)); - return fileTypesFilter; } } diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ja.properties old mode 100755 new mode 100644 index 29c96aaa13..16cb968d63 --- a/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/timeline/zooming/Bundle_ja.properties @@ -1,10 +1,11 @@ -EventTypeZoomLevel.baseType=\u30d9\u30fc\u30b9\u30bf\u30a4\u30d7 +DescriptionLOD.short=\u77ed +DescriptionLOD.medium=\u4e2d +DescriptionLOD.full=\u9577 + +EventTypeZoomLevel.baseType=\u57fa\u672c\u30bf\u30a4\u30d7 EventTypeZoomLevel.rootType=\u30eb\u30fc\u30c8\u30bf\u30a4\u30d7 EventTypeZoomLevel.subType=\u30b5\u30d6\u30bf\u30a4\u30d7 -DescriptionLOD.short=\u7c21\u6f54 -DescriptionLOD.medium=\u6982\u8981 -DescriptionLOD.full=\u8a73\u7d30 -ZoomSettingsPane.descrLODLabel.text=\u8a73\u7d30\u8aac\u660e\uff1a -ZoomSettingsPane.historyLabel.text=\u5c65\u6b74\uff1a -ZoomSettingsPane.timeUnitLabel.text=\u6642\u9593\u5358\u4f4d\uff1a -ZoomSettingsPane.typeZoomLabel.text=\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7\uff1a \ No newline at end of file +ZoomSettingsPane.descrLODLabel.text=\u8aac\u660e\u306e\u8a73\u7d30: +ZoomSettingsPane.timeUnitLabel.text=\u6642\u9593\u5358\u4f4d: +ZoomSettingsPane.typeZoomLabel.text=\u30a4\u30d9\u30f3\u30c8\u30bf\u30a4\u30d7: +ZoomSettingsPane.zoomLabel.text=\u30ba\u30fc\u30e0 diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/EventsModelParams.java b/Core/src/org/sleuthkit/autopsy/timeline/zooming/EventsModelParams.java new file mode 100755 index 0000000000..b3010fe64c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/timeline/zooming/EventsModelParams.java @@ -0,0 +1,135 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2013-2019 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.timeline.zooming; + +import java.util.Objects; +import org.joda.time.Interval; +import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; +import org.sleuthkit.datamodel.TimelineEventType; +import org.sleuthkit.datamodel.TimelineLevelOfDetail; + +/** + * A container that bundles the user-specified parameters for the events model + * so that they can be passed around and saved as mementos to support a + * navigable (forwards-backwards) history feature for the events model. + */ +final public class EventsModelParams { + + private final Interval timeRange; + private final TimelineEventType.HierarchyLevel eventTypesHierarchyLevel; + private final RootFilterState eventFilterState; + private final TimelineLevelOfDetail timelineLOD; + + public EventsModelParams(Interval timeRange, TimelineEventType.HierarchyLevel eventTypesHierarchyLevel, RootFilterState eventFilterState, TimelineLevelOfDetail timelineLOD) { + this.timeRange = timeRange; + this.eventTypesHierarchyLevel = eventTypesHierarchyLevel; + this.eventFilterState = eventFilterState; + this.timelineLOD = timelineLOD; + } + + public Interval getTimeRange() { + return timeRange; + } + + public TimelineEventType.HierarchyLevel getEventTypesHierarchyLevel() { + return eventTypesHierarchyLevel; + } + + public RootFilterState getEventFilterState() { + return eventFilterState; + } + + public TimelineLevelOfDetail getTimelineLOD() { + return timelineLOD; + } + + public EventsModelParams withTimeAndType(Interval timeRange, TimelineEventType.HierarchyLevel zoomLevel) { + return new EventsModelParams(timeRange, zoomLevel, eventFilterState, timelineLOD); + } + + public EventsModelParams withTypeZoomLevel(TimelineEventType.HierarchyLevel zoomLevel) { + return new EventsModelParams(timeRange, zoomLevel, eventFilterState, timelineLOD); + } + + public EventsModelParams withTimeRange(Interval timeRange) { + return new EventsModelParams(timeRange, eventTypesHierarchyLevel, eventFilterState, timelineLOD); + } + + public EventsModelParams withDescrLOD(TimelineLevelOfDetail descrLOD) { + return new EventsModelParams(timeRange, eventTypesHierarchyLevel, eventFilterState, descrLOD); + } + + public EventsModelParams withFilterState(RootFilterState filter) { + return new EventsModelParams(timeRange, eventTypesHierarchyLevel, filter, timelineLOD); + } + + public boolean hasFilterState(RootFilterState filterSet) { + return this.eventFilterState.equals(filterSet); + } + + public boolean hasTypeZoomLevel(TimelineEventType.HierarchyLevel typeZoom) { + return this.eventTypesHierarchyLevel.equals(typeZoom); + } + + public boolean hasTimeRange(Interval timeRange) { + return this.timeRange != null && this.timeRange.equals(timeRange); + } + + public boolean hasDescrLOD(TimelineLevelOfDetail newLOD) { + return this.timelineLOD.equals(newLOD); + } + + @Override + public int hashCode() { + int hash = 3; + hash = 97 * hash + Objects.hashCode(this.timeRange.getStartMillis()); + hash = 97 * hash + Objects.hashCode(this.timeRange.getEndMillis()); + hash = 97 * hash + Objects.hashCode(this.eventTypesHierarchyLevel); + hash = 97 * hash + Objects.hashCode(this.eventFilterState); + hash = 97 * hash + Objects.hashCode(this.timelineLOD); + + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final EventsModelParams other = (EventsModelParams) obj; + if (!Objects.equals(this.timeRange, other.getTimeRange())) { + return false; + } + if (this.eventTypesHierarchyLevel != other.getEventTypesHierarchyLevel()) { + return false; + } + if (this.eventFilterState.equals(other.getEventFilterState()) == false) { + return false; + } + return this.timelineLOD == other.getTimelineLOD(); + } + + @Override + public String toString() { + return "ZoomState{" + "timeRange=" + timeRange + ", typeZoomLevel=" + eventTypesHierarchyLevel + ", filter=" + eventFilterState.getActiveFilter().toString() + ", descrLOD=" + timelineLOD + '}'; //NON-NLS + } +} diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java b/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java index 0d832e0108..0f576ee499 100755 --- a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomSettingsPane.java @@ -34,7 +34,7 @@ import org.controlsfx.control.Notifications; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.timeline.FXMLConstructor; -import org.sleuthkit.autopsy.timeline.FilteredEventsModel; +import org.sleuthkit.autopsy.timeline.EventsModel; import org.sleuthkit.autopsy.timeline.TimeLineController; import org.sleuthkit.autopsy.timeline.ViewMode; import org.sleuthkit.autopsy.timeline.utils.RangeDivision; @@ -72,7 +72,7 @@ public class ZoomSettingsPane extends TitledPane { private Slider timeUnitSlider; private final TimeLineController controller; - private final FilteredEventsModel filteredEvents; + private final EventsModel filteredEvents; /** * Constructor @@ -97,7 +97,7 @@ public class ZoomSettingsPane extends TitledPane { typeZoomSlider.setMax(TimelineEventType.HierarchyLevel.values().length - 1); configureSliderListeners(typeZoomSlider, controller::pushEventTypeZoom, - filteredEvents.eventTypeZoomProperty(), + filteredEvents.eventTypesHierarchyLevelProperty(), TimelineEventType.HierarchyLevel.class, TimelineEventType.HierarchyLevel::ordinal, Function.identity()); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomState.java b/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomState.java deleted file mode 100755 index 2588a32cf7..0000000000 --- a/Core/src/org/sleuthkit/autopsy/timeline/zooming/ZoomState.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2013-18 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.timeline.zooming; - -import java.util.Objects; -import org.joda.time.Interval; -import org.sleuthkit.autopsy.timeline.ui.filtering.datamodel.RootFilterState; -import org.sleuthkit.datamodel.TimelineEvent; -import org.sleuthkit.datamodel.TimelineEventType; -import org.sleuthkit.datamodel.TimelineLevelOfDetail; - -/** - * This class encapsulates all the zoom(and filter) parameters into one object - * for passing around and as a memento of the zoom/filter state. - */ -final public class ZoomState { - - private final Interval timeRange; - - private final TimelineEventType.HierarchyLevel typeZoomLevel; - - private final RootFilterState filter; - - private final TimelineLevelOfDetail descrLOD; - - public Interval getTimeRange() { - return timeRange; - } - - public TimelineEventType.HierarchyLevel getTypeZoomLevel() { - return typeZoomLevel; - } - - public RootFilterState getFilterState() { - return filter; - } - - public TimelineLevelOfDetail getDescriptionLOD() { - return descrLOD; - } - - public ZoomState(Interval timeRange, TimelineEventType.HierarchyLevel zoomLevel, RootFilterState filter, TimelineLevelOfDetail descrLOD) { - this.timeRange = timeRange; - this.typeZoomLevel = zoomLevel; - this.filter = filter; - this.descrLOD = descrLOD; - } - - public ZoomState withTimeAndType(Interval timeRange, TimelineEventType.HierarchyLevel zoomLevel) { - return new ZoomState(timeRange, zoomLevel, filter, descrLOD); - } - - public ZoomState withTypeZoomLevel(TimelineEventType.HierarchyLevel zoomLevel) { - return new ZoomState(timeRange, zoomLevel, filter, descrLOD); - } - - public ZoomState withTimeRange(Interval timeRange) { - return new ZoomState(timeRange, typeZoomLevel, filter, descrLOD); - } - - public ZoomState withDescrLOD(TimelineLevelOfDetail descrLOD) { - return new ZoomState(timeRange, typeZoomLevel, filter, descrLOD); - } - - public ZoomState withFilterState(RootFilterState filter) { - return new ZoomState(timeRange, typeZoomLevel, filter, descrLOD); - } - - public boolean hasFilterState(RootFilterState filterSet) { - return this.filter.equals(filterSet); - } - - public boolean hasTypeZoomLevel(TimelineEventType.HierarchyLevel typeZoom) { - return this.typeZoomLevel.equals(typeZoom); - } - - public boolean hasTimeRange(Interval timeRange) { - return this.timeRange != null && this.timeRange.equals(timeRange); - } - - public boolean hasDescrLOD(TimelineLevelOfDetail newLOD) { - return this.descrLOD.equals(newLOD); - } - - @Override - public int hashCode() { - int hash = 3; - hash = 97 * hash + Objects.hashCode(this.timeRange.getStartMillis()); - hash = 97 * hash + Objects.hashCode(this.timeRange.getEndMillis()); - hash = 97 * hash + Objects.hashCode(this.typeZoomLevel); - hash = 97 * hash + Objects.hashCode(this.filter); - hash = 97 * hash + Objects.hashCode(this.descrLOD); - - return hash; - } - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final ZoomState other = (ZoomState) obj; - if (!Objects.equals(this.timeRange, other.timeRange)) { - return false; - } - if (this.typeZoomLevel != other.typeZoomLevel) { - return false; - } - if (this.filter.equals(other.filter) == false) { - return false; - } - return this.descrLOD == other.descrLOD; - } - - @Override - public String toString() { - return "ZoomState{" + "timeRange=" + timeRange + ", typeZoomLevel=" + typeZoomLevel + ", filter=" + filter.getActiveFilter().toString() + ", descrLOD=" + descrLOD + '}'; //NON-NLS - } -} diff --git a/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ja.properties b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ja.properties index bbc1bac4b1..2935be7f4e 100644 --- a/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ja.properties +++ b/CoreLibs/src/org/sleuthkit/autopsy/corelibs/Bundle_ja.properties @@ -1,7 +1,7 @@ -OpenIDE-Module-Display-Category=\u30E9\u30A4\u30D6\u30E9\u30EA -OpenIDE-Module-Name=Autopsy-\u30B3\u30A2\u30E9\u30A4\u30D6\u30E9\u30EA +OpenIDE-Module-Display-Category=\u30e9\u30a4\u30d6\u30e9\u30ea +OpenIDE-Module-Name=Autopsy-\u30b3\u30a2\u30e9\u30a4\u30d6\u30e9\u30ea OpenIDE-Module-Long-Description=\ - \u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB\u7528\u306E\u5916\u90E8\u30E9\u30A4\u30D6\u30E9\u30EA\u3078\u306E\u4F9D\u5B58\u95A2\u4FC2\u3002\n\ - \u30E9\u30A4\u30D6\u30E9\u30EA\u306F\u4ED6\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\u3082\u30A4\u30F3\u30DD\u30FC\u30C8\u3067\u304D\u307E\u3059\u3002 -OpenIDE-Module-Short-Description=Autopsy\u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u5916\u90E8\u30E9\u30A4\u30D6\u30E9\u30EA -SigarLoader.linkErr.msg=Sigar\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u304A\u4F7F\u3044\u306E\u74B0\u5883\u306B\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u91CD\u5927\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3001OS\u30EC\u30D9\u30EB\u306E\u30E1\u30C8\u30EA\u30AF\u30B9\u306F\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002 \ No newline at end of file + \u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\u306e\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u3078\u306e\u4f9d\u5b58\u95a2\u4fc2\u3002\n\ + \u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u3082\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002 +OpenIDE-Module-Short-Description=Autopsy\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea +SigarLoader.linkErr.msg=Sigar\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u304a\u4f7f\u3044\u306e\u74b0\u5883\u306b\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\uff08\u91cd\u5927\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3001OS\u30ec\u30d9\u30eb\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u306f\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3002 diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestDashboardOpenAction.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestDashboardOpenAction.java index b41aca0592..c2b6eada91 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestDashboardOpenAction.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/AutoIngestDashboardOpenAction.java @@ -28,7 +28,7 @@ import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.Logger; @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboardOpenAction") -@ActionReference(path = "Menu/Tools", position = 103) +@ActionReference(path = "Menu/Tools", position = 104) @ActionRegistration(displayName = "#CTL_AutoIngestDashboardOpenAction", lazy = false) @Messages({"CTL_AutoIngestDashboardOpenAction=Auto Ingest Dashboard"}) public final class AutoIngestDashboardOpenAction extends CallableSystemAction { diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ja.properties index 60018f7387..8e158e56e1 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/Bundle_ja.properties @@ -1,32 +1,44 @@ -CopyAnalyzedFiles.committingDb.status=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u30B3\u30DF\u30C3\u30C8\u4E2D -CopyAnalyzedFiles.errPopulating.errMsg=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u60C5\u5831\u3092\u5165\u529B\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -CopyAnalyzedFiles.populatingDb.status=\u89E3\u6790\u6E08\u307F\u306E\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u60C5\u5831\u3092\u5165\u529B\u4E2D -CopyAnalyzedFiles.stopCopy.status=Drawable DB\u30BF\u30B9\u30AF\u3078\u306E\u30B3\u30D4\u30FC\u3092\u505C\u6B62\u4E2D\u3002 -CTL_ImageGalleryAction=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC -CTL_ImageGalleryTopComponent=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC -HINT_ImageGalleryTopComponent=\u3053\u308C\u306F\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059 -ImageGalleryController.InnerTask.message.name=\u30B9\u30C6\u30FC\u30BF\u30B9 -ImageGalleryController.InnerTask.progress.name=\u9032\u884C\u72B6\u6CC1 -ImageGalleryController.noGroupsDlg.msg1=\u5B8C\u5168\u306B\u89E3\u6790\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u3057\u304B\u3057\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u306E\u30EA\u30B9\u30CB\u30F3\u30B0\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u304C\u5B8C\u4E86\u3057\u3001\u30EA\u30B9\u30CB\u30F3\u30B0\u304C\u518D\u5EA6\u6709\u52B9\u5316\u3055\u308C\u306A\u3051\u308C\u3070\u30B0\u30EB\u30FC\u30D7\u304C\u4F7F\u3048\u307E\u305B\u3093\u3002 -ImageGalleryController.noGroupsDlg.msg2=\u5B8C\u5168\u306B\u89E3\u6790\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u304C\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u304C\u307E\u3060\u5B9F\u884C\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002 -ImageGalleryController.noGroupsDlg.msg3=\u5B8C\u5168\u306B\u89E3\u6790\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u304C\u3001\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30C7\u30FC\u30BF\u306E\u60C5\u5831\u3092\u307E\u3060\u5165\u529B\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002 -ImageGalleryController.noGroupsDlg.msg4=\u8FFD\u52A0\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306B\u306F\u4F7F\u3048\u308B\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u3057\u304B\u3057\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u306E\u30EA\u30B9\u30CB\u30F3\u30B0\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u304C\u5B8C\u4E86\u3057\u3001\u30EA\u30B9\u30CB\u30F3\u30B0\u304C\u518D\u5EA6\u6709\u52B9\u5316\u3055\u308C\u306A\u3051\u308C\u3070\u30B0\u30EB\u30FC\u30D7\u304C\u4F7F\u3048\u307E\u305B\u3093\u3002 -ImageGalleryController.noGroupsDlg.msg5=\u8FFD\u52A0\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306B\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u304C\u3042\u308A\u307E\u305B\u3093\u3002 -ImageGalleryController.noGroupsDlg.msg6=\u8868\u793A\u3067\u304D\u308B\u5B8C\u5168\u306B\u89E3\u6790\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u304C\u3042\u308A\u307E\u305B\u3093\uFF1A\u73FE\u5728\u306E\u30B0\u30EB\u30FC\u30D7\u30D0\u30A4\u8A2D\u5B9A\u3067\u306F\u30B0\u30EB\u30FC\u30D7\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u307E\u305F\u306F\u5B8C\u5168\u306B\u89E3\u6790\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u304C\u306A\u3044\u3051\u308C\u3069\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u304C\u5B9F\u884C\u3057\u3066\u3044\u306A\u3044\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002 -ImageGalleryModule.moduleName=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC +AddDrawableFilesTask.populatingDb.status=\u5206\u6790\u6e08\u307f\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5165\u529b\u4e2d\u3067\u3059 +BulkDrawableFilesTask.committingDb.status=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b3\u30df\u30c3\u30c8\u4e2d\u3067\u3059 +BulkDrawableFilesTask.errPopulating.errMsg=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5165\u529b\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002 +BulkDrawableFilesTask.populatingDb.status=\u5206\u6790\u6e08\u307f\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5165\u529b\u4e2d\u3067\u3059 +BulkDrawableFilesTask.stopCopy.status=\u63cf\u753b\u53ef\u80fd\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30b3\u30d4\u30fc\u4f5c\u696d\u3092\u4e2d\u6b62\u4e2d\u3067\u3059\u3002 +CTL_ImageGalleryAction=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30ae\u30e3\u30e9\u30ea\u30fc +CTL_ImageGalleryTopComponent=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30ae\u30e3\u30e9\u30ea\u30fc +DrawableDbTask.InnerTask.message.name=\u30b9\u30c6\u30fc\u30bf\u30b9 +DrawableDbTask.InnerTask.progress.name=\u9032\u6357\u72b6\u6cc1 +ImageGallery.dialogTitle=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +ImageGallery.showTooManyFiles.contentText=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u6570\u304c\u591a\u3059\u304e\u3066\u3001\u76f8\u5fdc\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u4fdd\u8a3c\u3067\u304d\u307e\u305b\u3093\u3002 +ImageGallery.showTooManyFiles.headerText= +ImageGalleryController.dataSourceAnalyzed.confDlg.msg=\ \u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u8ffd\u52a0\u3055\u308c\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\n\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u7d50\u679c\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u66f4\u65b0\u3057\u307e\u3059\u304b?\n +ImageGalleryController.dataSourceAnalyzed.confDlg.title=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +ImageGalleryController.noGroupsDlg.msg1=\u30b0\u30eb\u30fc\u30d7\u306f\u5b8c\u5168\u306b\u5206\u6790\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u30ea\u30c3\u30b9\u30f3\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u3001\u30ea\u30c3\u30b9\u30f3\u304c\u518d\u6709\u52b9\u5316\u3055\u308c\u308b\u307e\u3067\u3001\u30b0\u30eb\u30fc\u30d7\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +ImageGalleryController.noGroupsDlg.msg2=\u30b0\u30eb\u30fc\u30d7\u306f\u5b8c\u5168\u306b\u5206\u6790\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306f\u307e\u3060\u7d99\u7d9a\u4e2d\u3067\u3059\u3002 \u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002 +ImageGalleryController.noGroupsDlg.msg3=\u30b0\u30eb\u30fc\u30d7\u306f\u5b8c\u5168\u306b\u5206\u6790\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u306f\u307e\u3060\u5165\u529b\u4e2d\u3067\u3059\u3002 \u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002 +ImageGalleryController.noGroupsDlg.msg4=\u8ffd\u52a0\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304b\u3089\u5229\u7528\u3067\u304d\u308b\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u30ea\u30c3\u30b9\u30f3\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u3001\u30ea\u30c3\u30b9\u30f3\u304c\u518d\u6709\u52b9\u5316\u3055\u308c\u308b\u307e\u3067\u3001\u30b0\u30eb\u30fc\u30d7\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +ImageGalleryController.noGroupsDlg.msg5=\u8ffd\u52a0\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +ImageGalleryController.noGroupsDlg.msg6=\u8868\u793a\u5bfe\u8c61\u3068\u306a\u308b\u5b8c\u5168\u306b\u5206\u6790\u3055\u308c\u305f\u30b0\u30eb\u30fc\u30d7\u306f\u3042\u308a\u307e\u305b\u3093: \u73fe\u5728\u306e [\u6b21\u3067\u30b0\u30eb\u30fc\u30d7\u5316] \u8a2d\u5b9a\u3067\u30b0\u30eb\u30fc\u30d7\u304c\u751f\u6210\u3055\u308c\u306a\u304b\u3063\u305f\u304b\u3001\u30b0\u30eb\u30fc\u30d7\u306f\u5b8c\u5168\u306b\u5206\u6790\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306f\u5b9f\u884c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +ImageGalleryModule.moduleName=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +ImageGalleryService.openCaseResources.progressMessage.finish=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u304d\u307e\u3057\u305f\u3002 +ImageGalleryService.openCaseResources.progressMessage.start=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3044\u3066\u3044\u307e\u3059... +ImageGalleryService.serviceName=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u66f4\u65b0\u30b5\u30fc\u30d3\u30b9 +ImageGalleryTopComponent.chooseDataSourceDialog.all=\u3059\u3079\u3066 +ImageGalleryTopComponent.chooseDataSourceDialog.contentText=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9: +ImageGalleryTopComponent.chooseDataSourceDialog.headerText=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3057\u307e\u3059\u3002 +ImageGalleryTopComponent.chooseDataSourceDialog.titleText=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc OpenIDE-Module-Long-Description=\ - \u30A4\u30E1\u30FC\u30B8\u304C\u591A\u3044\u8ABF\u67FB\u3092\u3088\u308A\u52B9\u7387\u7684\u306B\u884C\u3048\u308B\u3088\u3046\u306B\u8A2D\u8A08\u3055\u308C\u305F\u3001\u65B0\u3057\u3044\u30A4\u30E1\u30FC\u30B8\u304A\u3088\u3073\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u3067\u3059\u3002\ - \u3053\u308C\u306FDHS S&T\u304C\u652F\u63F4\u3057\u3001\u30D9\u30FC\u30BF\u7248\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u3059\u3002\ - sleuthkit.org\u3067\u306F\u307E\u3060\u5165\u624B\u3067\u304D\u305A\u3001\u9650\u3089\u308C\u305F\u30E6\u30FC\u30B6\u30FC\u306B\u3057\u304B\u63D0\u4F9B\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 -OpenIDE-Module-Name=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC -OpenIDE-Module-Short-Description=\u30A2\u30C9\u30D0\u30F3\u30B9\u30A4\u30E1\u30FC\u30B8\u304A\u3088\u3073\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC -ImageGalleryOptionsPanel.enabledForCaseBox.text=\u4F5C\u696D\u4E2D\u306E\u30B1\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u306E\u66F4\u65B0\u3092\u6709\u52B9\u5316\u3059\u308B\u3002 -ImageGalleryOptionsPanel.enabledByDefaultBox.text=\u30C7\u30D5\u30A9\u30EB\u30C8\u8A2D\u5B9A\u3068\u3057\u3066\u65B0\u3057\u3044\u30B1\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u3092\u6709\u52B9\u5316\u3059\u308B\u3002 -ImageGalleryOptionsPanel.enabledForCaseBox.toolTipText=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u7121\u52B9\u306A\u5834\u5408\u3001\u66F4\u65B0\u304C\u5FC5\u8981\u3068\u3044\u3046\u3053\u3068\u3060\u3051\u8A18\u9332\u3055\u308C\u307E\u3059\u3002\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u5F8C\u306B\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u306E\u7D50\u679C\u3092\u5143\u306B\u4E00\u5EA6\u306B\u307E\u3068\u3081\u3066\u66F4\u65B0\u3092\u3057\u307E\u3059\u3002\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u7121\u52B9\u306E\u5834\u5408\u3001\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u958B\u3053\u3046\u3068\u3057\u305F\u969B\u306B\u6709\u52B9\u5316\u3059\u308B\u3088\u3046\u306B\u6307\u793A\u3055\u308C\u307E\u3059\u3002 -ImageGalleryOptionsPanel.descriptionLabel.text=\u30B9\u30BF\u30FC\u30C8\u30A2\u30C3\u30D7\u6642\u9593\u3092\u6700\u5C0F\u9650\u306B\u3059\u308B\u305F\u3081\u3001\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u306F\u7D99\u7D9A\u7684\u306B\u5185\u90E8\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
    \u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u306E\u6A5F\u80FD\u304C\u5FC5\u8981\u3067\u306A\u3044\u5834\u5408\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3092\u9045\u304F\u3059\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
    \u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u5FC5\u8981\u3067\u306A\u3044\u5834\u5408\u3001\u3053\u306E\u8A2D\u5B9A\u3092\u4F7F\u3044\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u3092\u7121\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -ImageGalleryOptionsPanel.furtherDescriptionArea.text=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u7121\u52B9\u306A\u5834\u5408\u3001\u66F4\u65B0\u304C\u5FC5\u8981\u3068\u3044\u3046\u3053\u3068\u3060\u3051\u8A18\u9332\u3055\u308C\u307E\u3059\u3002\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u5F8C\u306B\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u306E\u7D50\u679C\u3092\u5143\u306B\u4E00\u5EA6\u306B\u307E\u3068\u3081\u3066\u66F4\u65B0\u3092\u3057\u307E\u3059\u3002\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u304C\u7121\u52B9\u306E\u5834\u5408\u3001\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u958B\u3053\u3046\u3068\u3057\u305F\u969B\u306B\u6709\u52B9\u5316\u3059\u308B\u3088\u3046\u306B\u6307\u793A\u3055\u308C\u307E\u3059\u3002 -ImageGalleryOptionsPanel.unavailableDuringInjestLabel.text=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u4E2D\u306F\u3053\u306E\u8A2D\u5B9A\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002 -OptionsCategory_Keywords_Options=\u30A4\u30E1\u30FC\u30B8\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u30AB\u30C6\u30B4\u30EA\u30FC -OptionsCategory_Name_Options=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC -PrePopulateDataSourceFiles.committingDb.status=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u30B3\u30DF\u30C3\u30C8\u4E2D -PrePopulateDataSourceFiles.prepopulatingDb.status=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u306B\u60C5\u5831\u3092\u4E8B\u524D\u306B\u5165\u529B\u4E2D \ No newline at end of file + \u30a4\u30e1\u30fc\u30b8\u96c6\u4e2d\u8abf\u67fb\u306e\u5b9f\u884c\u3092\u3088\u308a\u52b9\u7387\u7684\u306b\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u305f\u3001\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3068\u52d5\u753b\u306e\u30ae\u30e3\u30e9\u30ea\u30fc\u3067\u3059\u3002 \ + \u3053\u306e\u4f5c\u54c1\u306fDHS S&T\u306e\u8cc7\u91d1\u63f4\u52a9\u3092\u53d7\u3051\u3066\u3044\u307e\u3059\u3002\u306a\u304a\u3001\u3053\u308c\u306f\u30d9\u30fc\u30bf\u30ea\u30ea\u30fc\u30b9\u3067\u3059\u3002\ + sleuthkit.org\u30b5\u30a4\u30c8\u304b\u3089\u5165\u624b\u3067\u304d\u307e\u305b\u3093\u3002\u9650\u5b9a\u30e6\u30fc\u30b6\u30fc\u306b\u914d\u5e03\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +OpenIDE-Module-Name=ImageGallery +OpenIDE-Module-Short-Description=\u9ad8\u5ea6\u306a\u30a4\u30e1\u30fc\u30b8\u3068\u52d5\u753b\u306e\u30ae\u30e3\u30e9\u30ea\u30fc +ImageGalleryOptionsPanel.enabledForCaseBox.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u66f4\u65b0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u3002 +ImageGalleryOptionsPanel.enabledByDefaultBox.text=\u65b0\u3057\u3044\u30b1\u30fc\u30b9\u306e\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9\u5316\u3057\u307e\u3059\u3002 +ImageGalleryOptionsPanel.enabledForCaseBox.toolTipText=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u304c\u7121\u52b9\u306e\u5834\u5408\u3001\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3042\u308b\u3068\u3044\u3046\u4e8b\u5b9f\u3060\u3051\u304c\u8a18\u9332\u3055\u308c\u307e\u3059\u3002 \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5f8c\u306b\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3057\u305f\u5834\u5408\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u4e00\u62ec\u66f4\u65b0\u30921\u56de\u884c\u3044\u307e\u3059\u3002 \u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u304c\u7121\u52b9\u306e\u5834\u5408\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u958b\u3053\u3046\u3068\u8a66\u307f\u308b\u3068\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3059\u308b\u3088\u3046\u4fc3\u3055\u308c\u307e\u3059\u3002 +ImageGalleryOptionsPanel.descriptionLabel.text=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u8d77\u52d5\u6642\u9593\u3092\u6700\u5c0f\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u5185\u90e8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u5e38\u6642\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002
    \u3053\u308c\u306b\u3088\u308a\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u6a5f\u80fd\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u5834\u5408\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
    \u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u7121\u52b9\u5316\u3057\u307e\u3059\u3002 +ImageGalleryOptionsPanel.furtherDescriptionArea.text=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u304c\u7121\u52b9\u306e\u5834\u5408\u3001\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3042\u308b\u3068\u3044\u3046\u4e8b\u5b9f\u3060\u3051\u304c\u8a18\u9332\u3055\u308c\u307e\u3059\u3002 \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5f8c\u306b\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3057\u305f\u5834\u5408\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u4e00\u62ec\u66f4\u65b0\u30921\u56de\u884c\u3044\u307e\u3059\u3002 \u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u304c\u7121\u52b9\u306e\u5834\u5408\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u958b\u3053\u3046\u3068\u8a66\u307f\u308b\u3068\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3059\u308b\u3088\u3046\u4fc3\u3055\u308c\u307e\u3059\u3002 +ImageGalleryOptionsPanel.unavailableDuringInjestLabel.text=\u3053\u306e\u8a2d\u5b9a\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +ImageGalleryOptionsPanel.groupCategorizationWarningBox.text=\u30b0\u30eb\u30fc\u30d7\u5168\u4f53\u306b\u52b9\u529b\u3092\u6301\u305f\u305b\u308b\u3053\u3068\u3067\u3001\u30ab\u30c6\u30b4\u30ea\u30fc\u306e\u4e0a\u66f8\u304d\u4e2d\u306b\u8b66\u544a\u3092\u8868\u793a\u3057\u307e\u305b\u3093\u3002 +CTL_OpenAction=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u3092\u958b\u304f +OptionsCategory_Keywords_Options=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30ab\u30c6\u30b4\u30ea\u30fc +OptionsCategory_Name_Options=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30ae\u30e3\u30e9\u30ea\u30fc diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ja.properties index 122bcaf610..06c4149dec 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/actions/Bundle_ja.properties @@ -1,23 +1,42 @@ -AddDrawableTagAction.addTagsToFiles.alert={0}\u30D5\u30A1\u30A4\u30EB\u3092\u30BF\u30B0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -AddDrawableTagAction.displayName.plural=\u30D5\u30A1\u30A4\u30EB\u3092\u30BF\u30B0 -AddDrawableTagAction.displayName.singular=\u30D5\u30A1\u30A4\u30EB\u3092\u30BF\u30B0 -AddTagAction.menuItem.newTag=\u65B0\u898F\u30BF\u30B0... -AddTagAction.menuItem.noTags=\u30BF\u30B0\u7121\u3057 -AddTagAction.menuItem.quickTag=\u30AF\u30A4\u30C3\u30AF\u30BF\u30B0 -AddTagAction.menuItem.tagAndComment=\u30BF\u30B0\uFF0F\u30B3\u30E1\u30F3\u30C8\u3059\u308B... -Back_diplayName=\u623B\u308B -CategorizeAction.displayName=\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA -CategorizeTask.errorUnable.msg={0}\u3092\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -CategorizeTask.errorUnable.title=\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\u30A8\u30E9\u30FC -CTL_OpenAction=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u3092\u8868\u793A -CTL_OpenHelpAction=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u30D8\u30EB\u30D7 -DeleteFollwUpTagAction.displayName=\u30D5\u30A9\u30ED\u30FC\u30A2\u30C3\u30D7\u30BF\u30B0\u3092\u524A\u9664 +# {0} - fileID +AddDrawableTagAction.addTagsToFiles.alert=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +AddDrawableTagAction.displayName.plural=\u30d5\u30a1\u30a4\u30eb\u3092\u30bf\u30b0\u4ed8\u3051 +AddDrawableTagAction.displayName.singular=\u30d5\u30a1\u30a4\u30eb\u3092\u30bf\u30b0\u4ed8\u3051 +AddTagAction.menuItem.newTag=\u65b0\u898f\u30bf\u30b0... +AddTagAction.menuItem.noTags=\u30bf\u30b0\u306a\u3057 +AddTagAction.menuItem.quickTag=\u30af\u30a4\u30c3\u30af\u30bf\u30b0 +AddTagAction.menuItem.tagAndComment=\u30bf\u30b0\u3068\u30b3\u30e1\u30f3\u30c8... +Back_diplayName=\u623b\u308b +CategorizeAction.displayName=\u5206\u985e +# {0} - fileID\u756a\u53f7 +CategorizeDrawableFileTask.errorUnable.msg={0} \u3092\u5206\u985e\u3067\u304d\u307e\u305b\u3093\u3002 +CategorizeDrawableFileTask.errorUnable.title=\u30a8\u30e9\u30fc\u3092\u5206\u985e\u4e2d\u3067\u3059 +CategorizeGroupAction.dontShowAgain=\u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u518d\u8868\u793a\u3057\u306a\u3044 +CategorizeGroupAction.fileCountHeader=\u6b21\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u81ea\u8eab\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059: +# {0} - \u305d\u306e\u30ab\u30c6\u30b4\u30ea\u30fc\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u6570 +# {1} - \u30ab\u30c6\u30b4\u30ea\u30fc\u540d +CategorizeGroupAction.fileCountMessage={1} \u3092\u6301\u3064 {0} +CategorizeGroupAction.OverwriteButton.text=\u4e0a\u66f8\u304d +CTL_AddImage=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u3092\u8868\u793a +CTL_OpenAction=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b +# {0} - fileID +DeleteDrawableTagAction.deleteTag.alert=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 +DeleteDrawableTagAction.displayName=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u524a\u9664 +DeleteFollwUpTagAction.displayName=\u30d5\u30a9\u30ed\u30fc\u30a2\u30c3\u30d7\u30bf\u30b0\u3092\u524a\u9664 Forward.displayName=\u9032\u3080 -MediaViewImagePanel.externalViewerButton.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u30FC\u3067\u958B\u304F -NextUnseenGroup.markGroupSeen=\u78BA\u8A8D\u6E08\u307F\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u30DE\u30FC\u30AF\u3059\u308B -NextUnseenGroup.nextUnseenGroup=\u6B21\u306E\u672A\u78BA\u8A8D\u306E\u30B0\u30EB\u30FC\u30D7 -OpenAction.stale.confDlg.msg=\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304C\u6700\u65B0\u3067\u306F\u306A\u3044\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002\u66F4\u65B0\u3057\u3066\u3001\u65B0\u305F\u306A\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u307E\u3059\u304B\uFF1F\n\u300C\u306F\u3044\u300D\u3092\u9078\u629E\u3059\u308C\u3070\u3001\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3092\u66F4\u65B0\u3057\u3001\u65B0\u305F\u306A\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3092\u78BA\u8A8D\u3059\u308B\u3053\u3068\u304C\u53EF\u80FD\u306B\u306A\u308A\u307E\u3059\u3002 -OpenAction.stale.confDlg.title=\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC -OpenExternalViewerAction.displayName=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u30FC -RedoAction.name=\u518D\u5B9F\u884C -UndoAction.displayName=\u53D6\u308A\u6D88\u3057 \ No newline at end of file +MediaViewImagePanel.externalViewerButton.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f +NextUnseenGroup.allGroupsSeen=\u3059\u3079\u3066\u306e\u30b0\u30eb\u30fc\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3057\u305f +NextUnseenGroup.markGroupSeen=\u8868\u793a\u3057\u305f\u30b0\u30eb\u30fc\u30d7\u3092\u30de\u30fc\u30af\u3059\u308b +NextUnseenGroup.nextUnseenGroup=\u6b21\u306e\u975e\u8868\u793a\u30b0\u30eb\u30fc\u30d7 +OpenAction.dialogTitle=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +OpenAction.multiUserDialog.checkBox.text=\u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u518d\u8868\u793a\u3057\u307e\u305b\u3093\u3002 +OpenAction.multiUserDialog.ContentText=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306f\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3068\u306f\u7570\u306a\u308b\u65b9\u6cd5\u3067\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u306b\u5bfe\u3057\u3066\u66f4\u65b0\u3057\u307e\u3059\u3002\u9855\u8457:\n\nIf \u304a\u4f7f\u3044\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u5206\u6790\u4e2d\u3067\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u304c\u5206\u6790\u3055\u308c\u308b\u3068(\u30cf\u30c3\u30b7\u30e5\u5316\u3001EXIF\u306a\u3069)\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u66f4\u65b0\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3068\u540c\u3058\u6319\u52d5\u3067\u3059\u3002\n\nIf \u6240\u5c5e\u5148\u306e\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u5225\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u5206\u6790\u4e2d\u3067\u3059\u3002\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u8d77\u52d5\u3059\u308b\u3068\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u4e0a\u306e\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u305d\u306e\u4ed6\u306e\u30ce\u30fc\u30c9\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u30ed\u30fc\u30ab\u30eb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u518d\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002 +OpenAction.multiUserDialog.Header=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u306e\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +OpenAction.noControllerDialog.header=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u958b\u3051\u307e\u305b\u3093 +OpenAction.noControllerDialog.text=\u521d\u671f\u5316\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\n\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +OpenAction.notAnalyzedDlg.msg=\u8868\u793a\u5bfe\u8c61\u3068\u306a\u308b\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30d5\u30a1\u30a4\u30eb\u304c\u307e\u3060\u3042\u308a\u307e\u305b\u3093\u3002\nFileType\u307e\u305f\u306fEXIF\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +OpenAction.stale.confDlg.msg=\u30a4\u30e1\u30fc\u30b8/\u52d5\u753b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u66f4\u65b0\u3057\u3066\u3055\u3089\u306a\u308b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u7d50\u679c\u3092\u30ea\u30c3\u30b9\u30f3\u3057\u307e\u3059\u304b?\n [\u306f\u3044] \u3092\u9078\u629e\u3059\u308b\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u66f4\u65b0\u3055\u308c\u3001\u3055\u3089\u306a\u308b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u30ea\u30c3\u30b9\u30f3\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 +OpenAction.stale.confDlg.title=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +OpenExternalViewerAction.displayName=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc +RedoAction.name=\u3084\u308a\u76f4\u3057 +UndoAction.displayName=\u5143\u306b\u623b\u3059 diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ja.properties index dca1145fd0..e611c05780 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/Bundle_ja.properties @@ -1,23 +1,18 @@ -Category.five=CAT-5\uFF1A\u95A2\u9023\u7121\u3057 -Category.four=CAT-4\uFF1A\u898B\u672C\uFF0F\u6BD4\u8F03\u5BFE\u8C61\uFF08\u5185\u90E8\u4F7F\u7528\u306E\u307F\uFF09 -Category.one=CAT-1\uFF1A\u5150\u7AE5\u643E\u53D6\uFF08\u9055\u6CD5\uFF09 -Category.three=CAT-3\uFF1ACGI/\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\uFF08\u5150\u7AE5\u643E\u53D6\u7684\u306A\uFF09 -Category.two=CAT-2\uFF1A\u5150\u7AE5\u643E\u53D6\uFF08\u5408\u6CD5\uFF0F\u5E74\u9F62\u4E0D\u660E\uFF09 -Category.zero=CAT-0\uFF1A\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\u3055\u308C\u3066\u3044\u306A\u3044 -DrawableAttribute.analyzed=\u89E3\u6790\u6E08\u307F -DrawableAttribute.cameraMake=\u30AB\u30E1\u30E9\u88FD\u9020\u8005 -DrawableAttribute.cameraModel=\u30AB\u30E1\u30E9\u578B\u756A -DrawableAttribute.category=\u30AB\u30C6\u30B4\u30EA\u30FC -DrawableAttribute.createdTime=\u4F5C\u6210\u65E5\u6642 -DrawableAttribute.hashSet=\u30CF\u30C3\u30B7\u30E5\u30BB\u30C3\u30C8 -DrawableAttribute.height=\u9AD8\u3055 -DrawableAttribute.intObjID=\u5185\u90E8\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8ID -DrawableAttribute.md5hash=MD\uFF15\u30CF\u30C3\u30B7\u30E5 -DrawableAttribute.mimeType=MIME\u30BF\u30A4\u30D7 -DrawableAttribute.modifiedTime=\u4FEE\u6B63\u65E5\u6642 -DrawableAttribute.name=\u540D\u524D -DrawableAttribute.path=\u30D1\u30B9 -DrawableAttribute.tags=\u30BF\u30B0 -DrawableAttribute.width=\u5E45 -DrawableTagsManager.followUp=\u30D5\u30A9\u30ED\u30FC\u30A2\u30C3\u30D7 -VideoFile.getMedia.progress=\u30C7\u30A3\u30B9\u30AF\u306B\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u307F\u4E2D \ No newline at end of file +DrawableAttribute.analyzed=\u5206\u6790\u6e08\u307f +DrawableAttribute.cameraMake=\u30ab\u30e1\u30e9\u578b\u5f0f +DrawableAttribute.cameraModel=\u30ab\u30e1\u30e9\u30e2\u30c7\u30eb +DrawableAttribute.category=\u30ab\u30c6\u30b4\u30ea\u30fc +DrawableAttribute.createdTime=\u4f5c\u6210\u6e08\u307f\u6642\u523b +DrawableAttribute.hashSet=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +DrawableAttribute.height=\u9ad8\u3055 +DrawableAttribute.intObjID=\u5185\u90e8\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID +DrawableAttribute.md5hash=MD5\u30cf\u30c3\u30b7\u30e5 +DrawableAttribute.mimeType=MIME\u30bf\u30a4\u30d7 +DrawableAttribute.modifiedTime=\u4fee\u6b63\u6e08\u307f\u6642\u523b +DrawableAttribute.name=\u540d\u524d +DrawableAttribute.path=\u30d1\u30b9 +DrawableAttribute.tags=\u30bf\u30b0 +DrawableAttribute.width=\u5e45 +DrawableTagsManager.bookMark=\u30d6\u30c3\u30af\u30de\u30fc\u30af +DrawableTagsManager.followUp=\u30d5\u30a9\u30ed\u30fc\u30a2\u30c3\u30d7 +VideoFile.getMedia.progress=\u4e00\u6642\u30d5\u30a1\u30a4\u30eb\u306b\u30c7\u30a3\u30b9\u30af\u3092\u66f8\u304d\u8fbc\u307f\u4e2d\u3067\u3059 diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableDB.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableDB.java index 3e409f97fc..bae9894de9 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableDB.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/DrawableDB.java @@ -270,12 +270,10 @@ public final class DrawableDB { private boolean prepareStatements() { try { - selectCountDataSourceIDs = prepareStatement("SELECT COUNT(*) FROM datasources WHERE ds_obj_id = ?"); //NON-NLS - insertDataSourceStmt = prepareStatement("INSERT INTO datasources (ds_obj_id, drawable_db_build_status) VALUES (?,?)"); //NON-NLS - updateDataSourceStmt = prepareStatement("UPDATE datasources SET drawable_db_build_status = ? WHERE ds_obj_id = ?"); //NON-NLS + insertDataSourceStmt = prepareStatement("INSERT INTO datasources (ds_obj_id, drawable_db_build_status) VALUES (?,?) ON CONFLICT (ds_obj_id) DO UPDATE SET drawable_db_build_status = ?"); //NON-NLS deleteDataSourceStmt = prepareStatement("DELETE FROM datasources where ds_obj_id = ?"); //NON-NLS insertFileStmt = prepareStatement("INSERT OR IGNORE INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed) VALUES (?,?,?,?,?,?,?,?,?)"); //NON-NLS - updateFileStmt = prepareStatement("INSERT OR REPLACE INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed) VALUES (?,?,?,?,?,?,?,?,?)"); //NON-NLS + updateFileStmt = prepareStatement("INSERT INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed) VALUES (?,?,?,?,?,?,?,?,?) ON CONFLICT (obj_id) DO UPDATE SET data_source_obj_id = ?, path = ?, name = ?, created_time = ?, modified_time = ?, make = ?, model = ?, analyzed = ?"); //NON-NLS deleteFileStmt = prepareStatement("DELETE FROM drawable_files WHERE obj_id = ?"); //NON-NLS insertHashSetStmt = prepareStatement("INSERT OR IGNORE INTO hash_sets (hash_set_name) VALUES (?)"); //NON-NLS selectHashSetStmt = prepareStatement("SELECT hash_set_id FROM hash_sets WHERE hash_set_name = ?"); //NON-NLS @@ -1561,21 +1559,50 @@ public final class DrawableDB { dbWriteLock(); try { - // "INSERT OR IGNORE/ INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed)" - stmt.setLong(1, f.getId()); - stmt.setLong(2, f.getAbstractFile().getDataSourceObjectId()); - stmt.setString(3, f.getDrawablePath()); - stmt.setString(4, f.getName()); - stmt.setLong(5, f.getCrtime()); - stmt.setLong(6, f.getMtime()); - if (hasExif) { - stmt.setString(7, f.getMake()); - stmt.setString(8, f.getModel()); + if (addGroups) { + // "INSERT INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed) VALUES (?,?,?,?,?,?,?,?,?) ON CONFLICT (obj_id) DO UPDATE SET data_source_obj_id = ?, path = ?, name = ?, created_time = ?, modified_time = ?, make = ?, model = ?, analyzed = ?" + stmt.setLong(1, f.getId()); + stmt.setLong(2, f.getAbstractFile().getDataSourceObjectId()); + stmt.setLong(10, f.getAbstractFile().getDataSourceObjectId()); + stmt.setString(3, f.getDrawablePath()); + stmt.setString(11, f.getDrawablePath()); + stmt.setString(4, f.getName()); + stmt.setString(12, f.getName()); + stmt.setLong(5, f.getCrtime()); + stmt.setLong(13, f.getCrtime()); + stmt.setLong(6, f.getMtime()); + stmt.setLong(14, f.getMtime()); + if (hasExif) { + stmt.setString(7, f.getMake()); + stmt.setString(15, f.getMake()); + stmt.setString(8, f.getModel()); + stmt.setString(16, f.getModel()); + } else { + stmt.setString(7, ""); + stmt.setString(15, ""); + stmt.setString(8, ""); + stmt.setString(16, ""); + } + stmt.setBoolean(9, f.isAnalyzed()); + stmt.setBoolean(17, f.isAnalyzed()); } else { - stmt.setString(7, ""); - stmt.setString(8, ""); + // "INSERT OR IGNORE/ INTO drawable_files (obj_id, data_source_obj_id, path, name, created_time, modified_time, make, model, analyzed)" + stmt.setLong(1, f.getId()); + stmt.setLong(2, f.getAbstractFile().getDataSourceObjectId()); + stmt.setString(3, f.getDrawablePath()); + stmt.setString(4, f.getName()); + stmt.setLong(5, f.getCrtime()); + stmt.setLong(6, f.getMtime()); + if (hasExif) { + stmt.setString(7, f.getMake()); + stmt.setString(8, f.getModel()); + } else { + stmt.setString(7, ""); + stmt.setString(8, ""); + } + stmt.setBoolean(9, f.isAnalyzed()); } - stmt.setBoolean(9, f.isAnalyzed()); + stmt.executeUpdate(); // Update the list of file IDs in memory @@ -1716,22 +1743,11 @@ public final class DrawableDB { public void insertOrUpdateDataSource(long dataSourceObjectID, DrawableDbBuildStatusEnum status) throws SQLException { dbWriteLock(); try { - // SELECT COUNT(*) FROM datasources WHERE ds_obj_id = ? - selectCountDataSourceIDs.setLong(1, dataSourceObjectID); - try (ResultSet resultSet = selectCountDataSourceIDs.executeQuery()) { - resultSet.next(); - if (resultSet.getInt(1) == 0) { - // INSERT INTO datasources (ds_obj_id, drawable_db_build_status) VALUES (?,?) - insertDataSourceStmt.setLong(1, dataSourceObjectID); - insertDataSourceStmt.setString(2, status.name()); - insertDataSourceStmt.execute(); - } else { - // UPDATE datasources SET drawable_db_build_status = ? WHERE ds_obj_id = ? - updateDataSourceStmt.setString(1, status.name()); - updateDataSourceStmt.setLong(2, dataSourceObjectID); - updateDataSourceStmt.executeUpdate(); - } - } + // INSERT INTO datasources (ds_obj_id, drawable_db_build_status) values (?,?) ON CONFLICT(ds_obj_id) DO UPDATE SET drawable_db_build_status = ?; + insertDataSourceStmt.setLong(1, dataSourceObjectID); + insertDataSourceStmt.setString(2, status.name()); + insertDataSourceStmt.setString(3, status.name()); + insertDataSourceStmt.executeUpdate(); } finally { dbWriteUnlock(); } @@ -2150,6 +2166,7 @@ public final class DrawableDB { throw ex; } finally { dbWriteUnlock(); + } } diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ja.properties index 5dc38728de..8038238888 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/datamodel/grouping/Bundle_ja.properties @@ -1,6 +1,6 @@ -GroupSortBy.groupName=\u30B0\u30EB\u30FC\u30D7\u540D -GroupSortBy.groupSize=\u30B0\u30EB\u30FC\u30D7\u30B5\u30A4\u30BA -GroupSortBy.none=\u7121\u3057 -GroupSortBy.priority=\u512A\u5148\u5EA6 -ReGroupTask.displayTitle={0}\u306B\u57FA\u3065\u3044\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u5EA6\u30B0\u30EB\u30FC\u30D7\u5316\u3002{2}\u306E\u9806\u756A\u3067{1}\u306B\u3088\u308A\u30BD\u30FC\u30C8\u3002 -ReGroupTask.progressUpdate={0} \: {1}\u306B\u57FA\u3065\u3044\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u518D\u5EA6\u30B0\u30EB\u30FC\u30D7\u5316 \ No newline at end of file +GroupSortBy.groupName=\u30b0\u30eb\u30fc\u30d7\u540d +GroupSortBy.groupSize=\u30b0\u30eb\u30fc\u30d7\u30b5\u30a4\u30ba +GroupSortBy.none=\u306a\u3057 +GroupSortBy.priority=\u512a\u5148\u5ea6 +# {0} - groupBy\u5c5e\u6027\u540d +ReGroupTask.displayTitle={0} \u3067\u518d\u30b0\u30eb\u30fc\u30d7\u5316\u4e2d\u3067\u3059: diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ja.properties index 7a18ada46d..5b68e9874b 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/Bundle_ja.properties @@ -1,13 +1,20 @@ -StatuBar.toolTip=\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u6700\u65B0\u3067\u306F\u306A\u3044\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u30C7\u30FC\u30BF\u3092\u66F4\u65B0\u3059\u308B\u305F\u3081\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u304C\u5B8C\u4E86\u5F8C\u30C4\u30FC\u30EB|\u30AA\u30D7\u30B7\u30E7\u30F3|\u30A4\u30E1\u30FC\u30B8\uFF0F\u30D3\u30C7\u30AA\u30AE\u30E3\u30E9\u30EA\u30FC\u3067\u30A4\u30E1\u30FC\u30B8\u30AE\u30E3\u30E9\u30EA\u30FC\u3092\u6709\u52B9\u5316\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -StatusBar.bgTaskLabel.text=\u518D\u5EA6\u30B0\u30EB\u30FC\u30D7\u5316 -StatusBar.fileUpdateTaskLabel.text=\u30D5\u30A1\u30A4\u30EB\u66F4\u65B0\u30BF\u30B9\u30AF -SummaryTablePane.catColumn=\u30AB\u30C6\u30B4\u30EA\u30FC -SummaryTablePane.countColumn=\#\u30D5\u30A1\u30A4\u30EB -Toolbar.ascRadio=\u30A2\u30BB\u30F3\u30C9\uFF08\u4E0B\u304B\u3089\u4E0A\u3078\uFF09 -Toolbar.categoryImageViewLabel=\u30B0\u30EB\u30FC\u30D7\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\uFF1A -Toolbar.descRadio=\u30C7\u30A3\u30BB\u30F3\u30C9\uFF08\u4E0A\u304B\u3089\u4E0B\u3078\uFF09 -Toolbar.groupByLabel=\u30B0\u30EB\u30FC\u30D7\u30D0\u30A4\uFF1A -Toolbar.sortByLabel=\u30BD\u30FC\u30C8\u30D0\u30A4\uFF1A -Toolbar.tagImageViewLabel=\u30B0\u30EB\u30FC\u30D7\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30BF\u30B0\uFF1A -Toolbar.thumbnailSizeLabel=\u30B5\u30E0\u30CD\u30A4\u30EB\u30B5\u30A4\u30BA\uFF08px\uFF09\uFF1A -VideoPlayer.errNotice={0}\n\u8A73\u7D30\u3092\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 \ No newline at end of file +StatuBar.toolTip=\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u6700\u65b0\u3067\u306f\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b8c\u4e86\u5f8c\u3001[\u30c4\u30fc\u30eb] | [\u30aa\u30d7\u30b7\u30e7\u30f3] | [\u30a4\u30e1\u30fc\u30b8 / \u52d5\u753b\u30ae\u30e3\u30e9\u30ea\u30fc] \u3067 [\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc] \u3092\u6709\u52b9\u306b\u3057\u3001\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002 +StatusBar.bgTaskLabel.text=\u518d\u30b0\u30eb\u30fc\u30d7\u5316\u4e2d\u3067\u3059 +StatusBar.fileUpdateTaskLabel.text=\ \u30d5\u30a1\u30a4\u30eb\u66f4\u65b0\u30bf\u30b9\u30af +SummaryTablePane.catColumn=\u30ab\u30c6\u30b4\u30ea\u30fc +SummaryTablePane.countColumn=\# \u30d5\u30a1\u30a4\u30eb +Toolbar.ascRadio=\u6607\u9806 +Toolbar.categoryImageViewLabel=\u30b0\u30eb\u30fc\u30d7\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u985e: +Toolbar.descRadio=\u964d\u9806 +Toolbar.getDataSources.errMessage=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 +Toolbar.groupByLabel=\u6b21\u3067\u30b0\u30eb\u30fc\u30d7\u5316: +Toolbar.nonPathGroupingWarning.content=\u518d\u30b0\u30eb\u30fc\u30d7\u5316\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b? +Toolbar.nonPathGroupingWarning.header=\u30d1\u30b9\u4ee5\u5916\u306e\u5c5e\u6027\u306b\u3088\u308b\u30b0\u30eb\u30fc\u30d7\u5316\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\n\u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u30b0\u30eb\u30fc\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 +Toolbar.nonPathGroupingWarning.title=\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc +Toolbar.sortByLabel=\u6b21\u3067\u30bd\u30fc\u30c8: +Toolbar.sortHelp=\u30bd\u30fc\u30c8\u9806(\u6607\u9806/\u964d\u9806)\u306f\u30a4\u30e1\u30fc\u30b8\u30ae\u30e3\u30e9\u30ea\u30fc\u304c\u7dad\u6301\u3059\u308b\u975e\u8868\u793a\u30b0\u30eb\u30fc\u30d7\u306e\u30ad\u30e5\u30fc\u306b\u5f71\u97ff\u3057\u307e\u3059\u304c\u3001\u3053\u306e\u30ad\u30e5\u30fc\u3078\u306e\u5909\u66f4\u306f[\u6b21\u306e\u975e\u8868\u793a\u30b0\u30eb\u30fc\u30d7]\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u308b\u307e\u3067\u660e\u3089\u304b\u306b\u306a\u308a\u307e\u305b\u3093\u3002 +Toolbar.sortHelpTitle=\u30b0\u30eb\u30fc\u30d7\u306e\u4e26\u3079\u66ff\u3048 +Toolbar.tagImageViewLabel=\u30b0\u30eb\u30fc\u30d7\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30bf\u30b0\u4ed8\u3051: +Toolbar.thumbnailSizeLabel=\u30b5\u30e0\u30cd\u30a4\u30eb\u30b5\u30a4\u30ba(px): +# {0} - \u4f8b\u5916\u30bf\u30a4\u30d7 +VideoPlayer.errNotice={0}\n\u8a73\u7d30\u306f\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ja.properties index 2d5f17cc1c..5a7a8f3b89 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/drawableviews/Bundle_ja.properties @@ -1,18 +1,24 @@ -DrawableTileBase.externalViewerAction.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u30FC\u3067\u958B\u304F -DrawableTileBase.menuItem.extractFiles=\u30D5\u30A1\u30A4\u30EB\u3092\u62BD\u51FA -DrawableTileBase.menuItem.showContentViewer=\u30B3\u30F3\u30C6\u30F3\u30C4\u30D3\u30E5\u30FC\u30A2\u30FC\u3092\u8868\u793A -DrawableUIBase.errorLabel.OOMText=\u30E1\u30E2\u30EA\u4E0D\u8DB3 -DrawableUIBase.errorLabel.text=\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F -GroupPane.bottomLabel.displayText=\u30B0\u30EB\u30FC\u30D7\u30D3\u30E5\u30FC\u30A4\u30F3\u30B0\u5C65\u6B74\uFF1A -GroupPane.catContainerLabel.displayText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\uFF1A -GroupPane.catHeadingLabel.displayText=\u30AB\u30C6\u30B4\u30EA\u30FC\uFF1A -GroupPane.gridViewContextMenuItem.extractFiles=\u30D5\u30A1\u30A4\u30EB\u3092\u62BD\u51FA -GroupPane.headerString={0} -- {1} \u30CF\u30C3\u30B7\u30E5\u30BB\u30C3\u30C8\u30D2\u30C3\u30C8\uFF0F{2}\u30D5\u30A1\u30A4\u30EB -GroupPane.hederLabel.displayText=\u9078\u629E\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u30BF\u30B0\uFF1A -MediaLoadTask.messageText={0}\u30D3\u30C7\u30AA\u3092\u8AAD\u307F\u53D6\u308A\u4E2D -MetaDataPane.attributeColumn.headingName=\u5C5E\u6027 -MetaDataPane.copyMenuItem.text=\u30B3\u30D4\u30FC -MetaDataPane.tableView.placeholder=\u3053\u3053\u306B\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -MetaDataPane.titledPane.displayName=\u8A73\u7D30 -MetaDataPane.valueColumn.headingName=\u30D0\u30EA\u30E5\u30FC -SlideShowView.supplementalText={1}\u306E\u3046\u3061{0}\u304C\u30B0\u30EB\u30FC\u30D7\u306B\u3042\u308A\u307E\u3059 \ No newline at end of file +DrawableTileBase.externalViewerAction.text=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f +DrawableTileBase.menuItem.extractFiles=\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa +DrawableTileBase.menuItem.showContentViewer=\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u3092\u8868\u793a +DrawableUIBase.errorLabel.OOMText=\u30e1\u30e2\u30ea\u30fc\u4e0d\u8db3 +DrawableUIBase.errorLabel.text=\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f +GroupPane.bottomLabel.displayText=\u30b0\u30eb\u30fc\u30d7\u95b2\u89a7\u5c65\u6b74: +GroupPane.catContainerLabel.displayText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u985e: +GroupPane.catHeadingLabel.displayText=\u30ab\u30c6\u30b4\u30ea\u30fc: +GroupPane.gridViewContextMenuItem.extractFiles=\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa +# {0} - \u30c7\u30d5\u30a9\u30eb\u30c8\u30b0\u30eb\u30fc\u30d7\u540d +# {1} - \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d2\u30c3\u30c8\u30ab\u30a6\u30f3\u30c8 +# {2} - \u30b0\u30eb\u30fc\u30d7\u30b5\u30a4\u30ba +GroupPane.headerString={0} -- {1} \u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d2\u30c3\u30c8\u6570 / {2} \u30d5\u30a1\u30a4\u30eb\u6570 +GroupPane.hederLabel.displayText=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30bf\u30b0\u4ed8\u3051: +# {0} - \u30d5\u30a1\u30a4\u30eb\u540d +MediaLoadTask.messageText=\u52d5\u753b\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059: {0} +MetaDataPane.attributeColumn.headingName=\u5c5e\u6027 +MetaDataPane.copyMenuItem.text=\u30b3\u30d4\u30fc +MetaDataPane.tableView.placeholder=\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u80a2\u3066\u8a73\u7d30\u3092\u3053\u3053\u306b\u8868\u793a\u3057\u307e\u3059\u3002 +MetaDataPane.titledPane.displayName=\u8a73\u7d30 +MetaDataPane.valueColumn.headingName=\u5024 +# {0} - \u30d5\u30a1\u30a4\u30ebID\u756a\u53f7 +# {1} - \u30d5\u30a1\u30a4\u30ebID\u6570 +SlideShowView.supplementalText=\u30b0\u30eb\u30fc\u30d7\u306e {0} / {1} diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ja.properties b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ja.properties index 659092aa6d..dbba4fabe0 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ja.properties +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/gui/navpanel/Bundle_ja.properties @@ -1,10 +1,11 @@ -GroupComparators.groupName=\u30B0\u30EB\u30FC\u30D7\u540D -GroupComparators.groupSize=\u30B0\u30EB\u30FC\u30D7\u30B5\u30A4\u30BA -GroupComparators.hitCount=\u30D2\u30C3\u30C8\u30AB\u30A6\u30F3\u30C8 -GroupComparators.hitDensity=\u30D2\u30C3\u30C8\u5BC6\u5EA6 -GroupComparators.uncategorizedCount=\u30AB\u30C6\u30B4\u30E9\u30A4\u30BA\u3055\u308C\u3066\u3044\u306A\u3044\u30AB\u30A6\u30F3\u30C8 -GroupTree.displayName.allGroups=\u5168\u3066\u306E\u30B0\u30EB\u30FC\u30D7 -HashHitGroupList.displayName.onlyHashHits=\u30CF\u30C3\u30B7\u30E5\u30D2\u30C3\u30C8\u306E\u307F -NavPanel.ascRadio.text=\u30A2\u30BB\u30F3\u30C9\uFF08\u4E0B\u304B\u3089\u4E0A\u3078\uFF09 -NavPanel.descRadio.text=\u30C7\u30A3\u30BB\u30F3\u30C9\uFF08\u4E0A\u304B\u3089\u4E0B\u3078\uFF09 -NavPanel.sortByBoxLabel.text=\u30BD\u30FC\u30C8\u30D0\u30A4\uFF1A \ No newline at end of file +GroupComparators.groupName=\u30b0\u30eb\u30fc\u30d7\u540d +GroupComparators.groupSize=\u30b0\u30eb\u30fc\u30d7\u30b5\u30a4\u30ba +GroupComparators.hitCount=\u30d2\u30c3\u30c8\u30ab\u30a6\u30f3\u30c8 +GroupComparators.hitDensity=\u30d2\u30c3\u30c8\u306e\u5bc6\u5ea6 +GroupComparators.uncategorizedCount=\u5206\u985e\u3055\u308c\u3066\u3044\u306a\u3044\u30ab\u30a6\u30f3\u30c8 +GroupTree.displayName.allGroups=\u3059\u3079\u3066\u306e\u30b0\u30eb\u30fc\u30d7 +HashHitGroupList.displayName.onlyHashHits=\u30cf\u30c3\u30b7\u30e5\u30d2\u30c3\u30c8\u6570\u306e\u307f +NavPanel.ascRadio.text=\u6607\u9806 +NavPanel.descRadio.text=\u964d\u9806 +NavPanel.placeHolder.text=\u30b0\u30eb\u30fc\u30d7\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +NavPanel.sortByBoxLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8: diff --git a/InternalPythonModules/android/fbmessenger.py b/InternalPythonModules/android/fbmessenger.py index c19ae87796..e3514e2b17 100644 --- a/InternalPythonModules/android/fbmessenger.py +++ b/InternalPythonModules/android/fbmessenger.py @@ -316,19 +316,29 @@ class FBMessengerAnalyzer(general.AndroidComponentAnalyzer): if (attachment is not None): attachmentDict = json.loads(attachment)[0] if (attachmentDict["mime_type"] == "image/jpeg"): - urlAttachments = self.getJPGListFromJson(attachmentDict["urls"]) + urls = attachmentDict.get("urls", None) + if (urls is not None): + urlAttachments = self.getJPGListFromJson(urls) elif (attachmentDict["mime_type"] == "video/mp4"): # filename does not have an associated path with it so it will be ignored - urlAttachments = self.getJPGListFromJson(attachmentDict["urls"]) - urlAttachments.add(URLAttachment(attachmentDict["video_data_url"])) - urlAttachments.add(URLAttachment(attachmentDict["video_data_thumbnail_url"])) - + + urls = attachmentDict.get("urls", None) + if (urls is not None): + urlAttachments = self.getJPGListFromJson(urls) + + video_data_url = attachmentDict.get("video_data_url", None) + if (video_data_url is not None): + urlAttachments.add(URLAttachment(video_data_url)) + video_data_thumbnail_url = attachmentDict.get("video_data_thumbnail_url", None) + + if (video_data_thumbnail_url is not None): + urlAttachments.add(URLAttachment(video_data_thumbnail_url)) elif (attachmentDict["mime_type"] == "audio/mpeg"): - if (attachmentDict["audio_uri"] == ""): + audioUri = attachmentDict.get("audio_uri", None) + if (audioUri is None or audioUri == ""): continue else: - audioUri = attachmentDict["audio_uri"] fileAttachments.add(FileAttachment(currentCase.getSleuthkitCase(), threadsDb.getDBFile().getDataSource(), audioUri.replace("file://",""))) else: @@ -336,8 +346,9 @@ class FBMessengerAnalyzer(general.AndroidComponentAnalyzer): if (pendingAttachment is not None): pendingAttachmentDict = json.loads(pendingAttachment)[0] - pendingAttachmentUri = pendingAttachmentDict["uri"] - fileAttachments.add(FileAttachment(currentCase.getSleuthkitCase(), threadsDb.getDBFile().getDataSource(), pendingAttachmentUri.replace("file://",""))) + pendingAttachmentUri = pendingAttachmentDict.get("uri", None) + if (pendingAttachmentUri is not None): + fileAttachments.add(FileAttachment(currentCase.getSleuthkitCase(), threadsDb.getDBFile().getDataSource(), pendingAttachmentUri.replace("file://",""))) messageAttachments = MessageAttachments(fileAttachments, urlAttachments) diff --git a/InternalPythonModules/android/line.py b/InternalPythonModules/android/line.py index 6edcf158fa..80e9a51b1d 100644 --- a/InternalPythonModules/android/line.py +++ b/InternalPythonModules/android/line.py @@ -43,6 +43,8 @@ from org.sleuthkit.datamodel.Blackboard import BlackboardException from org.sleuthkit.autopsy.casemodule import NoCurrentCaseException from org.sleuthkit.datamodel import Account from org.sleuthkit.datamodel.blackboardutils import CommunicationArtifactsHelper +from org.sleuthkit.datamodel.blackboardutils import FileAttachment +from org.sleuthkit.datamodel.blackboardutils import MessageAttachments from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import MessageReadStatus from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import CommunicationDirection from TskContactsParser import TskContactsParser @@ -117,7 +119,7 @@ class LineAnalyzer(general.AndroidComponentAnalyzer): current_case.getSleuthkitCase(), self._PARSER_NAME, contact_and_message_db.getDBFile(), Account.Type.LINE) self.parse_contacts(contact_and_message_db, helper) - self.parse_messages(contact_and_message_db, helper) + self.parse_messages(contact_and_message_db, helper, current_case) for calllog_db in calllog_dbs: current_case = Case.getCurrentCaseThrows() @@ -195,22 +197,28 @@ class LineAnalyzer(general.AndroidComponentAnalyzer): "Error posting Line calllog artifacts to blackboard.", ex) self._logger.log(Level.WARNING, traceback.format_exc()) - def parse_messages(self, messages_db, helper): + def parse_messages(self, messages_db, helper, current_case): try: messages_parser = LineMessagesParser(messages_db) while messages_parser.next(): - helper.addMessage( - messages_parser.get_message_type(), - messages_parser.get_message_direction(), - messages_parser.get_phone_number_from(), - messages_parser.get_phone_number_to(), - messages_parser.get_message_date_time(), - messages_parser.get_message_read_status(), - messages_parser.get_message_subject(), - messages_parser.get_message_text(), - messages_parser.get_thread_id() - ) + message_artifact = helper.addMessage( + messages_parser.get_message_type(), + messages_parser.get_message_direction(), + messages_parser.get_phone_number_from(), + messages_parser.get_phone_number_to(), + messages_parser.get_message_date_time(), + messages_parser.get_message_read_status(), + messages_parser.get_message_subject(), + messages_parser.get_message_text(), + messages_parser.get_thread_id() + ) + if (messages_parser.get_file_attachment() is not None): + file_attachments = ArrayList() + file_attachments.add(FileAttachment(current_case.getSleuthkitCase(), messages_db.getDBFile().getDataSource(), messages_parser.get_file_attachment())) + message_attachments = MessageAttachments(file_attachments, []) + helper.addAttachments(message_artifact, message_attachments) + messages_parser.close() except SQLException as ex: self._logger.log(Level.WARNING, "Error parsing the Line App Database for messages.", ex) @@ -357,7 +365,7 @@ class LineMessagesParser(TskMessagesParser): messages.created_time, messages.attachement_type, messages.attachement_local_uri, - messages.status + messages.status FROM (SELECT id, Group_concat(M.m_id) AS members FROM membership AS M @@ -391,11 +399,6 @@ class LineMessagesParser(TskMessagesParser): def get_message_text(self): content = self.result_set.getString("content") - attachment_uri = self.result_set.getString("attachement_local_uri") - if attachment_uri is not None and content is not None: - return general.appendAttachmentList(content, [attachment_uri]) - elif attachment_uri is not None and content is None: - return general.appendAttachmentList("", [attachment_uri]) return content def get_message_direction(self): @@ -426,3 +429,14 @@ class LineMessagesParser(TskMessagesParser): if members is not None: return self.result_set.getString("id") return super(LineMessagesParser, self).get_thread_id() + + def get_file_attachment(self): + if (self.result_set.getString("attachement_local_uri") is None): + return None + # If "content:" in the beginning of the string we cannot determine at this point where a file resides. Ignoring for + # now unless data can be obtained to determine where the file may reside. + elif ("content:" in self.result_set.getString("attachement_local_uri")): + return None + else: + return self.result_set.getString("attachement_local_uri") + \ No newline at end of file diff --git a/InternalPythonModules/android/skype.py b/InternalPythonModules/android/skype.py index d8b79ac7fe..721fc92421 100644 --- a/InternalPythonModules/android/skype.py +++ b/InternalPythonModules/android/skype.py @@ -46,6 +46,8 @@ from org.sleuthkit.datamodel import Account from org.sleuthkit.datamodel.blackboardutils import CommunicationArtifactsHelper from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import MessageReadStatus from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import CommunicationDirection +from org.sleuthkit.datamodel.blackboardutils import FileAttachment +from org.sleuthkit.datamodel.blackboardutils import MessageAttachments from TskMessagesParser import TskMessagesParser from TskContactsParser import TskContactsParser from TskCallLogsParser import TskCallLogsParser @@ -137,7 +139,7 @@ class SkypeAnalyzer(general.AndroidComponentAnalyzer): ) self.parse_contacts(skype_db, helper) self.parse_calllogs(skype_db, helper) - self.parse_messages(skype_db, helper) + self.parse_messages(skype_db, helper, current_case) except NoCurrentCaseException as ex: self._logger.log(Level.WARNING, "No case currently open.", ex) self._logger.log(Level.WARNING, traceback.format_exc()) @@ -209,23 +211,30 @@ class SkypeAnalyzer(general.AndroidComponentAnalyzer): "Failed to post call log artifact to the blackboard", ex) self._logger.log(Level.WARNING, traceback.format_exc()) - def parse_messages(self, skype_db, helper): + def parse_messages(self, skype_db, helper, current_case): #Query for messages and iterate row by row adding #each message artifact try: messages_parser = SkypeMessagesParser(skype_db) while messages_parser.next(): - helper.addMessage( - messages_parser.get_message_type(), - messages_parser.get_message_direction(), - messages_parser.get_phone_number_from(), - messages_parser.get_phone_number_to(), - messages_parser.get_message_date_time(), - messages_parser.get_message_read_status(), - messages_parser.get_message_subject(), - messages_parser.get_message_text(), - messages_parser.get_thread_id() - ) + message_artifact = helper.addMessage( + messages_parser.get_message_type(), + messages_parser.get_message_direction(), + messages_parser.get_phone_number_from(), + messages_parser.get_phone_number_to(), + messages_parser.get_message_date_time(), + messages_parser.get_message_read_status(), + messages_parser.get_message_subject(), + messages_parser.get_message_text(), + messages_parser.get_thread_id() + ) + + if (messages_parser.get_file_attachment() is not None): + file_attachments = ArrayList() + file_attachments.add(FileAttachment(current_case.getSleuthkitCase(), skype_db.getDBFile().getDataSource(), messages_parser.get_file_attachment())) + message_attachments = MessageAttachments(file_attachments, []) + helper.addAttachments(message_artifact, message_attachments) + messages_parser.close() except SQLException as ex: #Error parsing Skype db @@ -425,12 +434,6 @@ class SkypeMessagesParser(TskMessagesParser): content = self.result_set.getString("content") if content is not None: - file_path = self.result_set.getString("device_gallery_path") - - #if a file name and file path are associated with a message, append it - if file_path is not None: - return general.appendAttachmentList(content, [file_path]) - return content return super(SkypeMessagesParser, self).get_message_text() @@ -440,3 +443,11 @@ class SkypeMessagesParser(TskMessagesParser): if group_ids is not None: return self.result_set.getString("conversation_id") return super(SkypeMessagesParser, self).get_thread_id() + + + def get_file_attachment(self): + if (self.result_set.getString("device_gallery_path") is None): + return None + else: + return self.result_set.getString("device_gallery_path") + diff --git a/InternalPythonModules/android/viber.py b/InternalPythonModules/android/viber.py index f922b3508e..4f4f8dd3f8 100644 --- a/InternalPythonModules/android/viber.py +++ b/InternalPythonModules/android/viber.py @@ -43,6 +43,8 @@ from org.sleuthkit.datamodel.Blackboard import BlackboardException from org.sleuthkit.autopsy.casemodule import NoCurrentCaseException from org.sleuthkit.datamodel import Account from org.sleuthkit.datamodel.blackboardutils import CommunicationArtifactsHelper +from org.sleuthkit.datamodel.blackboardutils import FileAttachment +from org.sleuthkit.datamodel.blackboardutils import MessageAttachments from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import MessageReadStatus from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import CommunicationDirection from TskMessagesParser import TskMessagesParser @@ -99,7 +101,7 @@ class ViberAnalyzer(general.AndroidComponentAnalyzer): helper = CommunicationArtifactsHelper( current_case.getSleuthkitCase(), self._PARSER_NAME, message_db.getDBFile(), Account.Type.VIBER) - self.parse_messages(message_db, helper) + self.parse_messages(message_db, helper, current_case) except NoCurrentCaseException as ex: self._logger.log(Level.WARNING, "No case currently open.", ex) @@ -161,21 +163,26 @@ class ViberAnalyzer(general.AndroidComponentAnalyzer): self._logger.log(Level.WARNING, traceback.format_exc()) - def parse_messages(self, messages_db, helper): + def parse_messages(self, messages_db, helper, current_case): try: messages_parser = ViberMessagesParser(messages_db) while messages_parser.next(): - helper.addMessage( - messages_parser.get_message_type(), - messages_parser.get_message_direction(), - messages_parser.get_phone_number_from(), - messages_parser.get_phone_number_to(), - messages_parser.get_message_date_time(), - messages_parser.get_message_read_status(), - messages_parser.get_message_subject(), - messages_parser.get_message_text(), - messages_parser.get_thread_id() - ) + message_artifact = helper.addMessage( + messages_parser.get_message_type(), + messages_parser.get_message_direction(), + messages_parser.get_phone_number_from(), + messages_parser.get_phone_number_to(), + messages_parser.get_message_date_time(), + messages_parser.get_message_read_status(), + messages_parser.get_message_subject(), + messages_parser.get_message_text(), + messages_parser.get_thread_id() + ) + if (messages_parser.get_file_attachment() is not None): + file_attachments = ArrayList() + file_attachments.add(FileAttachment(current_case.getSleuthkitCase(), messages_db.getDBFile().getDataSource(), messages_parser.get_file_attachment())) + message_attachments = MessageAttachments(file_attachments, []) + helper.addAttachments(message_artifact, message_attachments) messages_parser.close() except SQLException as ex: self._logger.log(Level.WARNING, "Error querying the viber database for messages.", ex) @@ -304,7 +311,8 @@ class ViberMessagesParser(TskMessagesParser): M.body AS msg_content, M.send_type AS direction, M.msg_date AS msg_date, - M.unread AS read_status + M.unread AS read_status, + M.extra_uri AS file_attachment FROM (SELECT *, group_concat(TO_RESULT.number) AS recipients FROM (SELECT P._id AS FROM_ID, @@ -364,3 +372,11 @@ class ViberMessagesParser(TskMessagesParser): def get_thread_id(self): return str(self.result_set.getInt("thread_id")) + + def get_file_attachment(self): + if (self.result_set.getString("file_attachment") is None): + return None + elif ("content:" in self.result_set.getString("file_attachment")): + return self.result_set.getString("msg_content").replace("file://", "") + else: + return self.result_set.getString("file_attachment").replace("file://", "") diff --git a/InternalPythonModules/android/whatsapp.py b/InternalPythonModules/android/whatsapp.py index 438784f3e2..a91c21375b 100644 --- a/InternalPythonModules/android/whatsapp.py +++ b/InternalPythonModules/android/whatsapp.py @@ -45,6 +45,9 @@ from org.sleuthkit.datamodel import Account from org.sleuthkit.datamodel.blackboardutils import CommunicationArtifactsHelper from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import MessageReadStatus from org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper import CommunicationDirection +from org.sleuthkit.datamodel.blackboardutils import FileAttachment +from org.sleuthkit.datamodel.blackboardutils import URLAttachment +from org.sleuthkit.datamodel.blackboardutils import MessageAttachments from TskMessagesParser import TskMessagesParser from TskContactsParser import TskContactsParser from TskCallLogsParser import TskCallLogsParser @@ -151,7 +154,7 @@ class WhatsAppAnalyzer(general.AndroidComponentAnalyzer): current_case.getSleuthkitCase(), self._PARSER_NAME, calllog_and_message_db.getDBFile(), Account.Type.WHATSAPP) self.parse_calllogs(calllog_and_message_db, helper) - self.parse_messages(dataSource, calllog_and_message_db, helper) + self.parse_messages(dataSource, calllog_and_message_db, helper, current_case) except NoCurrentCaseException as ex: #If there is no current case, bail out immediately. @@ -227,24 +230,32 @@ class WhatsAppAnalyzer(general.AndroidComponentAnalyzer): "Error posting calllog artifact to the blackboard.", ex) self._logger.log(Level.WARNING, traceback.format_exc()) - def parse_messages(self, dataSource, messages_db, helper): + def parse_messages(self, dataSource, messages_db, helper, current_case): try: messages_db.attachDatabase(dataSource, "wa.db", messages_db.getDBFile().getParentPath(), "wadb") messages_parser = WhatsAppMessagesParser(messages_db) while messages_parser.next(): - helper.addMessage( - messages_parser.get_message_type(), - messages_parser.get_message_direction(), - messages_parser.get_phone_number_from(), - messages_parser.get_phone_number_to(), - messages_parser.get_message_date_time(), - messages_parser.get_message_read_status(), - messages_parser.get_message_subject(), - messages_parser.get_message_text(), - messages_parser.get_thread_id() - ) + message_artifact = helper.addMessage( + messages_parser.get_message_type(), + messages_parser.get_message_direction(), + messages_parser.get_phone_number_from(), + messages_parser.get_phone_number_to(), + messages_parser.get_message_date_time(), + messages_parser.get_message_read_status(), + messages_parser.get_message_subject(), + messages_parser.get_message_text(), + messages_parser.get_thread_id() + ) + + # add attachments, if any + if (messages_parser.get_url_attachment() is not None): + url_attachments = ArrayList() + url_attachments.add(URLAttachment(messages_parser.get_url_attachment())) + message_attachments = MessageAttachments([], url_attachments) + helper.addAttachments(message_artifact, message_attachments) + messages_parser.close() except SQLException as ex: self._logger.log(Level.WARNING, "Error querying the whatsapp database for contacts.", ex) @@ -502,9 +513,6 @@ class WhatsAppMessagesParser(TskMessagesParser): message = self.result_set.getString("content") if message is None: message = super(WhatsAppMessagesParser, self).get_message_text() - attachment = self.result_set.getString("attachment") - if attachment is not None: - return general.appendAttachmentList(message, [attachment]) return message def get_thread_id(self): @@ -512,3 +520,14 @@ class WhatsAppMessagesParser(TskMessagesParser): if group is not None: return self.result_set.getString("id") return super(WhatsAppMessagesParser, self).get_thread_id() + + + def get_url_attachment(self): + attachment = self.result_set.getString("attachment") + if (attachment is None): + return None + elif (str(attachment).startswith("http:") or str(attachment).startswith("https:") ): + return attachment + else: + return None + diff --git a/InternalPythonModules/android/xender.py b/InternalPythonModules/android/xender.py index aeddcaf4e1..e8c2b3d74f 100644 --- a/InternalPythonModules/android/xender.py +++ b/InternalPythonModules/android/xender.py @@ -98,7 +98,7 @@ class XenderAnalyzer(general.AndroidComponentAnalyzer): Account.Type.XENDER) queryString = """ - SELECT f_path, f_display_name, f_size_str, f_create_time, c_direction, c_session_id, + SELECT f_path, f_display_name, f_size_str, c_start_time, c_direction, c_session_id, s_name, s_device_id, r_name, r_device_id FROM new_history """ @@ -118,7 +118,7 @@ class XenderAnalyzer(general.AndroidComponentAnalyzer): direction = CommunicationDirection.INCOMING fromId = messagesResultSet.getString("s_device_id") - timeStamp = messagesResultSet.getLong("f_create_time") / 1000 + timeStamp = messagesResultSet.getLong("c_start_time") / 1000 messageArtifact = transactionDbHelper.addMessage( self._MESSAGE_TYPE, direction, diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties index 88f7abd38b..adf1364da2 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties @@ -1,136 +1,187 @@ +AccountsText.creditCardNumber=\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u756a\u53f7 +AccountsText.creditCardNumbers=\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u756a\u53f7 +AccountsText.nextItem.exception.msg=\u6b21\u306e\u9805\u76ee\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +AccountsText.nextPage.exception.msg=\u6b21\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +AccountsText.previousItem.exception.msg=\u524d\u306e\u9805\u76ee\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +AccountsText.previousPage.exception.msg=\u524d\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +DropdownListSearchPanel.selected=\u30a2\u30c9\u30db\u30c3\u30af\u691c\u7d22\u30bd\u30fc\u30b9\u30d5\u30a3\u30eb\u30bf\u30fc\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059 +DropdownSingleTermSearchPanel.selected=\u30a2\u30c9\u30db\u30c3\u30af\u691c\u7d22\u30bd\u30fc\u30b9\u30d5\u30a3\u30eb\u30bf\u30fc\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059 +DropdownSingleTermSearchPanel.warning.text=\u5883\u754c\u6587\u5b57 ^ \u3068 $ \u304c\u5358\u8a9e\u9818\u57df\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002[ \\.,] \u306a\u3069\u306e\u660e\u793a\u7684\u306a\u5883\u754c\u6587\u5b57\u30ea\u30b9\u30c8\u3068\u306e\u7f6e\u63db\u3092\n\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044 +DropdownSingleTermSearchPanel.warning.title=\u8b66\u544a +ExtractedContentPanel.setMarkup.panelTxt=\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...\u304a\u5f85\u3061\u304f\u3060\u3055\u3044 +# {0} - \u30b3\u30f3\u30c6\u30f3\u30c4\u540d +ExtractedContentPanel.SetMarkup.progress.loading={0} \u306e\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059 +GlobalEditListPanel.editKeyword.title=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u7de8\u96c6 +GlobalEditListPanel.warning.text=\u5883\u754c\u6587\u5b57 ^ \u3068 $ \u304c\u5358\u8a9e\u9818\u57df\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002[ \\.,] \u306a\u3069\u306e\u660e\u793a\u7684\u306a\u5883\u754c\u6587\u5b57\u30ea\u30b9\u30c8\u3068\u306e\u7f6e\u63db\u3092\n\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044 +GlobalEditListPanel.warning.title=\u8b66\u544a +IndexedText.errorMessage.errorGettingText=Error \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +IndexedText.warningMessage.knownFile=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb(MD5\u30cf\u30c3\u30b7\u30e5\u30d9\u30fc\u30b9)\u3067\u3042\u308b\u305f\u3081\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +IndexedText.warningMessage.noTextAvailable=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +KeywordSearchGlobalSettingsPanel.Title=\u30ad\u30fc\u30ef\u30fc\u30c9\u4e00\u62ec\u691c\u7d22\u8a2d\u5b9a +KeywordSearchIngestModule.init.badInitMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d0\u30fc\u304c\u6b63\u3057\u304f\u521d\u671f\u5316\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +# {0} - Solr\u306b\u63a5\u7d9a\u3055\u308c\u3066\u3044\u306a\u3044\u7406\u7531 +KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error connecting to SOLR\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}\u3002 +# {0} - Solr\u304c\u8d77\u52d5\u3057\u306a\u3044\u7406\u7531 +KeywordSearchIngestModule.init.tryStopSolrMsg={0}
    Java Solr\u30d7\u30ed\u30bb\u30b9\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u505c\u6b62\u3092\u8a66\u307f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +KeywordSearchIngestModule.metadataTitle=\u30e1\u30bf\u30c7\u30fc\u30bf +KeywordSearchIngestModule.noOpenCase.errMsg=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +KeywordSearchIngestModule.startUp.noOpenCore.msg=\u7d22\u5f15\u3092\u958b\u3051\u306a\u304b\u3063\u305f\u304b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +# {0} - \u30b9\u30ad\u30fc\u30de\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +KeywordSearchIngestModule.startupException.indexSchemaNotSupported=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30b9\u30ad\u30fc\u30de\u30d0\u30fc\u30b8\u30e7\u30f3 {0} \u3067\u306e\u30c6\u30ad\u30b9\u30c8\u8ffd\u52a0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002 +# {0} - Solr\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7 +KeywordSearchIngestModule.startupException.indexSolrVersionNotSupported=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306eSolr\u30d0\u30fc\u30b8\u30e7\u30f3 {0} \u3067\u306e\u30c6\u30ad\u30b9\u30c8\u8ffd\u52a0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002 +KeywordSearchIngestModule.startupMessage.failedToGetIndexSchema=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30b9\u30ad\u30fc\u30de\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=\u8a72\u5f53\u3059\u308b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +KeywordSearchResultFactory.query.exception.msg=\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OpenIDE-Module-Long-Description=\ - \u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\n\n\ - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u306e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u306b\u3042\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3057\u307e\u3059\u3002\n\ - \u305d\u3057\u3066\u3001\u4e00\u3064\u4ee5\u4e0a\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\uff08\u5358\u8a9e\u3084\u6b63\u898f\u8868\u73fe\u3092\u542b\u3080\uff09\u3092\u5229\u7528\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u671f\u7684\u306b\u691c\u7d22\u3057\u3001\u7d50\u679c\u3092\u8868\u793a\u3057\u307e\u3059\u3002\n\n\ - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u8a2d\u5b9a\u3001\u53f3\u4e0a\u9685\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30d0\u30fc\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u306e\u7d50\u679c\u3092\u30cf\u30a4\u30e9\u30a4\u30c8\u3057\u3066\u8868\u793a\u3059\u308b\u62bd\u51fa\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc\u30a2\u3068\u691c\u7d22\u7d50\u679c\u30d3\u30e5\u30fc\u30a2\u306a\u3069\u3001\u30e1\u30a4\u30f3GUI\u3068\u9023\u643a\u3059\u308b\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u304c\u542b\u307e\u308c\u307e\u3059\u3002 -OpenIDE-Module-Name=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 + +OpenIDE-Module-Long-Description=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u306b\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u3067\u898b\u3064\u304b\u3063\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3057\u307e\u3059\u3002\n\u6b21\u306b\u30011\u3064\u4ee5\u4e0a\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8(\u7d14\u7c8b\u8a9e\u304a\u3088\u3073/\u307e\u305f\u306f\u6b63\u898f\u8868\u73fe\u3092\u542b\u3080)\u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u4e0a\u3067\u5b9a\u671f\u7684\u306b\u691c\u7d22\u3092\u5b9f\u65bd\u3057\u3001\u7d50\u679c\u3092\u63b2\u8f09\u3057\u307e\u3059\u3002\n\n\\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u69cb\u6210\u3001\u53f3\u4e0a\u7aef\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30d0\u30fc\u3001\u62bd\u51fa\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u8a72\u5f53\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30cf\u30a4\u30e9\u30a4\u30c8\u8868\u793a\u3059\u308b\u691c\u7d22\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u306a\u3069\u3001\u30e1\u30a4\u30f3GUI\u306b\u7d71\u5408\u3055\u308c\u305f\u8ffd\u52a0\u306e\u30c4\u30fc\u30eb\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 +OpenIDE-Module-Name=KeywordSearch +OptionsCategory_Name_KeywordSearchOptions=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +OptionsCategory_Keywords_KeywordSearchOptions=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 ListBundleName=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 -ListBundleConfig=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u8a2d\u5b9a -ExtractedContentPanel.hitLabel.text=\u30da\u30fc\u30b8\u5185\u306e\u4e00\u81f4\uff1a +ListBundleConfig=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u69cb\u6210 +ExtractedContentPanel.hitLabel.text=\u30da\u30fc\u30b8\u4e0a\u306e\u4e00\u81f4\u3059\u308b\u7d50\u679c: ExtractedContentPanel.hitCountLabel.text=- -ExtractedContentPanel.hitOfLabel.text=of +ExtractedContentPanel.hitOfLabel.text=/ ExtractedContentPanel.hitTotalLabel.text=- -ExtractedContentPanel.hitButtonsLabel.text=\u4e00\u81f4 +ExtractedContentPanel.hitButtonsLabel.text=\u4e00\u81f4\u3059\u308b\u7d50\u679c +ExtractedContentPanel.hitPreviousButton.text= +ExtractedContentPanel.hitNextButton.text= ExtractedContentPanel.copyMenuItem.text=\u30b3\u30d4\u30fc ExtractedContentPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e KeywordSearchEditListPanel.saveListButton.text=\u30ea\u30b9\u30c8\u3092\u30b3\u30d4\u30fc -KeywordSearchEditListPanel.addWordButton.text=\u8ffd\u52a0 +KeywordSearchEditListPanel.addWordField.text= +KeywordSearchEditListPanel.addWordButton.text=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9 KeywordSearchEditListPanel.chRegex.text=\u6b63\u898f\u8868\u73fe -KeywordSearchEditListPanel.deleteWordButton.text=\u9078\u629e\u3057\u305f\u3082\u306e\u3092\u524a\u9664 -KeywordSearchEditListPanel.cutMenuItem.text=\u30ab\u30c3\u30c8 +KeywordSearchEditListPanel.deleteWordButton.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u524a\u9664 +KeywordSearchEditListPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a KeywordSearchEditListPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e KeywordSearchEditListPanel.pasteMenuItem.text=\u8cbc\u308a\u4ed8\u3051 KeywordSearchEditListPanel.copyMenuItem.text=\u30b3\u30d4\u30fc KeywordSearchEditListPanel.exportButton.text=\u30ea\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 KeywordSearchEditListPanel.deleteListButton.text=\u30ea\u30b9\u30c8\u3092\u524a\u9664 +KeywordSearchEditListPanel.emptyKeyword.text=\u7a7a(\u672a\u5165\u529b)\u306e\u72b6\u614b\u306e\u30ad\u30fc\u30ef\u30fc\u30c9 +KeywordSearchEditListPanel.errorAddingKeywords.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f KeywordSearchListsManagementPanel.newListButton.text=\u65b0\u898f\u30ea\u30b9\u30c8 KeywordSearchListsManagementPanel.importButton.text=\u30ea\u30b9\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 KeywordSearchListsViewerPanel.searchAddButton.text=\u691c\u7d22 KeywordSearchListsViewerPanel.manageListsButton.text=\u30ea\u30b9\u30c8\u3092\u7ba1\u7406 -KeywordSearchListsViewerPanel.ingestIndexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff1a -KeywordSearchEditListPanel.ingestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u6bce\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u3078\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 -KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=\u3053\u306e\u30ea\u30b9\u30c8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u691c\u7d22\u306b\u30d2\u30c3\u30c8\u3057\u305f\u5834\u5408\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30a4\u30f3\u30dc\u30c3\u30af\u30b9\u306b\u9001\u4fe1 +KeywordSearchListsViewerPanel.ingestIndexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: +ExtractedContentPanel.hitLabel.toolTipText= +KeywordSearchEditListPanel.ingestMessagesCheckbox.text=\u30d2\u30c3\u30c8\u3054\u3068\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u53d7\u4fe1\u7bb1\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 +KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=\u3053\u306e\u30ea\u30b9\u30c8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3067\u30d2\u30c3\u30c8\u304c\u767a\u751f\u3057\u305f\u3068\u304d\u306b\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 KeywordSearchEditListPanel.keywordOptionsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3 KeywordSearchEditListPanel.listOptionsLabel.text=\u30ea\u30b9\u30c8\u30aa\u30d7\u30b7\u30e7\u30f3 -KeywordSearchListsManagementPanel.keywordListsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\uff1a -KeywordSearchEditListPanel.keywordsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\uff1a -OpenIDE-Module-Short-Description=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u62bd\u51fa\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc\u30a2\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30c4\u30fc\u30eb -KeywordSearchListsViewerPanel.manageListsButton.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3001\u30ea\u30b9\u30c8\u306e\u8a2d\u5b9a\u3068\u95a2\u9023\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u7ba1\u7406\u3002\u3053\u306e\u8a2d\u5b9a\u306f\u5168\u3066\u306e\u30b1\u30fc\u30b9\u306b\u9069\u7528\u3055\u308c\u307e\u3059\u3002 +KeywordSearchListsManagementPanel.keywordListsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8: +KeywordSearchEditListPanel.keywordsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9: +OpenIDE-Module-Short-Description=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u62bd\u51fa\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc\u30ef\u30fc\u304a\u3088\u3073\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30c4\u30fc\u30eb +KeywordSearchListsViewerPanel.manageListsButton.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306e\u8a2d\u5b9a\u3001\u95a2\u9023\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u7ba1\u7406\u3057\u307e\u3059\u3002\u8a2d\u5b9a\u306f\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9\u3067\u5171\u6709\u3055\u308c\u307e\u3059\u3002 AbstractKeywordSearchPerformer.search.dialogErrorHeader=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a8\u30e9\u30fc -AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d -AbstractKeywordSearchPerformer.search.ingestInProgressBody=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d
    \u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u7d50\u679c\u304c\u4e0d\u5b8c\u5168\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002
    \u3053\u306e\u691c\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f -AbstractKeywordSearchPerformer.search.emptyKeywordErrorBody=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u7a7a\u767d\u3067\u3059\u3002\u6700\u4f4e\uff11\u3064\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0\u3057\u3066\u4e0b\u3055\u3044\u3002 -AbstractKeywordSearchPerformer.search.noFilesInIdxMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u307e\u3060\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
    \u3057\u3070\u3089\u304f\u3057\u3066\u304b\u3089\u518d\u5ea6\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306f{0}\u5206\u3054\u3068\u306b\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002 -AbstractKeywordSearchPerformer.search.noFilesIdxdMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
    \u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u5316\u3057\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u5ea6\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3002 -ExtractedContentPanel.setMarkup.panelTxt=\u30c6\u30ad\u30b9\u30c8\u30ed\u30fc\u30c9\u4e2d...\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002 -ExtractedContentViewer.toolTip=\u30d5\u30a1\u30a4\u30eb\u3084\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u304b\u3089\u62bd\u51fa\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3002\u3053\u306e\u30d3\u30e5\u30fc\u30a2\u3092\u6709\u52b9\u5316\u3059\u308b\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -ExtractedContentViewer.getTitle=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8 -ExtractedContentViewer.getSolrContent.noTxtYetMsg=

    {0}\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30c6\u30ad\u30b9\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002
    \u30c6\u30ad\u30b9\u30c8\u304c\u7121\u3044\u304b\u3001\u307e\u3060\u89e3\u6790\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u304c\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

    +AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=\u7121\u52b9\u306a\u30af\u30a8\u30ea\u69cb\u6587\u3067\u3059\u3002\u3053\u308c\u304c\u6b63\u898f\u8868\u73fe\u306e\u5834\u5408\u306f\u3001Java\u3067\u4e8b\u524d\u5b9a\u7fa9\u6e08\u307f\u306e\u6587\u5b57\u30af\u30e9\u30b9\u3068POSIX\u6587\u5b57\u30af\u30e9\u30b9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002 +AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059 +AbstractKeywordSearchPerformer.search.ingestInProgressBody=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u73fe\u5728\u5b9f\u884c\u4e2d\u3067\u3059\u3002
    \u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u3053\u306e\u691c\u7d22\u306f\u4e0d\u5b8c\u5168\u306a\u7d50\u679c\u3092\u751f\u6210\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
    \u305d\u308c\u3067\u3082\u3053\u306e\u691c\u7d22\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b? +AbstractKeywordSearchPerformer.search.emptyKeywordErrorBody=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3059\u3002\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +AbstractKeywordSearchPerformer.search.noFilesInIdxMsg=\u307e\u3060\u30d5\u30a1\u30a4\u30eb\u304c\u7d22\u5f15\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\u3002
    \u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 \u7d22\u5f15\u306f {0} \u5206\u3054\u3068\u306b\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002 +AbstractKeywordSearchPerformer.search.noFilesIdxdMsg=\u30d5\u30a1\u30a4\u30eb\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
    \u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u306b\u3057\u305f\u72b6\u614b\u3067\u30a4\u30e1\u30fc\u30b8\u3092\u518d\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ExtractedContentViewer.toolTip=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u62bd\u51fa\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u3068\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u3092\u8868\u793a\u3057\u307e\u3059\u3002\u3053\u306e\u30d3\u30e5\u30fc\u30ef\u30fc\u3092\u6709\u52b9\u5316\u3059\u308b\u306b\u306f\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +ExtractedContentViewer.getTitle=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8 HighlightedMatchesSource.toString=\u691c\u7d22\u7d50\u679c -Installer.reportPortError=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 {0} \u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u4f7f\u7528\u3057\u3066\u3044\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c {1} \u3092\u30d6\u30ed\u30c3\u30af\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e{3}\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306e{2}\u3092\u5909\u66f4\u3059\u308b\u691c\u8a0e\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u4ed6\u306e\u51e6\u7406\u304c\u554f\u984c\u306e\u539f\u56e0\u3067\u3042\u308c\u3070\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u518d\u8d77\u52d5\u3057\u3066\u4e0b\u3055\u3044\u3002 -Installer.reportStopPortError=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b5\u30fc\u30d0\u30fc\u30b9\u30c8\u30c3\u30d7\u30dd\u30fc\u30c8 {0} \u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e{3}\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306e{2}\u3092\u5909\u66f4\u3059\u308b\u691c\u8a0e\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -Installer.errorInitKsmMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8d77\u52d5\u30a8\u30e9\u30fc -Installer.reportInitError=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 {0} \u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u4f7f\u7528\u3057\u3066\u3044\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c {1} \u3092\u30d6\u30ed\u30c3\u30af\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e{3}\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306e{2}\u3092\u5909\u66f4\u3059\u308b\u691c\u8a0e\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3082\u3057\u4ed6\u306e\u51e6\u7406\u304c\u554f\u984c\u306e\u539f\u56e0\u3067\u3042\u308c\u3070\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u518d\u8d77\u52d5\u3057\u3066\u4e0b\u3055\u3044\u3002 +Installer.reportPortError=\u7d22\u5f15\u751f\u6210\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 {0} \u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 \u304a\u4f7f\u3044\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c {1} \u3092\u30d6\u30ed\u30c3\u30af\u3057\u3066\u3044\u306a\u3044\u304b\u3069\u3046\u304b\u78ba\u8a8d\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e {3} \u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3067 {2} \u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5225\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u77db\u76fe\u3092\u5f15\u304d\u8d77\u3053\u3057\u3066\u3044\u305f\u5834\u5408\u306f\u3001\u305d\u306e\u5f8c\u306b\u30b7\u30b9\u30c6\u30e0\u306e\u518d\u8d77\u52d5\u3092\u8a66\u307f\u3066\u304f\u3060\u3055\u3044\u3002 +Installer.reportStopPortError=\u7d22\u5f15\u751f\u6210\u30b5\u30fc\u30d0\u30fc\u505c\u6b62\u30dd\u30fc\u30c8 {0} \u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e {2} \u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3067 {1} \u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +Installer.errorInitKsmMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Installer.reportInitError=\u7d22\u5f15\u751f\u6210\u30b5\u30fc\u30d0\u30fc\u30dd\u30fc\u30c8 {0} \u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 \u304a\u4f7f\u3044\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c {1} \u3092\u30d6\u30ed\u30c3\u30af\u3057\u3066\u3044\u306a\u3044\u304b\u3069\u3046\u304b\u78ba\u8a8d\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e6\u30fc\u30b6\u30fc\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e {3} \u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3067 {2} \u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5225\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u77db\u76fe\u3092\u5f15\u304d\u8d77\u3053\u3057\u3066\u3044\u305f\u5834\u5408\u306f\u3001\u305d\u306e\u5f8c\u306b\u30b7\u30b9\u30c6\u30e0\u306e\u518d\u8d77\u52d5\u3092\u8a66\u307f\u3066\u304f\u3060\u3055\u3044\u3002 KeywordSearchConfigurationPanel.customizeComponents.listTabTitle=\u30ea\u30b9\u30c8 -KeywordSearchConfigurationPanel.customizeComponents.stringExtTitle=\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa -KeywordSearchConfigurationPanel.customizeComponents.genTabTitle=\u4e00\u822c -KeywordSearchConfigurationPanel.customizeComponents.listLabToolTip=\u30ea\u30b9\u30c8\u8a2d\u5b9a -KeywordSearchConfigurationPanel.customizeComponents.stringExtToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa\u8a2d\u5b9a -KeywordSearchConfigurationPanel.customizeComponents.genTabToolTip=\u4e00\u822c\u8a2d\u5b9a +KeywordSearchConfigurationPanel.customizeComponents.stringExtTitle=\u6587\u5b57\u5217\u62bd\u51fa +KeywordSearchConfigurationPanel.customizeComponents.genTabTitle=\u5168\u822c +KeywordSearchConfigurationPanel.customizeComponents.listLabToolTip=\u30ea\u30b9\u30c8\u69cb\u6210 +KeywordSearchConfigurationPanel.customizeComponents.stringExtToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u6587\u5b57\u5217\u62bd\u51fa\u69cb\u6210 +KeywordSearchConfigurationPanel.customizeComponents.genTabToolTip=\u69cb\u6210\u5168\u822c KeywordSearchConfigurationPanel1.customizeComponents.title=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u524a\u9664 -KeywordSearchConfigurationPanel1.customizeComponents.body=\u5168\u3066\u306e\u30b1\u30fc\u30b9\u306b\u304a\u3051\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u3053\u306e\u524a\u9664\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f -KeywordSearchConfigurationPanel1.customizeComponents.keywordListEmptyErr=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u7a7a\u767d\u306a\u306e\u3067\u3001\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093 -KeywordSearch.newKwListTitle=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u540d\uff1a -KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=\u30c7\u30d5\u30a9\u30eb\u30c8\u30ea\u30b9\u30c8\u306f\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093 -KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f -KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f -KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u6b63\u7fa9\u8868\u73fe\u3067\u3059 -KeywordSearchEditListPanel.customizeComponents.addWordToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30ea\u30b9\u30c8\u306b\u65b0\u3057\u3044\u5358\u8a9e\u3092\u8ffd\u52a0 -KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u691c\u7d22\u3059\u308b\u306e\u306b\u65b0\u898f\u5358\u8a9e\u307e\u305f\u306f\u6b63\u898f\u8868\u73fe\u3092\u5165\u529b -KeywordSearchEditListPanel.customizeComponents.exportToFile=\u65e2\u5b58\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 -KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=\u65e2\u5b58\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306b\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58 -KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=\u9078\u629e\u3057\u305f\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664 -KeywordSearchEditListPanel.newKwTitle=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u30a8\u30f3\u30c8\u30ea\u30fc -KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u65e2\u306b\u30ea\u30b9\u30c8\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 -KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52b9\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u30d1\u30bf\u30fc\u30f3\u3002\u5358\u8a9e\u3082\u3057\u304f\u306f\u6b63\u3057\u3044\u6b63\u898f\u8868\u73fe\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -KeywordSearchEditListPanel.removeKwMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u524a\u9664 -KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=\u5168\u3066\u306e\u30b1\u30fc\u30b9\u306b\u304a\u3051\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u3002\u3053\u306e\u524a\u9664\u3092\u5b9f\u884c\u3057\u307e\u3059\u304b\uff1f -KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8XML\u30d5\u30a1\u30a4\u30eb -KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=\ {0} \u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f -KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 +KeywordSearchConfigurationPanel1.customizeComponents.body=\u3053\u308c\u306b\u3088\u308a\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u4e00\u62ec\u524a\u9664\u3055\u308c\u307e\u3059(\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9)\u3002\u524a\u9664\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b? +KeywordSearchConfigurationPanel1.customizeComponents.keywordListEmptyErr=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u7a7a(\u672a\u5165\u529b)\u306e\u305f\u3081\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093 +KeywordSearch.newKwListTitle=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u540d: +KeywordSearch.openCore.notification.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d22\u5f15\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +KeywordSearch.closeCore.notification.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d22\u5f15\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=\u30c7\u30d5\u30a9\u30eb\u30c8\u30ea\u30b9\u30c8\u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093 +KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b? +KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f +KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u6b63\u898f\u8868\u73fe\u3067\u3059 +KeywordSearchEditListPanel.customizeComponents.addWordToolTip=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30ea\u30b9\u30c8\u306b\u65b0\u898f\u7528\u8a9e\u3092\u8ffd\u52a0 +KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u65b0\u898f\u7528\u8a9e\u307e\u305f\u306f\u6b63\u898f\u8868\u73fe\u3092\u5165\u529b\u3057\u3066\u691c\u7d22 +KeywordSearchEditListPanel.customizeComponents.exportToFile=\u73fe\u5728\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=\u73fe\u5728\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u5225\u540d\u3067\u4fdd\u5b58\u3059\u308b +KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=\u30ea\u30b9\u30c8\u304b\u3089\u9078\u629e\u3057\u305f\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u524a\u9664 +KeywordSearchEditListPanel.newKwTitle=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u5165\u529b +KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3059\u3067\u306b\u30ea\u30b9\u30c8\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 +KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52b9\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002 \u5358\u8a9e\u307e\u305f\u306f\u6b63\u3057\u3044\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +KeywordSearchEditListPanel.removeKwMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u524a\u9664 +KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=\u3053\u308c\u306b\u3088\u308a\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u30ea\u30b9\u30c8\u304b\u3089\u4e00\u62ec\u524a\u9664\u3055\u308c\u307e\u3059(\u3059\u3079\u3066\u306e\u30b1\u30fc\u30b9)\u3002\u7d9a\u884c\u3057\u307e\u3059\u304b? +KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306eXML\u30d5\u30a1\u30a4\u30eb +KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=\u30d5\u30a1\u30a4\u30eb {0} \u304c\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? +KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3057\u305f KeywordSearchEditListPanel.kwColName=\u30ad\u30fc\u30ef\u30fc\u30c9 -KeywordSearchEditListPanel.exportButtonActionPerformed.regExColName=\u6b63\u898f\u8868\u73fe -KeywordSearchFilterNode.getFileActions.openExternViewActLbl=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f -KeywordSearchFilterNode.getFileActions.searchSameMd5=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3092\u6301\u3064\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +KeywordSearchEditListPanel.addKeyword.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30ea\u30b9\u30c8\u306b\u65b0\u898f\u7528\u8a9e\u3092\u8ffd\u52a0: +KeywordSearchEditListPanel.addKeyword.title=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9 +KeywordSearchFilterNode.getFileActions.openExternViewActLbl=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u958b\u304f Ctrl+E +KeywordSearchFilterNode.getFileActions.searchSameMd5=\u540c\u3058MD5\u30cf\u30c3\u30b7\u30e5\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 KeywordSearchFilterNode.getFileActions.viewInNewWinActionLbl=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a -KeywordSearchIngestModule.init.badInitMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d0\u30fc\u304c\u6b63\u3057\u304f\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 KeywordSearchIngestModule.init.noKwInLstMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3060\u3051\u5b9f\u884c\u3055\u308c\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u306f\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002\uff08\u300c\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 - \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u8ffd\u52a0\u300d\u3092\u4f7f\u7528\u3057\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u306e\u306f\u53ef\u80fd\u3067\u3059\u3002\uff09 -KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65e2\u77e5\u30bf\u30a4\u30d7\u304c\u3042\u308b\u30d5\u30a1\u30a4\u30eb -KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=\u4e00\u822c\u7684\u306a\u30b9\u30c8\u30ea\u30f3\u30b0\u304c\u62bd\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb -KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u307f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u307e\u3057\u305f -KeywordSearchIngestModule.postIndexSummary.idxErrLbl=\u30a8\u30e9\u30fc\uff08\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30a8\u30e9\u30fc\uff09 -KeywordSearchIngestModule.postIndexSummary.errTxtLbl=\u30a8\u30e9\u30fc\uff08\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\uff09 -KeywordSearchIngestModule.postIndexSummary.errIoLbl=\u30a8\u30e9\u30fc\uff08I/O\uff09 -KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u7d50\u679c -KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u30a8\u30e9\u30fc -KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b5\u30fc\u30d3\u30b9\u304c{0}\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u8b66\u544a -KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30b5\u30fc\u30d3\u30b9\u304c\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u969b\u3084\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u539f\u56e0\u306f\u7834\u640d\u3057\u305f\u30e1\u30c7\u30a3\u30a2\u3084\u30d5\u30a1\u30a4\u30eb\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 -KeywordSearchListsViewerPanel.initIngest.addIngestTitle=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u8ffd\u52a0 -KeywordSearchListsViewerPanel.initIngest.addIngestMsg=\u8ffd\u52a0\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u9078\u629e\u3067\u304d\u307e\u3059
    \u305d\u3057\u3066\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u8ffd\u52a0\u3067\u304d\u307e\u3059
    \u6b21\u56de\u306e\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u518d\u69cb\u7bc9\u306e\u3068\u304d\u306b\u9078\u629e\u3055\u308c\u305f\u30ea\u30b9\u30c8\u3082\u691c\u7d22\u3055\u308c\u307e\u3059\u3002 +KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=\u7d22\u5f15\u751f\u6210\u306e\u307f\u304c\u5b9f\u884c\u3055\u308c\u3001\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u306f\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059(\u305d\u308c\u3067\u3082 [\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 - \u8ffd\u52a0\u3057\u3066\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8] \u3092\u7528\u3044\u3066\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059)\u3002 +KeywordSearchIngestModule.doInBackGround.displayName=\u30ad\u30fc\u30ef\u30fc\u30c9\u5b9a\u671f\u691c\u7d22 +KeywordSearchIngestModule.doInBackGround.finalizeMsg=\u78ba\u5b9a +KeywordSearchIngestModule.doInBackGround.pendingMsg=(\u4fdd\u7559\u4e2d) +RawText.FileText=\u30d5\u30a1\u30a4\u30eb\u30c6\u30ad\u30b9\u30c8 +RawText.ResultText=\u7d50\u679c\u30c6\u30ad\u30b9\u30c8 +SearchRunner.doInBackGround.cancelMsg=(\u53d6\u308a\u6d88\u3057\u4e2d...) +KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65e2\u77e5\u306e\u30bf\u30a4\u30d7\u306e\u30d5\u30a1\u30a4\u30eb +KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=\u4e00\u822c\u7684\u306a\u6587\u5b57\u5217\u304c\u62bd\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u307f\u3092\u62bd\u51fa\u3057\u307e\u3057\u305f +KeywordSearchIngestModule.postIndexSummary.idxErrLbl=\u30a8\u30e9\u30fc(\u30a4\u30f3\u30c7\u30af\u30b5\u30fc) +KeywordSearchIngestModule.postIndexSummary.errTxtLbl=\u30a8\u30e9\u30fc(\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa) +KeywordSearchIngestModule.postIndexSummary.errIoLbl=\u30a8\u30e9\u30fc(\u5165\u51fa\u529b) +KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u751f\u6210\u7d50\u679c +KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u751f\u6210\u30a8\u30e9\u30fc +KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles= {0} \u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u30b5\u30fc\u30d3\u30b9\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u751f\u6210\u8b66\u544a +KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u304a\u3088\u3073\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u4e2d\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u30b5\u30fc\u30d3\u30b9\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u7834\u640d\u3057\u305f\u30e1\u30c7\u30a3\u30a2\u307e\u305f\u306f\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u306e\u3082\u306e\u3067\u3042\u3063\u305f\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsViewerPanel.initIngest.addIngestTitle=\u8ffd\u52a0\u3057\u3066\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +KeywordSearchListsViewerPanel.initIngest.addIngestMsg=\u8ffd\u52a0\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u9078\u629e
    \u3057\u3001\u9032\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u30a8\u30f3\u30ad\u30e5\u30fc\u3067\u304d\u307e\u3059\u3002
    \u9078\u629e\u3057\u305f\u30ea\u30b9\u30c8\u306f\u6b21\u56de\u306e\u30d5\u30a1\u30a4\u30eb\u7d22\u5f15\u518d\u69cb\u7bc9\u6642\u306b\u691c\u7d22\u3055\u308c\u307e\u3059\u3002 KeywordSearchListsViewerPanel.initIngest.searchIngestTitle=\u691c\u7d22 -KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg=\u9078\u629e\u3057\u305f\u30ea\u30b9\u30c8\u5185\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u5185\u3067\u691c\u7d22 -KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff1a {0} \uff08\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306f\u5b9f\u884c\u4e2d\uff09 -KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff1a {0} +KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg=\u9078\u629e\u3057\u305f\u30ea\u30b9\u30c8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22 +KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: {0} (\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u9032\u884c\u4e2d) +KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: {0} KeywordSearch.selectedColLbl=\u9078\u629e\u6e08\u307f KeywordSearch.nameColLbl=\u540d\u524d -KeywordSearch.regExColLbl=\u6b63\u898f\u8868\u73fe +KeywordSearch.typeColLbl=\u30ad\u30fc\u30ef\u30fc\u30c9\u30bf\u30a4\u30d7 KeywordSearchQueryManager.execute.exeWinTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 {0} - {1} KeywordSearch.newKeywordListMsg=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 -KeywordSearch.importListFileDialogMsg={0}\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +KeywordSearch.importListFileDialogMsg=\u30d5\u30a1\u30a4\u30eb {0} \u304b\u3089\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f KeywordSearch.yesOwMsg=\u306f\u3044\u3001\u4e0a\u66f8\u304d\u3057\u307e\u3059 KeywordSearch.noSkipMsg=\u3044\u3044\u3048\u3001\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059 -KeywordSearch.cancelImportMsg=\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb -KeywordSearch.overwriteListPrompt=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u306f\u30ed\u30fc\u30ab\u30eb\u306b\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f -KeywordSearch.importOwConflict=\u30ea\u30b9\u30c8\u30a4\u30f3\u30dd\u30fc\u30c8\u306e\u554f\u984c -KeywordSearch.kwListFailImportMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +KeywordSearch.cancelImportMsg=\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u53d6\u308a\u6d88\u3059 +KeywordSearch.overwriteListPrompt=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u306f\u30ed\u30fc\u30ab\u30eb\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b? +KeywordSearch.importOwConflict=\u30ea\u30b9\u30c8\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u6642\u306e\u77db\u76fe +KeywordSearch.kwListFailImportMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u304c\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f KeywordSearchListsManagementPanel.fileExtensionFilterLbl=Autopsy\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb(xml) -KeywordSearch.listImportFeatureTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u30a4\u30f3\u30dd\u30fc\u30c8 +KeywordSearchListsManagementPanel.fileExtensionFilterLb2=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb(txt)\u3092\u5305\u542b +KeywordSearch.listImportFeatureTitle=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306e\u30a4\u30f3\u30dd\u30fc\u30c8 KeywordSearchIngestModule.moduleName=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +KeywordSearchIngestModule.moduleDescription=\u30ea\u30b9\u30c8\u5185\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3068\u6b63\u898f\u8868\u73fe\u3067\u30d5\u30a1\u30a4\u30eb\u7d22\u5f15\u751f\u6210\u3068\u5b9a\u671f\u691c\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 +DropdownSearchPanel.keywordTextField.text= +KeywordSearchPanel.searchDropButton.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +DropdownSearchPanel.exactRadioButton.text=\u5b8c\u5168\u4e00\u81f4 +DropdownSearchPanel.substringRadioButton.text=\u90e8\u5206\u4e00\u81f4 +DropdownSearchPanel.regexRadioButton.text=\u6b63\u898f\u8868\u73fe +DropdownSearchPanel.searchButton.text=\u691c\u7d22 +DropdownSearchPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a DropdownSearchPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e DropdownSearchPanel.pasteMenuItem.text=\u8cbc\u308a\u4ed8\u3051 DropdownSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -DropdownSearchPanel.cutMenuItem.text=\u30ab\u30c3\u30c8 -KeywordSearchIngestModule.moduleDescription=\u30ea\u30b9\u30c8\u5185\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u304a\u3088\u3073\u6b63\u898f\u8868\u73fe\u3092\u4f7f\u3044\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u304a\u3088\u3073\u5b9a\u671f\u7684\u306a\u691c\u7d22\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 -OptionsCategory_Name_KeywordSearchOptions=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 -OptionsCategory_Keywords_KeywordSearchOptions=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 -AbstractFileStringContentStream.getSize.exception.msg=\u30b9\u30c8\u30ea\u30f3\u30b0\u5168\u4f53\u304c\u5909\u63db\u3055\u308c\u306a\u3051\u308c\u3070\u3001\u5909\u63db\u3055\u308c\u305f\u30b9\u30c8\u30ea\u30f3\u30b0\u5185\u306e\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u6570\u306f\u4e0d\u660e\u3067\u3059\u3002 -AbstractFileStringContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb\uff1a{0} -ByteContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb\uff1a{0} -ExtractedContentPanel.SetMarkup.progress.loading=\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d -ExtractedContentPanel.SetMarkup.progress.displayName=\u30c6\u30ad\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d +AbstractFileStringContentStream.getSize.exception.msg=\u6587\u5b57\u5217\u5168\u4f53\u304c\u5909\u63db\u3055\u308c\u308b\u307e\u3067\u3001\u5909\u63db\u3055\u308c\u305f\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570\u306f\u308f\u304b\u308a\u307e\u305b\u3093 +AbstractFileStringContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb:{0} +ByteContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb:{0} ExtractedContentViewer.nextPage.exception.msg=\u6b21\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 ExtractedContentViewer.previousPage.exception.msg=\u524d\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 ExtractedContentViewer.hasNextItem.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u53ef\u80fd\u306a\u30bd\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 @@ -138,147 +189,188 @@ ExtractedContentViewer.hasPreviousItem.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3 ExtractedContentViewer.nextItem.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u53ef\u80fd\u306a\u30bd\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 ExtractedContentViewer.previousItem.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u53ef\u80fd\u306a\u30bd\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 ExtractedContentViewer.currentItem.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u691c\u7d22\u53ef\u80fd\u306a\u30bd\u30fc\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -HighlightedMatchesSource.nextPage.exception.msg=\u6b21\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -HighlightedMatchesSource.previousPage.exception.msg=\u524d\u306e\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -HighlightedMatchesSource.nextItem.exception.msg=\u6b21\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -HighlightedMatchesSource.previousItem.exception.msg=\u524d\u306e\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -Ingester.ingest.exception.unknownImgId.msg=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u3044\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\uff1a{0}\u306e\u4e0d\u660e\u306a\u30a4\u30e1\u30fc\u30b8ID -Ingester.ingest.exception.cantReadStream.msg=\u30b3\u30f3\u30c6\u30f3\u30c4\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -Ingester.ingest.exception.err.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u30a8\u30e9\u30fc\uff1a{0} -Ingester.ingestExtract.exception.solrTimeout.msg=\u6b21\u306eID\u306b\u5bfe\u3059\u308b\u3001Solr\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\uff1a{0}, \u540d\u524d\: {1} -Ingester.ingestExtract.exception.probPostToSolr.msg=Solr\u306b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30dd\u30b9\u30c8\u3059\u308b\u306e\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002ID\uff1a{0}, \u540d\u524d\: {1} -Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=Solr\u30b3\u30a2\u304c\u5229\u7528\u4e0d\u53ef\u3067\u3059\u3002\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002 -Ingester.UpRequestTask.run.exception.probReadFile.msg=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u53d6\u308a\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Ingester.UpRequestTask.run.exception.solrProb.msg=Solr\u306b\u554f\u984c\u304c\u3042\u308a\u307e\u3059 -Ingester.UpRequestTask.run.exception.probPostToSolr.msg=\u30d5\u30a1\u30a4\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092Solr\u306b\u8f09\u305b\u308b\u306e\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002SolrException\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\uff1a{0} -Ingester.FscContentStream.getSrcInfo=\u30d5\u30a1\u30a4\u30eb\uff1a{0} +Ingester.ingest.exception.unknownImgId.msg=\u30d5\u30a1\u30a4\u30eb\u306e\u7d22\u5f15\u751f\u6210\u304c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002\u672a\u77e5\u306e\u30a4\u30e1\u30fc\u30b8ID\u3067\u3059\u3002\u5bfe\u8c61\u30d5\u30a1\u30a4\u30eb: {0} +Ingester.ingest.exception.cantReadStream.msg=\u6b21\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Ingester.ingest.exception.err.msg=\u6b21\u306e\u6587\u66f8\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Ingester.ingestExtract.exception.solrTimeout.msg=Solr\u7d22\u5f15\u751f\u6210\u30ea\u30af\u30a8\u30b9\u30c8\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3002\u5bfe\u8c61ID: {0}\u3001\u540d\u524d: {1} +Ingester.ingestExtract.exception.probPostToSolr.msg=Solr\u306b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u63b2\u8f09\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u5bfe\u8c61ID: {0}\u3001\u540d\u524d: {1} +Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=\u5229\u7528\u53ef\u80fd\u306aSolr\u30b3\u30a2\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093 +Ingester.UpRequestTask.run.exception.probReadFile.msg=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Ingester.UpRequestTask.run.exception.solrProb.msg=Solr\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Ingester.UpRequestTask.run.exception.probPostToSolr.msg=Solr\u306b\u30d5\u30a1\u30a4\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u63b2\u8f09\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002SolrException\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9: {0} +Ingester.FscContentStream.getSrcInfo=\u30d5\u30a1\u30a4\u30eb:{0} Ingester.FscContentStream.getReader=\u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -Ingester.NullContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb\uff1a{0} +Ingester.NullContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb:{0} Ingester.NullContentStream.getReader=\u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 KeywordSearch.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -KeywordSearch.fireNumIdxFileChg.moduleErr.msg=KeywordSearch\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\u3092\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 -KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Solr\u30b5\u30fc\u30d0\u3078\u63a5\u7d9a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a{0} +KeywordSearch.fireNumIdxFileChg.moduleErr.msg=KeywordSearch\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 KeywordSearchListsEncase.save.exception.msg=\u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 KeywordSearchListsEncase.save2.exception.msg=\u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -KeywordSearchListsEncase.encaseMetaType.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044EncaseMetaType\uff1a{0} +KeywordSearchListsEncase.encaseMetaType.exception.msg=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044EncaseMetaType: {0} KeywordSearchListsManagementPanel.getColName.text=\u540d\u524d KeywordSearchListsManagementPanel.setValueAt.exception.msg=\u30bb\u30eb\u306e\u7de8\u96c6\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 KeywordSearchOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -KeywordSearchOptionsPanelController.moduleErr.msg1=KeywordSearchOptionsPanelController\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\u3092\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 -KeywordSearchOptionsPanelController.moduleErr.msg2=KeywordSearchOptionsPanelController\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\u3092\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 +KeywordSearchOptionsPanelController.moduleErr.msg1=KeywordSearchOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchOptionsPanelController.moduleErr.msg2=KeywordSearchOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 KeywordSearchQueryManager.pathText.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 -KeywordSearchResultFactory.progress.saving=\u7d50\u679c\u3092\u4fdd\u5b58\u4e2d\uff1a{0} -KeywordSearchSettings.moduleName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +KeywordSearchResultFactory.progress.saving=\u6b21\u306e\u7d50\u679c\u3092\u4fdd\u5b58: {0} +KeywordSearchSettings.moduleName.text=KeywordSearch KeywordSearchSettings.properties_options.text={0}_\u30aa\u30d7\u30b7\u30e7\u30f3 KeywordSearchSettings.propertiesNSRL.text={0}_NSRL -KeywordSearchSettings.propertiesScripts.text={0}_\u30b9\u30af\u30ea\u30d7\u30c8 -NoOpenCoreException.err.noOpenSorlCore.msg=\u73fe\u5728\u958b\u3044\u3066\u3044\u308bSolr\u30b3\u30a2\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -Server.start.exception.cantStartSolr.msg=Solr\u30b5\u30fc\u30d0\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.start.exception.cantStartSolr.msg2=Solr\u30b5\u30fc\u30d0\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.isRunning.exception.errCheckSolrRunning.msg=Solr\u30b5\u30fc\u30d0\u306e\u7a3c\u50cd\u72b6\u614b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -Server.isRunning.exception.errCheckSolrRunning.msg2=Solr\u30b5\u30fc\u30d0\u304c\u7a3c\u50cd\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -Server.openCore.exception.alreadyOpen.msg=\u3059\u3067\u306b\u958b\u3044\u3066\u3044\u308b\u30b3\u30a2\u3067\u3059\uff01\u307e\u305a\u78ba\u5b9f\u306b\u30b3\u30a2\u3092\u9589\u3058\u3066\u4e0b\u3055\u3044\u3002 -Server.queryNumIdxFiles.exception.msg=\u8907\u6570\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u306e\u30af\u30a8\u30ea\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Server.queryNumIdxChunks.exception.msg=\u8907\u6570\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u306b\u5bfe\u3057\u3066\u306e\u30af\u30a8\u30ea\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Server.queryNumIdxDocs.exception.msg=\u8907\u6570\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u306e\u30af\u30a8\u30ea\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Server.queryIsIdxd.exception.msg=\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u304b\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Server.queryNumFileChunks.exception.msg=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e3\u30f3\u30af\u306e\u6570\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Server.query.exception.msg=\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a{0} -Server.query2.exception.msg=\u30af\u30a8\u30ea\uff1a{0}\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -Server.queryTerms.exception.msg=Terms\u30af\u30a8\u30ea\: {0}\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -Server.openCore.exception.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u304c\u307e\u3060\u7a3c\u50cd\u3057\u3066\u3044\u307e\u305b\u3093 -Server.openCore.exception.cantOpen.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f5c\u6210\u307e\u305f\u306f\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +KeywordSearchSettings.propertiesScripts.text={0}_\u6587\u5b57\u5217 +NoOpenCoreException.err.noOpenSorlCore.msg=\u73fe\u5728\u958b\u3044\u3066\u3044\u308bSolr\u306e\u30b3\u30a2\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +SearchRunner.query.exception.msg=\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: +# {0} - \u30b3\u30a2\u540d +Server.deleteCore.exception.msg=Solr \u30b3\u30a2 {0} \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Server.start.exception.cantStartSolr.msg=Solr\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Server.start.exception.cantStartSolr.msg2=Solr\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Server.isRunning.exception.errCheckSolrRunning.msg=Solr\u30b5\u30fc\u30d0\u30fc\u304c\u5b9f\u884c\u4e2d\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Server.isRunning.exception.errCheckSolrRunning.msg2=Solr\u30b5\u30fc\u30d0\u30fc\u304c\u5b9f\u884c\u4e2d\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Server.openCore.exception.alreadyOpen.msg=\u958b\u3044\u3066\u3044\u308bSolr\u306e\u30b3\u30a2\u304c\u3059\u3067\u306b\u3042\u308a\u307e\u3059\u3002\u6700\u521d\u306b\u30b3\u30a2\u3092\u660e\u793a\u7684\u306b\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002 +Server.queryNumIdxFiles.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570\u3092\u30af\u30a8\u30ea\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Server.queryNumIdxChunks.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c1\u30e3\u30f3\u30af\u6570\u3092\u30af\u30a8\u30ea\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Server.queryNumIdxDocs.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u6587\u66f8\u6570\u3092\u30af\u30a8\u30ea\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Server.queryIsIdxd.exception.msg=\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Server.queryNumFileChunks.exception.msg=\u30d5\u30a1\u30a4\u30eb\u30c1\u30e3\u30f3\u30af\u6570\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Server.query.exception.msg=\u6b21\u306e\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Server.query2.exception.msg=\u6b21\u306e\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Server.queryTerms.exception.msg=\u6b21\u306eterms(\u6574\u6570/\u6587\u5b57\u5217/\u914d\u5217)\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Server.connect.exception.msg=\u6b21\u306eSolr\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Server.openCore.exception.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u306f\u307e\u3060\u5b9f\u884c\u3057\u3066\u3044\u307e\u305b\u3093 +Server.openCore.exception.cantOpen.msg=\u7d22\u5f15\u3092\u4f5c\u6210\u307e\u305f\u306f\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f +Server.openCore.exception.noIndexDir.msg=\u7d22\u5f15\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u306a\u304b\u3063\u305f\u304b\u3001\u898b\u3064\u304b\u308a\u307e\u305b\u3093 Server.request.exception.exception.msg=Solr\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u767a\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.commit.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u30b3\u30df\u30c3\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.addDoc.exception.msg=\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u30cf\u30f3\u30c9\u30e9\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u304c\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u6b21\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} -Server.close.exception.msg=\u30b3\u30a2\u3092\u9589\u3058\u308c\u307e\u305b\u3093 -Server.close.exception.msg2=\u30b3\u30a2\u3092\u9589\u3058\u308c\u307e\u305b\u3093 -Server.solrServerNoPortException.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u306b\u4f7f\u7528\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d0\u306f\u30dd\u30fc\u30c8{0}\u306b\u30d0\u30a4\u30f3\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30dd\u30fc\u30c8\u306f\u4f7f\u7528\u4e0d\u53ef\u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8{1}\u30dd\u30fc\u30c8\u306e\u5909\u66f4\u3092\u691c\u8a0e\u3057\u3066\u4e0b\u3055\u3044\u3002 -KeywordSearchIngestModule.doInBackGround.displayName=\u5b9a\u671f\u7684\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 -KeywordSearchIngestModule.doInBackGround.finalizeMsg=- \u6700\u7d42\u51e6\u7406\u4e2d -KeywordSearchIngestModule.doInBackGround.pendingMsg=\uff08\u30da\u30f3\u30c7\u30a3\u30f3\u30b0\uff09 -SearchRunner.doInBackGround.cancelMsg=\uff08\u30ad\u30e3\u30f3\u30bb\u30eb\u4e2d\u2026\uff09 -Server.addDoc.exception.msg2=\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u30cf\u30f3\u30c9\u30e9\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u304c\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u6b21\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0} +Server.commit.exception.msg=\u7d22\u5f15\u3092\u78ba\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Server.addDoc.exception.msg=\u66f4\u65b0\u30cf\u30f3\u30c9\u30e9\u30fc\u7d4c\u7531\u3067\u6b21\u306e\u6587\u66f8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Server.addDoc.exception.msg2=\u66f4\u65b0\u30cf\u30f3\u30c9\u30e9\u30fc\u7d4c\u7531\u3067\u6b21\u306e\u6587\u66f8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +Server.close.exception.msg=\u30b3\u30a2\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 +Server.close.exception.msg2=\u30b3\u30a2\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 +Server.solrServerNoPortException.msg=\u7d22\u5f15\u751f\u6210\u30b5\u30fc\u30d0\u30fc\u306f\u30dd\u30fc\u30c8 {0} \u306b\u30d0\u30a4\u30f3\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e {1} \u30dd\u30fc\u30c8\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 KeywordSearchJobSettingsPanel.keywordSearchEncodings.text=- +KeywordSearchJobSettingsPanel.languagesValLabel.toolTipText= KeywordSearchJobSettingsPanel.languagesValLabel.text=- -KeywordSearchJobSettingsPanel.encodingsLabel.text=\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff1a -KeywordSearchJobSettingsPanel.titleLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u306b\u6709\u52b9\u306b\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u9078\u629e\uff1a -KeywordSearchJobSettingsPanel.languagesLabel.toolTipText=\u4e0d\u660e\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa\u3092\u6709\u52b9\u306b\u3057\u305f\u30b9\u30af\u30ea\u30d7\u30c8\u3002\u30a2\u30c9\u30d0\u30f3\u30b9\u8a2d\u5b9a\u304b\u3089\u5909\u66f4\u304c\u53ef\u80fd\u3067\u3059\u3002 -KeywordSearchJobSettingsPanel.languagesLabel.text=\u4e0d\u660e\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa\u3092\u6709\u52b9\u306b\u3057\u305f\u30b9\u30af\u30ea\u30d7\u30c8\uff1a -KeywordSearchGlobalLanguageSettingsPanel.enableUTF8Checkbox.text=UTF8\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u306e\u6709\u52b9\u5316 -KeywordSearchGlobalLanguageSettingsPanel.ingestSettingsLabel.text=\u4e0d\u660e\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a\uff08\u5909\u66f4\u306f\u6b21\u56de\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304b\u3089\u6709\u52b9\uff09\uff1a -KeywordSearchGlobalLanguageSettingsPanel.enableUTF16Checkbox.text=UTF16LE\u3068UTF16BE\u30b9\u30c8\u30ea\u30f3\u30b0\u62bd\u51fa\u306e\u6709\u52b9\u5316 -KeywordSearchGlobalLanguageSettingsPanel.languagesLabel.text=\u6709\u52b9\u306a\u30b9\u30af\u30ea\u30d7\u30c8\uff08\u8a00\u8a9e\uff09\uff1a -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.toolTipText=\uff12\uff10\u5206\uff08\u6700\u77ed\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\uff09 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.text=\uff12\uff10\u5206\uff08\u6700\u3082\u9045\u3044\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u6700\u77ed\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\uff09 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.toolTipText=\uff11\uff10\u5206\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3088\u308a\u5168\u4f53\u7684\u306b\u901f\u3044\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\uff09 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.text=\uff11\uff10\u5206\uff08\u3088\u308a\u9045\u3044\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u3088\u308a\u901f\u3044\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\uff09 -KeywordSearchGlobalSearchSettingsPanel.frequencyLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u7d50\u679c\u66f4\u65b0\u306e\u983b\u5ea6\uff1a -KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.toolTipText=Hash DB\u30b5\u30fc\u30d3\u30b9\u3092\u4e8b\u524d\u306b\u5b9f\u884c\u3059\u308b\u304b\u3001\u6b21\u56de\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 -KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306bNSRL\u306e\u30d5\u30a1\u30a4\u30eb\uff08\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\uff09\u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u8ffd\u52a0\u3057\u306a\u3044 +KeywordSearchJobSettingsPanel.encodingsLabel.text=\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0: +KeywordSearchJobSettingsPanel.titleLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u6709\u52b9\u5316\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u9078\u629e: +KeywordSearchJobSettingsPanel.languagesLabel.toolTipText=\u672a\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u6587\u5b57\u5217\u62bd\u51fa\u306e\u305f\u3081\u306b\u6709\u52b9\u5316\u3055\u308c\u305f\u6587\u5b57\u5217\u3067\u3059\u3002\u8a73\u7d30\u8a2d\u5b9a\u3067\u5909\u66f4\u3092\u884c\u3048\u307e\u3059\u3002 +KeywordSearchJobSettingsPanel.languagesLabel.text=\u672a\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u6587\u5b57\u5217\u62bd\u51fa\u306e\u305f\u3081\u306b\u6709\u52b9\u5316\u3055\u308c\u305f\u6587\u5b57\u5217\u3067\u3059\u3002 +KeywordSearchGlobalLanguageSettingsPanel.enableUTF8Checkbox.text=UTF8\u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u3092\u6709\u52b9\u5316\u3059\u308b +KeywordSearchGlobalLanguageSettingsPanel.ingestSettingsLabel.text=\u672a\u77e5\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3089\u306e\u6587\u5b57\u5217\u62bd\u51fa\u306e\u305f\u3081\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a(\u5909\u66f4\u306f\u6b21\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3067\u6709\u52b9\u306b\u306a\u308a\u307e\u3059): +KeywordSearchGlobalLanguageSettingsPanel.enableUTF16Checkbox.text=UTF16LE\u304a\u3088\u3073UTF16BE\u6587\u5b57\u5217\u62bd\u51fa\u3092\u6709\u52b9\u5316 +KeywordSearchGlobalLanguageSettingsPanel.enableOcrCheckbox.text=\u5149\u5b66\u6587\u5b57\u8a8d\u8b58(OCR)\u3092\u6709\u52b9\u5316 +KeywordSearchGlobalLanguageSettingsPanel.languagesLabel.text=\u6709\u52b9\u5316\u3055\u308c\u305f\u6587\u5b57\u5217(\u8a00\u8a9e): +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.toolTipText=20\u5206(\u6700\u901f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton1.text=20\u5206(\u6700\u9045\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u6700\u901f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.toolTipText=10\u5206(\u30c7\u30d5\u30a9\u30eb\u30c8\u3088\u308a\u3082\u901f\u3044\u7dcf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton2.text=10\u5206(\u3088\u308a\u9045\u3044\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u3088\u308a\u901f\u3044\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8) +KeywordSearchGlobalSearchSettingsPanel.frequencyLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u7d50\u679c\u66f4\u65b0\u983b\u5ea6: +KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.toolTipText=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30b5\u30fc\u30d3\u30b9\u306b\u4ee5\u524d\u306b\u5b9f\u884c\u6e08\u307f\u3067\u3042\u308b\u3053\u3068\u3001\u307e\u305f\u306f\u6b21\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u9078\u629e\u3055\u308c\u308b\u3053\u3068\u3092\u8981\u6c42\u3057\u307e\u3059\u3002 +KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306bNSRL(\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb)\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u8ffd\u52a0\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 KeywordSearchGlobalSearchSettingsPanel.informationLabel.text=\u60c5\u5831 KeywordSearchGlobalSearchSettingsPanel.settingsLabel.text=\u8a2d\u5b9a -KeywordSearchGlobalSearchSettingsPanel.filesIndexedValue.text=- -KeywordSearchGlobalSearchSettingsPanel.filesIndexedLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5185\u306e\u30d5\u30a1\u30a4\u30eb\uff1a -KeywordSearchGlobalSearchSettingsPanel.chunksValLabel.text=- -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.toolTipText=\uff11\u5206\uff08\u5168\u4f53\u7684\u306a\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059\uff09 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.text_1=\uff11\u5206\uff08\u3088\u308a\u901f\u3044\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u6700\u3082\u9577\u3044\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\uff09 -KeywordSearchGlobalSearchSettingsPanel.chunksLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5185\u306e\u30c1\u30e3\u30f3\u30af\uff1a -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.toolTipText=\uff15\u5206\uff08\u5168\u4f53\u7684\u306a\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059\uff09 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.text=\uff15\u5206\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09 -DropdownSearchPanel.substringRadioButton.text=\u30b5\u30d6\u30b9\u30c8\u30ea\u30f3\u30b0\u4e00\u81f4 -AbstractFileTikaTextExtract.index.exception.tikaParse.msg=\u4f8b\u5916\uff1a\u30d5\u30a1\u30a4\u30eb\uff1a{0}, {1}\u306eApache Tika\u30d1\u30fc\u30b9\u30bf\u30b9\u30af\u5b9f\u884c\u4e2d\u306e\u4e88\u671f\u305b\u306c\u4f8b\u5916 -AbstractFileTikaTextExtract.index.tikaParseTimeout.text=\u4f8b\u5916\uff1a\u30b3\u30f3\u30c6\u30f3\u30c4\uff1a{0}, {1}\u306eApache Tika\u30d1\u30fc\u30b9\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 -DropdownSearchPanel.exactRadioButton.text=\u5b8c\u5168\u4e00\u81f4 -DropdownSearchPanel.regexRadioButton.text=\u6b63\u898f\u8868\u73fe -DropdownSearchPanel.searchButton.text=\u691c\u7d22 -KeywordSearchEditListPanel.exportButtonAction.featureName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 -KeywordSearchGlobalListSettingsPanel.component.featureName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u4fdd\u5b58 -KeywordSearchGlobalSearchSettingsPanel.showSnippetsCB.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d7\u30ec\u30d3\u30e5\u30fc\u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u306b\u8868\u793a\uff08\u691c\u7d22\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059\uff09 -KeywordSearchIngestModule.fileThLbl=\u30d5\u30a1\u30a4\u30eb -KeywordSearchIngestModule.kwHitLbl=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8\uff1a +KeywordSearchGlobalSearchSettingsPanel.filesIndexedValue.text=0 +KeywordSearchGlobalSearchSettingsPanel.filesIndexedLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u5185\u306e\u30d5\u30a1\u30a4\u30eb: +KeywordSearchGlobalSearchSettingsPanel.showSnippetsCB.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u30d7\u30ec\u30d3\u30e5\u30fc\u3092\u8868\u793a(\u691c\u7d22\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059) +KeywordSearchGlobalSearchSettingsPanel.chunksValLabel.text=0 +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.toolTipText=1\u5206(\u7dcf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\u306f\u6700\u9577\u306b\u306a\u308a\u307e\u3059) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton4.text_1=1\u5206(\u3088\u308a\u901f\u3044\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3001\u6700\u9577\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8) +KeywordSearchGlobalSearchSettingsPanel.chunksLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u5185\u306e\u30c1\u30e3\u30f3\u30af: +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.toolTipText=5\u5206(\u7dcf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059) +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton3.text=5\u5206(\u30c7\u30d5\u30a9\u30eb\u30c8) +KeywordSearchIngestModule.regExpHitLbl=\u6b63\u898f\u8868\u73fe\u30d2\u30c3\u30c8: +KeywordSearchIngestModule.kwHitLbl=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8: KeywordSearchIngestModule.kwHitThLbl=\u30ad\u30fc\u30ef\u30fc\u30c9 -KeywordSearchIngestModule.listThLbl=\u30ea\u30b9\u30c8 KeywordSearchIngestModule.previewThLbl=\u30d7\u30ec\u30d3\u30e5\u30fc -KeywordSearchIngestModule.regExpHitLbl=\u6b63\u898f\u8868\u73fe\u30d2\u30c3\u30c8\uff1a +KeywordSearchIngestModule.fileThLbl=\u30d5\u30a1\u30a4\u30eb +KeywordSearchIngestModule.listThLbl=\u30ea\u30b9\u30c8 KeywordSearchIngestModule.regExThLbl=\u6b63\u898f\u8868\u73fe -KeywordSearchListsAbstract.addList.errMsg1.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsAbstract.addList.errMsg2.msg=KeywordSearchListsAbstract\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\u3092\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 +AbstractFileTikaTextExtract.index.tikaParseTimeout.text=\u4f8b\u5916: \u6b21\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u306eTika\u89e3\u6790\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8: {0}\u3001{1} +AbstractFileTikaTextExtract.index.exception.tikaParse.msg=\u4f8b\u5916: \u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u306eTika\u89e3\u6790\u30bf\u30b9\u30af\u5b9f\u884c\u6642\u306e\u4e88\u671f\u305b\u306c\u4f8b\u5916: {0}\u3001{1} +KeywordSearchEditListPanel.exportButtonAction.featureName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +KeywordSearchGlobalListSettingsPanel.component.featureName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u4fdd\u5b58 KeywordSearchListsAbstract.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -KeywordSearchPanel.searchDropButton.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 -SearchRunner.updateTimer.title.text=SearchRunner\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u30bf\u30a4\u30de\u30fc -KeywordSearchListsAbstract.deleteList.errMsg1.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsAbstract.saveList.errMsg1.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsAbstract.saveList.errMsg2.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsAbstract.writeLists.errMsg1.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsAbstract.writeLists.errMsg2.msg=KeywordSearchListsAbstract\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\u3092\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 -KeywordSearchListsManagementPanel.newKeywordListDescription=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8<{0}>\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30ea\u30b9\u30c8\u3068\u3057\u3066\u5b58\u5728\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f7f\u7528\u4e2d\u306e\u307f\u3053\u306e\u30ea\u30b9\u30c8\u3092\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f\uff08\u3053\u306e\u5909\u66f4\u306f\u7d99\u7d9a\u3055\u308c\u307e\u305b\u3093\uff09 -KeywordSearchListsManagementPanel.newKeywordListDescription2=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8<{0}>\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f -KeywordSearchModuleFactory.createFileIngestModule.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof KeywordSearchJobSettings -KeywordSearchModuleFactory.getIngestJobSettingsPanel.exception.msg=\u8a2d\u5b9a\u3092\u884c\u3046\u70ba\u306e\u60f3\u5b9a\u3055\u308c\u308b\u5f15\u6570\u306finstanceof KeywordSearchJobSettings -SearchRunner.Searcher.done.err.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.text=\u5b9a\u671f\u7684\u691c\u7d22\u7121\u3057 -KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.toolTipText=\u5168\u4f53\u7684\u306b\u4e00\u756a\u901f\u3044\u3067\u3059\u304c\u3001\u51e6\u7406\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u7d50\u679c\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093 -KeywordSearch.openCore.notification.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f -KeywordSearch.closeCore.notification.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u9589\u3058\u308b\u969b\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -KeywordSearchListsManagementPanel.fileExtensionFilterLb2=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30f3\u30b1\u30fc\u30b9\u3059\u308b(txt) -Server.connect.exception.msg=Solr\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{0} -Server.openCore.exception.noIndexDir.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u307e\u305f\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -KeywordSearchIngestModule.startUp.noOpenCore.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u307e\u305f\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 -SolrConnectionCheck.HostnameOrPort=hostname\u3084\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059\u3002 -SolrConnectionCheck.Hostname=hostname\u304c\u7121\u52b9\u3067\u3059\u3002 -SolrConnectionCheck.Port=\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059\u3002 -SolrConnectionCheck.MissingHostname=hostname\u304c\u6b20\u3051\u3066\u307e\u3059\u3002 -ExtractedContentViewer.getText.error.msg=\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +KeywordSearchListsAbstract.addList.errMsg1.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsAbstract.addList.errMsg2.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +SearchRunner.updateTimer.title.text=SearchRunner\u66f4\u65b0\u30bf\u30a4\u30de\u30fc +KeywordSearchListsAbstract.saveList.errMsg1.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsAbstract.saveList.errMsg2.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsAbstract.writeLists.errMsg1.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsAbstract.writeLists.errMsg2.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsAbstract.deleteList.errMsg1.msg=KeywordSearchListsAbstract\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +KeywordSearchListsManagementPanel.newKeywordListDescription=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30ea\u30b9\u30c8\u3068\u3057\u3066\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b(\u5909\u66f4\u306f\u6052\u4e45\u7684\u3067\u306f\u3042\u308a\u307e\u305b\u3093)? +KeywordSearchListsManagementPanel.newKeywordListDescription2=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8 <{0}> \u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b? +KeywordSearchModuleFactory.getIngestJobSettingsPanel.exception.msg=instanceof KeywordSearchJobSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +KeywordSearchModuleFactory.createFileIngestModule.exception.msg=instanceof KeywordSearchJobSettings\u306b\u306a\u308b\u3068\u4e88\u60f3\u3055\u308c\u308b\u8a2d\u5b9a\u5f15\u6570 +SearchRunner.Searcher.done.err.msg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.toolTipText=\u5168\u4f53\u3067\u6700\u901f\u3067\u3059\u304c\u3001\u6700\u5f8c\u307e\u3067\u7d50\u679c\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093 +KeywordSearchGlobalSearchSettingsPanel.timeRadioButton5.text=\u5b9a\u671f\u691c\u7d22\u306a\u3057 +SolrConnectionCheck.HostnameOrPort=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u304a\u3088\u3073/\u307e\u305f\u306f\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +SolrConnectionCheck.Hostname=\u7121\u52b9\u306a\u30db\u30b9\u30c8\u540d\u3067\u3059\u3002 +SolrConnectionCheck.MissingHostname=\u30db\u30b9\u30c8\u540d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +GlobalListsManagementPanel.newListButton.text=\u65b0\u898f\u30ea\u30b9\u30c8 +GlobalListsManagementPanel.importButton.text=\u30ea\u30b9\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8 +GlobalListsManagementPanel.keywordListsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8: +NewKeywordPanel.regexButton.text=\u6b63\u898f\u8868\u73fe +NewKeywordPanel.exactButton.text=\u5b8c\u5168\u4e00\u81f4 +NewKeywordPanel.substringButton.text=\u90e8\u5206\u4e00\u81f4 +NewKeywordPanel.keywordTextField.text= +NewKeywordPanel.newKeywordLabel.text=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b: +AddKeywordsDialog.exactRadioButton.text=\u5b8c\u5168\u4e00\u81f4 +AddKeywordsDialog.substringRadioButton.text=\u90e8\u5206\u4e00\u81f4 +AddKeywordsDialog.regexRadioButton.text=\u6b63\u898f\u8868\u73fe +AddKeywordsDialog.keywordTypeLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30bf\u30a4\u30d7\u3092\u9078\u629e: +AddKeywordsDialog.enterKeywordsLabel.text=\u6b21\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u5165\u529b(1\u884c\u306b\u3064\u304d1\u3064): +AddKeywordsDialog.pasteButton.text=\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u304b\u3089\u8cbc\u308a\u4ed8\u3051 +AddKeywordsDialog.addButton.text=OK +AddKeywordsDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +AddKeywordsDialog.addKeywordsTitle.text=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9 +GlobalEditListPanel.newKeywordsButton.text=\u65b0\u898f\u30ad\u30fc\u30ef\u30fc\u30c9 +GlobalEditListPanel.addKeywordResults.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u3092\u8ffd\u52a0 +GlobalEditListPanel.keywordsAdded.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u6b63\u5e38\u306b\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002 +GlobalEditListPanel.keywordsAddedPlural.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u6b63\u5e38\u306b\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002 +GlobalEditListPanel.keywordDupesSkipped.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u30ea\u30b9\u30c8\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3057\u305f\u3002 +GlobalEditListPanel.keywordDupesSkippedPlural.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u30ea\u30b9\u30c8\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3057\u305f\u3002 +GlobalEditListPanel.keywordErrors.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u89e3\u6790\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u78ba\u8a8d\u3057\u3066\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 +GlobalEditListPanel.keywordErrorsPlural.text={0} \u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u89e3\u6790\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u78ba\u8a8d\u3057\u3066\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 GlobalListsManagementPanel.exportButton.text=\u30ea\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 GlobalListsManagementPanel.deleteListButton.text=\u30ea\u30b9\u30c8\u3092\u524a\u9664 GlobalListsManagementPanel.copyListButton.text=\u30ea\u30b9\u30c8\u3092\u30b3\u30d4\u30fc +GlobalListsManagementPanel.renameListButton.text=\u30ea\u30b9\u30c8\u540d\u3092\u7de8\u96c6 +GlobalEditListPanel.editWordButton.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u7de8\u96c6 +SolrConnectionCheck.Port=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +SolrSearch.checkingForLatestIndex.msg=\u6700\u65b0\u306eSolr\u3068\u30b9\u30ad\u30fc\u30de\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u691c\u7d22\u4e2d\u3067\u3059 +SolrSearch.complete.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u304c\u6b63\u5e38\u306b\u958b\u304d\u307e\u3057\u305f +SolrSearch.creatingNewIndex.msg=\u65b0\u898f\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u751f\u6210\u4e2d\u3067\u3059 +SolrSearch.findingIndexes.msg=\u65e2\u5b58\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u691c\u7d22\u4e2d\u3067\u3059 +SolrSearch.indentifyingIndex.msg=\u4f7f\u7528\u3059\u308b\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u7279\u5b9a\u4e2d\u3067\u3059 +SolrSearch.lookingForMetadata.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u4e2d\u3067\u3059 +SolrSearch.openCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059 +SolrSearch.openGiantCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059\u3002\u3053\u306e\u30b1\u30fc\u30b9\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u975e\u5e38\u306b\u5927\u304d\u3044\u305f\u3081\u3001\u8d77\u52d5\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +SolrSearch.openLargeCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +SolrSearch.readingIndexes.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059 +# {0} - \u7d22\u5f15\u30d5\u30a9\u30eb\u30c0\u30fc\u30d1\u30b9 +SolrSearchService.exceptionMessage.failedToDeleteIndexFiles={0} \u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata\u306b\u306f\u73fe\u5728\u306eSolr\u306e\u30b3\u30a2\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +# {0} - \u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +SolrSearchService.exceptionMessage.noIndexMetadata=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304b\u3089\u6b21\u306eIndexMetaData\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} +SolrSearchService.ServiceName=Solr\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 +SolrSearchService.IndexReadOnlyDialog.title=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059 +SolrSearchService.IndexReadOnlyDialog.msg=\u3053\u306e\u30b1\u30fc\u30b9\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002
    \u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3001\u5b8c\u5168\u4e00\u81f4\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3068\u90e8\u5206\u4e00\u81f4\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059
    \u304c\u3001\u7d22\u5f15\u306b\u65b0\u898f\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u307e\u305f\u306f\u6b63\u898f\u8868\u73fe\u691c\u7d22\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u306e\u4ee3\u308f\u308a\u306b\u3001\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4ee5\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067
    \u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u3059\u3002 +ExtractedContentPanel.jLabel1.text=\u30c6\u30ad\u30b9\u30c8\u30bd\u30fc\u30b9: +ExtractedContentPanel.pagePreviousButton.actionCommand=pagePreviousButton +ExtractedContentPanel.pagePreviousButton.text= +ExtractedContentPanel.pageNextButton.text= ExtractedContentPanel.pageCurLabel.text=- -ExtractedContentPanel.pageOfLabel.text=of +ExtractedContentPanel.pageOfLabel.text=/ ExtractedContentPanel.pageTotalLabel.text=- ExtractedContentPanel.pageButtonsLabel.text=\u30da\u30fc\u30b8 -ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8\uff1a -DropdownSingleTermSearchPanel.ingestIndexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff1a -GlobalEditListPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -KeywordSearchGlobalLanguageSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -KeywordSearchGlobalSearchSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u3067\u3059\u3002\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8: +DropdownSingleTermSearchPanel.dataSourceCheckBox.text=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u691c\u7d22\u3092\u5236\u9650: +DropdownListSearchPanel.dataSourceCheckBox.text=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u691c\u7d22\u3092\u5236\u9650: +DropdownSingleTermSearchPanel.ingestIndexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: +DropdownSingleTermSearchPanel.jSaveSearchResults.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8\u306b\u3088\u308b\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u5f62\u3067\u7d50\u679c\u3092\u4fdd\u5b58\u305b\u305a\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c +DropdownSingleTermSearchPanel.jSaveSearchResults.text=\u691c\u7d22\u7d50\u679c\u3092\u4fdd\u5b58 +DropdownListSearchPanel.jSaveSearchResults.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8\u306b\u3088\u308b\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u5f62\u3067\u7d50\u679c\u3092\u4fdd\u5b58\u305b\u305a\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c +DropdownListSearchPanel.jSaveSearchResults.text=\u691c\u7d22\u7d50\u679c\u3092\u4fdd\u5b58 +GlobalEditListPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +KeywordSearchGlobalLanguageSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +KeywordSearchGlobalSearchSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index 6052e3deba..d4c9228c69 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import java.util.stream.Collectors; +import org.apache.tika.mime.MimeTypes; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; @@ -44,12 +45,12 @@ import org.sleuthkit.autopsy.ingest.IngestMessage.MessageType; import org.sleuthkit.autopsy.ingest.IngestModuleReferenceCounter; import org.sleuthkit.autopsy.ingest.IngestServices; import org.sleuthkit.autopsy.keywordsearch.Ingester.IngesterException; -import org.sleuthkit.autopsy.keywordsearch.TextFileExtractor.TextFileExtractorException; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchServiceException; import org.sleuthkit.autopsy.modules.filetypeid.FileTypeDetector; import org.sleuthkit.autopsy.textextractors.TextExtractor; import org.sleuthkit.autopsy.textextractors.TextExtractorFactory; +import org.sleuthkit.autopsy.textextractors.TextFileExtractor; import org.sleuthkit.autopsy.textextractors.configs.ImageConfig; import org.sleuthkit.autopsy.textextractors.configs.StringsConfig; import org.sleuthkit.datamodel.AbstractFile; @@ -632,7 +633,7 @@ public final class KeywordSearchIngestModule implements FileIngestModule { if (context.fileIngestIsCancelled()) { return; } - if (fileType.equals("application/octet-stream")) { + if (fileType.equals(MimeTypes.OCTET_STREAM)) { extractStringsAndIndex(aFile); return; } @@ -657,20 +658,7 @@ public final class KeywordSearchIngestModule implements FileIngestModule { if ((wasTextAdded == false) && (aFile.getNameExtension().equalsIgnoreCase("txt") && !(aFile.getType().equals(TskData.TSK_DB_FILES_TYPE_ENUM.CARVED)))) { //Carved Files should be the only type of unallocated files capable of a txt extension and //should be ignored by the TextFileExtractor because they may contain more than one text encoding - try { - TextFileExtractor textFileExtractor = new TextFileExtractor(); - Reader textReader = textFileExtractor.getReader(aFile); - if (textReader == null) { - logger.log(Level.INFO, "Unable to extract with TextFileExtractor, Reader was null for file: {0}", aFile.getName()); - } else if (Ingester.getDefault().indexText(textReader, aFile.getId(), aFile.getName(), aFile, context)) { - putIngestStatus(jobId, aFile.getId(), IngestStatus.TEXT_INGESTED); - wasTextAdded = true; - } - } catch (IngesterException ex) { - logger.log(Level.WARNING, "Unable to index as unicode", ex); - } catch (TextFileExtractorException ex) { - logger.log(Level.INFO, "Could not extract text with TextFileExtractor", ex); - } + wasTextAdded = indexTextFile(aFile); } // if it wasn't supported or had an error, default to strings @@ -678,5 +666,29 @@ public final class KeywordSearchIngestModule implements FileIngestModule { extractStringsAndIndex(aFile); } } + + /** + * Adds the text file to the index given an encoding. + * Returns true if indexing was successful and false otherwise. + * + * @param aFile Text file to analyze + * @param detectedCharset the encoding of the file + */ + private boolean indexTextFile(AbstractFile aFile) { + try { + TextFileExtractor textFileExtractor = new TextFileExtractor(aFile); + Reader textReader = textFileExtractor.getReader(); + if (textReader == null) { + logger.log(Level.INFO, "Unable to extract with TextFileExtractor, Reader was null for file: {0}", aFile.getName()); + } else if (Ingester.getDefault().indexText(textReader, aFile.getId(), aFile.getName(), aFile, context)) { + textReader.close(); + putIngestStatus(jobId, aFile.getId(), IngestStatus.TEXT_INGESTED); + return true; + } + } catch (IngesterException | IOException ex) { + logger.log(Level.WARNING, "Unable to index " + aFile.getName(), ex); + } + return false; + } } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TextFileExtractor.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TextFileExtractor.java deleted file mode 100644 index 66d26a95bf..0000000000 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TextFileExtractor.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2018-2019 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.keywordsearch; -import java.io.IOException; -import java.io.InputStream; -import java.io.BufferedInputStream; -import java.io.Reader; -import org.apache.tika.parser.txt.CharsetDetector; -import org.apache.tika.parser.txt.CharsetMatch; -import org.sleuthkit.datamodel.AbstractFile; -import org.sleuthkit.datamodel.ReadContentInputStream; - -/** - * Extract text from .txt files - */ -final class TextFileExtractor { - - //Set a Minimum confidence value to reject matches that may not have a valid text encoding - //Values of valid text encodings were generally 100, xml code sometimes had a value around 50, - //and pictures and other files with a .txt extention were showing up with a value of 5 or less in limited testing. - //This limited information was used to select the current value as one that would filter out clearly non-text - //files while hopefully working on all files with a valid text encoding - static final private int MIN_MATCH_CONFIDENCE = 20; - - public Reader getReader(AbstractFile source) throws TextFileExtractorException { - CharsetDetector detector = new CharsetDetector(); - //wrap stream in a BufferedInputStream so that it supports the mark/reset methods necessary for the CharsetDetector - InputStream stream = new BufferedInputStream(new ReadContentInputStream(source)); - try { - detector.setText(stream); - } catch (IOException ex) { - throw new TextFileExtractorException("Unable to get string from detected text in TextFileExtractor", ex); - } - CharsetMatch match = detector.detect(); - if (match == null) { - throw new TextFileExtractorException("Unable to detect any matches using TextFileExtractor"); - } else if (match.getConfidence() < MIN_MATCH_CONFIDENCE) { - throw new TextFileExtractorException("Text does not match any character set with a high enough confidence for TextFileExtractor"); - } - - return match.getReader(); - } - - public class TextFileExtractorException extends Exception { - public TextFileExtractorException(String msg, Throwable ex) { - super(msg, ex); - } - public TextFileExtractorException(String msg) { - super(msg); - } - } -} diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED index 805e776717..2f7e1e164c 100755 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle.properties-MERGED @@ -1,6 +1,7 @@ cannotBuildXmlParser=Unable to build XML parser: cannotLoadSEUQA=Unable to load Search Engine URL Query Analyzer settings file, SEUQAMappings.xml: cannotParseXml=Unable to parse XML file: +ChromeCacheExtract_adding_extracted_files_msg=Adding %d extracted files for analysis. ChromeCacheExtractor.moduleName=ChromeCacheExtractor # {0} - module name # {1} - row number diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties index 47af63c1ac..e41e0ee1e3 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties @@ -1,100 +1,100 @@ -OpenIDE-Module-Display-Category=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB +OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ - \u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n\n\ - \u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u4E2D\u306E\u30C7\u30A3\u30B9\u30AF\u30A4\u30E1\u30FC\u30B8\u304B\u3089\u6709\u7528\u306A\u6700\u8FD1\u306E\u30E6\u30FC\u30B6\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u62BD\u51FA\u3057\u307E\u3059\u3002\u4F8B\u3048\u3070\uFF1A\n\n-\u6700\u8FD1\u958B\u3044\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3001\n-\u30A6\u30A7\u30D6\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\uFF08\u8A2A\u308C\u305F\u30B5\u30A4\u30C8\u3001\u4FDD\u5B58\u3055\u308C\u305FCookie\u3001\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3055\u308C\u305F\u30B5\u30A4\u30C8\u3001\u30B5\u30FC\u30C1\u30A8\u30F3\u30B8\u30F3\u30AF\u30A8\u30EA\u3001\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF09\u3001\n-\u6700\u8FD1\u63A5\u7D9A\u3057\u305F\u30C7\u30D0\u30A4\u30B9\u3001\n-\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u30D7\u30ED\u30B0\u30E9\u30E0\u3002\n\n\ - \u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u73FE\u5728Windows\u306E\u30C7\u30A3\u30B9\u30AF\u30A4\u30E1\u30FC\u30B8\u3057\u304B\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002\n\ - \u30D7\u30E9\u30B0\u30A4\u30F3\u306FWindows\u7248\u306EAutopsy\u3092\u5229\u7528\u3059\u308B\u3068\u5168\u3066\u306E\u6A5F\u80FD\u304C\u4F7F\u3048\u307E\u3059\u3002 -OpenIDE-Module-Name=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -OpenIDE-Module-Short-Description=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30D5\u30A1\u30A4\u30F3\u30C0\u30FC\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB + \u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\ + \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u6709\u7528\u306a\u6700\u8fd1\u306e\u30e6\u30fc\u30b6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\uff1a\n\n-\u6700\u8fd1\u958b\u3044\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\n-\u30a6\u30a7\u30d6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\uff08\u8a2a\u308c\u305f\u30b5\u30a4\u30c8\u3001\u4fdd\u5b58\u3055\u308c\u305fCookie\u3001\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3055\u308c\u305f\u30b5\u30a4\u30c8\u3001\u30b5\u30fc\u30c1\u30a8\u30f3\u30b8\u30f3\u30af\u30a8\u30ea\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff09\u3001\n-\u6700\u8fd1\u63a5\u7d9a\u3057\u305f\u30c7\u30d0\u30a4\u30b9\u3001\n-\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3002\n\n\ + \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u73fe\u5728Windows\u306e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u3057\u304b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\n\ + \u30d7\u30e9\u30b0\u30a4\u30f3\u306fWindows\u7248\u306eAutopsy\u3092\u5229\u7528\u3059\u308b\u3068\u5168\u3066\u306e\u6a5f\u80fd\u304c\u4f7f\u3048\u307e\u3059\u3002 +OpenIDE-Module-Name=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +OpenIDE-Module-Short-Description=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30d5\u30a1\u30a4\u30f3\u30c0\u30fc\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb Chrome.moduleName=Chrome -Chrome.getHistory.errMsg.errGettingFiles=Chrome\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Chrome.getHistory.errMsg.couldntFindAnyFiles=\u30A2\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u3055\u308C\u305FChrome\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -Chrome.getHistory.errMsg.errAnalyzingFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.parentModuleName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -Chrome.getBookmark.errMsg.errGettingFiles=Chrome\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Chrome.getBookmark.errMsg.errAnalyzingFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getBookmark.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getBookmark.errMsg.errAnalyzingFile3={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getBookmark.errMsg.errAnalyzingFile4={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getCookie.errMsg.errGettingFiles=Chrome\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Chrome.getCookie.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getDownload.errMsg.errGettingFiles=Chrome\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Chrome.getDownload.errMsg.errAnalyzeFiles1={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Chrome.getLogin.errMsg.errGettingFiles=Chrome\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Chrome.getLogin.errMsg.errAnalyzingFiles={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Extract.dbConn.errMsg.failedToQueryDb={0}\:\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30AF\u30A8\u30EA\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002 +Chrome.getHistory.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Chrome.getHistory.errMsg.couldntFindAnyFiles=\u30a2\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3055\u308c\u305fChrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +Chrome.getHistory.errMsg.errAnalyzingFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +Chrome.getBookmark.errMsg.errGettingFiles=Chrome\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Chrome.getBookmark.errMsg.errAnalyzingFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getBookmark.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getBookmark.errMsg.errAnalyzingFile3={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getBookmark.errMsg.errAnalyzingFile4={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getCookie.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Chrome.getCookie.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getDownload.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Chrome.getDownload.errMsg.errAnalyzeFiles1={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Chrome.getLogin.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Chrome.getLogin.errMsg.errAnalyzingFiles={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Extract.dbConn.errMsg.failedToQueryDb={0}\:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30af\u30a8\u30ea\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 ExtractIE.moduleName.text=Internet Explorer -ExtractIE.getBookmark.errMsg.errGettingBookmarks={0}\: Internet Explorer\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractIE.parentModuleName.noSpace=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -ExtractIE.parentModuleName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -ExtractIE.getURLFromIEBmkFile.errMsg={0}\:Internet Explorer\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u30D5\u30A1\u30A4\u30EB{1}\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractIE.getURLFromIEBmkFile.errMsg2={0}\:Internet Explorer\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u30D5\u30A1\u30A4\u30EB{1}\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractIE.getCookie.errMsg.errGettingFile={0}\:Internet Explorer\u306Ecookie\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractIE.getCookie.errMsg.errReadingIECookie={0}\:Internet Explorer\u306Ecookie{1}\u3092\u8AAD\u307F\u53D6\u308A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractIE.getHistory.errMsg.unableToGetHist={0}\:Internet Explorer\u5C65\u6B74\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1Apasco\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F -ExtractIE.getHistory.errMsg.errGettingHistFiles={0}\:Internet Explorer\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractIE.getHistory.errMsg.noHistFiles=Internet Explorer\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -ExtractIE.getHistory.errMsg.errWriteFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u66F8\u304D\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractIE.getHistory.errMsg.errProcHist={0}\: Internet Explorer\u5C65\u6B74\u3092\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractIE.parsePascoOutput.errMsg.notFound={0}\:Pasco\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{1} -ExtractIE.parsePascoOutput.errMsg.errParsing={0}\:Internet Explorer\u5C65\u6B74\u30A8\u30F3\u30C8\u30EA{1}\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractIE.parsePascoOutput.errMsg.errParsingEntry={0}\: Internet Explorer\u5C65\u6B74\u30A8\u30F3\u30C8\u30EA\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ExtractRegistry.moduleName.text=\u30EC\u30B8\u30B9\u30C8\u30EA -ExtractRegistry.findRegFiles.errMsg.errReadingFile=\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\uFF1A{0}\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractRegistry.analyzeRegFiles.errMsg.errWritingTemp={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractRegistry.analyzeRegFiles.failedParsingResults={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\u7D50\u679C\u306E\u30D1\u30FC\u30B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F{1} -ExtractRegistry.parentModuleName.noSpace=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -ExtractRegistry.programName=\u30EC\u30B8\u30B9\u30C8\u30EA\u30EA\u30C3\u30D1\u30FC -ExtractRegistry.analyzeRegFiles.errMsg.errReadingRegFile={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB - {1}\u3092\u8AAD\u307F\u53D6\u308A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile2={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile3={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile4={0}\:\u30EC\u30B8\u30B9\u30C8\u30EA\u30D5\u30A1\u30A4\u30EB\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F +ExtractIE.getBookmark.errMsg.errGettingBookmarks={0}\: Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractIE.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +ExtractIE.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +ExtractIE.getURLFromIEBmkFile.errMsg={0}\:Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb{1}\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractIE.getURLFromIEBmkFile.errMsg2={0}\:Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb{1}\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractIE.getCookie.errMsg.errGettingFile={0}\:Internet Explorer\u306ecookie\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractIE.getCookie.errMsg.errReadingIECookie={0}\:Internet Explorer\u306ecookie{1}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractIE.getHistory.errMsg.unableToGetHist={0}\:Internet Explorer\u5c65\u6b74\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1apasco\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +ExtractIE.getHistory.errMsg.errGettingHistFiles={0}\:Internet Explorer\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractIE.getHistory.errMsg.noHistFiles=Internet Explorer\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ExtractIE.getHistory.errMsg.errWriteFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractIE.getHistory.errMsg.errProcHist={0}\: Internet Explorer\u5c65\u6b74\u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractIE.parsePascoOutput.errMsg.notFound={0}\:Pasco\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{1} +ExtractIE.parsePascoOutput.errMsg.errParsing={0}\:Internet Explorer\u5c65\u6b74\u30a8\u30f3\u30c8\u30ea{1}\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractIE.parsePascoOutput.errMsg.errParsingEntry={0}\: Internet Explorer\u5c65\u6b74\u30a8\u30f3\u30c8\u30ea\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ExtractRegistry.moduleName.text=\u30ec\u30b8\u30b9\u30c8\u30ea +ExtractRegistry.findRegFiles.errMsg.errReadingFile=\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\uff1a{0}\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractRegistry.analyzeRegFiles.errMsg.errWritingTemp={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractRegistry.analyzeRegFiles.failedParsingResults={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u7d50\u679c\u306e\u30d1\u30fc\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f{1} +ExtractRegistry.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +ExtractRegistry.programName=\u30ec\u30b8\u30b9\u30c8\u30ea\u30ea\u30c3\u30d1\u30fc +ExtractRegistry.analyzeRegFiles.errMsg.errReadingRegFile={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb - {1}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile2={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile3={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile4={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f Firefox.moduleName=FireFox -Firefox.getHistory.errMsg.errFetchingFiles=Firefox\u306E\u30A4\u30F3\u30BF\u30FC\u30CD\u30C3\u30C8\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getHistory.errMsg.noFilesFound=Firefox\u5C65\u6B74\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -Firefox.getHistory.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Firefox.parentModuleName.noSpace=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -Firefox.parentModuleName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -Firefox.getBookmark.errMsg.errFetchFiles=Firefox\u306E\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getBookmark.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u306E\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Firefox.getCookie.errMsg.errFetchFile=Firefox\u306Ecookie\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getCookie.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Firefox.getDlPre24.errMsg.errFetchFiles=Firefox\u306E\u300C\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u300D\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getDlPre24.errMsg.errAnalyzeFiles={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Firefox.getDlPre24.errMsg.errParsingArtifacts={0}\:{1} Firefox\u30A6\u30A7\u30D6\u5C65\u6B74\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getDlV24.errMsg.errFetchFiles=Firefox\u306E\u300C\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u300D\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -Firefox.getDlV24.errMsg.errAnalyzeFile={0}\:\u30D5\u30A1\u30A4\u30EB\:{1}\u3092\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -Firefox.getDlV24.errMsg.errParsingArtifacts={0}\:{1} Firefox\u30A6\u30A7\u30D6\u5C65\u6B74\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -RAImageIngestModule.process.started={0}\u3092\u958B\u59CB\u3057\u307E\u3057\u305F -RAImageIngestModule.process.errModFailed={0}\u5931\u6557\u3057\u307E\u3057\u305F - \u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044
    -RAImageIngestModule.process.errModErrs={0}\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F -- \u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044 -RAImageIngestModule.process.errMsg.errsEncountered=

    \u89E3\u6790\u4E2D\u306B\u767A\u751F\u3057\u305F\u30A8\u30E9\u30FC\uFF1A

      -RAImageIngestModule.process.errMsgSub.oneErr=1\u3064\u306E\u30A8\u30E9\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F -RAImageIngestModule.process.errMsgSub.nErrs={0}\u306E\u30A8\u30E9\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F -RAImageIngestModule.process.ingestMsg.finished=\u5B8C\u4E86 {0} - {1} -RAImageIngestModule.process.errMsg.noErrs=

      \u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002

      -RAImageIngestModule.process.errMsgSub.noErrs=\u30A8\u30E9\u30FC\u304C\u30EC\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -RAImageIngestModule.process.histMsg.title=

      {0}\u306B\u95A2\u3057\u3066\u306E\u30D6\u30E9\u30A6\u30B6\u30C7\u30FC\u30BF\uFF1A

        -RAImageIngestModule.process.histMsg.found= \u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002 -RAImageIngestModule.process.histMsg.notFnd=\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -RAImageIngestModule.process.ingestMsg.results={0} - \u30D6\u30E9\u30A6\u30B6\u7D50\u679C -RAImageIngestModule.complete.errMsg.failed={0} \u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F - \u8A73\u7D30\u306F\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044
        -RAImageIngestModule.getName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -RAImageIngestModule.getDesc=\u30A6\u30A7\u30D6\u30D6\u30E9\u30A6\u30B8\u30F3\u30B0\u3001\u6700\u8FD1\u958B\u3044\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3001\u6700\u8FD1\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u305F\u30D7\u30ED\u30B0\u30E9\u30E0\u7B49\u306E\u6700\u8FD1\u306E\u30E6\u30FC\u30B6\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u62BD\u51FA\u3057\u307E\u3059\u3002 -RecentDocumentsByLnk.getRecDoc.errMsg.errGetLnkFiles={0}\:lnk\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -RecentDocumentsByLnk.getRecDoc.errParsingFile={0}\: \u6700\u8FD1\u306E\u30D5\u30A1\u30A4\u30EB{1}\u3092\u30D1\u30FC\u30B9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -RecentDocumentsByLnk.parentModuleName.noSpace=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -RecentDocumentsByLnk.parentModuleName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -SearchEngineURLQueryAnalyzer.moduleName.text=\u691C\u7D22\u30A8\u30F3\u30B8\u30F3 +Firefox.getHistory.errMsg.errFetchingFiles=Firefox\u306e\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getHistory.errMsg.noFilesFound=Firefox\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +Firefox.getHistory.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Firefox.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +Firefox.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +Firefox.getBookmark.errMsg.errFetchFiles=Firefox\u306e\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getBookmark.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u306e\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Firefox.getCookie.errMsg.errFetchFile=Firefox\u306ecookie\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getCookie.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Firefox.getDlPre24.errMsg.errFetchFiles=Firefox\u306e\u300c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u300d\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getDlPre24.errMsg.errAnalyzeFiles={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Firefox.getDlPre24.errMsg.errParsingArtifacts={0}\:{1} Firefox\u30a6\u30a7\u30d6\u5c65\u6b74\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getDlV24.errMsg.errFetchFiles=Firefox\u306e\u300c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u300d\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +Firefox.getDlV24.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +Firefox.getDlV24.errMsg.errParsingArtifacts={0}\:{1} Firefox\u30a6\u30a7\u30d6\u5c65\u6b74\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +RAImageIngestModule.process.started={0}\u3092\u958b\u59cb\u3057\u307e\u3057\u305f +RAImageIngestModule.process.errModFailed={0}\u5931\u6557\u3057\u307e\u3057\u305f - \u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
        +RAImageIngestModule.process.errModErrs={0}\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f -- \u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044 +RAImageIngestModule.process.errMsg.errsEncountered=

        \u89e3\u6790\u4e2d\u306b\u767a\u751f\u3057\u305f\u30a8\u30e9\u30fc\uff1a

          +RAImageIngestModule.process.errMsgSub.oneErr=1\u3064\u306e\u30a8\u30e9\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f +RAImageIngestModule.process.errMsgSub.nErrs={0}\u306e\u30a8\u30e9\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f +RAImageIngestModule.process.ingestMsg.finished=\u5b8c\u4e86 {0} - {1} +RAImageIngestModule.process.errMsg.noErrs=

          \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002

          +RAImageIngestModule.process.errMsgSub.noErrs=\u30a8\u30e9\u30fc\u304c\u30ec\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +RAImageIngestModule.process.histMsg.title=

          {0}\u306b\u95a2\u3057\u3066\u306e\u30d6\u30e9\u30a6\u30b6\u30c7\u30fc\u30bf\uff1a

            +RAImageIngestModule.process.histMsg.found= \u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 +RAImageIngestModule.process.histMsg.notFnd=\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +RAImageIngestModule.process.ingestMsg.results={0} - \u30d6\u30e9\u30a6\u30b6\u7d50\u679c +RAImageIngestModule.complete.errMsg.failed={0} \u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f - \u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
            +RAImageIngestModule.getName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +RAImageIngestModule.getDesc=\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u3001\u6700\u8fd1\u958b\u3044\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u6700\u8fd1\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u7b49\u306e\u6700\u8fd1\u306e\u30e6\u30fc\u30b6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002 +RecentDocumentsByLnk.getRecDoc.errMsg.errGetLnkFiles={0}\:lnk\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +RecentDocumentsByLnk.getRecDoc.errParsingFile={0}\: \u6700\u8fd1\u306e\u30d5\u30a1\u30a4\u30eb{1}\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +RecentDocumentsByLnk.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +RecentDocumentsByLnk.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +SearchEngineURLQueryAnalyzer.moduleName.text=\u691c\u7d22\u30a8\u30f3\u30b8\u30f3 SearchEngineURLQueryAnalyzer.engineName.none=\u7121\u3057 SearchEngineURLQueryAnalyzer.domainSubStr.none=\u7121\u3057 -SearchEngineURLQueryAnalyzer.toString=\u540D\u79F0\uFF1A {0}\n\ - \u30C9\u30E1\u30A4\u30F3\u30B5\u30D6\u30B9\u30C8\u30EA\u30F3\u30B0\uFF1A {1}\n\ - \u30AB\u30A6\u30F3\u30C8\uFF1A {2}\n\ - \u5206\u5272\u30C8\u30FC\u30AF\u30F3\n\ +SearchEngineURLQueryAnalyzer.toString=\u540d\u79f0\uff1a {0}\n\ + \u30c9\u30e1\u30a4\u30f3\u30b5\u30d6\u30b9\u30c8\u30ea\u30f3\u30b0\uff1a {1}\n\ + \u30ab\u30a6\u30f3\u30c8\uff1a {2}\n\ + \u5206\u5272\u30c8\u30fc\u30af\u30f3\n\ {3} -SearchEngineURLQueryAnalyzer.parentModuleName.noSpace=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -SearchEngineURLQueryAnalyzer.parentModuleName=\u6700\u8FD1\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 -SearchEngineURLQueryAnalyzer.init.exception.msg={0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F -UsbDeviceIdMapper.parseAndLookup.text=\u30D7\u30ED\u30C0\u30AF\u30C8\uFF1A{0} \ No newline at end of file +SearchEngineURLQueryAnalyzer.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +SearchEngineURLQueryAnalyzer.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +SearchEngineURLQueryAnalyzer.init.exception.msg={0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +UsbDeviceIdMapper.parseAndLookup.text=\u30d7\u30ed\u30c0\u30af\u30c8\uff1a{0} diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Chrome.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Chrome.java index f75132c610..49ac9911fe 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Chrome.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Chrome.java @@ -554,22 +554,24 @@ class Chrome extends Extract { RecentActivityExtracterModuleFactory.getModuleName(), NbBundle.getMessage(this.getClass(), "Chrome.moduleName"))); - BlackboardArtifact bbart = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadFile, bbattributes); - if (bbart != null) { - bbartifacts.add(bbart); - } - - // find the downloaded file and create a TSK_DOWNLOAD_SOURCE for it.. - try { - for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(fullPath), FilenameUtils.getPath(fullPath))) { - BlackboardArtifact downloadSourceArt = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - downloadSourceArt.addAttributes(createDownloadSourceAttributes(result.get("url").toString())); - - bbartifacts.add(downloadSourceArt); - break; + BlackboardArtifact webDownloadArtifact = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadFile, bbattributes); + if (webDownloadArtifact != null) { + bbartifacts.add(webDownloadArtifact); + + // find the downloaded file and create a TSK_ASSOCIATED_OBJECT for it, associating it with the TSK_WEB_DOWNLOAD artifact. + try { + for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(fullPath), FilenameUtils.getPath(fullPath))) { + BlackboardArtifact associatedObjectArtifact = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + RecentActivityExtracterModuleFactory.getModuleName(), webDownloadArtifact.getArtifactID())); + + bbartifacts.add(associatedObjectArtifact); + break; + } + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Error creating associated object artifact for file '%s'", fullPath), ex); //NON-NLS } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, String.format("Error creating download source artifact for file '%s'", fullPath), ex); //NON-NLS } } diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java index efaf8934b2..12c4208d89 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ChromeCacheExtractor.java @@ -39,6 +39,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.logging.Level; import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.casemodule.services.FileManager; @@ -276,6 +277,10 @@ final class ChromeCacheExtractor { } } + @Messages({ + "ChromeCacheExtract_adding_extracted_files_msg=Adding %d extracted files for analysis." + }) + /** * Processes a user's cache and creates corresponding artifacts and derived files. * @@ -355,6 +360,8 @@ final class ChromeCacheExtractor { cleanup(); return; } + + progressBar.progress(String.format(Bundle.ChromeCacheExtract_adding_extracted_files_msg(), derivedFiles.size())); derivedFiles.forEach((derived) -> { services.fireModuleContentEvent(new ModuleContentEvent(derived)); @@ -380,12 +387,12 @@ final class ChromeCacheExtractor { * Extracts the files if needed and adds as derived files, creates artifacts * * @param cacheEntryAddress cache entry address - * @param sourceArtifacts any source artifacts created are added to this collection + * @param associatedObjectArtifacts any associated object artifacts created are added to this collection * @param webCacheArtifacts any web cache artifacts created are added to this collection * * @return Optional derived file, is a derived file is added for the given entry */ - private List processCacheEntry(CacheAddress cacheEntryAddress, Collection sourceArtifacts, Collection webCacheArtifacts ) throws TskCoreException, IngestModuleException { + private List processCacheEntry(CacheAddress cacheEntryAddress, Collection associatedObjectArtifacts, Collection webCacheArtifacts ) throws TskCoreException, IngestModuleException { List derivedFiles = new ArrayList<>(); @@ -437,10 +444,6 @@ final class ChromeCacheExtractor { moduleName, cacheEntry.getHTTPHeaders()); - Collection sourceArtifactAttributes = new ArrayList<>(); - sourceArtifactAttributes.add(urlAttr); - sourceArtifactAttributes.add(createTimeAttr); - Collection webCacheAttributes = new ArrayList<>(); webCacheAttributes.add(urlAttr); webCacheAttributes.add(createTimeAttr); @@ -450,12 +453,7 @@ final class ChromeCacheExtractor { // add artifacts to the f_XXX file if (dataSegment.isInExternalFile() ) { try { - BlackboardArtifact sourceArtifact = cachedFileAbstractFile.get().newArtifact(ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - if (sourceArtifact != null) { - sourceArtifact.addAttributes(sourceArtifactAttributes); - sourceArtifacts.add(sourceArtifact); - } - + BlackboardArtifact webCacheArtifact = cacheEntryFile.get().getAbstractFile().newArtifact(ARTIFACT_TYPE.TSK_WEB_CACHE); if (webCacheArtifact != null) { webCacheArtifact.addAttributes(webCacheAttributes); @@ -469,6 +467,14 @@ final class ChromeCacheExtractor { moduleName, cachedFileAbstractFile.get().getId())); webCacheArtifacts.add(webCacheArtifact); + + BlackboardArtifact associatedObjectArtifact = cachedFileAbstractFile.get().newArtifact(ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + if (associatedObjectArtifact != null) { + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + moduleName, webCacheArtifact.getArtifactID())); + associatedObjectArtifacts.add(associatedObjectArtifact); + } } if (isBrotliCompressed) { @@ -497,12 +503,7 @@ final class ChromeCacheExtractor { "", TskData.EncodingType.NONE); - BlackboardArtifact sourceArtifact = derivedFile.newArtifact(ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - if (sourceArtifact != null) { - sourceArtifact.addAttributes(sourceArtifactAttributes); - sourceArtifacts.add(sourceArtifact); - } - + BlackboardArtifact webCacheArtifact = cacheEntryFile.get().getAbstractFile().newArtifact(ARTIFACT_TYPE.TSK_WEB_CACHE); if (webCacheArtifact != null) { webCacheArtifact.addAttributes(webCacheAttributes); @@ -516,6 +517,14 @@ final class ChromeCacheExtractor { moduleName, derivedFile.getId())); webCacheArtifacts.add(webCacheArtifact); + + BlackboardArtifact associatedObjectArtifact = derivedFile.newArtifact(ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + if (associatedObjectArtifact != null) { + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + moduleName, webCacheArtifact.getArtifactID())); + associatedObjectArtifacts.add(associatedObjectArtifact); + } } if (isBrotliCompressed) { diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractSafari.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractSafari.java index 704826047f..c11e4fde22 100755 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractSafari.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractSafari.java @@ -50,6 +50,7 @@ import org.sleuthkit.autopsy.ingest.ModuleDataEvent; import org.sleuthkit.autopsy.recentactivity.BinaryCookieReader.Cookie; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; +import org.sleuthkit.datamodel.BlackboardAttribute; import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.TskCoreException; import org.xml.sax.SAXException; @@ -637,15 +638,17 @@ final class ExtractSafari extends Extract { time = date.getDate().getTime(); } - BlackboardArtifact bbart = origFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD); - bbart.addAttributes(this.createDownloadAttributes(path, pathID, url, time, NetworkUtils.extractDomain(url), getName())); - bbartifacts.add(bbart); + BlackboardArtifact webDownloadArtifact = origFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD); + webDownloadArtifact.addAttributes(this.createDownloadAttributes(path, pathID, url, time, NetworkUtils.extractDomain(url), getName())); + bbartifacts.add(webDownloadArtifact); - // find the downloaded file and create a TSK_DOWNLOAD_SOURCE for it. + // find the downloaded file and create a TSK_ASSOCIATED_OBJECT for it, associating it with the TSK_WEB_DOWNLOAD artifact. for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(path), FilenameUtils.getPath(path))) { - BlackboardArtifact downloadSourceArt = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - downloadSourceArt.addAttributes(createDownloadSourceAttributes(url)); - bbartifacts.add(downloadSourceArt); + BlackboardArtifact associatedObjectArtifact = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + RecentActivityExtracterModuleFactory.getModuleName(), webDownloadArtifact.getArtifactID())); + bbartifacts.add(associatedObjectArtifact); break; } diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java index 250c55fa6e..5062806133 100755 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractZoneIdentifier.java @@ -28,7 +28,6 @@ import java.util.List; import java.util.Properties; import java.util.Set; import java.util.logging.Level; -import org.apache.commons.lang3.StringUtils; import org.openide.util.NbBundle.Messages; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.NetworkUtils; @@ -36,13 +35,11 @@ import org.sleuthkit.autopsy.ingest.DataSourceIngestModuleProgress; import org.sleuthkit.autopsy.ingest.IngestJobContext; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; -import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE; +import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD; import org.sleuthkit.datamodel.BlackboardAttribute; -import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN; -import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_LOCATION; +import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID; -import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_URL; import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.ReadContentInputStream; import org.sleuthkit.datamodel.TskCoreException; @@ -94,7 +91,7 @@ final class ExtractZoneIdentifier extends Extract { return; } - Collection sourceArtifacts = new ArrayList<>(); + Collection associatedObjectArtifacts = new ArrayList<>(); Collection downloadArtifacts = new ArrayList<>(); for (AbstractFile zoneFile : zoneFiles) { @@ -104,7 +101,7 @@ final class ExtractZoneIdentifier extends Extract { } try { - processZoneFile(context, dataSource, zoneFile, sourceArtifacts, downloadArtifacts, knownPathIDs); + processZoneFile(context, dataSource, zoneFile, associatedObjectArtifacts, downloadArtifacts, knownPathIDs); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg()); String message = String.format("Failed to process zone identifier file %s", zoneFile.getName()); //NON-NLS @@ -112,23 +109,23 @@ final class ExtractZoneIdentifier extends Extract { } } - postArtifacts(sourceArtifacts); + postArtifacts(associatedObjectArtifacts); postArtifacts(downloadArtifacts); } /** * Process a single Zone Identifier file. * - * @param context IngetJobContext - * @param dataSource Content - * @param zoneFile Zone Indentifier file - * @param sourceArtifacts List for TSK_DOWNLOAD_SOURCE artifacts - * @param downloadArtifacts List for TSK_WEB_DOWNLOAD aritfacts - * + * @param context IngetJobContext + * @param dataSource Content + * @param zoneFile Zone Indentifier file + * @param associatedObjectArtifacts List for TSK_ASSOCIATED_OBJECT artifacts + * @param downloadArtifacts List for TSK_WEB_DOWNLOAD artifacts + * * @throws TskCoreException */ private void processZoneFile(IngestJobContext context, Content dataSource, - AbstractFile zoneFile, Collection sourceArtifacts, + AbstractFile zoneFile, Collection associatedObjectArtifacts, Collection downloadArtifacts, Set knownPathIDs) throws TskCoreException { @@ -155,16 +152,16 @@ final class ExtractZoneIdentifier extends Extract { BlackboardArtifact downloadBba = createDownloadArtifact(zoneFile, zoneInfo); if (downloadBba != null) { downloadArtifacts.add(downloadBba); + // create a TSK_ASSOCIATED_OBJECT for the downloaded file, associating it with the TSK_WEB_DOWNLOAD artifact. + if (downloadFile.getArtifactsCount(TSK_ASSOCIATED_OBJECT) == 0) { + BlackboardArtifact associatedObjectBba = createAssociatedObjectArtifact(downloadFile, downloadBba); + if (associatedObjectBba != null) { + associatedObjectArtifacts.add(associatedObjectBba); + } + } } } - // check if download has a child TSK_DOWNLOAD_SOURCE artifact, if not create one - if (downloadFile.getArtifactsCount(TSK_DOWNLOAD_SOURCE) == 0) { - BlackboardArtifact sourceBba = createDownloadSourceArtifact(downloadFile, zoneInfo); - if (sourceBba != null) { - sourceArtifacts.add(sourceBba); - } - } } } @@ -203,33 +200,26 @@ final class ExtractZoneIdentifier extends Extract { } /** - * Create a Download Source Artifact for the given ZoneIdentifierInfo + * Create a Associated Object Artifact for the given ZoneIdentifierInfo * object. * * @param downloadFile AbstractFile representing the file downloaded, not - * the zone identifier file. - * @param zoneInfo Zone identifier file wrapper object + * the zone identifier file. + * @param downloadBba TSK_WEB_DOWNLOAD artifact to associate with. * - * @return TSK_DOWNLOAD_SOURCE object for given parameters + * @return TSK_ASSOCIATED_OBJECT artifact. */ - private BlackboardArtifact createDownloadSourceArtifact(AbstractFile downloadFile, ZoneIdentifierInfo zoneInfo) { + private BlackboardArtifact createAssociatedObjectArtifact(AbstractFile downloadFile, BlackboardArtifact downloadBba) { Collection bbattributes = new ArrayList<>(); bbattributes.addAll(Arrays.asList( - new BlackboardAttribute(TSK_URL, - RecentActivityExtracterModuleFactory.getModuleName(), - StringUtils.defaultString(zoneInfo.getURL(), "")), - - new BlackboardAttribute(TSK_DOMAIN, - RecentActivityExtracterModuleFactory.getModuleName(), - (zoneInfo.getURL() != null) ? NetworkUtils.extractDomain(zoneInfo.getURL()) : ""), - - new BlackboardAttribute(TSK_LOCATION, - RecentActivityExtracterModuleFactory.getModuleName(), - StringUtils.defaultString(zoneInfo.getZoneIdAsString(), "")))); //NON-NLS + new BlackboardAttribute(TSK_ASSOCIATED_ARTIFACT, + RecentActivityExtracterModuleFactory.getModuleName(), + downloadBba.getArtifactID()) + )); - return createArtifactWithAttributes(TSK_DOWNLOAD_SOURCE, downloadFile, bbattributes); + return createArtifactWithAttributes(TSK_ASSOCIATED_OBJECT, downloadFile, bbattributes); } /** diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Firefox.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Firefox.java index dd4e70ee06..7fddeb0aa8 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Firefox.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Firefox.java @@ -544,22 +544,25 @@ class Firefox extends Extract { domain)); //NON-NLS } - BlackboardArtifact bbart = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadsFile, bbattributes); - if (bbart != null) { - bbartifacts.add(bbart); - } - - // find the downloaded file and create a TSK_DOWNLOAD_SOURCE for it. - try { - for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(downloadedFilePath), FilenameUtils.getPath(downloadedFilePath))) { - BlackboardArtifact downloadSourceArt = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - downloadSourceArt.addAttributes(createDownloadSourceAttributes(source)); - bbartifacts.add(downloadSourceArt); - break; + BlackboardArtifact webDownloadArtifact = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadsFile, bbattributes); + if (webDownloadArtifact != null) { + bbartifacts.add(webDownloadArtifact); + + // find the downloaded file and create a TSK_ASSOCIATED_OBJECT for it, associating it with the TSK_WEB_DOWNLOAD artifact. + try { + for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(downloadedFilePath), FilenameUtils.getPath(downloadedFilePath))) { + BlackboardArtifact associatedObjectArtifact = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + RecentActivityExtracterModuleFactory.getModuleName(), webDownloadArtifact.getArtifactID())); + + bbartifacts.add(associatedObjectArtifact); + break; + } + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Error creating associated object artifact for file '%s'", + downloadedFilePath), ex); //NON-NLS } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, String.format("Error creating download source artifact for file '%s'", - downloadedFilePath), ex); //NON-NLS } } if (errors > 0) { @@ -681,22 +684,24 @@ class Firefox extends Extract { RecentActivityExtracterModuleFactory.getModuleName(), domain)); //NON-NLS } - BlackboardArtifact bbart = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadsFile, bbattributes); - if (bbart != null) { - bbartifacts.add(bbart); - } + BlackboardArtifact webDownloadArtifact = createArtifactWithAttributes(ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadsFile, bbattributes); + if (webDownloadArtifact != null) { + bbartifacts.add(webDownloadArtifact); - // find the downloaded file and create a TSK_DOWNLOAD_SOURCE for it. - try { - for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(downloadedFilePath), FilenameUtils.getPath(downloadedFilePath))) { - BlackboardArtifact downloadSourceArt = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE); - downloadSourceArt.addAttributes(createDownloadSourceAttributes(url)); - bbartifacts.add(downloadSourceArt); - break; + // find the downloaded file and create a TSK_ASSOCIATED_OBJECT for it, associating it with the TSK_WEB_DOWNLOAD artifact. + try { + for (AbstractFile downloadedFile : fileManager.findFiles(dataSource, FilenameUtils.getName(downloadedFilePath), FilenameUtils.getPath(downloadedFilePath))) { + BlackboardArtifact associatedObjectArtifact = downloadedFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_ASSOCIATED_OBJECT); + associatedObjectArtifact.addAttribute( + new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_ASSOCIATED_ARTIFACT, + RecentActivityExtracterModuleFactory.getModuleName(), webDownloadArtifact.getArtifactID())); + bbartifacts.add(associatedObjectArtifact); + break; + } + } catch (TskCoreException ex) { + logger.log(Level.SEVERE, String.format("Error creating associated object artifact for file '%s'", + downloadedFilePath), ex); //NON-NLS } - } catch (TskCoreException ex) { - logger.log(Level.SEVERE, String.format("Error creating download source artifact for file '%s'", - downloadedFilePath), ex); //NON-NLS } } if (errors > 0) { diff --git a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/Bundle_ja.properties b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/Bundle_ja.properties index 2f387da587..c4ba8d47fc 100644 --- a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/Bundle_ja.properties +++ b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/Bundle_ja.properties @@ -1,13 +1,13 @@ -OpenIDE-Module-Name=Scalpel\u30AB\u30FC\u30D0 -OpenIDE-Module-Display-Category=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB +OpenIDE-Module-Name=Scalpel\u30ab\u30fc\u30d0 +OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ - \u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\u969B\u306B\u672A\u5272\u308A\u5F53\u3066\u9818\u57DF\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u5207\u308A\u51FA\u3057\u307E\u3059\u3002\n\ - \u5207\u308A\u51FA\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u518D\u5EA6\u89E3\u6790\u3055\u308C\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30C4\u30EA\u30FC\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002 -OpenIDE-Module-Short-Description=\u672A\u5272\u308A\u5F53\u3066\u9818\u57DF\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u5207\u308A\u51FA\u3057\u307E\u3059 -ScalpelCarverIngestModule.moduleName=Scalpel\u30AB\u30FC\u30D0 -ScalpelCarverIngestModule.moduleDesc.text=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\u969B\u306B\u672A\u5272\u308A\u5F53\u3066\u9818\u57DF\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u5207\u308A\u51FA\u3057\u307E\u3059\u3002\n\ -\u5207\u308A\u51FA\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306F\u518D\u5EA6\u89E3\u6790\u3055\u308C\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30C4\u30EA\u30FC\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002 -ScalpelCarverIngestModule.startUp.exception.msg1=\u73FE\u5728\u3001Scalpel\u30AB\u30FC\u30D3\u30F3\u30B0\u30E2\u30B8\u30E5\u30FC\u30EB\u306FWindows OS\u4EE5\u5916\u3068\u306F\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002 -ScalpelCarverIngestModule.startUp.exception.msg2=Scalpel\u30AB\u30FC\u30D0\u306E\u521D\u671F\u5316\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -ScalpelCarverIngestModule.startUp.exception.msg3=Scalpel\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -ScalpelCarverIngestModule.startUp.exception.msg4=Scalpel\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30D1\u30B9\u304C\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 \ No newline at end of file + \u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u969b\u306b\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u5207\u308a\u51fa\u3057\u307e\u3059\u3002\n\ + \u5207\u308a\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u518d\u5ea6\u89e3\u6790\u3055\u308c\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002 +OpenIDE-Module-Short-Description=\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u5207\u308a\u51fa\u3057\u307e\u3059 +ScalpelCarverIngestModule.moduleName=Scalpel\u30ab\u30fc\u30d0 +ScalpelCarverIngestModule.moduleDesc.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u969b\u306b\u672a\u5272\u308a\u5f53\u3066\u9818\u57df\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u5207\u308a\u51fa\u3057\u307e\u3059\u3002\n\ +\u5207\u308a\u51fa\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306f\u518d\u5ea6\u89e3\u6790\u3055\u308c\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30c4\u30ea\u30fc\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002 +ScalpelCarverIngestModule.startUp.exception.msg1=\u73fe\u5728\u3001Scalpel\u30ab\u30fc\u30d3\u30f3\u30b0\u30e2\u30b8\u30e5\u30fc\u30eb\u306fWindows OS\u4ee5\u5916\u3068\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +ScalpelCarverIngestModule.startUp.exception.msg2=Scalpel\u30ab\u30fc\u30d0\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +ScalpelCarverIngestModule.startUp.exception.msg3=Scalpel\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ScalpelCarverIngestModule.startUp.exception.msg4=Scalpel\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\u304c\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 diff --git a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/jni/Bundle_ja.properties b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/jni/Bundle_ja.properties index cab0908ab7..5dd426932e 100644 --- a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/jni/Bundle_ja.properties +++ b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/jni/Bundle_ja.properties @@ -1,8 +1,8 @@ -ScalpelCarver.loadLib.errMsg.cannotLoadLib=\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u74B0\u5883\u306B\u30E9\u30A4\u30D6\u30E9\u30EA{0}\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F -ScalpelCarver.loadLib.errMsg.cannotLoadLib2=\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u74B0\u5883\u306B\u30E9\u30A4\u30D6\u30E9\u30EA{0}\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F -ScalpelCarver.carve.exception.libNotInit=Scalpel\u30E9\u30A4\u30D6\u30E9\u30EA\u306F\u5B8C\u5168\u306B\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 -ScalpelCarver.carve.exception.invalidArgs=Scalpel\u30AB\u30FC\u30D3\u30F3\u30B0\u306B\u7121\u52B9\u306A\u30A2\u30FC\u30AE\u30E5\u30E1\u30F3\u30C8\u3002 -ScalpelCarver.carve.exception.cannotReadConfig=libscalpel\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\: {0}\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F -ScalpelCarver.carve.exception.cannotWriteConfig=libscalpel\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\: {0}\u306B\u66F8\u304D\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F -ScalpelOutputParser.outputStart.text=\u4E0B\u8A18\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u5207\u308A\u51FA\u3055\u308C\u307E\u3057\u305F\uFF1A -ScalpelOutputParser.toString.text=CarvedFileMeta'{'\u30D5\u30A1\u30A4\u30EB\u540D\={0}, \u30B9\u30BF\u30FC\u30C8\: {1}, \u30B5\u30A4\u30BA\: {2}'}' \ No newline at end of file +ScalpelCarver.loadLib.errMsg.cannotLoadLib=\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u74b0\u5883\u306b\u30e9\u30a4\u30d6\u30e9\u30ea{0}\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +ScalpelCarver.loadLib.errMsg.cannotLoadLib2=\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u74b0\u5883\u306b\u30e9\u30a4\u30d6\u30e9\u30ea{0}\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +ScalpelCarver.carve.exception.libNotInit=Scalpel\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u5b8c\u5168\u306b\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +ScalpelCarver.carve.exception.invalidArgs=Scalpel\u30ab\u30fc\u30d3\u30f3\u30b0\u306b\u7121\u52b9\u306a\u30a2\u30fc\u30ae\u30e5\u30e1\u30f3\u30c8\u3002 +ScalpelCarver.carve.exception.cannotReadConfig=libscalpel\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\: {0}\u3092\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f +ScalpelCarver.carve.exception.cannotWriteConfig=libscalpel\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\: {0}\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f +ScalpelOutputParser.outputStart.text=\u4e0b\u8a18\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5207\u308a\u51fa\u3055\u308c\u307e\u3057\u305f\uff1a +ScalpelOutputParser.toString.text=CarvedFileMeta'{'\u30d5\u30a1\u30a4\u30eb\u540d\={0}, \u30b9\u30bf\u30fc\u30c8\: {1}, \u30b5\u30a4\u30ba\: {2}'}' diff --git a/thirdparty/sevenzip/sevenzipjbinding-AllPlatforms.jar b/thirdparty/sevenzip/sevenzipjbinding-AllPlatforms.jar old mode 100755 new mode 100644 index 7a42df8aaf..3b9ab96e1c Binary files a/thirdparty/sevenzip/sevenzipjbinding-AllPlatforms.jar and b/thirdparty/sevenzip/sevenzipjbinding-AllPlatforms.jar differ diff --git a/thirdparty/sevenzip/sevenzipjbinding.jar b/thirdparty/sevenzip/sevenzipjbinding.jar old mode 100755 new mode 100644 index 2181a7c2b7..808cbda71e Binary files a/thirdparty/sevenzip/sevenzipjbinding.jar and b/thirdparty/sevenzip/sevenzipjbinding.jar differ diff --git a/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ja.properties b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ja.properties index bf1cb7ba93..1c54f49f57 100644 --- a/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ja.properties +++ b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/Bundle_ja.properties @@ -1,27 +1,27 @@ -OpenIDE-Module-Display-Category=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB +OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=\ \ - Email\u30D1\u30FC\u30B5\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n\n\ - \u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306FMBOX\u3068PST e-mail\u30D5\u30A1\u30A4\u30EB\u3092\u62BD\u51FA\u3057\u3001Blackboard\u306B\u8F09\u305B\u307E\u3059\u3002 \n\ - Thunderbird\u306EMBOX\u30D5\u30A1\u30A4\u30EB\u306E\u30D5\u30A9\u30EB\u30C0\u69CB\u9020\u3092\u628A\u63E1\u3057\u3066\u3044\u307E\u3059\u3002 -OpenIDE-Module-Name=Email\u30D1\u30FC\u30B5 -OpenIDE-Module-Short-Description=MOBX\u3068PST\u30D5\u30A1\u30A4\u30EB\u3092\u30D1\u30FC\u30B9\u3057\u307E\u3059 -MboxParser.parse.errMsg.failedToReadFile=\u30C7\u30A3\u30B9\u30AF\u304B\u3089mbox\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -MboxParser.parse.errMsg.couldntFindCharset=\u9069\u5207\u306A\u6587\u5B57\u30BB\u30C3\u30C8\u30A8\u30F3\u30B3\u30FC\u30C0\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -MboxParser.parse.errMsg.failedToParseNMsgs={0}\u500B\u306EEmail\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u62BD\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002 -MboxParser.handleAttch.errMsg.failedToCreateOnDisk=MBOX\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30B9\u30AF\: {0}\u3078\u62BD\u51FA\u3059\u308B\u306E\u306B\u5931\u6557\u3057\u307E\u3057\u305F -MboxParser.handleAttch.failedWriteToDisk=\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30B9\u30AF\: {0}\u3078\u62BD\u51FA\u3059\u308B\u306E\u306B\u5931\u6557\u3057\u307E\u3057\u305F -PstParser.parse.errMsg.failedToParseNMsgs={0}\u500B\u306EEmail\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u62BD\u51FA\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002 -PstParser.extractAttch.errMsg.failedToExtractToDisk=PST\u306E\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092\u30C7\u30A3\u30B9\u30AF\: {0}\u3078\u62BD\u51FA\u3059\u308B\u306E\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.moduleName=Email\u30D1\u30FC\u30B5 -ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=\u30C7\u30A3\u30B9\u30AF\u9818\u57DF\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u30D1\u30FC\u30B9\u3059\u308B\u70BA\u306B{0}\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093\u3002 -ThunderbirdMboxFileIngestModule.encryptionFileLevel=\u30D5\u30A1\u30A4\u30EB\u30EC\u30D9\u30EB\u6697\u53F7\u5316 -ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.processPst.errProcFile.details=Outlook 2003\u304A\u3088\u3073\u305D\u308C\u4EE5\u964D\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u304B\u3089\u306E\u30D5\u30A1\u30A4\u30EB\u3057\u304B\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 -ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details=\u30C7\u30A3\u30B9\u30AF\u9818\u57DF\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u30D1\u30FC\u30B9\u3059\u308B\u70BA\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093\u3002 -ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.getDesc.text=\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306Fmbox\u304A\u3088\u3073pst/ost\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u51FA\u3001\u30D1\u30FC\u30B9\u3057\u3001blackboard\u306EEmail\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u306B\u7D50\u679C\u3092\u6295\u5165\u3057\u307E\u3059\u3002 -ThunderbirdMboxFileIngestModule.handleAttch.errMsg={0}\u306E\u51E6\u7406\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details={0}\u306E\u540D\u79F0\u3092\u6301\u3064\u6DFB\u4ED8\u30D5\u30A1\u30A4\u30EB\u3092\u30B1\u30FC\u30B9\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -ThunderbirdMboxFileIngestModule.notAvail=\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 \ No newline at end of file + Email\u30d1\u30fc\u30b5\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\ + \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306fMBOX\u3068PST e-mail\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u3057\u3001Blackboard\u306b\u8f09\u305b\u307e\u3059\u3002 \n\ + Thunderbird\u306eMBOX\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3092\u628a\u63e1\u3057\u3066\u3044\u307e\u3059\u3002 +OpenIDE-Module-Name=Email\u30d1\u30fc\u30b5 +OpenIDE-Module-Short-Description=MOBX\u3068PST\u30d5\u30a1\u30a4\u30eb\u3092\u30d1\u30fc\u30b9\u3057\u307e\u3059 +MboxParser.parse.errMsg.failedToReadFile=\u30c7\u30a3\u30b9\u30af\u304b\u3089mbox\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +MboxParser.parse.errMsg.couldntFindCharset=\u9069\u5207\u306a\u6587\u5b57\u30bb\u30c3\u30c8\u30a8\u30f3\u30b3\u30fc\u30c0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +MboxParser.parse.errMsg.failedToParseNMsgs={0}\u500b\u306eEmail\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +MboxParser.handleAttch.errMsg.failedToCreateOnDisk=MBOX\u306e\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af\: {0}\u3078\u62bd\u51fa\u3059\u308b\u306e\u306b\u5931\u6557\u3057\u307e\u3057\u305f +MboxParser.handleAttch.failedWriteToDisk=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af\: {0}\u3078\u62bd\u51fa\u3059\u308b\u306e\u306b\u5931\u6557\u3057\u307e\u3057\u305f +PstParser.parse.errMsg.failedToParseNMsgs={0}\u500b\u306eEmail\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u62bd\u51fa\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +PstParser.extractAttch.errMsg.failedToExtractToDisk=PST\u306e\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af\: {0}\u3078\u62bd\u51fa\u3059\u308b\u306e\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.moduleName=Email\u30d1\u30fc\u30b5 +ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002\u30d1\u30fc\u30b9\u3059\u308b\u70ba\u306b{0}\u3092\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 +ThunderbirdMboxFileIngestModule.encryptionFileLevel=\u30d5\u30a1\u30a4\u30eb\u30ec\u30d9\u30eb\u6697\u53f7\u5316 +ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg={0}\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.processPst.errProcFile.details=Outlook 2003\u304a\u3088\u3073\u305d\u308c\u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3057\u304b\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2={0}\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg={0}\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details=\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\u3002\u30d1\u30fc\u30b9\u3059\u308b\u70ba\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 +ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2={0}\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.getDesc.text=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306fmbox\u304a\u3088\u3073pst/ost\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u51fa\u3001\u30d1\u30fc\u30b9\u3057\u3001blackboard\u306eEmail\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306b\u7d50\u679c\u3092\u6295\u5165\u3057\u307e\u3059\u3002 +ThunderbirdMboxFileIngestModule.handleAttch.errMsg={0}\u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details={0}\u306e\u540d\u79f0\u3092\u6301\u3064\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\u3092\u30b1\u30fc\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ThunderbirdMboxFileIngestModule.notAvail=\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093