From a22017ad6f971712d8d87953109b00b757405630 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:23:43 -0300 Subject: [PATCH 001/126] '#1823: new audio transcription params for Whisper, rename old ones --- .../config/conf/AudioTranscriptConfig.txt | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 67ac350618..fc62f42d7b 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -9,14 +9,23 @@ # you should download it from https://alphacephei.com/vosk/models and put in 'models/vosk/[lang]' folder. implementationClass = iped.engine.task.transcript.VoskTranscriptTask -# Uses a local/remote wav2vec2 implementation for transcription. Accuracy is much better than most Vosk models. -# The local impl is AT LEAST 1 order of magnitude slower than Vosk on high end CPUs. Using a good GPU is highly recommended! -# The remote impl is useful if you have a central server/cluster with many GPUs to be shared among processing nodes. -# For both the local or remote options, please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 -# If you use the local implementation, you must set 'huggingFaceModel' param below. -# If you use the remote implementation, you must set 'wav2vec2Service' param below. +# Uses a local wav2vec2 implementation for transcription. Accuracy is much better than most Vosk models. +# This is AT LEAST 1 order of magnitude slower than Vosk on high end CPUs. Using a good GPU is highly recommended! +# Please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 +# If you enable this, you must set 'huggingFaceModel' param below. #implementationClass = iped.engine.task.transcript.Wav2Vec2TranscriptTask -#implementationClass = iped.engine.task.transcript.RemoteWav2Vec2TranscriptTask + +# Uses a local Whiper implementation for transcription. Accuracy is better than wav2vec2 depending on the model. +# This is slower than wav2vec2 depending on the model. Using a very good GPU is highly recommended! +# Please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#whisper +# If you enable this, you must set 'whisperModel' param below. +#implementationClass = iped.engine.task.transcript.WhisperTranscriptTask + +# Uses a remote service for transcription. +# The remote service is useful if you have a central server/cluster with many GPUs to be shared among processing nodes. +# Please check steps on https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 +# If enable this, you must set 'remoteServiceAddress' param below. +#implementationClass = iped.engine.task.transcript.RemoteAudioTranscriptTask # If you want to use the Microsoft Azure service implementation, comment above and uncomment below. # You MUST include Microsoft client-sdk.jar into plugins folder. @@ -91,11 +100,20 @@ minWordScore = 0.5 # huggingFaceModel = jonatasgrosman/wav2vec2-xls-r-1b-french ######################################### -# RemoteWav2Vec2TranscriptTask options +# Local WhisperTranscriptTask options +######################################### + +# Possible values: tiny, base, small, medium, large-v3 +# large-v3 is much better than medium, but 2x slower and uses 2x more memory. +# If you know the language you want to transcribe, please set the 'language' option above. Auto detection causes mistakes. +whisperModel = medium + +######################################### +# RemoteAudioTranscriptTask options ######################################### # IP:PORT of the service/central node used by the RemoteWav2Vec2TranscriptTask implementation. -# wav2vec2Service = 127.0.0.1:11111 +# remoteServiceAddress = 127.0.0.1:11111 ######################################### # MicrosoftTranscriptTask options From 86631420b09b69fc35c8ae859d86e4a90120a9b0 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:24:10 -0300 Subject: [PATCH 002/126] '#1823: load new transcription parameters --- .../engine/config/AudioTranscriptConfig.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java index 198d73e62b..e950824bb2 100644 --- a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java @@ -27,7 +27,9 @@ public class AudioTranscriptConfig extends AbstractTaskPropertiesConfig { private static final String MAX_REQUESTS_KEY = "maxConcurrentRequests"; private static final String MIN_WORD_SCORE = "minWordScore"; public static final String HUGGING_FACE_MODEL = "huggingFaceModel"; + public static final String WHISPER_MODEL = "whisperModel"; public static final String WAV2VEC2_SERVICE = "wav2vec2Service"; + public static final String REMOTE_SERVICE = "remoteServiceAddress"; private static final String GOOGLE_MODEL = "googleModel"; private static final String LANG_AUTO_VAL = "auto"; private static final String SKIP_KNOWN_FILES = "skipKnownFiles"; @@ -43,7 +45,8 @@ public class AudioTranscriptConfig extends AbstractTaskPropertiesConfig { private int maxConcurrentRequests; private float minWordScore = 0.7f; private String huggingFaceModel; - private String wav2vec2Service; + private String whisperModel; + private String remoteService; private String googleModel; private boolean skipKnownFiles = true; @@ -109,8 +112,12 @@ public String getHuggingFaceModel() { return huggingFaceModel; } - public String getWav2vec2Service() { - return wav2vec2Service; + public String getWhisperModel() { + return whisperModel; + } + + public String getRemoteService() { + return remoteService; } public String getGoogleModel() { @@ -144,9 +151,16 @@ public void processProperties(UTF8Properties properties) { if (huggingFaceModel != null) { huggingFaceModel = huggingFaceModel.trim(); } - wav2vec2Service = properties.getProperty(WAV2VEC2_SERVICE); - if (wav2vec2Service != null) { - wav2vec2Service = wav2vec2Service.trim(); + whisperModel = properties.getProperty(WHISPER_MODEL); + if (whisperModel != null) { + whisperModel = whisperModel.strip(); + } + remoteService = properties.getProperty(REMOTE_SERVICE); + if (remoteService == null) { + remoteService = properties.getProperty(WAV2VEC2_SERVICE); + } + if (remoteService != null) { + remoteService = remoteService.trim(); } googleModel = properties.getProperty(GOOGLE_MODEL); if (googleModel != null) { From 3095e66f483a5c9dcfc0bb251917bef9effce19f Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:26:02 -0300 Subject: [PATCH 003/126] '#1823: rename RemoteWav2Vec2TranscriptTask to RemoteAudioTranscriptTask --- .../transcript/RemoteAudioTranscriptTask.java | 318 +++++++++++++++++ .../RemoteWav2Vec2TranscriptTask.java | 321 +----------------- 2 files changed, 325 insertions(+), 314 deletions(-) create mode 100644 iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java new file mode 100644 index 0000000000..770242a248 --- /dev/null +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java @@ -0,0 +1,318 @@ +package iped.engine.task.transcript; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.ConnectException; +import java.net.Socket; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.tika.io.TemporaryResources; + +import iped.configuration.IConfigurationDirectory; +import iped.data.IItem; +import iped.engine.config.AudioTranscriptConfig; +import iped.engine.config.ConfigurationManager; +import iped.engine.core.Manager; +import iped.engine.io.TimeoutException; +import iped.engine.task.transcript.RemoteWav2Vec2Service.MESSAGES; +import iped.exception.IPEDException; + +public class RemoteAudioTranscriptTask extends AbstractTranscriptTask { + + private static Logger logger = LogManager.getLogger(Wav2Vec2TranscriptTask.class); + + private static final int MAX_CONNECT_ERRORS = 60; + + private static final int UPDATE_SERVERS_INTERVAL_MILLIS = 60000; + + private static List servers = new ArrayList<>(); + + private static int currentServer = -1; + + private static AtomicInteger numConnectErrors = new AtomicInteger(); + + private static AtomicLong audioSendingTime = new AtomicLong(); + + private static AtomicLong transcriptReceiveTime = new AtomicLong(); + + private static AtomicBoolean statsPrinted = new AtomicBoolean(); + + private static long lastUpdateServersTime = 0; + + private static class Server { + + String ip; + int port; + + public String toString() { + return ip + ":" + port; + } + } + + // See https://github.com/sepinf-inc/IPED/issues/1576 + private int getRetryIntervalMillis() { + // This depends on how much time worker nodes need to consume their queue. + // Of course audios duration, nodes queue size and performance affect this. + // This tries to be fair with clients independent of their number of threads. + return Manager.getInstance().getNumWorkers() * 100; + } + + @Override + public void init(ConfigurationManager configurationManager) throws Exception { + + super.init(configurationManager); + + if (!this.isEnabled()) { + return; + } + + if (!servers.isEmpty()) { + return; + } + + boolean disable = false; + if (transcriptConfig.getRemoteService() == null) { + String ipedRoot = System.getProperty(IConfigurationDirectory.IPED_ROOT); + if (ipedRoot != null) { + Path path = new File(ipedRoot, "conf/" + AudioTranscriptConfig.CONF_FILE).toPath(); + configurationManager.getConfigurationDirectory().addPath(path); + configurationManager.addObject(transcriptConfig); + configurationManager.loadConfig(transcriptConfig); + // maybe user changed installation configs + if (transcriptConfig.getRemoteService() == null) { + disable = true; + } else { + transcriptConfig.setEnabled(true); + transcriptConfig.setClassName(this.getClass().getName()); + } + } else { + disable = true; + } + } + + if (disable) { + transcriptConfig.setEnabled(false); + logger.warn("Remote transcription module disabled, service address not configured."); + return; + } + + requestServers(true); + + } + + private static synchronized void requestServers(RemoteAudioTranscriptTask task, boolean now) throws IOException { + if (!now && System.currentTimeMillis() - lastUpdateServersTime < UPDATE_SERVERS_INTERVAL_MILLIS) { + return; + } + String[] ipAndPort = task.transcriptConfig.getRemoteService().split(":"); + String ip = ipAndPort[0]; + int port = Integer.parseInt(ipAndPort[1]); + try (Socket client = new Socket(ip, port); + InputStream is = client.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + PrintWriter writer = new PrintWriter(new OutputStreamWriter(client.getOutputStream(), StandardCharsets.UTF_8), true)) { + + client.setSoTimeout(10000); + writer.println(MESSAGES.DISCOVER); + int numServers = Integer.parseInt(reader.readLine()); + List servers = new ArrayList<>(); + for (int i = 0; i < numServers; i++) { + String[] ipPort = reader.readLine().split(":"); + Server server = new Server(); + server.ip = ipPort[0]; + server.port = Integer.parseInt(ipPort[1]); + servers.add(server); + logger.info("Transcription server discovered: {}:{}", server.ip, server.port); + } + RemoteAudioTranscriptTask.servers = servers; + lastUpdateServersTime = System.currentTimeMillis(); + } catch (ConnectException e) { + String msg = "Central transcription node refused connection, is it online? " + e.toString(); + if (servers.isEmpty()) { + throw new IPEDException(msg); + } else { + logger.warn(msg); + } + } + } + + private void requestServers(boolean now) throws IOException { + requestServers(this, now); + } + + + @Override + public void finish() throws Exception { + super.finish(); + if (!statsPrinted.getAndSet(true)) { + int numWorkers = this.worker.manager.getNumWorkers(); + DecimalFormat df = new DecimalFormat(); + logger.info("Time spent to send audios: {}s", df.format(audioSendingTime.get() / (1000 * numWorkers))); + logger.info("Time spent to receive transcriptions: {}s", df.format(transcriptReceiveTime.get() / (1000 * numWorkers))); + } + } + + /** + * Returns a transcription server between the discovered ones using a simple + * circular approach. + * + * @return Server instance to use + */ + private static synchronized Server getServer() { + if (servers.isEmpty()) { + throw new IPEDException("No transcription server available!"); + } + currentServer++; + if (currentServer >= servers.size()) { + currentServer = 0; + } + return servers.get(currentServer); + } + + /** + * Don't convert to WAV on client side, return the audio as is. + */ + @Override + protected File getTempFileToTranscript(IItem evidence, TemporaryResources tmp) throws IOException, InterruptedException { + return evidence.getTempFile(); + } + + @Override + protected TextAndScore transcribeAudio(File tmpFile) throws Exception { + + while (true) { + requestServers(false); + Server server = getServer(); + long requestTime = System.currentTimeMillis(); + try (Socket serverSocket = new Socket(server.ip, server.port); + InputStream is = serverSocket.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + BufferedOutputStream bos = new BufferedOutputStream(serverSocket.getOutputStream())) { + + numConnectErrors.set(0); + + int timeoutSecs = (int) (MIN_TIMEOUT + TIMEOUT_PER_MB * tmpFile.length() / (1 << 20)); + serverSocket.setSoTimeout(1000 * timeoutSecs); + + String response = reader.readLine(); + if (response == null || MESSAGES.BUSY.toString().equals(response)) { + logger.debug("Transcription server {} busy, trying another one.", server); + sleepBeforeRetry(requestTime); + continue; + } + if (!MESSAGES.ACCEPTED.toString().equals(response)) { + logger.error("Error 0 in communication with {}. The audio will be retried.", server); + continue; + } + + logger.debug("Transcription server {} accepted connection", server); + + long t0 = System.currentTimeMillis(); + + bos.write(MESSAGES.VERSION_1_2.toString().getBytes()); + // bos.write("\n".getBytes()); + + bos.write(MESSAGES.AUDIO_SIZE.toString().getBytes()); + + DataOutputStream dos = new DataOutputStream(bos); + // Must use long see #1833 + dos.writeLong(tmpFile.length()); + dos.flush(); + + Files.copy(tmpFile.toPath(), bos); + bos.flush(); + + long t1 = System.currentTimeMillis(); + + response = reader.readLine(); + + while (MESSAGES.PING.toString().equals(response)) { + logger.debug("ping {}", response); + response = reader.readLine(); + } + + if (MESSAGES.WARN.toString().equals(response)) { + String warn = reader.readLine(); + boolean tryAgain = false; + if (warn.contains(TimeoutException.class.getName())) { + // Timeout converting audio to wav, possibly it's corrupted + evidence.setTimeOut(true); + stats.incTimeouts(); + } else if (warn.contains(SocketTimeoutException.class.getName()) || warn.contains(SocketException.class.getName())) { + tryAgain = true; + } + logger.warn("Fail to transcribe on server: {} audio: {} error: {}.{}", server, evidence.getPath(), warn, (tryAgain ? " The audio will be retried." : "")); + if (tryAgain) { + continue; + } + return null; + } + if (MESSAGES.ERROR.toString().equals(response) || response == null) { + String error = response != null ? reader.readLine() : "Remote server process crashed or node was turned off!"; + logger.error("Error 1 in communication with {}: {}. The audio will be retried.", server, error); + throw new SocketException(error); + } + + TextAndScore textAndScore = new TextAndScore(); + textAndScore.score = Double.parseDouble(response); + textAndScore.text = reader.readLine(); + + long t2 = System.currentTimeMillis(); + + if (!MESSAGES.DONE.toString().equals(reader.readLine())) { + logger.error("Error 2 in communication with {}. The audio will be retried.", server); + throw new SocketException("Error receiving transcription."); + } + + audioSendingTime.addAndGet(t1 - t0); + transcriptReceiveTime.addAndGet(t2 - t1); + + return textAndScore; + + } catch (SocketTimeoutException | SocketException e) { + if (e instanceof ConnectException) { + numConnectErrors.incrementAndGet(); + if (numConnectErrors.get() / this.worker.manager.getNumWorkers() >= MAX_CONNECT_ERRORS) { + throw new TooManyConnectException(); + } + sleepBeforeRetry(requestTime); + requestServers(true); + } else { + logger.warn("Network error communicating to server: " + server + ", retrying audio: " + evidence.getPath(), e); + } + } + } + + } + + private void sleepBeforeRetry(long lastRequestTime) { + long sleep = getRetryIntervalMillis() - (System.currentTimeMillis() - lastRequestTime); + if (sleep > 0) { + try { + Thread.sleep(sleep); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + +} diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java index d7e1627af0..555256d0b4 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java @@ -1,318 +1,11 @@ package iped.engine.task.transcript; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.net.ConnectException; -import java.net.Socket; -import java.net.SocketException; -import java.net.SocketTimeoutException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.tika.io.TemporaryResources; - -import iped.configuration.IConfigurationDirectory; -import iped.data.IItem; -import iped.engine.config.AudioTranscriptConfig; -import iped.engine.config.ConfigurationManager; -import iped.engine.core.Manager; -import iped.engine.io.TimeoutException; -import iped.engine.task.transcript.RemoteWav2Vec2Service.MESSAGES; -import iped.exception.IPEDException; - -public class RemoteWav2Vec2TranscriptTask extends AbstractTranscriptTask { - - private static Logger logger = LogManager.getLogger(Wav2Vec2TranscriptTask.class); - - private static final int MAX_CONNECT_ERRORS = 60; - - private static final int UPDATE_SERVERS_INTERVAL_MILLIS = 60000; - - private static List servers = new ArrayList<>(); - - private static int currentServer = -1; - - private static AtomicInteger numConnectErrors = new AtomicInteger(); - - private static AtomicLong audioSendingTime = new AtomicLong(); - - private static AtomicLong transcriptReceiveTime = new AtomicLong(); - - private static AtomicBoolean statsPrinted = new AtomicBoolean(); - - private static long lastUpdateServersTime = 0; - - private static class Server { - - String ip; - int port; - - public String toString() { - return ip + ":" + port; - } - } - - // See https://github.com/sepinf-inc/IPED/issues/1576 - private int getRetryIntervalMillis() { - // This depends on how much time worker nodes need to consume their queue. - // Of course audios duration, nodes queue size and performance affect this. - // This tries to be fair with clients independent of their number of threads. - return Manager.getInstance().getNumWorkers() * 100; - } - - @Override - public void init(ConfigurationManager configurationManager) throws Exception { - - super.init(configurationManager); - - if (!this.isEnabled()) { - return; - } - - if (!servers.isEmpty()) { - return; - } - - boolean disable = false; - if (transcriptConfig.getWav2vec2Service() == null) { - String ipedRoot = System.getProperty(IConfigurationDirectory.IPED_ROOT); - if (ipedRoot != null) { - Path path = new File(ipedRoot, "conf/" + AudioTranscriptConfig.CONF_FILE).toPath(); - configurationManager.getConfigurationDirectory().addPath(path); - configurationManager.addObject(transcriptConfig); - configurationManager.loadConfig(transcriptConfig); - // maybe user changed installation configs - if (transcriptConfig.getWav2vec2Service() == null) { - disable = true; - } else { - transcriptConfig.setEnabled(true); - transcriptConfig.setClassName(this.getClass().getName()); - } - } else { - disable = true; - } - } - - if (disable) { - transcriptConfig.setEnabled(false); - logger.warn("Remote transcription module disabled, service address not configured."); - return; - } - - requestServers(true); - - } - - private static synchronized void requestServers(RemoteWav2Vec2TranscriptTask task, boolean now) throws IOException { - if (!now && System.currentTimeMillis() - lastUpdateServersTime < UPDATE_SERVERS_INTERVAL_MILLIS) { - return; - } - String[] ipAndPort = task.transcriptConfig.getWav2vec2Service().split(":"); - String ip = ipAndPort[0]; - int port = Integer.parseInt(ipAndPort[1]); - try (Socket client = new Socket(ip, port); - InputStream is = client.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); - PrintWriter writer = new PrintWriter(new OutputStreamWriter(client.getOutputStream(), StandardCharsets.UTF_8), true)) { - - client.setSoTimeout(10000); - writer.println(MESSAGES.DISCOVER); - int numServers = Integer.parseInt(reader.readLine()); - List servers = new ArrayList<>(); - for (int i = 0; i < numServers; i++) { - String[] ipPort = reader.readLine().split(":"); - Server server = new Server(); - server.ip = ipPort[0]; - server.port = Integer.parseInt(ipPort[1]); - servers.add(server); - logger.info("Transcription server discovered: {}:{}", server.ip, server.port); - } - RemoteWav2Vec2TranscriptTask.servers = servers; - lastUpdateServersTime = System.currentTimeMillis(); - } catch (ConnectException e) { - String msg = "Central transcription node refused connection, is it online? " + e.toString(); - if (servers.isEmpty()) { - throw new IPEDException(msg); - } else { - logger.warn(msg); - } - } - } - - private void requestServers(boolean now) throws IOException { - requestServers(this, now); - } - - - @Override - public void finish() throws Exception { - super.finish(); - if (!statsPrinted.getAndSet(true)) { - int numWorkers = this.worker.manager.getNumWorkers(); - DecimalFormat df = new DecimalFormat(); - logger.info("Time spent to send audios: {}s", df.format(audioSendingTime.get() / (1000 * numWorkers))); - logger.info("Time spent to receive transcriptions: {}s", df.format(transcriptReceiveTime.get() / (1000 * numWorkers))); - } - } - - /** - * Returns a transcription server between the discovered ones using a simple - * circular approach. - * - * @return Server instance to use - */ - private static synchronized Server getServer() { - if (servers.isEmpty()) { - throw new IPEDException("No transcription server available!"); - } - currentServer++; - if (currentServer >= servers.size()) { - currentServer = 0; - } - return servers.get(currentServer); - } - - /** - * Don't convert to WAV on client side, return the audio as is. - */ - @Override - protected File getTempFileToTranscript(IItem evidence, TemporaryResources tmp) throws IOException, InterruptedException { - return evidence.getTempFile(); - } - - @Override - protected TextAndScore transcribeAudio(File tmpFile) throws Exception { - - while (true) { - requestServers(false); - Server server = getServer(); - long requestTime = System.currentTimeMillis(); - try (Socket serverSocket = new Socket(server.ip, server.port); - InputStream is = serverSocket.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); - BufferedOutputStream bos = new BufferedOutputStream(serverSocket.getOutputStream())) { - - numConnectErrors.set(0); - - int timeoutSecs = (int) (MIN_TIMEOUT + TIMEOUT_PER_MB * tmpFile.length() / (1 << 20)); - serverSocket.setSoTimeout(1000 * timeoutSecs); - - String response = reader.readLine(); - if (response == null || MESSAGES.BUSY.toString().equals(response)) { - logger.debug("Transcription server {} busy, trying another one.", server); - sleepBeforeRetry(requestTime); - continue; - } - if (!MESSAGES.ACCEPTED.toString().equals(response)) { - logger.error("Error 0 in communication with {}. The audio will be retried.", server); - continue; - } - - logger.debug("Transcription server {} accepted connection", server); - - long t0 = System.currentTimeMillis(); - - bos.write(MESSAGES.VERSION_1_2.toString().getBytes()); - // bos.write("\n".getBytes()); - - bos.write(MESSAGES.AUDIO_SIZE.toString().getBytes()); - - DataOutputStream dos = new DataOutputStream(bos); - // Must use long see #1833 - dos.writeLong(tmpFile.length()); - dos.flush(); - - Files.copy(tmpFile.toPath(), bos); - bos.flush(); - - long t1 = System.currentTimeMillis(); - - response = reader.readLine(); - - while (MESSAGES.PING.toString().equals(response)) { - logger.debug("ping {}", response); - response = reader.readLine(); - } - - if (MESSAGES.WARN.toString().equals(response)) { - String warn = reader.readLine(); - boolean tryAgain = false; - if (warn.contains(TimeoutException.class.getName())) { - // Timeout converting audio to wav, possibly it's corrupted - evidence.setTimeOut(true); - stats.incTimeouts(); - } else if (warn.contains(SocketTimeoutException.class.getName()) || warn.contains(SocketException.class.getName())) { - tryAgain = true; - } - logger.warn("Fail to transcribe on server: {} audio: {} error: {}.{}", server, evidence.getPath(), warn, (tryAgain ? " The audio will be retried." : "")); - if (tryAgain) { - continue; - } - return null; - } - if (MESSAGES.ERROR.toString().equals(response) || response == null) { - String error = response != null ? reader.readLine() : "Remote server process crashed or node was turned off!"; - logger.error("Error 1 in communication with {}: {}. The audio will be retried.", server, error); - throw new SocketException(error); - } - - TextAndScore textAndScore = new TextAndScore(); - textAndScore.score = Double.parseDouble(response); - textAndScore.text = reader.readLine(); - - long t2 = System.currentTimeMillis(); - - if (!MESSAGES.DONE.toString().equals(reader.readLine())) { - logger.error("Error 2 in communication with {}. The audio will be retried.", server); - throw new SocketException("Error receiving transcription."); - } - - audioSendingTime.addAndGet(t1 - t0); - transcriptReceiveTime.addAndGet(t2 - t1); - - return textAndScore; - - } catch (SocketTimeoutException | SocketException e) { - if (e instanceof ConnectException) { - numConnectErrors.incrementAndGet(); - if (numConnectErrors.get() / this.worker.manager.getNumWorkers() >= MAX_CONNECT_ERRORS) { - throw new TooManyConnectException(); - } - sleepBeforeRetry(requestTime); - requestServers(true); - } else { - logger.warn("Network error communicating to server: " + server + ", retrying audio: " + evidence.getPath(), e); - } - } - } - - } - - private void sleepBeforeRetry(long lastRequestTime) { - long sleep = getRetryIntervalMillis() - (System.currentTimeMillis() - lastRequestTime); - if (sleep > 0) { - try { - Thread.sleep(sleep); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } +/** + * Used just for backwards compatibility with old config files. + * + * @author Nassif + * + */ +public class RemoteWav2Vec2TranscriptTask extends RemoteAudioTranscriptTask { } From 3e4ba415dd68fc29c7f68273886cc87f60cede7a Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:27:30 -0300 Subject: [PATCH 004/126] '#1823: make private methods protected, make inner class package visible --- .../task/transcript/Wav2Vec2TranscriptTask.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java index ea4f50bc4c..8cd05ae366 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java @@ -36,20 +36,20 @@ public class Wav2Vec2TranscriptTask extends AbstractTranscriptTask { private static final int MAX_TRANSCRIPTIONS = 100000; private static final byte[] NEW_LINE = "\n".getBytes(); - private static volatile Integer numProcesses; + protected static volatile Integer numProcesses; private static LinkedBlockingDeque deque = new LinkedBlockingDeque<>(); private static volatile Level logLevel = Level.forName("MSG", 250); - private static class Server { + static class Server { Process process; BufferedReader reader; int transcriptionsDone = 0; int device = 0; } - private static int getNumProcessors() { + protected static int getNumProcessors() { SystemInfo si = new SystemInfo(); HardwareAbstractionLayer hal = si.getHardware(); CentralProcessor cpu = hal.getProcessor(); @@ -96,7 +96,7 @@ public void init(ConfigurationManager configurationManager) throws Exception { } - private Server startServer(int device) throws StartupException { + protected Server startServer(int device) throws StartupException { try { return startServer0(device); } catch (Exception e) { @@ -109,7 +109,7 @@ private Server startServer(int device) throws StartupException { } } - private Server startServer0(int device) throws IOException { + protected Server startServer0(int device) throws IOException { if (numProcesses != null && device == numProcesses) { return null; } @@ -172,7 +172,7 @@ private Server startServer0(int device) throws IOException { return server; } - private void logInputStream(InputStream is) { + protected void logInputStream(InputStream is) { Thread t = new Thread() { public void run() { byte[] buf = new byte[1024]; From 20aeff970c447dd2318bef4d35c038d7cbef870c Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:31:16 -0300 Subject: [PATCH 005/126] '#1823: new Whisper process python service --- .../resources/scripts/tasks/WhisperProcess.py | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 iped-app/resources/scripts/tasks/WhisperProcess.py diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py new file mode 100644 index 0000000000..e3bfb0fd55 --- /dev/null +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -0,0 +1,88 @@ +import sys +import numpy +stdout = sys.stdout +sys.stdout = sys.stderr + +terminate = 'terminate_process' +model_loaded = 'model_loaded' +library_loaded = 'library_loaded' +finished = 'transcription_finished' +ping = 'ping' + +def main(): + + modelName = sys.argv[1] + deviceNum = int(sys.argv[2]) + threads = int(sys.argv[3]) + language = sys.argv[4] + + if language == 'auto': + language = None + + from faster_whisper import WhisperModel + + print(library_loaded, file=stdout, flush=True) + + import torch + cudaCount = torch.cuda.device_count() + + print(str(cudaCount), file=stdout, flush=True) + + if cudaCount > 0: + deviceId = 'cuda' + else: + deviceId = 'cpu' + deviceNum = 0 + + try: + model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type="int8") + + except Exception as e: + if deviceId != 'cpu': + # loading on GPU failed (OOM?), try on CPU + deviceId = 'cpu' + model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type="int8") + else: + raise e + + print(model_loaded, file=stdout, flush=True) + print(deviceId, file=stdout, flush=True) + + while True: + + line = input() + + if line == terminate: + break + if line == ping: + print(ping, file=stdout, flush=True) + continue + + transcription = '' + probs = [] + try: + segments, info = model.transcribe(audio=line, language=language, beam_size=5, word_timestamps=True) + for segment in segments: + transcription += segment.text + words = segment.words + if words is not None: + probs += [word.probability for word in words] + + except Exception as e: + msg = repr(e).replace('\n', ' ').replace('\r', ' ') + print(msg, file=stdout, flush=True) + continue + + text = transcription.replace('\n', ' ').replace('\r', ' ') + + probs = probs if len(probs) != 0 else [0] + finalScore = numpy.average(probs) + + print(finished, file=stdout, flush=True) + print(str(finalScore), file=stdout, flush=True) + print(text, file=stdout, flush=True) + + return + +if __name__ == "__main__": + main() From d2e1d7035dfd0935ddaa030a7ccadc75636fb2ac Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 20:32:27 -0300 Subject: [PATCH 006/126] '#1823: new WhisperTranscriptTask communicating with the python process --- .../transcript/WhisperTranscriptTask.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java new file mode 100644 index 0000000000..c6659be0bc --- /dev/null +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -0,0 +1,88 @@ +package iped.engine.task.transcript; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import org.apache.commons.lang3.SystemUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import iped.configuration.IConfigurationDirectory; +import iped.engine.config.AudioTranscriptConfig; +import iped.engine.config.Configuration; + +public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { + + private static Logger logger = LogManager.getLogger(Wav2Vec2TranscriptTask.class); + + private static final String SCRIPT_PATH = "/scripts/tasks/WhisperProcess.py"; + private static final String LIBRARY_LOADED = "library_loaded"; + private static final String MODEL_LOADED = "model_loaded"; + + @Override + protected Server startServer0(int device) throws IOException { + if (numProcesses != null && device == numProcesses) { + return null; + } + ProcessBuilder pb = new ProcessBuilder(); + String ipedRoot = System.getProperty(IConfigurationDirectory.IPED_ROOT); + if (ipedRoot == null) { + ipedRoot = Configuration.getInstance().appRoot; + } + String python = SystemUtils.IS_OS_WINDOWS ? ipedRoot + "/python/python.exe" : "python3"; + String script = ipedRoot + SCRIPT_PATH; + String model = super.transcriptConfig.getWhisperModel(); + if (model == null) { + throw new StartupException("You must configure '" + AudioTranscriptConfig.WHISPER_MODEL + "' in audio transcription config file."); + } + + int cpus = getNumProcessors(); + int threads = Runtime.getRuntime().availableProcessors() / cpus; + + pb.command(python, script, model, Integer.toString(device), Integer.toString(threads), transcriptConfig.getLanguages().get(0)); + + Process process = pb.start(); + + logInputStream(process.getErrorStream()); + + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + + String line = reader.readLine(); + + if (!LIBRARY_LOADED.equals(line)) { + throw new StartupException("'faster_whisper' python lib not loaded correctly. Have you installed it?"); + } + + int cudaCount = Integer.valueOf(reader.readLine()); + if (numProcesses == null) { + logger.info("Number of CUDA devices detected: {}", cudaCount); + logger.info("Number of CPU devices detected: {}", cpus); + if (cudaCount > 0) { + numProcesses = cudaCount; + } else { + numProcesses = cpus; + } + } + + String msgToIgnore = "Ignored unknown"; + while ((line = reader.readLine()) != null && line.startsWith(msgToIgnore)) + ; + + if (!MODEL_LOADED.equals(line)) { + throw new StartupException("Error loading '" + model + "' transcription model."); + } + + line = reader.readLine(); + + logger.info("Model loaded on device={}", line); + + Server server = new Server(); + server.process = process; + server.reader = reader; + server.device = device; + + return server; + } + +} From 147cdf19493a2af7581611c0757275fae57627da Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 21:10:12 -0300 Subject: [PATCH 007/126] '#1823: fix a typo --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index fc62f42d7b..64e3da2215 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -15,7 +15,7 @@ implementationClass = iped.engine.task.transcript.VoskTranscriptTask # If you enable this, you must set 'huggingFaceModel' param below. #implementationClass = iped.engine.task.transcript.Wav2Vec2TranscriptTask -# Uses a local Whiper implementation for transcription. Accuracy is better than wav2vec2 depending on the model. +# Uses a local Whisper implementation for transcription. Accuracy is better than wav2vec2 depending on the model. # This is slower than wav2vec2 depending on the model. Using a very good GPU is highly recommended! # Please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#whisper # If you enable this, you must set 'whisperModel' param below. From 71e125abc19509b203839e94683d8d2f6345d457 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 21:11:54 -0300 Subject: [PATCH 008/126] '#1823: convert UI language to whisper supported language format --- .../iped/engine/task/transcript/WhisperTranscriptTask.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index c6659be0bc..ba5f29e2d7 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -40,7 +40,12 @@ protected Server startServer0(int device) throws IOException { int cpus = getNumProcessors(); int threads = Runtime.getRuntime().availableProcessors() / cpus; - pb.command(python, script, model, Integer.toString(device), Integer.toString(threads), transcriptConfig.getLanguages().get(0)); + String lang = transcriptConfig.getLanguages().get(0); + if (lang.contains("-")) { + lang = lang.substring(0, lang.indexOf("-")); + } + + pb.command(python, script, model, Integer.toString(device), Integer.toString(threads), lang); Process process = pb.start(); From 2d0332fe339426fc135fee2ab539f659f9fbc1f1 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Fri, 12 Apr 2024 21:24:18 -0300 Subject: [PATCH 009/126] '#1823: allow language auto detection configuration --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 4 +++- iped-app/resources/scripts/tasks/WhisperProcess.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 64e3da2215..7f3da09206 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -105,7 +105,9 @@ minWordScore = 0.5 # Possible values: tiny, base, small, medium, large-v3 # large-v3 is much better than medium, but 2x slower and uses 2x more memory. -# If you know the language you want to transcribe, please set the 'language' option above. Auto detection causes mistakes. +# If you know the language you want to transcribe, please set the 'language' option above. +# 'language = auto' uses the 'locale' set on LocalConfig.txt +# 'language = detect' uses auto detection, but it can cause mistakes whisperModel = medium ######################################### diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index e3bfb0fd55..a81c062f01 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -16,7 +16,7 @@ def main(): threads = int(sys.argv[3]) language = sys.argv[4] - if language == 'auto': + if language == 'detect': language = None from faster_whisper import WhisperModel From 7177a911516e1a7a7cc5762d372cbc2db92afc91 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 13 Apr 2024 15:41:45 -0300 Subject: [PATCH 010/126] '#1823: uses a much smaller dependency to get number of GPUs --- iped-app/resources/scripts/tasks/WhisperProcess.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index a81c062f01..236fa4751d 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -23,8 +23,8 @@ def main(): print(library_loaded, file=stdout, flush=True) - import torch - cudaCount = torch.cuda.device_count() + import GPUtil + cudaCount = len(GPUtil.getGPUs()) print(str(cudaCount), file=stdout, flush=True) From 71df157ead81cfa01e272ced7ba2f7df11a3f919 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 13 Apr 2024 15:47:27 -0300 Subject: [PATCH 011/126] '#1823: rename remote transcript classes to be implementation decoupled --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 2 +- ...c2Discovery.java => RemoteTranscriptionDiscovery.java} | 4 ++-- ...v2Vec2Service.java => RemoteTranscriptionService.java} | 6 +++--- ...ioTranscriptTask.java => RemoteTranscriptionTask.java} | 8 ++++---- .../task/transcript/RemoteWav2Vec2TranscriptTask.java | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) rename iped-engine/src/main/java/iped/engine/task/transcript/{RemoteWav2Vec2Discovery.java => RemoteTranscriptionDiscovery.java} (99%) rename iped-engine/src/main/java/iped/engine/task/transcript/{RemoteWav2Vec2Service.java => RemoteTranscriptionService.java} (99%) rename iped-engine/src/main/java/iped/engine/task/transcript/{RemoteAudioTranscriptTask.java => RemoteTranscriptionTask.java} (97%) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 7f3da09206..12fef53f2c 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -25,7 +25,7 @@ implementationClass = iped.engine.task.transcript.VoskTranscriptTask # The remote service is useful if you have a central server/cluster with many GPUs to be shared among processing nodes. # Please check steps on https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 # If enable this, you must set 'remoteServiceAddress' param below. -#implementationClass = iped.engine.task.transcript.RemoteAudioTranscriptTask +#implementationClass = iped.engine.task.transcript.RemoteTranscriptionTask # If you want to use the Microsoft Azure service implementation, comment above and uncomment below. # You MUST include Microsoft client-sdk.jar into plugins folder. diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Discovery.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionDiscovery.java similarity index 99% rename from iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Discovery.java rename to iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionDiscovery.java index 01c69855d6..4e07764b6a 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Discovery.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionDiscovery.java @@ -20,9 +20,9 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; -import iped.engine.task.transcript.RemoteWav2Vec2Service.MESSAGES; +import iped.engine.task.transcript.RemoteTranscriptionService.MESSAGES; -public class RemoteWav2Vec2Discovery { +public class RemoteTranscriptionDiscovery { private static final File statsFile = new File(System.getProperty("user.home"), "transcription.stats"); diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Service.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java similarity index 99% rename from iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Service.java rename to iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java index 93d436f984..91fa0b00db 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2Service.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java @@ -35,7 +35,7 @@ import iped.io.URLUtil; import iped.utils.IOUtil; -public class RemoteWav2Vec2Service { +public class RemoteTranscriptionService { static enum MESSAGES { ACCEPTED, @@ -131,11 +131,11 @@ public static void main(String[] args) throws Exception { printHelpAndExit(); } - File jar = new File(URLUtil.getURL(RemoteWav2Vec2Service.class).toURI()); + File jar = new File(URLUtil.getURL(RemoteTranscriptionService.class).toURI()); File root = jar.getParentFile().getParentFile(); System.setProperty("org.apache.logging.log4j.level", "INFO"); - logger = LoggerFactory.getLogger(RemoteWav2Vec2Service.class); + logger = LoggerFactory.getLogger(RemoteTranscriptionService.class); Configuration.getInstance().loadConfigurables(root.getAbsolutePath()); ConfigurationManager cm = ConfigurationManager.get(); diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionTask.java similarity index 97% rename from iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java rename to iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionTask.java index 770242a248..8c321db98f 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteAudioTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionTask.java @@ -33,10 +33,10 @@ import iped.engine.config.ConfigurationManager; import iped.engine.core.Manager; import iped.engine.io.TimeoutException; -import iped.engine.task.transcript.RemoteWav2Vec2Service.MESSAGES; +import iped.engine.task.transcript.RemoteTranscriptionService.MESSAGES; import iped.exception.IPEDException; -public class RemoteAudioTranscriptTask extends AbstractTranscriptTask { +public class RemoteTranscriptionTask extends AbstractTranscriptTask { private static Logger logger = LogManager.getLogger(Wav2Vec2TranscriptTask.class); @@ -119,7 +119,7 @@ public void init(ConfigurationManager configurationManager) throws Exception { } - private static synchronized void requestServers(RemoteAudioTranscriptTask task, boolean now) throws IOException { + private static synchronized void requestServers(RemoteTranscriptionTask task, boolean now) throws IOException { if (!now && System.currentTimeMillis() - lastUpdateServersTime < UPDATE_SERVERS_INTERVAL_MILLIS) { return; } @@ -143,7 +143,7 @@ private static synchronized void requestServers(RemoteAudioTranscriptTask task, servers.add(server); logger.info("Transcription server discovered: {}:{}", server.ip, server.port); } - RemoteAudioTranscriptTask.servers = servers; + RemoteTranscriptionTask.servers = servers; lastUpdateServersTime = System.currentTimeMillis(); } catch (ConnectException e) { String msg = "Central transcription node refused connection, is it online? " + e.toString(); diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java index 555256d0b4..eda8b715de 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteWav2Vec2TranscriptTask.java @@ -6,6 +6,6 @@ * @author Nassif * */ -public class RemoteWav2Vec2TranscriptTask extends RemoteAudioTranscriptTask { +public class RemoteWav2Vec2TranscriptTask extends RemoteTranscriptionTask { } From 53f80a6267057ca3398e48b637dab656785d825b Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 13 Apr 2024 16:17:03 -0300 Subject: [PATCH 012/126] '#1823: makes remote transcription load implementation class from config --- .../engine/task/transcript/RemoteTranscriptionService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java index 91fa0b00db..39f974ddf1 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/RemoteTranscriptionService.java @@ -143,10 +143,10 @@ public static void main(String[] args) throws Exception { LocalConfig localConfig = new LocalConfig(); cm.addObject(audioConfig); cm.addObject(localConfig); - cm.loadConfig(audioConfig); cm.loadConfig(localConfig); + cm.loadConfig(audioConfig); - Wav2Vec2TranscriptTask task = new Wav2Vec2TranscriptTask(); + AbstractTranscriptTask task = (AbstractTranscriptTask) Class.forName(audioConfig.getClassName()).getDeclaredConstructor().newInstance(); audioConfig.setEnabled(true); task.init(cm); @@ -261,7 +261,7 @@ private static void removeFrombeaconQueq(OpenConnectons opc) { } } - private static void waitRequests(ServerSocket server, Wav2Vec2TranscriptTask task, String discoveryIp) { + private static void waitRequests(ServerSocket server, AbstractTranscriptTask task, String discoveryIp) { AtomicInteger jobs = new AtomicInteger(); while (true) { try { From cc7b4955854aef854a07054b5f901090b0da0afe Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 13 Apr 2024 19:14:23 -0300 Subject: [PATCH 013/126] '#1823: update config file comments --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 12fef53f2c..2752f300c1 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -10,21 +10,21 @@ implementationClass = iped.engine.task.transcript.VoskTranscriptTask # Uses a local wav2vec2 implementation for transcription. Accuracy is much better than most Vosk models. -# This is AT LEAST 1 order of magnitude slower than Vosk on high end CPUs. Using a good GPU is highly recommended! +# This is up to 10x slower than Vosk on high end CPUs. Using a good GPU is highly recommended! # Please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 # If you enable this, you must set 'huggingFaceModel' param below. #implementationClass = iped.engine.task.transcript.Wav2Vec2TranscriptTask # Uses a local Whisper implementation for transcription. Accuracy is better than wav2vec2 depending on the model. -# This is slower than wav2vec2 depending on the model. Using a very good GPU is highly recommended! +# This is up to 4x slower than wav2vec2 depending on compared models. Using a high end GPU is strongly recommended! # Please check the installation steps: https://github.com/sepinf-inc/IPED/wiki/User-Manual#whisper # If you enable this, you must set 'whisperModel' param below. #implementationClass = iped.engine.task.transcript.WhisperTranscriptTask # Uses a remote service for transcription. # The remote service is useful if you have a central server/cluster with many GPUs to be shared among processing nodes. -# Please check steps on https://github.com/sepinf-inc/IPED/wiki/User-Manual#wav2vec2 -# If enable this, you must set 'remoteServiceAddress' param below. +# Please check steps on https://github.com/sepinf-inc/IPED/wiki/User-Manual#remote-transcription +# If you enable this, you must set 'remoteServiceAddress' param below. #implementationClass = iped.engine.task.transcript.RemoteTranscriptionTask # If you want to use the Microsoft Azure service implementation, comment above and uncomment below. From b6ec69d8eba996b4315176b64896a05d0f9af253 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 15 Apr 2024 19:31:43 -0300 Subject: [PATCH 014/126] '#1823: use float16, not int8, for better precision and ~50% more speed --- iped-app/resources/scripts/tasks/WhisperProcess.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 236fa4751d..984e772fbf 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -35,13 +35,13 @@ def main(): deviceNum = 0 try: - model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type="int8") + model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type="float16") except Exception as e: if deviceId != 'cpu': # loading on GPU failed (OOM?), try on CPU deviceId = 'cpu' - model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type="int8") + model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type="float16") else: raise e From c5599106c9d953e082b7a463af3ad746c37452e0 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 15 Apr 2024 20:10:58 -0300 Subject: [PATCH 015/126] '#1823: use numpy.mean instead of numpy.average (by @gfd2020) --- iped-app/resources/scripts/tasks/WhisperProcess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 984e772fbf..f14f92fdc2 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -76,7 +76,7 @@ def main(): text = transcription.replace('\n', ' ').replace('\r', ' ') probs = probs if len(probs) != 0 else [0] - finalScore = numpy.average(probs) + finalScore = numpy.mean(probs) print(finished, file=stdout, flush=True) print(str(finalScore), file=stdout, flush=True) From 06cc625d90869b1700ec070b3541ce7b0cd7a6f8 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 15 Apr 2024 22:09:24 -0300 Subject: [PATCH 016/126] '#1823: fix commit b6ec69d: uses float16 just for gpu, int8 for cpu --- iped-app/resources/scripts/tasks/WhisperProcess.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index f14f92fdc2..dacd3d4673 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -28,20 +28,23 @@ def main(): print(str(cudaCount), file=stdout, flush=True) + compute_type = 'int8' if cudaCount > 0: deviceId = 'cuda' + compute_type = 'float16' else: deviceId = 'cpu' deviceNum = 0 try: - model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type="float16") + model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type=compute_type) except Exception as e: if deviceId != 'cpu': # loading on GPU failed (OOM?), try on CPU deviceId = 'cpu' - model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type="float16") + compute_type = 'int8' + model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type=compute_type) else: raise e From d5c47412075c55ba06bda2649e2d8234bfc3c6f6 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Thu, 18 Apr 2024 23:28:22 -0300 Subject: [PATCH 017/126] '2170: Create calls sub-categories based on mimeType and ufed:Source. --- .../config/conf/CategoriesConfig.json | 9 +++++++- .../localization/iped-categories.properties | 6 +++++ .../iped-categories_de_DE.properties | 6 +++++ .../iped-categories_es_AR.properties | 6 +++++ .../iped-categories_it_IT.properties | 6 +++++ .../iped-categories_pt_BR.properties | 6 +++++ .../scripts/tasks/RefineCategoryTask.js | 21 ++++++++++++++++++ .../iped/app/ui/cat/Discord Calls.png | Bin 0 -> 606 bytes .../iped/app/ui/cat/Facebook Calls.png | Bin 0 -> 799 bytes .../resources/iped/app/ui/cat/Other Calls.png | Bin 0 -> 459 bytes .../resources/iped/app/ui/cat/Phone Calls.png | Bin 0 -> 443 bytes .../iped/app/ui/cat/Threema Calls.png | Bin 0 -> 557 bytes .../iped/app/ui/cat/WhatsApp Calls.png | Bin 0 -> 850 bytes 13 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Discord Calls.png create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Facebook Calls.png create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Other Calls.png create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Phone Calls.png create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Threema Calls.png create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/WhatsApp Calls.png diff --git a/iped-app/resources/config/conf/CategoriesConfig.json b/iped-app/resources/config/conf/CategoriesConfig.json index e1874f42b8..6aee30c8be 100644 --- a/iped-app/resources/config/conf/CategoriesConfig.json +++ b/iped-app/resources/config/conf/CategoriesConfig.json @@ -151,7 +151,14 @@ ]} ]}, {"name": "Extraction Summary", "mimes": ["application/x-ufed-html-summary"]}, - {"name": "Calls", "mimes": ["application/x-ufed-html-calls", "application/x-ufed-call", "call/x-threema-call", "call/x-whatsapp-call", "call/x-telegram-call", "call/x-discord-call", "application/x-ios-calllog-db", "application/x-ios8-calllog-db"]}, + {"name": "Calls", "categories":[ + {"name": "Facebook Calls", "mimes":[]}, + {"name": "Phone Calls", "mimes":["call/x-discord-call"]}, + {"name": "Telegram Calls", "mimes":["call/x-telegram-call"]}, + {"name": "Threema Calls", "mimes":["call/x-threema-call"]}, + {"name": "WhatsApp Calls", "mimes":["call/x-whatsapp-call"]}, + {"name": "Other Calls", "mimes":["application/x-ufed-html-calls", "application/x-ufed-call", "application/x-ios-calllog-db", "application/x-ios8-calllog-db"]} + ]}, {"name": "SMS Messages", "mimes": ["application/x-ufed-html-sms", "application/x-ufed-sms", "application/x-ios-sms-db"]}, {"name": "MMS Messages", "mimes": ["application/x-ufed-html-mms", "application/x-ufed-mms"]}, {"name": "Instant Messages", "mimes": ["message/x-chat-message", "message/x-threema-message", "application/x-ufed-instantmessage", "message/x-whatsapp-message", "message/x-skype-message", "message/x-skype-filetransfer", "message/x-telegram-message", "message/x-discord-message"]}, diff --git a/iped-app/resources/localization/iped-categories.properties b/iped-app/resources/localization/iped-categories.properties index 6aff718351..87775a8d1a 100644 --- a/iped-app/resources/localization/iped-categories.properties +++ b/iped-app/resources/localization/iped-categories.properties @@ -92,6 +92,12 @@ Folders=Folders Scanned\ Documents=Scanned\ Documents Extraction\ Summary=Extraction\ Summary Calls=Calls +Facebook\ Calls=Facebook\ Calls +Other\ Calls=Other\ Calls +Phone\ Calls=Phone\ Calls +Telegram\ Calls=Telegram\ Calls +Threema\ Calls=Threema\ Calls +WhatsApp\ Calls=WhatsApp\ Calls SMS\ Messages=SMS\ Messages MMS\ Messages=MMS\ Messages Instant\ Messages=Instant\ Messages diff --git a/iped-app/resources/localization/iped-categories_de_DE.properties b/iped-app/resources/localization/iped-categories_de_DE.properties index 0b02b8358c..7ad7a40961 100644 --- a/iped-app/resources/localization/iped-categories_de_DE.properties +++ b/iped-app/resources/localization/iped-categories_de_DE.properties @@ -92,6 +92,12 @@ Folders=Verzeichnisse Scanned\ Documents=gescannte\ Dokumente Extraction\ Summary=Extraktions-Zusammenfassung Calls=Anrufe +Facebook\ Calls=Facebook\ Calls[TBT] +Other\ Calls=Other\ Calls[TBT] +Phone\ Calls=Phone\ Calls[TBT] +Telegram\ Calls=Telegram\ Calls[TBT] +Threema\ Calls=Threema\ Calls[TBT] +WhatsApp\ Calls=WhatsApp\ Calls[TBT] SMS\ Messages=SMS\ Nachrichten MMS\ Messages=MMS\ Nachrichten Instant\ Messages=Sofortnachrichten diff --git a/iped-app/resources/localization/iped-categories_es_AR.properties b/iped-app/resources/localization/iped-categories_es_AR.properties index 7cb4ea9cb7..01c5b39bd3 100644 --- a/iped-app/resources/localization/iped-categories_es_AR.properties +++ b/iped-app/resources/localization/iped-categories_es_AR.properties @@ -92,6 +92,12 @@ Folders=Carpetas Scanned\ Documents=Documentos\ Escaneados Extraction\ Summary=Resumen\ Extracción Calls=Reg.\ Llamadas +Facebook\ Calls=Facebook\ Calls[TBT] +Other\ Calls=Other\ Calls[TBT] +Phone\ Calls=Phone\ Calls[TBT] +Telegram\ Calls=Telegram\ Calls[TBT] +Threema\ Calls=Threema\ Calls[TBT] +WhatsApp\ Calls=WhatsApp\ Calls[TBT] SMS\ Messages=Mensajes\ SMS MMS\ Messages=Mensajes\ MMS Instant\ Messages=Mensajes\ Instantáneos diff --git a/iped-app/resources/localization/iped-categories_it_IT.properties b/iped-app/resources/localization/iped-categories_it_IT.properties index d711d4a3c1..cd727fbb6f 100644 --- a/iped-app/resources/localization/iped-categories_it_IT.properties +++ b/iped-app/resources/localization/iped-categories_it_IT.properties @@ -92,6 +92,12 @@ Folders=Cartelle Scanned\ Documents=Documenti\ scansionati Extraction\ Summary=Sommario\ estrazione Calls=Chiamate +Facebook\ Calls=Facebook\ Calls[TBT] +Other\ Calls=Other\ Calls[TBT] +Phone\ Calls=Phone\ Calls[TBT] +Telegram\ Calls=Telegram\ Calls[TBT] +Threema\ Calls=Threema\ Calls[TBT] +WhatsApp\ Calls=WhatsApp\ Calls[TBT] SMS\ Messages=Messaggi\ SMS MMS\ Messages=Messaggi\ MMS Instant\ Messages=Messaggi\ istantanei diff --git a/iped-app/resources/localization/iped-categories_pt_BR.properties b/iped-app/resources/localization/iped-categories_pt_BR.properties index 157293ecbc..a7db940897 100644 --- a/iped-app/resources/localization/iped-categories_pt_BR.properties +++ b/iped-app/resources/localization/iped-categories_pt_BR.properties @@ -92,6 +92,12 @@ Folders=Pastas Scanned\ Documents=Possíveis\ Digitalizações Extraction\ Summary=Resumo\ da\ Extração Calls=Chamadas +Facebook\ Calls=Chamadas Facebook +Other\ Calls=Outras\ Chamadas +Phone\ Calls=Chamadas Telefônicas +Telegram\ Calls=Chamadas Telegram +Threema\ Calls=Chamadas Threema +WhatsApp\ Calls=Chamadas WhatsApp SMS\ Messages=Mensagens\ SMS MMS\ Messages=Mensagens\ MMS Instant\ Messages=Mensagens\ Instantâneas diff --git a/iped-app/resources/scripts/tasks/RefineCategoryTask.js b/iped-app/resources/scripts/tasks/RefineCategoryTask.js index 98512fb122..7c8106762d 100644 --- a/iped-app/resources/scripts/tasks/RefineCategoryTask.js +++ b/iped-app/resources/scripts/tasks/RefineCategoryTask.js @@ -148,6 +148,27 @@ function process(e){ } } + // Call sub-categories + if (mime.equals("application/x-ufed-call")) { + source = e.getMetadata().get("ufed:Source"); + if (source == null) { + e.setCategory("Phone Calls"); + } else { + source = source.toLowerCase(); + if (source.contains("whatsapp")) { + e.setCategory("WhatsApp Calls"); + } else if (source.contains("facebook")) { + e.setCategory("Facebook Calls"); + } else if (source.contains("discord")) { + e.setCategory("Discord Calls"); + } else if (source.contains("threema")) { + e.setCategory("Threema Calls"); + } else { + e.setCategory("Other Calls"); + } + } + } + // Usually, conditions that overwrite the category (using setCategory()) // should go before the ones that add other categories (using addCategory()). diff --git a/iped-app/src/main/resources/iped/app/ui/cat/Discord Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/Discord Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..2c72a48658c105d55e3132609d9b4ac5a78cb355 GIT binary patch literal 606 zcmV-k0-^nhP)a57N9Ku|FngO5Zf6LpaU784`UNaa=N zmD74ld)h)<8gTGSzR;d~?m55SUT$48OJ8J?cHzLd{kH&0<<3|<5WtRd$0ZVumdLE< zRjdQQaG%Y;;8bS;-rnAcCs*jq zJVyZFoh#=Z@wr2;?|Aa?B-P0k+NwO*6OI7D2BUNQ5e^Tl6pDV!xuK{<02+_Q zVyZaZ?ck43L5y`el0n^W|C;0abzq)p0A(DUOeS^5pc%*;7g80PJRZ?+bIJ(Q8(`;>p5ljVya>;_pSVO`5$$@NaN(uIYaPZmMif z1t%OHA7mzI;T%XL5}E=6UC&>^$p$AJ&eOBoW8);mMY5OjkSr()CmhaIdTRR2-nW1) zXd#RQ?-n+g@@ok9BYzDsz#s^-vIM~Myar%Y2ulE<^LukELF4Ik8V{*t835#s=tJxs z!eJw5;+aeamyl%(0AvJVJX8-^I literal 0 HcmV?d00001 diff --git a/iped-app/src/main/resources/iped/app/ui/cat/Facebook Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/Facebook Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..72513b635e86508f7338ec411a78ba2cc77471c7 GIT binary patch literal 799 zcmV+)1K|9LP)BsHLt=GgG`s@uHwhl|<=AQRn84GjnqGOOQ~*ACU@8A}~T{ zSt~?c#u&`u#=f2BwR7Cg&eo0_+C^XZz?juvPQlekO@w;1_%-Z=Hdz$(<4EaR?$}@*?2f z+!K~NQF>pQ+wHTk&-t+A{ek&)KXgKkW+*ue#N%;vJex&HBcGN{UqI>)M@~>|w4<~4 z6`RdjAR3LKvc-;)hG|90n|Z0XzJtTf2PPC7rf{QW8qruxoq$;9I8LhV9~`2zVM_Q` z%3ObFmwI)^7sBN)nE=huY}Nvab;99ru=>{aXJKLTnMh~<65ee1r5(%OZjM_&gRJEB@){)Q>hXcSNTT+rMd zRYYg7;Cmp#D5^C{b(*2stOS&vf@S%%P9pC=e8e^VFf=tIDU|9*;oA!{3h$iuP%q7> z`bRW0pDH0H5{Y1baSb(XbmJcxes1l&xOfHZpL64Mr=;aE9LI?(f4EjtpIuqX= zF{%V8Q|~fA2{B^b?RLwLlA>CGQuTN-MS$qG|6<=zUiWxB@)c6fB|u3hkq(>9CSSpF zZUKsIRr%*ghf;D9prm^-l~78~0%9iCGCz%U$(w)}m&=v3u(EAN-jbBO3#iRs1ulZL d0++#mf#1r~vCWX-slosN002ovPDHLkV1mKlcEy-uglNuASZJP)j>~1CdMUfT&umA+VhN>tD09XLh zZntrnG|B>oVGsd`|2V{@i*L~H&-d-s8Qw}z762Zu&xrs8URTD~+mo>8TpV*9mJ|{I ztll9J$ct@uahu`-!0_^f49Sao(-(S_5&$}#4jGacp3(vgJR~ddr-r980l;w_GLX+? zLcblA3NV5oAj3za5iW~ai+~Eb0(B%)po#no%mMxXdP}JFUYh^_002ovPDHLkV1l{3 B$kzY> literal 0 HcmV?d00001 diff --git a/iped-app/src/main/resources/iped/app/ui/cat/Phone Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/Phone Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..62ddabd2d528f4922b3a65c2fabced0031447146 GIT binary patch literal 443 zcmV;s0Yv_ZP)sgkG>u^=p!Z6eqMNuSca0WfV z{qdHu2k;WGrSE$!0N?c7mbnNdNg{iys?xQ(u4OGvQ==beCV|_7b$O;x3+Xoiy>wpn zcneT)ZRnf^UNkl(5{bk$X!I@tjfRNIC8&wG2_ibbg-S%Jpi--7M5C6NFK3dSZ|9v| zcI{dxImzsKe?06$(=?6!*h=8HmB4TRU+njLU;Gl_+xiN?`Fv*M@tAcw9d4YFnaNXt z%jLoN4m(=$z+oE>hc8Oe!sI!CPNo-_xpX8N~NR>y_kU< z0qFT~IF#~kw@a6>P$(qM>2zADV+OJfKo?A>Q&B4v3Q{c`4zt~E$AZD2$O3_Y)Potw z7C*`x!e5PH5?ENDrRV*m*MXcPc07K^4oI?Lsf zt`PbN0J4Ix@@O=oE4V%efNHfG9e!yuxdMQ!9!xWv$u)qkdc95;y?t@WGXP!l`CM8U vi^XV*B+mhy>MejDwgmW*mB4Q+fv^4p?=!&@JUVx@00000NkvXXu0mjf#)SGv literal 0 HcmV?d00001 diff --git a/iped-app/src/main/resources/iped/app/ui/cat/WhatsApp Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/WhatsApp Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..d329d598770d828c8db85b0acf7a79b9f4883f7b GIT binary patch literal 850 zcmV-Y1FigtP)%3MAV&>8XC58%4C+>=3ZDN z3X0N;CZrZKbKzuzwmNgMzbUszaxZtMe&wUvY=C7;rkqt`l&#l=OomsdgnC?TEj z@n&!H3eX?AF z5@Rg`cxN6E#qi#%%!ixXL$59>fYetqQ4+FNt7Wb1n;K^Sr`AYtq^=M%P6r-*REhS7 z`UeM1@KFH>gF{WI|WBd@cP?a6Gu#&sw>?zeM>#l{Ul z7Y?2H@XG@1uf4(`GODF`(Qn||?8a+THymykzSzcbR{wV}kG2-Gxgo^`z{}}$;+C-n z2kP>I5Y&n5hANCtTiHywIEV{|hb*pQpbcKHH+le#Mk6X7dYO3rJ`7Koklk2>g93<* zN(oLklpMvPHOIA zjOz#uAFrqZ3O!m81TRY1_3abRx0Ivyy&4tW&B#%eA*-$cS) cg#QEl0ULu-w|+ES4FCWD07*qoM6N<$g7MOO{r~^~ literal 0 HcmV?d00001 From 4ff1b06ca43d79c1ac40abb0f4533017c5eef648 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Thu, 18 Apr 2024 23:32:26 -0300 Subject: [PATCH 018/126] '#2170: Fix a minor typo and add a comment. --- iped-app/resources/scripts/tasks/RefineCategoryTask.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iped-app/resources/scripts/tasks/RefineCategoryTask.js b/iped-app/resources/scripts/tasks/RefineCategoryTask.js index 7c8106762d..ef47da421d 100644 --- a/iped-app/resources/scripts/tasks/RefineCategoryTask.js +++ b/iped-app/resources/scripts/tasks/RefineCategoryTask.js @@ -148,7 +148,7 @@ function process(e){ } } - // Call sub-categories + // Calls sub-categories if (mime.equals("application/x-ufed-call")) { source = e.getMetadata().get("ufed:Source"); if (source == null) { @@ -164,6 +164,7 @@ function process(e){ } else if (source.contains("threema")) { e.setCategory("Threema Calls"); } else { + // New sub-categories may be created from other phone call apps handled by UFED e.setCategory("Other Calls"); } } From 335f25dd2c006cb0baaf4bc17081f4154c7f291f Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Fri, 26 Apr 2024 17:44:47 -0300 Subject: [PATCH 019/126] '#2185: Show the InfoHash in resume.dat parser. --- .../iped-parsers-messages.properties | 1 + .../iped-parsers-messages_de_DE.properties | 1 + .../iped-parsers-messages_es_AR.properties | 1 + .../iped-parsers-messages_it_IT.properties | 1 + .../iped-parsers-messages_pt_BR.properties | 1 + .../bittorrent/BitTorrentResumeDatParser.java | 16 +++++++++++++--- 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index 6eb3d8386f..853e5fd515 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -342,6 +342,7 @@ BitTorrentResumeDatParser.Time=Date/Time BitTorrentResumeDatParser.LastSeenCompleteDate=Last Seen Complete BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Run time (s) +BitTorrentResumeDatParser.InfoHash=InfoHash TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Full Path TorrentFileDatParser.FileSize=File Size (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 13754dfc24..e5cbf5d21d 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -342,6 +342,7 @@ BitTorrentResumeDatParser.Time=Datum/Zeit BitTorrentResumeDatParser.LastSeenCompleteDate=zuletzt vollständig gesehen BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Laufzeit (s) +BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss TorrentFileDatParser.FullPath=vollständiger Pfad TorrentFileDatParser.FileSize=Dateigröße (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index 02b40a804f..bccf6adfb7 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -342,6 +342,7 @@ BitTorrentResumeDatParser.Time=Fecha/Hora BitTorrentResumeDatParser.LastSeenCompleteDate=Último visto completo BitTorrentResumeDatParser.SeedTime=Hora de la siembra (s) BitTorrentResumeDatParser.RunTime=Tiempo de ejecución (s) +BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Ubicación Full TorrentFileDatParser.FileSize=Tamaño del archivo (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index 8fcb752de3..d067a15e6e 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -342,6 +342,7 @@ BitTorrentResumeDatParser.Time=Data/Ora BitTorrentResumeDatParser.LastSeenCompleteDate=Ultimo visto completo BitTorrentResumeDatParser.SeedTime=Tempo di condivisione (s) BitTorrentResumeDatParser.RunTime=Tempo di esecuzione (s) +BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Percorso completo TorrentFileDatParser.FileSize=Dimensione file (Byte) diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index 2d620dc822..6ca0f4e83b 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -342,6 +342,7 @@ BitTorrentResumeDatParser.Time=Data/Hora BitTorrentResumeDatParser.LastSeenCompleteDate=Última vez visto completo BitTorrentResumeDatParser.SeedTime=Tempo semeando (s) BitTorrentResumeDatParser.RunTime=Tempo executando (s) +BitTorrentResumeDatParser.InfoHash=InfoHash TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Caminho completo TorrentFileDatParser.FileSize=Tamanho do arquivo (Bytes) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index 4e5b241478..6b207d1fb5 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -8,6 +8,7 @@ import java.util.Set; import java.util.TimeZone; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.HttpHeaders; import org.apache.tika.metadata.Metadata; @@ -37,6 +38,7 @@ public class BitTorrentResumeDatParser extends AbstractParser { private static final String[] header = new String[] { Messages.getString("BitTorrentResumeDatParser.TorrentFile"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.RootDir"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.Path"), //$NON-NLS-1$ + Messages.getString("BitTorrentResumeDatParser.InfoHash"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.Downloaded"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.Uploaded"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.AddedDate"), //$NON-NLS-1$ @@ -46,7 +48,7 @@ public class BitTorrentResumeDatParser extends AbstractParser { Messages.getString("BitTorrentResumeDatParser.SeedTime"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.RunTime") //$NON-NLS-1$ }; - private static final char[] colAlign = new char[] { 'a', 'a', 'a', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c' }; + private static final char[] colAlign = new char[] { 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c' }; @Override public Set getSupportedTypes(ParseContext context) { @@ -74,7 +76,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, + ".rb { background-color:#E7E7F0; vertical-align: middle; } " //$NON-NLS-1$ + ".a { border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + ".b { border: solid; border-width: thin; padding: 3px; text-align: center; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ - + ".c { border: solid; border-width: thin; padding: 3px; text-align: right; vertical-align: middle; word-wrap: break-word; } "); //$NON-NLS-1$ + + ".c { border: solid; border-width: thin; padding: 3px; text-align: right; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + + ".h { font-weight: bold; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; white-space: nowrap; font-family: monospace; }"); xhtml.endElement("style"); //$NON-NLS-1$ xhtml.newline(); try { @@ -100,9 +103,16 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (torrentDict == null) { continue; } + byte[] infoBytes = torrentDict.getBytes("info"); + String infoHash = ""; + if (infoBytes != null) { + infoHash = DigestUtils.sha1Hex(infoBytes).toUpperCase(); + } xhtml.startElement("tr", "class", a ? "ra" : "rb"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$ - String[] rowElements = new String[] { torrent, torrentDict.getString("rootdir"), //$NON-NLS-1$ + String[] rowElements = new String[] { torrent, + torrentDict.getString("rootdir"), //$NON-NLS-1$ torrentDict.getString("path"), //$NON-NLS-1$ + infoHash, Long.toString(torrentDict.getLong("downloaded")), //$NON-NLS-1$ Long.toString(torrentDict.getLong("uploaded")), //$NON-NLS-1$ torrentDict.getDate("added_on"), //$NON-NLS-1$ From c69d8f2926d453a67f69232c81f37dbc1e6a2b6e Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Fri, 26 Apr 2024 17:50:25 -0300 Subject: [PATCH 020/126] '#2185: Add Torrent and Resume.dat mime to delayed processing queues. --- .../main/java/iped/engine/core/QueuesProcessingOrder.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/iped-engine/src/main/java/iped/engine/core/QueuesProcessingOrder.java b/iped-engine/src/main/java/iped/engine/core/QueuesProcessingOrder.java index 6b648b9ef5..2bad4d038a 100644 --- a/iped-engine/src/main/java/iped/engine/core/QueuesProcessingOrder.java +++ b/iped-engine/src/main/java/iped/engine/core/QueuesProcessingOrder.java @@ -5,12 +5,13 @@ import java.util.Set; import java.util.TreeSet; -import iped.parsers.threema.ThreemaParser; import org.apache.tika.config.TikaConfig; import org.apache.tika.mime.MediaType; import org.apache.tika.mime.MediaTypeRegistry; import iped.parsers.ares.AresParser; +import iped.parsers.bittorrent.BitTorrentResumeDatParser; +import iped.parsers.bittorrent.TorrentFileParser; import iped.parsers.browsers.chrome.CacheIndexParser; import iped.parsers.discord.DiscordParser; import iped.parsers.emule.KnownMetParser; @@ -23,6 +24,7 @@ import iped.parsers.skype.SkypeParser; import iped.parsers.sqlite.SQLite3Parser; import iped.parsers.telegram.TelegramParser; +import iped.parsers.threema.ThreemaParser; import iped.parsers.ufed.UFEDChatParser; import iped.parsers.usnjrnl.UsnJrnlParser; import iped.parsers.whatsapp.WhatsAppParser; @@ -77,6 +79,9 @@ private static Map installTypesToPostProcess() { mediaTypes.put(MediaType.parse(ShareazaLibraryDatParser.LIBRARY_DAT_MIME_TYPE), 2); mediaTypes.put(MediaType.parse(ShareazaDownloadParser.SHAREAZA_DOWNLOAD_META), 2); + mediaTypes.put(MediaType.parse(TorrentFileParser.TORRENT_FILE_MIME_TYPE), 2); + mediaTypes.put(MediaType.parse(BitTorrentResumeDatParser.RESUME_DAT_MIME_TYPE), 3); + mediaTypes.put(WhatsAppParser.WA_DB, 2); mediaTypes.put(WhatsAppParser.MSG_STORE, 3); mediaTypes.put(WhatsAppParser.MSG_STORE_2, 4); From b232859b0cd111a31ecbd5a9fa969d186d2d04ef Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Fri, 26 Apr 2024 19:54:16 -0300 Subject: [PATCH 021/126] '#2185: Link case torrents with resume.dat through infoHash. --- .../iped-parsers-messages.properties | 2 ++ .../iped-parsers-messages_de_DE.properties | 2 ++ .../iped-parsers-messages_es_AR.properties | 2 ++ .../iped-parsers-messages_it_IT.properties | 2 ++ .../iped-parsers-messages_pt_BR.properties | 2 ++ .../bittorrent/BitTorrentResumeDatParser.java | 36 +++++++++++++++---- .../parsers/bittorrent/TorrentFileParser.java | 11 ++++-- 7 files changed, 48 insertions(+), 9 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index 853e5fd515..fd92612143 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -343,6 +343,8 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Last Seen Complete BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Run time (s) BitTorrentResumeDatParser.InfoHash=InfoHash +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case +BitTorrentResumeDatParser.Yes=Yes TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Full Path TorrentFileDatParser.FileSize=File Size (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index e5cbf5d21d..d32a962e1d 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -343,6 +343,8 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=zuletzt vollständig gesehen BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Laufzeit (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] +BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss TorrentFileDatParser.FullPath=vollständiger Pfad TorrentFileDatParser.FileSize=Dateigröße (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index bccf6adfb7..584e61dfee 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -343,6 +343,8 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Último visto completo BitTorrentResumeDatParser.SeedTime=Hora de la siembra (s) BitTorrentResumeDatParser.RunTime=Tiempo de ejecución (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] +BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Ubicación Full TorrentFileDatParser.FileSize=Tamaño del archivo (Bytes) diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index d067a15e6e..c7cc10d8fc 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -343,6 +343,8 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Ultimo visto completo BitTorrentResumeDatParser.SeedTime=Tempo di condivisione (s) BitTorrentResumeDatParser.RunTime=Tempo di esecuzione (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] +BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Percorso completo TorrentFileDatParser.FileSize=Dimensione file (Byte) diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index 6ca0f4e83b..6f08a63f4e 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -343,6 +343,8 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Última vez visto completo BitTorrentResumeDatParser.SeedTime=Tempo semeando (s) BitTorrentResumeDatParser.RunTime=Tempo executando (s) BitTorrentResumeDatParser.InfoHash=InfoHash +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Localizado no Caso +BitTorrentResumeDatParser.Yes=Sim TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Caminho completo TorrentFileDatParser.FileSize=Tamanho do arquivo (Bytes) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index 6b207d1fb5..01b85c71c9 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -5,10 +5,11 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.TimeZone; -import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.codec.binary.Hex; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.HttpHeaders; import org.apache.tika.metadata.Metadata; @@ -20,8 +21,12 @@ import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; +import iped.data.IItemReader; import iped.parsers.util.IgnoreCorruptedCarved; import iped.parsers.util.Messages; +import iped.properties.BasicProps; +import iped.properties.ExtraProperties; +import iped.search.IItemSearcher; import iped.utils.LocalizedFormat; /** @@ -46,9 +51,11 @@ public class BitTorrentResumeDatParser extends AbstractParser { Messages.getString("BitTorrentResumeDatParser.Time"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.LastSeenCompleteDate"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.SeedTime"), //$NON-NLS-1$ - Messages.getString("BitTorrentResumeDatParser.RunTime") //$NON-NLS-1$ + Messages.getString("BitTorrentResumeDatParser.RunTime"), //$NON-NLS-1$ + Messages.getString("BitTorrentResumeDatParser.TorrentFoundInCase") //$NON-NLS-1$ }; - private static final char[] colAlign = new char[] { 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c' }; + private static final char[] colAlign = new char[] { 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c', 'b' }; + private static final String strYes = Messages.getString("BitTorrentResumeDatParser.Yes"); @Override public Set getSupportedTypes(ParseContext context) { @@ -94,6 +101,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.endElement("tr"); //$NON-NLS-1$ + IItemSearcher searcher = context.get(IItemSearcher.class); boolean a = true; for (String torrent : dict.keySet()) { if (torrent.equals(".fileguard") || torrent.equals("rec")) { //$NON-NLS-1$ $NON-NLS-2$ @@ -106,8 +114,13 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, byte[] infoBytes = torrentDict.getBytes("info"); String infoHash = ""; if (infoBytes != null) { - infoHash = DigestUtils.sha1Hex(infoBytes).toUpperCase(); - } + infoHash = Hex.encodeHexString(infoBytes, false); + } + IItemReader item = searchTorrentInCase(searcher, infoHash); + if (item != null) { + metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + item.getHash()); + } + xhtml.startElement("tr", "class", a ? "ra" : "rb"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$ String[] rowElements = new String[] { torrent, torrentDict.getString("rootdir"), //$NON-NLS-1$ @@ -120,7 +133,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, torrentDict.getDate("time"), //$NON-NLS-1$ torrentDict.getDate("last seen complete"), //$NON-NLS-1$ Long.toString(torrentDict.getLong("seedtime")), //$NON-NLS-1$ - Long.toString(torrentDict.getLong("runtime")) //$NON-NLS-1$ + Long.toString(torrentDict.getLong("runtime")), //$NON-NLS-1$ + item != null ? strYes: "" }; for (int i = 0; i < rowElements.length; i++) { String c = rowElements[i]; @@ -145,6 +159,16 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } finally { xhtml.endDocument(); } + } + private static IItemReader searchTorrentInCase(IItemSearcher searcher, String infoHash) { + if (searcher == null || infoHash == null || infoHash.isBlank()) { + return null; + } + List items = searcher.search(TorrentFileParser.TORRENT_INFO_HASH + ":" + infoHash); + if (items == null || items.isEmpty()) { + return null; + } + return items.get(0); } } \ No newline at end of file diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 5a4ec3a177..921bf42444 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -40,6 +40,7 @@ public class TorrentFileParser extends AbstractParser { private static final String TORRENT_CREATION_DATE = "torrentCreationDate"; + public static final String TORRENT_INFO_HASH = "torrentInfoHash"; private static final long serialVersionUID = 3238363426940179831L; private static final Set SUPPORTED_TYPES = Collections.singleton(MediaType.application("x-bittorrent")); //$NON-NLS-1$ public static final String TORRENT_FILE_MIME_TYPE = "application/x-bittorrent"; //$NON-NLS-1$ @@ -109,7 +110,6 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.startElement("table", "class", "dt"); TorrentInfo info = extractTorrentInfo(dict); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.Name"), info.name); - outputInfo(xhtml, Messages.getString("TorrentFileDatParser.InfoHash"), info.infoHash, true); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.PieceLength"), info.pieceLength); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.NumberOfPieces"), info.numPieces); @@ -118,7 +118,9 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, outputInfo(xhtml, Messages.getString("TorrentFileDatParser.Comment"), info.comment); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.CreatedBy"), info.createdBy); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.CreationDate"), info.creationDate); + xhtml.endElement("table"); + // Set creation date metadata MetadataUtil.setMetadataType(TORRENT_CREATION_DATE, Date.class); if (!info.creationDate.isEmpty()) { try { @@ -128,8 +130,11 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, e1.printStackTrace(); } } - - xhtml.endElement("table"); + + // Set infoHash metadata + if (info.infoHash != null && !info.infoHash.isBlank()) { + metadata.set(TORRENT_INFO_HASH, info.infoHash); + } // Files Table xhtml.startElement("table", "class", "dt"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ From 34a333ff5cd3c67e574efec98419d1b5927f285d Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sat, 27 Apr 2024 14:29:33 -0300 Subject: [PATCH 022/126] '#2185: Move printNameWithLink() and searchItemInCase() to P2PUtil. --- .../java/iped/parsers/ares/AresParser.java | 6 +-- .../iped/parsers/emule/KnownMetParser.java | 44 ++-------------- .../iped/parsers/emule/PartMetParser.java | 5 +- .../iped/parsers/shareaza/LibraryFile.java | 6 +-- .../shareaza/ShareazaDownloadParser.java | 48 ++---------------- .../main/java/iped/parsers/util/P2PUtil.java | 50 +++++++++++++++++++ 6 files changed, 67 insertions(+), 92 deletions(-) create mode 100644 iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/ares/AresParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/ares/AresParser.java index d801fb35c9..05b436595a 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/ares/AresParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/ares/AresParser.java @@ -44,10 +44,10 @@ import org.xml.sax.helpers.AttributesImpl; import iped.data.IItemReader; -import iped.parsers.emule.KnownMetParser; import iped.parsers.util.BeanMetadataExtraction; import iped.parsers.util.ChildPornHashLookup; import iped.parsers.util.Messages; +import iped.parsers.util.P2PUtil; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; import iped.utils.LocalizedFormat; @@ -249,9 +249,9 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (j != 1 || e == null) xhtml.characters(s); else { - IItemReader item = KnownMetParser.searchItemInCase(searcher, "sha-1", e.getHash()); + IItemReader item = P2PUtil.searchItemInCase(searcher, "sha-1", e.getHash()); if (item != null) { - KnownMetParser.printNameWithLink(xhtml, item, s); + P2PUtil.printNameWithLink(xhtml, item, s); cells.set(cells.size() - 1, strYes); } else { xhtml.characters(s); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/KnownMetParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/KnownMetParser.java index ebd261d792..6b3cade317 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/KnownMetParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/KnownMetParser.java @@ -18,7 +18,6 @@ */ package iped.parsers.emule; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; @@ -48,9 +47,8 @@ import iped.data.IItemReader; import iped.parsers.util.BeanMetadataExtraction; import iped.parsers.util.ChildPornHashLookup; -import iped.parsers.util.ExportFolder; import iped.parsers.util.Messages; -import iped.properties.BasicProps; +import iped.parsers.util.P2PUtil; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; import iped.utils.LocalizedFormat; @@ -199,7 +197,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, String hash = e.getHash(); metadata.add(ExtraProperties.SHARED_HASHES, hash); List hashSets = ChildPornHashLookup.lookupHash(EDONKEY, hash); - item = searchItemInCase(searcher, EDONKEY, e.getHash()); + item = P2PUtil.searchItemInCase(searcher, EDONKEY, e.getHash()); if(item != null) { hashSets = ChildPornHashLookup.lookupHashAndMerge(EDONKEY, hash, hashSets); } @@ -241,7 +239,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.characters(cells.get(j)); else { if (item != null) { - printNameWithLink(xhtml, item, e.getName()); + P2PUtil.printNameWithLink(xhtml, item, e.getName()); cells.set(cells.size() - 1, strYes); } else { xhtml.characters(e.getName()); @@ -262,42 +260,6 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endDocument(); } - public static IItemReader searchItemInCase(IItemSearcher searcher, String hashAlgo, String hash) { - if (searcher == null) { - return null; - } - List items = searcher.search(hashAlgo + ":" + hash); //$NON-NLS-1$ - if (items == null || items.isEmpty()) { - return null; - } - return items.get(0); - } - - public static void printNameWithLink(XHTMLContentHandler xhtml, IItemReader item, String name) throws SAXException { - String hashPath = getPathFromHash(new File("../../../../", ExportFolder.getExportPath()), //$NON-NLS-1$ - item.getHash(), item.getExt()); - - AttributesImpl attributes = new AttributesImpl(); - attributes.addAttribute("", "onclick", "onclick", "CDATA", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - "app.open(\"" + BasicProps.HASH + ":" + item.getHash() + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - attributes.addAttribute("", "href", "href", "CDATA", hashPath); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - xhtml.startElement("a", attributes); //$NON-NLS-1$ - xhtml.characters(name); - xhtml.endElement("a"); //$NON-NLS-1$ - } - - private static String getPathFromHash(File baseDir, String hash, String ext) { - if (hash == null || hash.length() < 2) - return ""; //$NON-NLS-1$ - StringBuilder path = new StringBuilder(); - hash = hash.toUpperCase(); - path.append(hash.charAt(0)).append('/'); - path.append(hash.charAt(1)).append('/'); - path.append(hash).append('.').append(ext); - File result = new File(baseDir, path.toString()); - return result.getPath(); - } - private long toSum(long v) { return v == -1 ? 0 : v; } diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/PartMetParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/PartMetParser.java index 94b5ed9888..755d746a48 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/PartMetParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/emule/PartMetParser.java @@ -30,6 +30,7 @@ import iped.parsers.util.BeanMetadataExtraction; import iped.parsers.util.ChildPornHashLookup; import iped.parsers.util.Messages; +import iped.parsers.util.P2PUtil; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; import iped.utils.LocalizedFormat; @@ -116,7 +117,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, int hashDBHits = 0; List hashSets = ChildPornHashLookup.lookupHash(KnownMetParser.EDONKEY, e.getHash()); - IItemReader item = KnownMetParser.searchItemInCase(searcher, KnownMetParser.EDONKEY, e.getHash()); + IItemReader item = P2PUtil.searchItemInCase(searcher, KnownMetParser.EDONKEY, e.getHash()); if (item != null) hashSets = ChildPornHashLookup.lookupHashAndMerge(item.getHash(), hashSets); if (hashSets != null && !hashSets.isEmpty()) @@ -131,7 +132,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endElement("td"); xhtml.startElement("td", "class", "b"); if (item != null) - KnownMetParser.printNameWithLink(xhtml, item, e.getName()); + P2PUtil.printNameWithLink(xhtml, item, e.getName()); else xhtml.characters(e.getName()); xhtml.endElement("td"); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/LibraryFile.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/LibraryFile.java index 7bbbb16277..ab4e446756 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/LibraryFile.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/LibraryFile.java @@ -29,8 +29,8 @@ import org.xml.sax.helpers.AttributesImpl; import iped.data.IItemReader; -import iped.parsers.emule.KnownMetParser; import iped.parsers.util.ChildPornHashLookup; +import iped.parsers.util.P2PUtil; import iped.search.IItemSearcher; /** @@ -233,9 +233,9 @@ private void printTd(XHTMLContentHandler html, IItemSearcher searcher, Object... html.startElement("td"); //$NON-NLS-1$ if (o != null) { if (col == 1) { - IItemReader item = KnownMetParser.searchItemInCase(searcher, "md5", md5); + IItemReader item = P2PUtil.searchItemInCase(searcher, "md5", md5); if (item != null) { - KnownMetParser.printNameWithLink(html, item, name); + P2PUtil.printNameWithLink(html, item, name); foundInCase = true; } else { html.characters(name); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java index c4788555ec..2a02d63dfb 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java @@ -1,7 +1,6 @@ package iped.parsers.shareaza; import java.io.ByteArrayInputStream; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; @@ -15,7 +14,6 @@ import java.util.Collections; import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.apache.tika.exception.TikaException; @@ -36,9 +34,9 @@ import iped.data.IItemReader; import iped.parsers.util.ChildPornHashLookup; -import iped.parsers.util.ExportFolder; import iped.parsers.util.Messages; import iped.parsers.util.MetadataUtil; +import iped.parsers.util.P2PUtil; import iped.properties.BasicProps; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; @@ -215,7 +213,7 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X addLine(xhtml, "SHA1: " + sha1); hashSets.addAll(ChildPornHashLookup.lookupHash(HASH_SHA1, sha1)); if (item == null) { - item = searchItemInCase(searcher, HASH_SHA1, sha1); + item = P2PUtil.searchItemInCase(searcher, HASH_SHA1, sha1); } } @@ -237,7 +235,7 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X addLine(xhtml, "MD5: " + md5); hashSets.addAll(ChildPornHashLookup.lookupHash(HASH_MD5, md5)); if (item == null) { - item = searchItemInCase(searcher, HASH_MD5, md5); + item = P2PUtil.searchItemInCase(searcher, HASH_MD5, md5); } } @@ -253,7 +251,7 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X addLine(xhtml, "EDONKEY: " + edonkey); hashSets.addAll(ChildPornHashLookup.lookupHash(HASH_EDONKEY, edonkey)); if (item == null) { - item = searchItemInCase(searcher, HASH_EDONKEY, edonkey); + item = P2PUtil.searchItemInCase(searcher, HASH_EDONKEY, edonkey); } } @@ -284,7 +282,7 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X attributes.addAttribute("", "name", "name", "CDATA", item.getHash().toUpperCase()); xhtml.startElement("span", attributes); - printNameWithLink(xhtml, item, item.getName()); + P2PUtil.printNameWithLink(xhtml, item, item.getName()); xhtml.endElement("span"); xhtml.newline(); xhtml.newline(); @@ -971,42 +969,6 @@ public String getHash(MessageDigest digest) { return sb.toString(); } - public static void printNameWithLink(XHTMLContentHandler xhtml, IItemReader item, String name) throws SAXException { - String hashPath = getPathFromHash(new File("../../../../", ExportFolder.getExportPath()), //$NON-NLS-1$ - item.getHash(), item.getExt()); - - AttributesImpl attributes = new AttributesImpl(); - attributes.addAttribute("", "onclick", "onclick", "CDATA", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - "app.open(\"" + BasicProps.HASH + ":" + item.getHash() + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - attributes.addAttribute("", "href", "href", "CDATA", hashPath); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - xhtml.startElement("a", attributes); //$NON-NLS-1$ - xhtml.characters(name); - xhtml.endElement("a"); //$NON-NLS-1$ - } - - private static String getPathFromHash(File baseDir, String hash, String ext) { - if (hash == null || hash.length() < 2) - return ""; //$NON-NLS-1$ - StringBuilder path = new StringBuilder(); - hash = hash.toUpperCase(); - path.append(hash.charAt(0)).append('/'); - path.append(hash.charAt(1)).append('/'); - path.append(hash).append('.').append(ext); - File result = new File(baseDir, path.toString()); - return result.getPath(); - } - - public static IItemReader searchItemInCase(IItemSearcher searcher, String hashAlgo, String hash) { - if (searcher == null) { - return null; - } - List items = searcher.search(hashAlgo + ":" + hash); //$NON-NLS-1$ - if (items == null || items.isEmpty()) { - return null; - } - return items.get(0); - } - private void addLine(XHTMLContentHandler xhtml, String value) throws SAXException { xhtml.characters(value); xhtml.newline(); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java new file mode 100644 index 0000000000..292a21d90d --- /dev/null +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java @@ -0,0 +1,50 @@ +package iped.parsers.util; + +import java.io.File; +import java.util.List; + +import org.apache.tika.sax.XHTMLContentHandler; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; + +import iped.data.IItemReader; +import iped.properties.BasicProps; +import iped.search.IItemSearcher; + +public class P2PUtil { + public static IItemReader searchItemInCase(IItemSearcher searcher, String hashAlgo, String hash) { + if (searcher == null || hash == null || hash.isBlank()) { + return null; + } + List items = searcher.search(hashAlgo + ":" + hash); + if (items == null || items.isEmpty()) { + return null; + } + return items.get(0); + } + + public static void printNameWithLink(XHTMLContentHandler xhtml, IItemReader item, String name) throws SAXException { + String hashPath = getPathFromHash(new File("../../../../", ExportFolder.getExportPath()), item.getHash(), + item.getExt()); + AttributesImpl attributes = new AttributesImpl(); + attributes.addAttribute("", "onclick", "onclick", "CDATA", + "app.open(\"" + BasicProps.HASH + ":" + item.getHash() + "\")"); + attributes.addAttribute("", "href", "href", "CDATA", hashPath); + xhtml.startElement("a", attributes); + xhtml.characters(name); + xhtml.endElement("a"); + } + + private static String getPathFromHash(File baseDir, String hash, String ext) { + if (hash == null || hash.length() < 2) { + return ""; + } + StringBuilder path = new StringBuilder(); + hash = hash.toUpperCase(); + path.append(hash.charAt(0)).append('/'); + path.append(hash.charAt(1)).append('/'); + path.append(hash).append('.').append(ext); + File result = new File(baseDir, path.toString()); + return result.getPath(); + } +} From 7aa21732fe6aa74c0e5a219a6703be50459f76ab Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sat, 27 Apr 2024 15:24:59 -0300 Subject: [PATCH 023/126] '#2185: Add a column with entry number and set p2pHistoryEntries. --- .../bittorrent/BitTorrentResumeDatParser.java | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index 01b85c71c9..17764e3acc 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -5,7 +5,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Collections; -import java.util.List; import java.util.Set; import java.util.TimeZone; @@ -24,6 +23,7 @@ import iped.data.IItemReader; import iped.parsers.util.IgnoreCorruptedCarved; import iped.parsers.util.Messages; +import iped.parsers.util.P2PUtil; import iped.properties.BasicProps; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; @@ -40,7 +40,8 @@ public class BitTorrentResumeDatParser extends AbstractParser { private static final Set SUPPORTED_TYPES = Collections .singleton(MediaType.application("x-bittorrent-resume-dat")); //$NON-NLS-1$ public static final String RESUME_DAT_MIME_TYPE = "application/x-bittorrent-resume-dat"; //$NON-NLS-1$ - private static final String[] header = new String[] { Messages.getString("BitTorrentResumeDatParser.TorrentFile"), //$NON-NLS-1$ + private static final String[] header = new String[] { "#", + Messages.getString("BitTorrentResumeDatParser.TorrentFile"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.RootDir"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.Path"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.InfoHash"), //$NON-NLS-1$ @@ -54,7 +55,7 @@ public class BitTorrentResumeDatParser extends AbstractParser { Messages.getString("BitTorrentResumeDatParser.RunTime"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.TorrentFoundInCase") //$NON-NLS-1$ }; - private static final char[] colAlign = new char[] { 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c', 'b' }; + private static final char[] colAlign = new char[] { 'b', 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c', 'b' }; private static final String strYes = Messages.getString("BitTorrentResumeDatParser.Yes"); @Override @@ -101,6 +102,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.endElement("tr"); //$NON-NLS-1$ + int numEntries = 0; IItemSearcher searcher = context.get(IItemSearcher.class); boolean a = true; for (String torrent : dict.keySet()) { @@ -116,13 +118,15 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (infoBytes != null) { infoHash = Hex.encodeHexString(infoBytes, false); } - IItemReader item = searchTorrentInCase(searcher, infoHash); + IItemReader item = P2PUtil.searchItemInCase(searcher, TorrentFileParser.TORRENT_INFO_HASH, infoHash); if (item != null) { metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + item.getHash()); } xhtml.startElement("tr", "class", a ? "ra" : "rb"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$ - String[] rowElements = new String[] { torrent, + String[] rowElements = new String[] { + String.valueOf(++numEntries), + torrent, torrentDict.getString("rootdir"), //$NON-NLS-1$ torrentDict.getString("path"), //$NON-NLS-1$ infoHash, @@ -154,21 +158,11 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endElement("tr"); //$NON-NLS-1$ a = !a; } + metadata.set(ExtraProperties.P2P_REGISTRY_COUNT, String.valueOf(numEntries)); xhtml.endElement("table"); //$NON-NLS-1$ } finally { xhtml.endDocument(); } } - - private static IItemReader searchTorrentInCase(IItemSearcher searcher, String infoHash) { - if (searcher == null || infoHash == null || infoHash.isBlank()) { - return null; - } - List items = searcher.search(TorrentFileParser.TORRENT_INFO_HASH + ":" + infoHash); - if (items == null || items.isEmpty()) { - return null; - } - return items.get(0); - } -} \ No newline at end of file +} From 507bcc64b1131cbae74bf5d71c9b065e42e946aa Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sat, 27 Apr 2024 15:25:23 -0300 Subject: [PATCH 024/126] '#2185: Set metadata type of childPornHashHits. --- iped-app/resources/config/conf/metadataTypes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/iped-app/resources/config/conf/metadataTypes.txt b/iped-app/resources/config/conf/metadataTypes.txt index 1d4dfe0401..b961c1d959 100644 --- a/iped-app/resources/config/conf/metadataTypes.txt +++ b/iped-app/resources/config/conf/metadataTypes.txt @@ -3392,6 +3392,7 @@ og:type = java.lang.String og:url = java.lang.String ontent-Type" = java.lang.String p2pHistoryEntries = java.lang.Integer +childPornHashHits = java.lang.Integer containerTrackId = java.lang.String parentTrackId = java.lang.String trackId = java.lang.String From f3ac03e244c1b3822fd7c127042047f9833538bf Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sat, 27 Apr 2024 15:44:08 -0300 Subject: [PATCH 025/126] '#2185: Limit resume.dat view columns' width of large columns. --- .../java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index 17764e3acc..841a15d015 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -82,7 +82,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, + ".rh { font-weight: bold; text-align: center; background-color:#AAAAEE; } " //$NON-NLS-1$ + ".ra { vertical-align: middle; } " //$NON-NLS-1$ + ".rb { background-color:#E7E7F0; vertical-align: middle; } " //$NON-NLS-1$ - + ".a { border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + + ".a { max-width: 400px; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + ".b { border: solid; border-width: thin; padding: 3px; text-align: center; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + ".c { border: solid; border-width: thin; padding: 3px; text-align: right; vertical-align: middle; word-wrap: break-word; } " //$NON-NLS-1$ + ".h { font-weight: bold; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; white-space: nowrap; font-family: monospace; }"); From f094f733c5eaf6534cd08c2cbd82df79a70fea00 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 27 Apr 2024 22:30:42 -0300 Subject: [PATCH 026/126] '#1823: change code to use WhisperX instead of Faster-Whisper --- .../resources/scripts/tasks/WhisperProcess.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index dacd3d4673..7f32f9b96b 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -19,7 +19,7 @@ def main(): if language == 'detect': language = None - from faster_whisper import WhisperModel + import whisperx print(library_loaded, file=stdout, flush=True) @@ -37,7 +37,7 @@ def main(): deviceNum = 0 try: - model = WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type=compute_type) + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type) except Exception as e: if deviceId != 'cpu': @@ -62,14 +62,14 @@ def main(): continue transcription = '' - probs = [] + logprobs = [] try: - segments, info = model.transcribe(audio=line, language=language, beam_size=5, word_timestamps=True) - for segment in segments: - transcription += segment.text - words = segment.words - if words is not None: - probs += [word.probability for word in words] + audio = whisperx.load_audio(line) + result = model.transcribe(audio, batch_size=8, language=language) + for segment in result['segments']: + transcription += segment['text'] + if 'avg_logprob' in segment: + logprobs.append(segment['avg_logprob']) except Exception as e: msg = repr(e).replace('\n', ' ').replace('\r', ' ') @@ -78,8 +78,10 @@ def main(): text = transcription.replace('\n', ' ').replace('\r', ' ') - probs = probs if len(probs) != 0 else [0] - finalScore = numpy.mean(probs) + if len(logprobs) == 0: + logprobs = [0] + + finalScore = numpy.mean(numpy.exp(logprobs)) print(finished, file=stdout, flush=True) print(str(finalScore), file=stdout, flush=True) From 67e5342282561ffa9f538886ebb6c94678b12559 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Thu, 25 Apr 2024 16:23:09 -0300 Subject: [PATCH 027/126] '#1823: don't break audios in 59s to benefit from batching long audios --- .../iped/engine/task/transcript/WhisperTranscriptTask.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index ba5f29e2d7..3765eb2b5f 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -1,6 +1,7 @@ package iped.engine.task.transcript; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStreamReader; @@ -90,4 +91,9 @@ protected Server startServer0(int device) throws IOException { return server; } + @Override + protected TextAndScore transcribeAudio(File tmpFile) throws Exception { + return transcribeWavPart(tmpFile); + } + } From 231b85de623605cb7dc2a3ff2777f0426bde2f57 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sat, 27 Apr 2024 22:50:55 -0300 Subject: [PATCH 028/126] '#1823: fix probability computation when there are no results --- iped-app/resources/scripts/tasks/WhisperProcess.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 7f32f9b96b..71b410e8f4 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -79,9 +79,9 @@ def main(): text = transcription.replace('\n', ' ').replace('\r', ' ') if len(logprobs) == 0: - logprobs = [0] - - finalScore = numpy.mean(numpy.exp(logprobs)) + finalScore = 0 + else: + finalScore = numpy.mean(numpy.exp(logprobs)) print(finished, file=stdout, flush=True) print(str(finalScore), file=stdout, flush=True) From ca30e57f122f272eb95fc4a37eaad217989d3d54 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 11:41:16 -0300 Subject: [PATCH 029/126] '#1823: update library name in error message --- .../java/iped/engine/task/transcript/WhisperTranscriptTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index 3765eb2b5f..d4d05744d0 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -57,7 +57,7 @@ protected Server startServer0(int device) throws IOException { String line = reader.readLine(); if (!LIBRARY_LOADED.equals(line)) { - throw new StartupException("'faster_whisper' python lib not loaded correctly. Have you installed it?"); + throw new StartupException("'whisperx' python lib not loaded correctly. Have you installed it?"); } int cudaCount = Integer.valueOf(reader.readLine()); From 4f7fcf39ff81eeb6076a878361738a9a4ec997fa Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 11:43:45 -0300 Subject: [PATCH 030/126] '#1823: fix fallback code to use the same lib, add a warning message --- iped-app/resources/scripts/tasks/WhisperProcess.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 71b410e8f4..f0f68c5ffe 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -42,9 +42,10 @@ def main(): except Exception as e: if deviceId != 'cpu': # loading on GPU failed (OOM?), try on CPU + print('FAILED to load model on GPU, fallbacking to CPU!', file=sys.stderr) deviceId = 'cpu' compute_type = 'int8' - model = WhisperModel(model_size_or_path=modelName, device=deviceId, cpu_threads=threads, compute_type=compute_type) + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type) else: raise e From 8b23384840b5eb18b3e35a9dc4596ad456a03d8e Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 16:35:29 -0300 Subject: [PATCH 031/126] '#1823: redirect warmless console messages to log --- .../resources/scripts/tasks/WhisperProcess.py | 4 +- .../transcript/Wav2Vec2TranscriptTask.java | 2 +- .../transcript/WhisperTranscriptTask.java | 40 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index f0f68c5ffe..8e2b6456b1 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -37,7 +37,7 @@ def main(): deviceNum = 0 try: - model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type) + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) except Exception as e: if deviceId != 'cpu': @@ -45,7 +45,7 @@ def main(): print('FAILED to load model on GPU, fallbacking to CPU!', file=sys.stderr) deviceId = 'cpu' compute_type = 'int8' - model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type) + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) else: raise e diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java index 8cd05ae366..84a92dca8a 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/Wav2Vec2TranscriptTask.java @@ -40,7 +40,7 @@ public class Wav2Vec2TranscriptTask extends AbstractTranscriptTask { private static LinkedBlockingDeque deque = new LinkedBlockingDeque<>(); - private static volatile Level logLevel = Level.forName("MSG", 250); + protected static volatile Level logLevel = Level.forName("MSG", 250); static class Server { Process process; diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index d4d05744d0..6a77455cca 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -3,7 +3,10 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.List; import org.apache.commons.lang3.SystemUtils; import org.apache.logging.log4j.LogManager; @@ -96,4 +99,41 @@ protected TextAndScore transcribeAudio(File tmpFile) throws Exception { return transcribeWavPart(tmpFile); } + @Override + protected void logInputStream(InputStream is) { + List ignoreMsgs = Arrays.asList( + "With dispatcher enabled, this function is no-op. You can remove the function call.", + "torchvision is not available - cannot save figures", + "Lightning automatically upgraded your loaded checkpoint from", + "Model was trained with pyannote.audio 0.0.1, yours is", + "Model was trained with torch 1.10.0+cu102, yours is"); + Thread t = new Thread() { + public void run() { + byte[] buf = new byte[1024]; + int read = 0; + try { + while ((read = is.read(buf)) != -1) { + String msg = new String(buf, 0, read).trim(); + boolean ignore = false; + for (String i : ignoreMsgs) { + if (msg.contains(i)) { + ignore = true; + break; + } + } + if (ignore) { + logger.warn(msg); + } else { + logger.log(logLevel, msg); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }; + t.setDaemon(true); + t.start(); + } + } From abb74fb333a7d400e6073c5ca75f392d33d66f4a Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 17:52:37 -0300 Subject: [PATCH 032/126] '#1823: externalize batchSize and precision (compute_type) params --- .../config/conf/AudioTranscriptConfig.txt | 9 ++++++++ .../resources/scripts/tasks/WhisperProcess.py | 9 ++++---- .../engine/config/AudioTranscriptConfig.java | 21 +++++++++++++++++++ .../transcript/WhisperTranscriptTask.java | 5 ++++- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 2752f300c1..2dd98e6310 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -110,6 +110,15 @@ minWordScore = 0.5 # 'language = detect' uses auto detection, but it can cause mistakes whisperModel = medium +# Compute type precision. This affects accuracy, speed and memory usage. +# Possible values: float32, float16 (GPU only), int8 +precision = float32 + +# Batch size (number of parallel transcriptions). If you have a GPU with enough memory, +# increasing this value to e.g. 16 can speed up transcribing long audios up to 10x. +# Test what is the better value for your GPU before hitting OOM. +batchSize = 1 + ######################################### # RemoteAudioTranscriptTask options ######################################### diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 8e2b6456b1..073b39297c 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -15,6 +15,8 @@ def main(): deviceNum = int(sys.argv[2]) threads = int(sys.argv[3]) language = sys.argv[4] + compute_type = sys.argv[5] + batch_size = int(sys.argv[6]) if language == 'detect': language = None @@ -28,10 +30,8 @@ def main(): print(str(cudaCount), file=stdout, flush=True) - compute_type = 'int8' if cudaCount > 0: deviceId = 'cuda' - compute_type = 'float16' else: deviceId = 'cpu' deviceNum = 0 @@ -44,7 +44,8 @@ def main(): # loading on GPU failed (OOM?), try on CPU print('FAILED to load model on GPU, fallbacking to CPU!', file=sys.stderr) deviceId = 'cpu' - compute_type = 'int8' + if compute_type == 'float16': # not supported on CPU + compute_type = 'float32' model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) else: raise e @@ -66,7 +67,7 @@ def main(): logprobs = [] try: audio = whisperx.load_audio(line) - result = model.transcribe(audio, batch_size=8, language=language) + result = model.transcribe(audio, batch_size=batch_size, language=language) for segment in result['segments']: transcription += segment['text'] if 'avg_logprob' in segment: diff --git a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java index e950824bb2..b7ea08e500 100644 --- a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java @@ -33,6 +33,8 @@ public class AudioTranscriptConfig extends AbstractTaskPropertiesConfig { private static final String GOOGLE_MODEL = "googleModel"; private static final String LANG_AUTO_VAL = "auto"; private static final String SKIP_KNOWN_FILES = "skipKnownFiles"; + private static final String PRECISION = "precision"; + private static final String BATCH_SIZE = "batchSize"; private List languages = new ArrayList<>(); private List mimesToProcess = new ArrayList<>(); @@ -49,6 +51,16 @@ public class AudioTranscriptConfig extends AbstractTaskPropertiesConfig { private String remoteService; private String googleModel; private boolean skipKnownFiles = true; + private String precision = "float32"; + private int batchSize = 1; + + public String getPrecision() { + return precision; + } + + public int getBatchSize() { + return batchSize; + } public boolean getSkipKnownFiles() { return this.skipKnownFiles; @@ -155,6 +167,7 @@ public void processProperties(UTF8Properties properties) { if (whisperModel != null) { whisperModel = whisperModel.strip(); } + remoteService = properties.getProperty(REMOTE_SERVICE); if (remoteService == null) { remoteService = properties.getProperty(WAV2VEC2_SERVICE); @@ -179,6 +192,14 @@ public void processProperties(UTF8Properties properties) { if (value != null) { timeoutPerSec = Integer.valueOf(value.trim()); } + value = properties.getProperty(PRECISION); + if (value != null) { + precision = value.trim(); + } + value = properties.getProperty(BATCH_SIZE); + if (value != null) { + batchSize = Integer.parseInt(value.trim()); + } } /** diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index 6a77455cca..bd249ebdd2 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -49,7 +49,10 @@ protected Server startServer0(int device) throws IOException { lang = lang.substring(0, lang.indexOf("-")); } - pb.command(python, script, model, Integer.toString(device), Integer.toString(threads), lang); + String precision = transcriptConfig.getPrecision(); + String batchSize = Integer.toString(transcriptConfig.getBatchSize()); + + pb.command(python, script, model, Integer.toString(device), Integer.toString(threads), lang, precision, batchSize); Process process = pb.start(); From 0c68009862d2f998e35219e828857edd36c4526c Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 18:53:00 -0300 Subject: [PATCH 033/126] '#1823: change default precision from float32 to int8 --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 4 ++-- iped-app/resources/scripts/tasks/WhisperProcess.py | 2 +- .../main/java/iped/engine/config/AudioTranscriptConfig.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 2dd98e6310..76cd11653f 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -111,8 +111,8 @@ minWordScore = 0.5 whisperModel = medium # Compute type precision. This affects accuracy, speed and memory usage. -# Possible values: float32, float16 (GPU only), int8 -precision = float32 +# Possible values: float32 (better), float16 (recommended for GPU), int8 (faster) +precision = int8 # Batch size (number of parallel transcriptions). If you have a GPU with enough memory, # increasing this value to e.g. 16 can speed up transcribing long audios up to 10x. diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 073b39297c..e8d5752979 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -45,7 +45,7 @@ def main(): print('FAILED to load model on GPU, fallbacking to CPU!', file=sys.stderr) deviceId = 'cpu' if compute_type == 'float16': # not supported on CPU - compute_type = 'float32' + compute_type = 'int8' model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) else: raise e diff --git a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java index b7ea08e500..7e118e70d4 100644 --- a/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/AudioTranscriptConfig.java @@ -51,7 +51,7 @@ public class AudioTranscriptConfig extends AbstractTaskPropertiesConfig { private String remoteService; private String googleModel; private boolean skipKnownFiles = true; - private String precision = "float32"; + private String precision = "int8"; private int batchSize = 1; public String getPrecision() { From 2861ea6e0908e58e2ba145bdb64978c331096fd6 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 19:00:29 -0300 Subject: [PATCH 034/126] '#1823: update comments with JonatasGrosman's fine tuned large-v2 model --- iped-app/resources/config/conf/AudioTranscriptConfig.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 76cd11653f..86a1e02252 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -103,7 +103,7 @@ minWordScore = 0.5 # Local WhisperTranscriptTask options ######################################### -# Possible values: tiny, base, small, medium, large-v3 +# Possible values: tiny, base, small, medium, large-v3, dwhoelz/whisper-large-pt-cv11-ct2 # large-v3 is much better than medium, but 2x slower and uses 2x more memory. # If you know the language you want to transcribe, please set the 'language' option above. # 'language = auto' uses the 'locale' set on LocalConfig.txt From dd206f870b9496eb4331b7c45565d482d7a7ec8f Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Sun, 28 Apr 2024 22:25:50 -0300 Subject: [PATCH 035/126] '#1823: update python package to include needed docopt-0.6.2 lib --- iped-app/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/pom.xml b/iped-app/pom.xml index 07d95c32e9..a3c30e581c 100644 --- a/iped-app/pom.xml +++ b/iped-app/pom.xml @@ -125,7 +125,7 @@ org.python python-jep-dlib - 3.9.12-4.0.3-19.23.1 + 3.9.12-4.0.3-19.23.1-2 zip false ${release.dir} From 47371727ccc85138ae68b99f54547d0afa406969 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Tue, 30 Apr 2024 14:11:32 -0300 Subject: [PATCH 036/126] '#1823: add a better error message if FFmpeg is not found on PATH --- .../task/transcript/WhisperTranscriptTask.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index bd249ebdd2..dbb416c5c1 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -7,6 +7,7 @@ import java.io.InputStreamReader; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.lang3.SystemUtils; import org.apache.logging.log4j.LogManager; @@ -15,6 +16,8 @@ import iped.configuration.IConfigurationDirectory; import iped.engine.config.AudioTranscriptConfig; import iped.engine.config.Configuration; +import iped.engine.config.ConfigurationManager; +import iped.exception.IPEDException; public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { @@ -24,6 +27,20 @@ public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { private static final String LIBRARY_LOADED = "library_loaded"; private static final String MODEL_LOADED = "model_loaded"; + private static final AtomicBoolean ffmpegTested = new AtomicBoolean(); + + @Override + public void init(ConfigurationManager configurationManager) throws Exception { + if (!ffmpegTested.getAndSet(true)) { + try { + Runtime.getRuntime().exec("ffmpeg"); + } catch (IOException e) { + throw new IPEDException("Error checking FFmpeg presence, is it on PATH?"); + } + } + super.init(configurationManager); + } + @Override protected Server startServer0(int device) throws IOException { if (numProcesses != null && device == numProcesses) { From fb81d5773b9ba61b213bba0f9f5a169fe16831da Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sat, 27 Apr 2024 19:53:22 -0300 Subject: [PATCH 037/126] '#2185: Link torrents with case items. --- .../config/conf/MakePreviewConfig.txt | 2 +- .../iped-parsers-messages.properties | 3 + .../iped-parsers-messages_de_DE.properties | 3 + .../iped-parsers-messages_es_AR.properties | 3 + .../iped-parsers-messages_it_IT.properties | 3 + .../iped-parsers-messages_pt_BR.properties | 3 + .../parsers/bittorrent/TorrentFileParser.java | 168 ++++++++++++++---- 7 files changed, 153 insertions(+), 32 deletions(-) diff --git a/iped-app/resources/config/conf/MakePreviewConfig.txt b/iped-app/resources/config/conf/MakePreviewConfig.txt index 2f625a46e1..4ef88eaca4 100644 --- a/iped-app/resources/config/conf/MakePreviewConfig.txt +++ b/iped-app/resources/config/conf/MakePreviewConfig.txt @@ -10,4 +10,4 @@ supportedMimes = application/x-whatsapp-db; application/x-whatsapp-db-f; applica supportedMimes = application/x-prefetch; text/x-vcard; application/x-bittorrent-resume-dat; application/x-bittorrent; application/x-emule-preferences-dat; application/vnd.android.package-archive # List of mimetypes which parsers insert links to other case items into preview -supportedMimesWithLinks = application/x-emule; application/x-emule-part-met; application/x-ares-galaxy; application/x-shareaza-library-dat; application/x-shareaza-download \ No newline at end of file +supportedMimesWithLinks = application/x-emule; application/x-emule-part-met; application/x-ares-galaxy; application/x-shareaza-library-dat; application/x-shareaza-download; application/x-bittorrent-resume-dat; application/x-bittorrent \ No newline at end of file diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index fd92612143..97c62372d0 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -362,6 +362,9 @@ TorrentFileDatParser.NumberOfPieces=Number of pieces TorrentFileDatParser.Piece=Piece TorrentFileDatParser.PieceLength=Piece length TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify. +TorrentFileDatParser.File=File +TorrentFileDatParser.FileFoundInCase=File Found in the Case +TorrentFileDatParser.Yes=Yes TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=First Name: TelegramContact.LastName=Last Name: diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index d32a962e1d..50ee68d75b 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -362,6 +362,9 @@ TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] TorrentFileDatParser.Piece=Piece[TBT] TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] +TorrentFileDatParser.File=File[TBT] +TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=Kontakt ID: TelegramContact.FirstName=Vorname: TelegramContact.LastName=Nachname: diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index 584e61dfee..f7997ed439 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -362,6 +362,9 @@ TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] TorrentFileDatParser.Piece=Piece[TBT] TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] +TorrentFileDatParser.File=File[TBT] +TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=Nombre de la persona: TelegramContact.LastName=Segundo Nombre: diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index c7cc10d8fc..e397bd903a 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -362,6 +362,9 @@ TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] TorrentFileDatParser.Piece=Piece[TBT] TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] +TorrentFileDatParser.File=File[TBT] +TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=ID Contatto: TelegramContact.FirstName=Nome: TelegramContact.LastName=Cognome: diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index 6f08a63f4e..e0c9211b1e 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -362,6 +362,9 @@ TorrentFileDatParser.NumberOfPieces=Número de partes TorrentFileDatParser.Piece=Parte TorrentFileDatParser.PieceLength=Tamanho da partes TorrentFileDatParser.IncompleteWarning=Arquivo incompleto. Algumas das informações podem estar incorretas. Por favor, verifique. +TorrentFileDatParser.File=Arquivo +TorrentFileDatParser.FileFoundInCase=Arquivo Localizado no Caso +TorrentFileDatParser.Yes=Sim TelegramContact.ContactID=ID do Contato: TelegramContact.FirstName=Nome: TelegramContact.LastName=Sobrenome: diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 921bf42444..3cd0695f3c 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -1,5 +1,6 @@ package iped.parsers.bittorrent; +import java.io.BufferedInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -7,6 +8,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; @@ -25,10 +27,14 @@ import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; +import iped.data.IItemReader; import iped.parsers.util.IgnoreCorruptedCarved; import iped.parsers.util.Messages; import iped.parsers.util.MetadataUtil; +import iped.parsers.util.P2PUtil; +import iped.properties.BasicProps; import iped.properties.ExtraProperties; +import iped.search.IItemSearcher; import iped.utils.DateUtil; import iped.utils.LocalizedFormat; @@ -44,12 +50,21 @@ public class TorrentFileParser extends AbstractParser { private static final long serialVersionUID = 3238363426940179831L; private static final Set SUPPORTED_TYPES = Collections.singleton(MediaType.application("x-bittorrent")); //$NON-NLS-1$ public static final String TORRENT_FILE_MIME_TYPE = "application/x-bittorrent"; //$NON-NLS-1$ - private static final String[] header = { Messages.getString("TorrentFileDatParser.FullPath"), //$NON-NLS-1$ + private static final String[] header = { Messages.getString("TorrentFileDatParser.File"), + Messages.getString("TorrentFileDatParser.FullPath"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.FileSize"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.MD5"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.SHA1"), //$NON-NLS-1$ - Messages.getString("TorrentFileDatParser.ED2K") //$NON-NLS-1$ + Messages.getString("TorrentFileDatParser.ED2K"), //$NON-NLS-1$ + Messages.getString("TorrentFileDatParser.FileFoundInCase") }; + private static final String strYes = Messages.getString("TorrentFileDatParser.Yes"); + + private static final int maxPieceLength = 1 << 26; + private static final long minFileLength = 1 << 16; + private static final long maxFileLength = 1L << 34; + private static final int maxHitsCheck = 16; + private static final int minPiecesMultiFile = 8; @Override public Set getSupportedTypes(ParseContext context) { @@ -71,17 +86,18 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, throw new TikaException("Error parsing torrent file", e); //$NON-NLS-1$ } - List files = extractFileList(dict, metadata); + IItemSearcher searcher = context.get(IItemSearcher.class); + List files = extractFileList(dict, metadata, searcher); - char[] colClass = { 'a', 'c', 'h', 'h', 'h' }; - boolean[] include = { true, true, false, false, false }; + char[] colClass = { 'c', 'a', 'c', 'h', 'h', 'h', 'b' }; + boolean[] include = { true, true, true, false, false, false, false }; for (FileInTorrent file : files) { if (!file.md5.isEmpty()) - include[2] = true; - if (!file.sha1.isEmpty()) include[3] = true; - if (!file.ed2k.isEmpty()) + if (!file.sha1.isEmpty()) include[4] = true; + if (!file.ed2k.isEmpty()) + include[5] = true; } XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata); @@ -126,7 +142,6 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, try { metadata.set(TORRENT_CREATION_DATE, DateUtil.dateToString(df.parse(info.creationDate))); } catch (ParseException e1) { - // TODO Auto-generated catch block e1.printStackTrace(); } } @@ -136,6 +151,20 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, metadata.set(TORRENT_INFO_HASH, info.infoHash); } + // Try to link the first item + if (searcher != null && !files.isEmpty() && info.pieces != null && info.pieceLength != null) { + FileInTorrent file = files.get(0); + if (file.item == null) { + IItemReader item = searchAndMatchFileInCase(searcher, file.length, info.pieceLength, info.pieces, + files.size() > 1); + if (item != null) { + file.item = item; + include[6] = true; + metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + file.item.getHash()); + } + } + } + // Files Table xhtml.startElement("table", "class", "dt"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ xhtml.startElement("tr", "class", "rh"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ @@ -148,31 +177,35 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.endElement("tr"); //$NON-NLS-1$ - boolean a = true; - for (FileInTorrent file : files) { - xhtml.startElement("tr", "class", a ? "ra" : "rb"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$ - String[] rowElements = new String[] { file.fullPath, Long.toString(file.length), file.md5, file.sha1, - file.ed2k }; - for (int i = 0; i < rowElements.length; i++) { - if (include[i]) { - xhtml.startElement("td", "class", String.valueOf(colClass[i])); //$NON-NLS-1$ $NON-NLS-2$ - if (rowElements[i].equals("")) { //$NON-NLS-1$ - rowElements[i] = " "; //$NON-NLS-1$ - } else if (i == 1) { + for (int i = 0; i < files.size(); i++) { + FileInTorrent file = files.get(i); + xhtml.startElement("tr", "class", i % 2 == 0 ? "ra" : "rb"); + String[] rowElements = new String[] { String.valueOf(i + 1), file.fullPath, Long.toString(file.length), + file.md5, file.sha1, file.ed2k, file.item != null ? strYes : "" }; + for (int j = 0; j < rowElements.length; j++) { + if (include[j]) { + String str = rowElements[j]; + xhtml.startElement("td", "class", String.valueOf(colClass[j])); + if (str.length() == 0) { + str = " "; + } else if (j == 2) { // File length column try { - rowElements[i] = LocalizedFormat.format(Long.parseLong(rowElements[i])); + str = LocalizedFormat.format(Long.parseLong(str)); } catch (Exception e) { } } - xhtml.characters(rowElements[i]); - xhtml.endElement("td"); //$NON-NLS-1$ + if (j == 1 && file.item != null) { + P2PUtil.printNameWithLink(xhtml, file.item, str); + } else { + xhtml.characters(str); + } + xhtml.endElement("td"); } } - xhtml.endElement("tr"); //$NON-NLS-1$ - a = !a; + xhtml.endElement("tr"); } - xhtml.endElement("table"); //$NON-NLS-1$ + xhtml.endElement("table"); // Pieces Hashes Table if (info.pieces != null) { @@ -186,9 +219,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endElement("td"); xhtml.endElement("tr"); - a = true; for (int i = 0; i < info.pieces.length; i++) { - xhtml.startElement("tr", "class", a ? "ra" : "rb"); + xhtml.startElement("tr", "class", i % 2 == 0 ? "ra" : "rb"); xhtml.startElement("td", "class", "c"); xhtml.characters(LocalizedFormat.format(i + 1)); xhtml.endElement("td"); @@ -196,7 +228,6 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.characters(info.pieces[i]); xhtml.endElement("td"); xhtml.endElement("tr"); - a = !a; } xhtml.endElement("table"); } @@ -223,7 +254,7 @@ private static void outputInfo(XHTMLContentHandler xhtml, String key, Object val } } - private static List extractFileList(BencodedDict dict, Metadata metadata) throws TikaException { + private static List extractFileList(BencodedDict dict, Metadata metadata, IItemSearcher searcher) throws TikaException { BencodedDict info = dict.getDict("info"); //$NON-NLS-1$ List files; @@ -252,6 +283,9 @@ private static List extractFileList(BencodedDict dict, Metadata m file.md5 = fileDict.getString("md5sum"); //$NON-NLS-1$ if (file.md5.length() > 0) { metadata.add(ExtraProperties.LINKED_ITEMS, "md5:" + file.md5); + if (file.item == null) { + file.item = P2PUtil.searchItemInCase(searcher, "md5", file.md5); + } } file.sha1 = fileDict.getString("sha1").trim(); //$NON-NLS-1$ if (file.sha1.length() > 0) { @@ -259,8 +293,17 @@ private static List extractFileList(BencodedDict dict, Metadata m file.sha1 = fileDict.getHexEncodedBytes("sha1"); //$NON-NLS-1$ } metadata.add(ExtraProperties.LINKED_ITEMS, "sha-1:" + file.sha1); + if (file.item == null) { + file.item = P2PUtil.searchItemInCase(searcher, "sha-1", file.sha1); + } + } + file.ed2k = fileDict.getHexEncodedBytes("ed2k"); + if (file.ed2k.length() > 0) { + metadata.add(ExtraProperties.LINKED_ITEMS, "edonkey" + file.ed2k); + if (file.item == null) { + file.item = P2PUtil.searchItemInCase(searcher, "edonkey", file.ed2k); + } } - file.ed2k = fileDict.getHexEncodedBytes("ed2k"); //$NON-NLS-1$ files.add(file); } @@ -299,6 +342,7 @@ private static class FileInTorrent { String md5; String sha1; String ed2k; + IItemReader item; } private static TorrentInfo extractTorrentInfo(BencodedDict dict) throws TikaException { @@ -346,4 +390,66 @@ private static class TorrentInfo { Long numPieces; String[] pieces; } + + private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long fileLength, long pieceLength, + String[] pieces, boolean isMultiFile) { + if (pieceLength <= 0 || pieceLength > maxPieceLength || fileLength < minFileLength + || fileLength > maxFileLength) { + return null; + } + int totPieces = (int) ((fileLength + pieceLength - 1) / pieceLength); + if (totPieces > pieces.length || (isMultiFile && totPieces < minPiecesMultiFile)) { + return null; + } + List items = searcher.search(BasicProps.LENGTH + ":" + fileLength); + if (items == null) { + return null; + } + byte[] bytes = new byte[(int) pieceLength]; + int check = maxHitsCheck; + for (int step = 0; step <= 1; step++) { + NEXT: for (int i = 0; i < items.size(); i++) { + IItemReader item = items.get(i); + if (item.getHash() == null) { + continue; + } + if (step == 0 ^ (item.isCarved() || item.isDeleted())) { + // In the first step check only "active" items + // Carved and deleted items are checked later + continue; + } + + // Check if the all pieces hashes match + try (BufferedInputStream is = item.getBufferedInputStream()) { + for (int n = 0; n < totPieces; n++) { + int read = is.readNBytes(bytes, 0, bytes.length); + if (read < 0 || (read < bytes.length && n < totPieces - 1)) { + continue NEXT; + } + if (read == bytes.length || !isMultiFile) { + byte[] in = bytes; + if (read < bytes.length) { + in = Arrays.copyOf(bytes, read); + } + String calc = DigestUtils.sha1Hex(in); + if (calc == null || !calc.equalsIgnoreCase(pieces[n])) { + continue NEXT; + } + } + } + + // Found an item that matches all piece hashes + return item; + + } catch (Exception e) { + e.printStackTrace(); + } + + if (--check == 0) { + break; + } + } + } + return null; + } } From 196b7d5beb7ea301ea2fbe39ee88d2bb9da68930 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sun, 28 Apr 2024 14:14:35 -0300 Subject: [PATCH 038/126] '#2185: Link files to torrents through hashes or (length+piece hashes). --- .../iped-parsers-messages.properties | 1 + .../iped-parsers-messages_de_DE.properties | 1 + .../iped-parsers-messages_es_AR.properties | 1 + .../iped-parsers-messages_it_IT.properties | 1 + .../iped-parsers-messages_pt_BR.properties | 1 + .../parsers/bittorrent/TorrentFileParser.java | 110 ++++++++++++------ 6 files changed, 77 insertions(+), 38 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index 97c62372d0..757d867025 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -364,6 +364,7 @@ TorrentFileDatParser.PieceLength=Piece length TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify. TorrentFileDatParser.File=File TorrentFileDatParser.FileFoundInCase=File Found in the Case +TorrentFileDatParser.FilesFoundInCase=Files Found in the Case TorrentFileDatParser.Yes=Yes TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=First Name: diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 50ee68d75b..2aac07a18d 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -364,6 +364,7 @@ TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=Kontakt ID: TelegramContact.FirstName=Vorname: diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index f7997ed439..137d75ff77 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -364,6 +364,7 @@ TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=Nombre de la persona: diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index e397bd903a..e0d54c984f 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -364,6 +364,7 @@ TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=ID Contatto: TelegramContact.FirstName=Nome: diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index e0c9211b1e..aa00183e6c 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -364,6 +364,7 @@ TorrentFileDatParser.PieceLength=Tamanho da partes TorrentFileDatParser.IncompleteWarning=Arquivo incompleto. Algumas das informações podem estar incorretas. Por favor, verifique. TorrentFileDatParser.File=Arquivo TorrentFileDatParser.FileFoundInCase=Arquivo Localizado no Caso +TorrentFileDatParser.FilesFoundInCase=Arquivos Localizados no Caso TorrentFileDatParser.Yes=Sim TelegramContact.ContactID=ID do Contato: TelegramContact.FirstName=Nome: diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 3cd0695f3c..5e6906289a 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -11,6 +11,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Date; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TimeZone; @@ -60,10 +61,12 @@ public class TorrentFileParser extends AbstractParser { }; private static final String strYes = Messages.getString("TorrentFileDatParser.Yes"); + private static final String padding = "_____padding_file"; + private static final int maxPieceLength = 1 << 26; private static final long minFileLength = 1 << 16; private static final long maxFileLength = 1L << 34; - private static final int maxHitsCheck = 16; + private static final int maxHitsCheck = 64; private static final int minPiecesMultiFile = 8; @Override @@ -122,14 +125,47 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, metadata.set("incompleteTorrent", "true"); } + TorrentInfo info = extractTorrentInfo(dict); + + // Try to link the items + if (searcher != null && !files.isEmpty() && info.pieces != null && info.pieceLength != null + && info.pieceLength > 0 && info.pieceLength < maxPieceLength) { + long tot = 0; + for (int i = 0; i < files.size(); i++) { + FileInTorrent file = files.get(i); + if (file.item == null) { + IItemReader item = searchAndMatchFileInCase(searcher, file.length, info.pieceLength, info.pieces, + (int) (tot / info.pieceLength), (int) (tot % info.pieceLength), i == files.size() - 1); + if (item != null) { + file.item = item; + metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + file.item.getHash()); + } + } + tot += file.length; + } + } + + int foundInCase = 0; + int paddingEntries = 0; + for (FileInTorrent file : files) { + if (file.fullPath == null || file.fullPath.toLowerCase().contains(padding)) { + paddingEntries++; + } else if (file.item != null) { + include[6] = true; + foundInCase++; + } + } + // Torrent General Info Table xhtml.startElement("table", "class", "dt"); - TorrentInfo info = extractTorrentInfo(dict); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.Name"), info.name); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.InfoHash"), info.infoHash, true); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.PieceLength"), info.pieceLength); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.NumberOfPieces"), info.numPieces); - outputInfo(xhtml, Messages.getString("TorrentFileDatParser.NumberOfFiles"), files.size()); + outputInfo(xhtml, Messages.getString("TorrentFileDatParser.NumberOfFiles"), files.size() - paddingEntries); + if (foundInCase > 0) { + outputInfo(xhtml, Messages.getString("TorrentFileDatParser.FilesFoundInCase"), foundInCase); + } outputInfo(xhtml, Messages.getString("TorrentFileDatParser.Announce"), info.announce); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.Comment"), info.comment); outputInfo(xhtml, Messages.getString("TorrentFileDatParser.CreatedBy"), info.createdBy); @@ -141,8 +177,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (!info.creationDate.isEmpty()) { try { metadata.set(TORRENT_CREATION_DATE, DateUtil.dateToString(df.parse(info.creationDate))); - } catch (ParseException e1) { - e1.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); } } @@ -151,20 +187,6 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, metadata.set(TORRENT_INFO_HASH, info.infoHash); } - // Try to link the first item - if (searcher != null && !files.isEmpty() && info.pieces != null && info.pieceLength != null) { - FileInTorrent file = files.get(0); - if (file.item == null) { - IItemReader item = searchAndMatchFileInCase(searcher, file.length, info.pieceLength, info.pieces, - files.size() > 1); - if (item != null) { - file.item = item; - include[6] = true; - metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + file.item.getHash()); - } - } - } - // Files Table xhtml.startElement("table", "class", "dt"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ xhtml.startElement("tr", "class", "rh"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ @@ -177,25 +199,30 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.endElement("tr"); //$NON-NLS-1$ + int row = 0; for (int i = 0; i < files.size(); i++) { FileInTorrent file = files.get(i); - xhtml.startElement("tr", "class", i % 2 == 0 ? "ra" : "rb"); - String[] rowElements = new String[] { String.valueOf(i + 1), file.fullPath, Long.toString(file.length), + if (file.fullPath == null || file.fullPath.toLowerCase().contains(padding)) { + // Ignore padding entries + continue; + } + xhtml.startElement("tr", "class", row % 2 == 0 ? "ra" : "rb"); + String[] rowElements = new String[] { String.valueOf(++row), file.fullPath, Long.toString(file.length), file.md5, file.sha1, file.ed2k, file.item != null ? strYes : "" }; - for (int j = 0; j < rowElements.length; j++) { - if (include[j]) { - String str = rowElements[j]; - xhtml.startElement("td", "class", String.valueOf(colClass[j])); + for (int col = 0; col < rowElements.length; col++) { + if (include[col]) { + String str = rowElements[col]; + xhtml.startElement("td", "class", String.valueOf(colClass[col])); if (str.length() == 0) { str = " "; - } else if (j == 2) { + } else if (col == 2) { // File length column try { str = LocalizedFormat.format(Long.parseLong(str)); } catch (Exception e) { } } - if (j == 1 && file.item != null) { + if (col == 1 && file.item != null) { P2PUtil.printNameWithLink(xhtml, file.item, str); } else { xhtml.characters(str); @@ -392,41 +419,48 @@ private static class TorrentInfo { } private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long fileLength, long pieceLength, - String[] pieces, boolean isMultiFile) { - if (pieceLength <= 0 || pieceLength > maxPieceLength || fileLength < minFileLength - || fileLength > maxFileLength) { + String[] pieces, int firstPiece, int offset, boolean isLast) { + if (fileLength < minFileLength || fileLength > maxFileLength) { return null; } - int totPieces = (int) ((fileLength + pieceLength - 1) / pieceLength); - if (totPieces > pieces.length || (isMultiFile && totPieces < minPiecesMultiFile)) { + int totPieces = (int) ((fileLength + pieceLength - 1 + offset) / pieceLength); + if (firstPiece + totPieces > pieces.length || ((!isLast||offset!=0) && totPieces < minPiecesMultiFile)) { return null; } List items = searcher.search(BasicProps.LENGTH + ":" + fileLength); - if (items == null) { + if (items == null || items.isEmpty()) { return null; } byte[] bytes = new byte[(int) pieceLength]; int check = maxHitsCheck; + Set seen = new HashSet(); for (int step = 0; step <= 1; step++) { NEXT: for (int i = 0; i < items.size(); i++) { IItemReader item = items.get(i); - if (item.getHash() == null) { - continue; - } if (step == 0 ^ (item.isCarved() || item.isDeleted())) { // In the first step check only "active" items // Carved and deleted items are checked later continue; } + if (item.getHash() == null || !seen.add(item.getHash())) { + continue; + } // Check if the all pieces hashes match try (BufferedInputStream is = item.getBufferedInputStream()) { - for (int n = 0; n < totPieces; n++) { + if (offset > 0) { + int read = is.readNBytes(bytes, 0, bytes.length - offset); + if (read < bytes.length - offset) { + continue NEXT; + } + firstPiece++; + } + for (int n = firstPiece; n < totPieces; n++) { int read = is.readNBytes(bytes, 0, bytes.length); if (read < 0 || (read < bytes.length && n < totPieces - 1)) { continue NEXT; } - if (read == bytes.length || !isMultiFile) { + if (read == bytes.length || isLast) { byte[] in = bytes; if (read < bytes.length) { in = Arrays.copyOf(bytes, read); From d41ef67549a07a39ad4f2c07a18ff2c7b070a2e1 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sun, 28 Apr 2024 14:41:11 -0300 Subject: [PATCH 039/126] '#2185: Add a missing column in edonkey linked items. --- .../main/java/iped/parsers/bittorrent/TorrentFileParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 5e6906289a..e71661d4cb 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -326,7 +326,7 @@ private static List extractFileList(BencodedDict dict, Metadata m } file.ed2k = fileDict.getHexEncodedBytes("ed2k"); if (file.ed2k.length() > 0) { - metadata.add(ExtraProperties.LINKED_ITEMS, "edonkey" + file.ed2k); + metadata.add(ExtraProperties.LINKED_ITEMS, "edonkey:" + file.ed2k); if (file.item == null) { file.item = P2PUtil.searchItemInCase(searcher, "edonkey", file.ed2k); } From f72cba2712f8b54525b985fa856d6541d1b59aa6 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sun, 28 Apr 2024 16:59:23 -0300 Subject: [PATCH 040/126] '#2185: Link files found in case to resume.dat (through torrents). --- .../resources/config/conf/metadataTypes.txt | 1 + .../iped-parsers-messages.properties | 1 + .../iped-parsers-messages_de_DE.properties | 1 + .../iped-parsers-messages_es_AR.properties | 1 + .../iped-parsers-messages_it_IT.properties | 1 + .../iped-parsers-messages_pt_BR.properties | 1 + .../bittorrent/BitTorrentResumeDatParser.java | 21 +++++++++++++++---- .../parsers/bittorrent/TorrentFileParser.java | 12 +++++++++-- .../main/java/iped/parsers/util/P2PUtil.java | 2 +- 9 files changed, 34 insertions(+), 7 deletions(-) diff --git a/iped-app/resources/config/conf/metadataTypes.txt b/iped-app/resources/config/conf/metadataTypes.txt index b961c1d959..3c1f666922 100644 --- a/iped-app/resources/config/conf/metadataTypes.txt +++ b/iped-app/resources/config/conf/metadataTypes.txt @@ -3393,6 +3393,7 @@ og:url = java.lang.String ontent-Type" = java.lang.String p2pHistoryEntries = java.lang.Integer childPornHashHits = java.lang.Integer +p2p:torrentFilesFoundInCase = java.lang.Integer containerTrackId = java.lang.String parentTrackId = java.lang.String trackId = java.lang.String diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index 757d867025..b55c10a017 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -343,6 +343,7 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Last Seen Complete BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Run time (s) BitTorrentResumeDatParser.InfoHash=InfoHash +BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case BitTorrentResumeDatParser.Yes=Yes TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 2aac07a18d..aaa6fda317 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -343,6 +343,7 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=zuletzt vollständig gesehen BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Laufzeit (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index 137d75ff77..e04261f802 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -343,6 +343,7 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Último visto completo BitTorrentResumeDatParser.SeedTime=Hora de la siembra (s) BitTorrentResumeDatParser.RunTime=Tiempo de ejecución (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index e0d54c984f..166fa44f9a 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -343,6 +343,7 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Ultimo visto completo BitTorrentResumeDatParser.SeedTime=Tempo di condivisione (s) BitTorrentResumeDatParser.RunTime=Tempo di esecuzione (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] +BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] BitTorrentResumeDatParser.Yes=Yes[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index aa00183e6c..0ce933e9fe 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -343,6 +343,7 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Última vez visto completo BitTorrentResumeDatParser.SeedTime=Tempo semeando (s) BitTorrentResumeDatParser.RunTime=Tempo executando (s) BitTorrentResumeDatParser.InfoHash=InfoHash +BitTorrentResumeDatParser.FilesFoundInCase=Arquivos Localizados no Caso BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Localizado no Caso BitTorrentResumeDatParser.Yes=Sim TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index 841a15d015..ec11a830de 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -53,9 +53,10 @@ public class BitTorrentResumeDatParser extends AbstractParser { Messages.getString("BitTorrentResumeDatParser.LastSeenCompleteDate"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.SeedTime"), //$NON-NLS-1$ Messages.getString("BitTorrentResumeDatParser.RunTime"), //$NON-NLS-1$ - Messages.getString("BitTorrentResumeDatParser.TorrentFoundInCase") //$NON-NLS-1$ + Messages.getString("BitTorrentResumeDatParser.TorrentFoundInCase"), //$NON-NLS-1$ + Messages.getString("BitTorrentResumeDatParser.FilesFoundInCase") //$NON-NLS-1$ }; - private static final char[] colAlign = new char[] { 'b', 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c', 'b' }; + private static final char[] colAlign = new char[] { 'b', 'a', 'a', 'a', 'h', 'c', 'c', 'b', 'b', 'b', 'b', 'c', 'c', 'b', 'b' }; private static final String strYes = Messages.getString("BitTorrentResumeDatParser.Yes"); @Override @@ -118,11 +119,22 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (infoBytes != null) { infoHash = Hex.encodeHexString(infoBytes, false); } + int filesFoundInCase = 0; IItemReader item = P2PUtil.searchItemInCase(searcher, TorrentFileParser.TORRENT_INFO_HASH, infoHash); if (item != null) { metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + item.getHash()); + String[] values = item.getMetadata().getValues(ExtraProperties.LINKED_ITEMS); + if (values != null) { + for (String v : values) { + metadata.add(ExtraProperties.LINKED_ITEMS, v); + } + } + String v = item.getMetadata().get(TorrentFileParser.TORRENT_FILES_FOUND_IN_CASE); + if (v != null && !v.isBlank()) { + filesFoundInCase = Integer.parseInt(v); + } } - + xhtml.startElement("tr", "class", a ? "ra" : "rb"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ $NON-NLS-4$ String[] rowElements = new String[] { String.valueOf(++numEntries), @@ -138,7 +150,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, torrentDict.getDate("last seen complete"), //$NON-NLS-1$ Long.toString(torrentDict.getLong("seedtime")), //$NON-NLS-1$ Long.toString(torrentDict.getLong("runtime")), //$NON-NLS-1$ - item != null ? strYes: "" + item != null ? strYes: "", + filesFoundInCase > 0 ? String.valueOf(filesFoundInCase): "" }; for (int i = 0; i < rowElements.length; i++) { String c = rowElements[i]; diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index e71661d4cb..5dab49384a 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -46,8 +46,11 @@ */ public class TorrentFileParser extends AbstractParser { - private static final String TORRENT_CREATION_DATE = "torrentCreationDate"; - public static final String TORRENT_INFO_HASH = "torrentInfoHash"; + private static final String TORRENT_CREATION_DATE = ExtraProperties.P2P_META_PREFIX + "torrentCreationDate"; + public static final String TORRENT_INFO_HASH = ExtraProperties.P2P_META_PREFIX + "torrentInfoHash"; + public static final String TORRENT_FILES_FOUND_IN_CASE = ExtraProperties.P2P_META_PREFIX + + "torrentFilesFoundInCase"; + private static final long serialVersionUID = 3238363426940179831L; private static final Set SUPPORTED_TYPES = Collections.singleton(MediaType.application("x-bittorrent")); //$NON-NLS-1$ public static final String TORRENT_FILE_MIME_TYPE = "application/x-bittorrent"; //$NON-NLS-1$ @@ -187,6 +190,11 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, metadata.set(TORRENT_INFO_HASH, info.infoHash); } + // Set the number of files found in case metadata + if (foundInCase > 0) { + metadata.set(TORRENT_FILES_FOUND_IN_CASE, String.valueOf(foundInCase)); + } + // Files Table xhtml.startElement("table", "class", "dt"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ xhtml.startElement("tr", "class", "rh"); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java index 292a21d90d..7d32998f8a 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/P2PUtil.java @@ -16,7 +16,7 @@ public static IItemReader searchItemInCase(IItemSearcher searcher, String hashAl if (searcher == null || hash == null || hash.isBlank()) { return null; } - List items = searcher.search(hashAlgo + ":" + hash); + List items = searcher.search(searcher.escapeQuery(hashAlgo) + ":" + hash); if (items == null || items.isEmpty()) { return null; } From b83af2cb9ab15ca52e4bf33ffc2a2fb08d36eb4e Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Sun, 28 Apr 2024 19:22:37 -0300 Subject: [PATCH 041/126] '#2185: Create a bookmark for probably shared by Torrent. --- .../src/main/java/iped/engine/task/P2PBookmarker.java | 9 +++++++-- .../parsers/bittorrent/BitTorrentResumeDatParser.java | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/task/P2PBookmarker.java b/iped-engine/src/main/java/iped/engine/task/P2PBookmarker.java index b28b49d558..f9fe18cee8 100644 --- a/iped-engine/src/main/java/iped/engine/task/P2PBookmarker.java +++ b/iped-engine/src/main/java/iped/engine/task/P2PBookmarker.java @@ -18,6 +18,7 @@ import iped.engine.search.IPEDSearcher; import iped.engine.task.index.IndexItem; import iped.parsers.ares.AresParser; +import iped.parsers.bittorrent.BitTorrentResumeDatParser; import iped.parsers.emule.KnownMetParser; import iped.parsers.emule.PartMetParser; import iped.parsers.gdrive.GDriveCloudGraphParser; @@ -79,10 +80,9 @@ public void createBookmarksForSharedFiles(File caseDir) { new P2PProgram(HashTask.HASH.SHA1.toString(), "Ares", new Color(238, 173, 0))); List shareazaHashes = Arrays.asList(HashTask.HASH.MD5.toString(), HashTask.HASH.SHA1.toString(), HashTask.HASH.EDONKEY.toString()); - p2pPrograms.put(ShareazaLibraryDatParser.LIBRARY_DAT_MIME_TYPE, new P2PProgram(shareazaHashes, "Shareaza", new Color(170, 20, 20))); - + p2pPrograms.put(ShareazaDownloadParser.SHAREAZA_DOWNLOAD_META, new P2PProgram(shareazaHashes, "Shareaza SD", new Color(170, 20, 20))); @@ -101,6 +101,11 @@ public void createBookmarksForSharedFiles(File caseDir) { p2pPrograms.put(ThreemaParser.THREEMA_CHAT.toString(), new P2PProgram(IndexItem.HASH, "Threema")); // $NON-NLS-1$ + List torrentHashes = Arrays.asList(IndexItem.HASH, HashTask.HASH.MD5.toString(), + HashTask.HASH.SHA1.toString(), HashTask.HASH.EDONKEY.toString()); + p2pPrograms.put(BitTorrentResumeDatParser.RESUME_DAT_MIME_TYPE, + new P2PProgram(torrentHashes, "Torrent", new Color(0, 160, 60))); + P2PProgram progGDrive = new P2PProgram(HashTask.HASH.MD5.toString(), "GoogleDrive"); p2pPrograms.put(GDriveCloudGraphParser.GDRIVE_CLOUD_GRAPH_REG.toString(), progGDrive); p2pPrograms.put(GDriveSnapshotParser.GDRIVE_SNAPSHOT_REG.toString(), progGDrive); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java index ec11a830de..1e986e2a8c 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentResumeDatParser.java @@ -125,8 +125,17 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + item.getHash()); String[] values = item.getMetadata().getValues(ExtraProperties.LINKED_ITEMS); if (values != null) { + Long uploaded = torrentDict.getLong("uploaded"); + boolean isShared = uploaded != null && uploaded > 0; for (String v : values) { metadata.add(ExtraProperties.LINKED_ITEMS, v); + if (isShared) { + int p = v.lastIndexOf(':'); + if (p >= 0) { + v = v.substring(p + 1).trim(); + } + metadata.add(ExtraProperties.SHARED_HASHES, v); + } } } String v = item.getMetadata().get(TorrentFileParser.TORRENT_FILES_FOUND_IN_CASE); From bf9ebb77e999e8615b95eca073554cc5e4bd7513 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Mon, 29 Apr 2024 11:12:31 -0300 Subject: [PATCH 042/126] '#2185: Minor fix and code simplification when linking torrents by hash. --- .../parsers/bittorrent/TorrentFileParser.java | 99 ++++++++++--------- 1 file changed, 50 insertions(+), 49 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 5dab49384a..282689c962 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -71,6 +71,10 @@ public class TorrentFileParser extends AbstractParser { private static final long maxFileLength = 1L << 34; private static final int maxHitsCheck = 64; private static final int minPiecesMultiFile = 8; + + private static final int md5Len = 32; + private static final int sha1Len = 40; + private static final int edonkeyLen = 32; @Override public Set getSupportedTypes(ParseContext context) { @@ -289,18 +293,19 @@ private static void outputInfo(XHTMLContentHandler xhtml, String key, Object val } } - private static List extractFileList(BencodedDict dict, Metadata metadata, IItemSearcher searcher) throws TikaException { - BencodedDict info = dict.getDict("info"); //$NON-NLS-1$ + private static List extractFileList(BencodedDict dict, Metadata metadata, IItemSearcher searcher) + throws TikaException { + BencodedDict info = dict.getDict("info"); List files; if (info != null) { - if (info.containsKey("files")) { //$NON-NLS-1$ - // Multi file torrent - List filesList = info.getList("files"); //$NON-NLS-1$ + if (info.containsKey("files")) { + // Multi-file torrent + List filesList = info.getList("files"); if (filesList == null) { - throw new TikaException("Error parsing torrent file"); //$NON-NLS-1$ + throw new TikaException("Error parsing torrent file"); } - String name = info.getString("name"); //$NON-NLS-1$ + String name = info.getString("name"); files = new ArrayList<>(filesList.size()); for (Object fileDictObj : filesList) { BencodedDict fileDict = (BencodedDict) fileDictObj; @@ -309,68 +314,64 @@ private static List extractFileList(BencodedDict dict, Metadata m if (name != null && 0 != name.length()) { fullPathBuilder.append(name).append(File.separator); } - for (String elem : fileDict.getListOfStrings("path")) { //$NON-NLS-1$ + for (String elem : fileDict.getListOfStrings("path")) { fullPathBuilder.append(elem).append(File.separator); } fullPathBuilder.deleteCharAt(fullPathBuilder.length() - 1); file.fullPath = fullPathBuilder.toString(); - file.length = fileDict.getLong("length"); //$NON-NLS-1$ - file.md5 = fileDict.getString("md5sum"); //$NON-NLS-1$ - if (file.md5.length() > 0) { - metadata.add(ExtraProperties.LINKED_ITEMS, "md5:" + file.md5); - if (file.item == null) { - file.item = P2PUtil.searchItemInCase(searcher, "md5", file.md5); - } - } - file.sha1 = fileDict.getString("sha1").trim(); //$NON-NLS-1$ - if (file.sha1.length() > 0) { - if (file.sha1.length() != 40) { - file.sha1 = fileDict.getHexEncodedBytes("sha1"); //$NON-NLS-1$ - } - metadata.add(ExtraProperties.LINKED_ITEMS, "sha-1:" + file.sha1); - if (file.item == null) { - file.item = P2PUtil.searchItemInCase(searcher, "sha-1", file.sha1); - } - } - file.ed2k = fileDict.getHexEncodedBytes("ed2k"); - if (file.ed2k.length() > 0) { - metadata.add(ExtraProperties.LINKED_ITEMS, "edonkey:" + file.ed2k); - if (file.item == null) { - file.item = P2PUtil.searchItemInCase(searcher, "edonkey", file.ed2k); - } - } + file.length = fileDict.getLong("length"); + file.md5 = getStringOrBytes(fileDict, "md5sum", md5Len); + file.sha1 = getStringOrBytes(fileDict, "sha1", sha1Len); + file.ed2k = getStringOrBytes(fileDict, "ed2k", edonkeyLen); files.add(file); } } else { // Single file torrent FileInTorrent file = new FileInTorrent(); - file.fullPath = info.getString("name"); //$NON-NLS-1$ - file.length = info.getLong("length"); //$NON-NLS-1$ - file.md5 = info.getString("md5sum"); //$NON-NLS-1$ - if (file.md5.length() > 0) { - metadata.add(ExtraProperties.LINKED_ITEMS, "md5:" + file.md5); - } - file.sha1 = info.getString("sha1").trim(); //$NON-NLS-1$ - if (file.sha1.length() > 0) { - if (file.sha1.length() != 40) { - file.sha1 = info.getHexEncodedBytes("sha1"); //$NON-NLS-1$ - } - metadata.add(ExtraProperties.LINKED_ITEMS, "sha-1:" + file.sha1); - } - file.ed2k = info.getHexEncodedBytes("ed2k"); //$NON-NLS-1$ + file.fullPath = info.getString("name"); + file.length = info.getLong("length"); + file.md5 = getStringOrBytes(info, "md5sum", md5Len); + file.sha1 = getStringOrBytes(info, "sha1", sha1Len); + file.ed2k = getStringOrBytes(info, "ed2k", edonkeyLen); files = Collections.singletonList(file); } if (files.isEmpty()) { - throw new TikaException("Error parsing torrent file"); //$NON-NLS-1$ + throw new TikaException("Error parsing torrent file"); + } + + // Try to link files to case items by hash + for (FileInTorrent file : files) { + linkTorrentToItem(searcher, metadata, file, "md5", file.md5, md5Len); + linkTorrentToItem(searcher, metadata, file, "sha-1", file.sha1, sha1Len); + linkTorrentToItem(searcher, metadata, file, "edonkey", file.ed2k, edonkeyLen); } + } else { - throw new TikaException("Error parsing torrent file"); //$NON-NLS-1$ + throw new TikaException("Error parsing torrent file"); } return files; } + private static String getStringOrBytes(BencodedDict dict, String key, int len) { + String s = dict.getString(key).trim(); + if (s.length() > 0 && s.length() != len) { + s = dict.getHexEncodedBytes(key); + } + return s; + } + + private static void linkTorrentToItem(IItemSearcher searcher, Metadata metadata, FileInTorrent file, String key, + String val, int len) { + if (val.length() == len) { + metadata.add(ExtraProperties.LINKED_ITEMS, key + ":" + val); + if (file.item == null) { + file.item = P2PUtil.searchItemInCase(searcher, key, val); + } + } + } + private static class FileInTorrent { String fullPath; long length; From bb3ce1f53b615b6f7d8d5d501ff692f3e9cf9903 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Mon, 29 Apr 2024 11:33:54 -0300 Subject: [PATCH 043/126] '#2185: Fix a minor typo in ShareazaDownloadParser. --- .../java/iped/parsers/shareaza/ShareazaDownloadParser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java index 2a02d63dfb..cada74193b 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java @@ -419,12 +419,12 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X sbFile.append("File: " + "\n"); long nTotal = read8Bytes(buffer); - long nRemaning = read8Bytes(buffer); + long nRemaining = read8Bytes(buffer); int nFragments = read4Bytes(buffer); - totalDownloaded = nTotal - nRemaning; + totalDownloaded = nTotal - nRemaining; sbFile.append(" Total Size: " + nTotal + "\n"); - sbFile.append(" Total Remaning: " + nRemaning + "\n"); + sbFile.append(" Total Remaining: " + nRemaining + "\n"); sbFile.append(" Total Downloaded: " + totalDownloaded + "\n"); sbFile.append(" Number of Fragments: " + nFragments + "\n"); From 8fc00764d587fbf31348b13225965d7759a8ff8c Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Mon, 29 Apr 2024 11:38:29 -0300 Subject: [PATCH 044/126] '#2185: Add a missing line break in ShareazaDownloadParser. --- .../main/java/iped/parsers/shareaza/ShareazaDownloadParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java index cada74193b..5d73170ed8 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/shareaza/ShareazaDownloadParser.java @@ -612,7 +612,7 @@ public void processSDFile(InputStream inputStreamFile, ContentHandler handler, X // TIGER HASH DATABASE int pTreeSize = read4Bytes(buffer); if (pTreeSize > 0) { - sbTigerDB.append("TIGER Hash Database"); + sbTigerDB.append("TIGER Hash Database:"+ "\n"); sbTigerDB.append(" Tree Size: " + pTreeSize + "\n"); int hashTigerDatabaseSize = hashTigerDataBaseSize(pTreeSize); From 3ddf055132069c88bd65cd7c02ca97f590825034 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Thu, 2 May 2024 17:24:36 -0300 Subject: [PATCH 045/126] '#2193: Identify and parse torrent client "settings.dat" file. --- .../config/conf/CategoriesConfig.json | 2 +- .../config/conf/CustomSignatures.xml | 17 +- .../config/conf/MakePreviewConfig.txt | 2 +- .../resources/config/conf/ParserConfig.xml | 1 + .../main/java/iped/app/ui/IconManager.java | 1 + .../iped/parsers/bittorrent/BencodedDict.java | 6 +- .../BitTorrentGenericDatParser.java | 171 ++++++++++++++++++ .../parsers/browsers/ie/IndexDatParser.java | 2 +- .../src/main/java/iped/parsers/util/Util.java | 4 +- 9 files changed, 197 insertions(+), 9 deletions(-) create mode 100644 iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentGenericDatParser.java diff --git a/iped-app/resources/config/conf/CategoriesConfig.json b/iped-app/resources/config/conf/CategoriesConfig.json index e1874f42b8..89d8585ee0 100644 --- a/iped-app/resources/config/conf/CategoriesConfig.json +++ b/iped-app/resources/config/conf/CategoriesConfig.json @@ -108,7 +108,7 @@ {"name": "Ares Galaxy", "mimes": ["application/x-ares-galaxy","application/x-ares-galaxy-entry"]}, {"name": "E-Mule", "mimes": ["application/x-emule", "application/x-emule-part-met", "application/x-emule-searches", "application/x-emule-preferences-ini", "application/x-emule-preferences-dat", "application/x-emule-known-met-entry", "application/x-emule-part-met-entry"]}, {"name": "Shareaza", "mimes": ["application/x-shareaza-searches-dat", "application/x-shareaza-library-dat", "application/x-shareaza-library-dat-entry", "application/x-shareaza-download"]}, - {"name": "Torrent", "mimes": ["application/x-bittorrent-resume-dat", "application/x-bittorrent"]}, + {"name": "Torrent", "mimes": ["application/x-bittorrent-resume-dat","application/x-bittorrent-settings-dat", "application/x-bittorrent"]}, {"name": "Other Peer-to-peer", "mimes": ["application/x-p2p"]} ]}, {"name": "Browser Artifacts", "categories":[ diff --git a/iped-app/resources/config/conf/CustomSignatures.xml b/iped-app/resources/config/conf/CustomSignatures.xml index a208f29ba6..3f719e4a82 100644 --- a/iped-app/resources/config/conf/CustomSignatures.xml +++ b/iped-app/resources/config/conf/CustomSignatures.xml @@ -441,11 +441,22 @@ <_comment>BitTorrent Client Resume.dat file - + + + - - + + + + <_comment>BitTorrent Client Settings.dat file + + + + + + + diff --git a/iped-app/resources/config/conf/MakePreviewConfig.txt b/iped-app/resources/config/conf/MakePreviewConfig.txt index 4ef88eaca4..330684de12 100644 --- a/iped-app/resources/config/conf/MakePreviewConfig.txt +++ b/iped-app/resources/config/conf/MakePreviewConfig.txt @@ -7,7 +7,7 @@ supportedMimes = application/x-msaccess; application/x-lnk; application/x-firefox-savedsession supportedMimes = application/x-sqlite3; application/sqlite-skype; application/x-win10-timeline; application/x-gdrive-cloud-graph; application/x-gdrive-snapshot supportedMimes = application/x-whatsapp-db; application/x-whatsapp-db-f; application/x-whatsapp-chatstorage; application/x-whatsapp-chatstorage-f; application/x-threema-chatstorage; application/x-shareaza-searches-dat; application/x-msie-cache -supportedMimes = application/x-prefetch; text/x-vcard; application/x-bittorrent-resume-dat; application/x-bittorrent; application/x-emule-preferences-dat; application/vnd.android.package-archive +supportedMimes = application/x-prefetch; text/x-vcard; application/x-emule-preferences-dat; application/vnd.android.package-archive; application/x-bittorrent-settings-dat # List of mimetypes which parsers insert links to other case items into preview supportedMimesWithLinks = application/x-emule; application/x-emule-part-met; application/x-ares-galaxy; application/x-shareaza-library-dat; application/x-shareaza-download; application/x-bittorrent-resume-dat; application/x-bittorrent \ No newline at end of file diff --git a/iped-app/resources/config/conf/ParserConfig.xml b/iped-app/resources/config/conf/ParserConfig.xml index 4e12c508f3..1546b791dd 100644 --- a/iped-app/resources/config/conf/ParserConfig.xml +++ b/iped-app/resources/config/conf/ParserConfig.xml @@ -351,6 +351,7 @@ + diff --git a/iped-app/src/main/java/iped/app/ui/IconManager.java b/iped-app/src/main/java/iped/app/ui/IconManager.java index 7db730872c..16e8b01870 100644 --- a/iped-app/src/main/java/iped/app/ui/IconManager.java +++ b/iped-app/src/main/java/iped/app/ui/IconManager.java @@ -194,6 +194,7 @@ private static Map initMimeToIconMap(int size) { icon = availableIconsMap.get("torrent"); if (icon != null) { mimeIconMap.put("application/x-bittorrent-resume-dat", icon); + mimeIconMap.put("application/x-bittorrent-settings-dat", icon); mimeIconMap.put("application/x-bittorrent", icon); } diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BencodedDict.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BencodedDict.java index b0051673ef..2902942120 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BencodedDict.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BencodedDict.java @@ -100,6 +100,10 @@ public String getString(String key) { return getUnknownCharsetString(buffer.array()); } + public Map getDict() { + return dict; + } + public BencodedDict getDict(String key) { Object obj = getObject(key); if (obj == null || !(obj instanceof Map)) { @@ -199,7 +203,7 @@ public byte[] getBytes(String key) { } private String getUnknownCharsetString(byte[] data) { - return Util.decodeUnknowCharset(data); + return Util.decodeUnknownCharset(data); } @Override diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentGenericDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentGenericDatParser.java new file mode 100644 index 0000000000..4107f5d9b0 --- /dev/null +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/BitTorrentGenericDatParser.java @@ -0,0 +1,171 @@ +package iped.parsers.bittorrent; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TimeZone; + +import org.apache.tika.exception.TikaException; +import org.apache.tika.metadata.HttpHeaders; +import org.apache.tika.metadata.Metadata; +import org.apache.tika.metadata.TikaCoreProperties; +import org.apache.tika.mime.MediaType; +import org.apache.tika.parser.AbstractParser; +import org.apache.tika.parser.ParseContext; +import org.apache.tika.sax.XHTMLContentHandler; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + +import iped.parsers.util.IgnoreCorruptedCarved; +import iped.parsers.util.Messages; +import iped.parsers.util.Util; +import iped.utils.TimeConverter; + +public class BitTorrentGenericDatParser extends AbstractParser { + private static final long serialVersionUID = -5053923300569187504L; + private static final String SETTINGS_DAT_MIME_TYPE = "application/x-bittorrent-settings-dat"; + private static final Set SUPPORTED_TYPES = Collections + .singleton(MediaType.parse(SETTINGS_DAT_MIME_TYPE)); + + private static final Set secondsKeys = new HashSet(); + private static final Set filetimeKeys = new HashSet(); + static { + secondsKeys.add("isp.peer_policy_expy"); + secondsKeys.add("lit"); + secondsKeys.add("next_market_share_report"); + secondsKeys.add("offers.cookiepage_last_showtime"); + secondsKeys.add("offers.graphicscard_check_timestamp"); + secondsKeys.add("settings_saved_systime"); + + filetimeKeys.add("bin_change"); + filetimeKeys.add("born_on"); + } + + @Override + public Set getSupportedTypes(ParseContext context) { + return SUPPORTED_TYPES; + } + + @Override + public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) + throws IOException, SAXException, TikaException { + + metadata.set(HttpHeaders.CONTENT_TYPE, SETTINGS_DAT_MIME_TYPE); + metadata.remove(TikaCoreProperties.RESOURCE_NAME_KEY); + + DateFormat df = new SimpleDateFormat(Messages.getString("BitTorrentResumeDatParser.DateFormat")); + df.setTimeZone(TimeZone.getTimeZone("GMT+0")); + + BencodedDict dict = new BencodedDict(stream, df, (context.get(IgnoreCorruptedCarved.class) == null)); + + XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata); + xhtml.startDocument(); + xhtml.newline(); + try { + xhtml.startElement("pre"); + xhtml.characters(toFormattedString(dict.getDict(), df)); + xhtml.endElement("pre"); + } finally { + xhtml.endDocument(); + } + } + + private static String toFormattedString(Map dict, DateFormat df) { + StringBuilder sb = new StringBuilder(); + format(sb, dict, df, 0); + return sb.toString(); + } + + private static void format(StringBuilder sb, Map dict, DateFormat df, int level) { + if (dict.isEmpty()) { + sb.append("{}"); + return; + } + char[] aux = new char[level * 4]; + Arrays.fill(aux, ' '); + String start = new String(aux); + if (level > 0) { + sb.append("{\n"); + } + for (String key : dict.keySet()) { + if (key.equals(".fileguard")) { + continue; + } + sb.append(start).append(key).append(" = "); + Object val = dict.get(key); + format(sb, key, val, df, level); + sb.append("\n"); + } + if (level > 0) { + sb.append(start.substring(4)).append("}"); + } + } + + @SuppressWarnings("unchecked") + private static void format(StringBuilder sb, String key, Object val, DateFormat df, int level) { + if (val == null) { + sb.append(""); + } else { + if (val instanceof Long) { + long v = (Long) val; + if (secondsKeys.contains(key)) { + sb.append(df.format(v * 1000)); + } else if (filetimeKeys.contains(key)) { + sb.append(df.format(TimeConverter.filetimeToMillis(v * 10000000))); + } else { + sb.append(v); + } + } else if (val instanceof Map) { + format(sb, (Map) val, df, level + 1); + } else if (val instanceof ByteBuffer) { + byte[] bytes = ((ByteBuffer) val).array(); + int cnt0 = 0; + int cnt1 = 0; + for (int i = 0; i < bytes.length; i++) { + byte b = bytes[i]; + if (b < 32 || b > 127) { + if ((i & 1) == 0) { + cnt0++; + } else { + cnt1++; + } + } + } + if (cnt0 > bytes.length / 4 || cnt1 > bytes.length / 4) { + for (int i = 0; i < bytes.length; i++) { + if (i > 0) { + sb.append(' '); + } + sb.append(String.format("%02X", bytes[i] & 0xFF)); + } + } else { + try { + String s = Util.decodeUnknownCharset(bytes); + sb.append(s); + } catch (Exception e) { + } + } + } else if (val instanceof List) { + List l = (List) val; + sb.append('['); + for (int i = 0; i < l.size(); i++) { + if (i > 0) { + sb.append(", "); + } + format(sb, key, l.get(i), df, level); + } + sb.append(']'); + } else { + sb.append(val.getClass() + " : " + val.toString()); + } + } + } +} diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/browsers/ie/IndexDatParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/browsers/ie/IndexDatParser.java index 1d9d389983..b6209ec6ca 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/browsers/ie/IndexDatParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/browsers/ie/IndexDatParser.java @@ -129,7 +129,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, read.value = null; read.notify(); } - String str = Util.decodeUnknowCharset(out); + String str = Util.decodeUnknownCharset(out); xhtml.characters(str); if (Thread.currentThread().isInterrupted()) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/Util.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/Util.java index 668c5a65d6..45ba65bae6 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/Util.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/util/Util.java @@ -117,7 +117,7 @@ private static String decodeUTF16OrUTF8(byte[] data) throws UnsupportedEncodingE return result; } - public static String decodeUnknowCharset(byte[] data) { + public static String decodeUnknownCharset(byte[] data) { try { return decodeUTF16OrUTF8(data); @@ -161,7 +161,7 @@ private static String decodeUnknownCharsetTika(byte[] data, boolean useFallbackD } catch (IOException | TikaException e) { if (useFallbackDetection) { - return decodeUnknowCharset(data); + return decodeUnknownCharset(data); } else { return decodeWindows1252(data); } From 9b2f1f2e9aa06bcc72b7599a03a57f45558ddaaf Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Fri, 3 May 2024 11:01:33 -0300 Subject: [PATCH 046/126] '#2193: Do not use "glob pattern" for settings.dat (name too common). --- iped-app/resources/config/conf/CustomSignatures.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iped-app/resources/config/conf/CustomSignatures.xml b/iped-app/resources/config/conf/CustomSignatures.xml index 3f719e4a82..33a65aceff 100644 --- a/iped-app/resources/config/conf/CustomSignatures.xml +++ b/iped-app/resources/config/conf/CustomSignatures.xml @@ -446,6 +446,8 @@ + + @@ -456,7 +458,6 @@ - From bc5a4429a6d78a8944a2a843b6885662a8e4c6f5 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Fri, 3 May 2024 20:56:42 -0300 Subject: [PATCH 047/126] '#2196: Extract LibreOffice (in Windows) even if --nogui was used --- .../java/iped/app/bootstrap/Bootstrap.java | 11 +++---- .../java/iped/app/ui/ViewerController.java | 2 +- .../java/iped/engine/task/DocThumbTask.java | 2 +- .../java/iped/viewers/util/LOExtractor.java | 32 +++++++++++-------- .../iped/viewers/util/LibreOfficeFinder.java | 4 +-- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java b/iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java index 9669b7efd1..8644f3ae0d 100644 --- a/iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java +++ b/iped-app/src/main/java/iped/app/bootstrap/Bootstrap.java @@ -145,10 +145,7 @@ protected void run(String args[]) { classpath += separator + pluginConfig.getPluginFolder().getAbsolutePath() + "/*"; } - // user can't open analysis UI w/ --nogui, so no need to load libreoffice jars - if (!iped.getCmdLineArgs().isNogui()) { - classpath = fillClassPathWithLibreOfficeJars(iped, classpath); - } + classpath = fillClassPathWithLibreOfficeJars(iped, classpath, iped.getCmdLineArgs().isNogui()); String javaBin = "java"; if (SystemUtils.IS_OS_WINDOWS) { @@ -278,14 +275,14 @@ private static List getSystemProperties() { return props; } - private static String fillClassPathWithLibreOfficeJars(Main iped, String classpath) + private static String fillClassPathWithLibreOfficeJars(Main iped, String classpath, boolean isNogui) throws URISyntaxException, IOException { System.setProperty(IOfficeApplication.NOA_NATIVE_LIB_PATH, new File(iped.getRootPath(), "lib/nativeview").getAbsolutePath()); LibreOfficeFinder loFinder = new LibreOfficeFinder(new File(iped.getRootPath())); - if (loFinder.getLOPath() != null) { + if (loFinder.getLOPath(isNogui) != null) { List jars = new ArrayList<>(); - UNOLibFinder.addUNOJars(loFinder.getLOPath(), jars); + UNOLibFinder.addUNOJars(loFinder.getLOPath(isNogui), jars); for (File jar : jars) { classpath += separator + jar.getCanonicalPath(); } diff --git a/iped-app/src/main/java/iped/app/ui/ViewerController.java b/iped-app/src/main/java/iped/app/ui/ViewerController.java index d056ad6e34..852eeb77d7 100644 --- a/iped-app/src/main/java/iped/app/ui/ViewerController.java +++ b/iped-app/src/main/java/iped/app/ui/ViewerController.java @@ -116,7 +116,7 @@ public void run() { URI jarUri = URLUtil.getURL(LibreOfficeViewer.class).toURI(); File moduledir = new File(jarUri).getParentFile().getParentFile(); LibreOfficeFinder loFinder = new LibreOfficeFinder(moduledir); - final String pathLO = loFinder.getLOPath(); + final String pathLO = loFinder.getLOPath(false); if (pathLO != null) { SwingUtilities.invokeAndWait(new Runnable() { @Override diff --git a/iped-engine/src/main/java/iped/engine/task/DocThumbTask.java b/iped-engine/src/main/java/iped/engine/task/DocThumbTask.java index 98753a8d9d..bea7aca9d1 100644 --- a/iped-engine/src/main/java/iped/engine/task/DocThumbTask.java +++ b/iped-engine/src/main/java/iped/engine/task/DocThumbTask.java @@ -94,7 +94,7 @@ public void init(ConfigurationManager configurationManager) throws Exception { URL url = URLUtil.getURL(this.getClass()); File jarDir = new File(url.toURI()).getParentFile(); LibreOfficeFinder loFinder = new LibreOfficeFinder(jarDir); - loPath = loFinder.getLOPath(); + loPath = loFinder.getLOPath(true); logger.info("LibreOffice Path: " + loPath); } diff --git a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java index 6de5ea345d..ddeadf26d5 100644 --- a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java +++ b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java @@ -32,7 +32,7 @@ public LOExtractor(File input, File output) { this.input = input; } - public boolean decompressLO() { + public boolean decompressLO(boolean isNogui) { try { if (output.exists()) { @@ -44,14 +44,16 @@ public boolean decompressLO() { } if (input.exists()) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - progressMonitor = new ProgressDialog(null, LOExtractor.this); - progressMonitor.setMaximum(numSubitens); - progressMonitor.setNote(Messages.getString("LOExtractor.DecompressingLO")); //$NON-NLS-1$ - } - }); + if (!isNogui) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + progressMonitor = new ProgressDialog(null, LOExtractor.this); + progressMonitor.setMaximum(numSubitens); + progressMonitor.setNote(Messages.getString("LOExtractor.DecompressingLO")); //$NON-NLS-1$ + } + }); + } try (ZipFile zip = new ZipFile(input)) { Enumeration e = zip.getEntries(); @@ -69,15 +71,17 @@ public void run() { if (++progress == numSubitens) completed = true; - progressMonitor.setProgress(progress); - - if (progressMonitor.isCanceled()) - break; + if (progressMonitor != null) { + progressMonitor.setProgress(progress); + + if (progressMonitor.isCanceled()) + break; + } } } } - if (!progressMonitor.isCanceled()) { + if (progressMonitor != null && !progressMonitor.isCanceled()) { progressMonitor.close(); } diff --git a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LibreOfficeFinder.java b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LibreOfficeFinder.java index 51170b7a23..c23283bb80 100644 --- a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LibreOfficeFinder.java +++ b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LibreOfficeFinder.java @@ -36,7 +36,7 @@ public LibreOfficeFinder(File baseFolder) { baseDir = baseFolder; } - public String getLOPath() { + public String getLOPath(boolean isNogui) { if (detectedPath == null) { detectedPath = System.getProperty("libreOfficePath"); if (detectedPath != null) @@ -62,7 +62,7 @@ public String getLOPath() { if (winPathLO.exists() || compressedLO.exists()) { // $NON-NLS-1$ //$NON-NLS-2$ LOExtractor extractor = new LOExtractor(compressedLO, winPathLO); - if (extractor.decompressLO()) + if (extractor.decompressLO(isNogui)) detectedPath = winPathLO.getAbsolutePath(); } } From 9f3093afc24a1a7af97af9353db8899824bd2f34 Mon Sep 17 00:00:00 2001 From: Luis Filipe Nassif Date: Sat, 4 May 2024 09:44:06 -0300 Subject: [PATCH 048/126] #2196: minor fix to make Object visible since it's created from a different thread --- .../src/main/java/iped/viewers/util/LOExtractor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java index ddeadf26d5..e726b1ff6f 100644 --- a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java +++ b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/util/LOExtractor.java @@ -23,7 +23,7 @@ public class LOExtractor extends CancelableWorker { private File output, input; - private ProgressDialog progressMonitor; + private volatile ProgressDialog progressMonitor; private int progress = 0, numSubitens = 2876;// TODO obter número de itens automaticamente private boolean completed = false; From f40ebe4e043f29be4443e155c96c3f31a2189ca3 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Mon, 6 May 2024 13:53:53 -0300 Subject: [PATCH 049/126] '#2185: Fix firstPiece/totPieces logic in searchAndMatchFileInCase(). --- .../iped/parsers/bittorrent/TorrentFileParser.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 282689c962..9ff3ee380c 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -428,12 +428,12 @@ private static class TorrentInfo { } private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long fileLength, long pieceLength, - String[] pieces, int firstPiece, int offset, boolean isLast) { + String[] pieces, final int firstPiece, final int offset, final boolean isLast) { if (fileLength < minFileLength || fileLength > maxFileLength) { return null; } int totPieces = (int) ((fileLength + pieceLength - 1 + offset) / pieceLength); - if (firstPiece + totPieces > pieces.length || ((!isLast||offset!=0) && totPieces < minPiecesMultiFile)) { + if (firstPiece + totPieces > pieces.length || ((!isLast || offset != 0) && totPieces < minPiecesMultiFile)) { return null; } List items = searcher.search(BasicProps.LENGTH + ":" + fileLength); @@ -462,9 +462,8 @@ private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long if (read < bytes.length - offset) { continue NEXT; } - firstPiece++; } - for (int n = firstPiece; n < totPieces; n++) { + for (int n = offset == 0 ? 0 : 1; n < totPieces; n++) { int read = is.readNBytes(bytes, 0, bytes.length); if (read < 0 || (read < bytes.length && n < totPieces - 1)) { continue NEXT; @@ -475,13 +474,13 @@ private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long in = Arrays.copyOf(bytes, read); } String calc = DigestUtils.sha1Hex(in); - if (calc == null || !calc.equalsIgnoreCase(pieces[n])) { + if (calc == null || !calc.equalsIgnoreCase(pieces[n + firstPiece])) { continue NEXT; } } } - // Found an item that matches all piece hashes + // Found an item that matches all pieces hashes return item; } catch (Exception e) { From 038bf26f717c87ce71682bac6f3f5d7640b7195b Mon Sep 17 00:00:00 2001 From: "patrick.pdb" Date: Mon, 6 May 2024 14:35:48 -0400 Subject: [PATCH 050/126] '#2187 Includes details info of matched pieces in parsed HTML. --- .../iped-parsers-messages.properties | 2 + .../iped-parsers-messages_de_DE.properties | 2 + .../iped-parsers-messages_es_AR.properties | 2 + .../iped-parsers-messages_it_IT.properties | 2 + .../iped-parsers-messages_pt_BR.properties | 2 + .../parsers/bittorrent/TorrentFileParser.java | 49 ++++++++++++++++--- 6 files changed, 51 insertions(+), 8 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index b55c10a017..fab0b78c86 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -367,6 +367,8 @@ TorrentFileDatParser.File=File TorrentFileDatParser.FileFoundInCase=File Found in the Case TorrentFileDatParser.FilesFoundInCase=Files Found in the Case TorrentFileDatParser.Yes=Yes +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces +TorrentFileDatParser.AtOffset=at offset TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=First Name: TelegramContact.LastName=Last Name: diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index aaa6fda317..20eaffb0d4 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -367,6 +367,8 @@ TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) +TorrentFileDatParser.AtOffset=at offset(TBT) TelegramContact.ContactID=Kontakt ID: TelegramContact.FirstName=Vorname: TelegramContact.LastName=Nachname: diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index e04261f802..fe0403c298 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -367,6 +367,8 @@ TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) +TorrentFileDatParser.AtOffset=at offset(TBT) TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=Nombre de la persona: TelegramContact.LastName=Segundo Nombre: diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index 166fa44f9a..70cf6e5aca 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -367,6 +367,8 @@ TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) +TorrentFileDatParser.AtOffset=at offset(TBT) TelegramContact.ContactID=ID Contatto: TelegramContact.FirstName=Nome: TelegramContact.LastName=Cognome: diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index 0ce933e9fe..46cad3b5ab 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -367,6 +367,8 @@ TorrentFileDatParser.File=Arquivo TorrentFileDatParser.FileFoundInCase=Arquivo Localizado no Caso TorrentFileDatParser.FilesFoundInCase=Arquivos Localizados no Caso TorrentFileDatParser.Yes=Sim +TorrentFileDatParser.ConfirmedPieces=Partes confirmadas +TorrentFileDatParser.AtOffset=a partir do offset TelegramContact.ContactID=ID do Contato: TelegramContact.FirstName=Nome: TelegramContact.LastName=Sobrenome: diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 9ff3ee380c..7330c637a5 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -62,6 +62,9 @@ public class TorrentFileParser extends AbstractParser { Messages.getString("TorrentFileDatParser.ED2K"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.FileFoundInCase") }; + private static final String strConfirmedPieces = Messages.getString("TorrentFileDatParser.ConfirmedPieces"); + private static final String strAtOffset = Messages.getString("TorrentFileDatParser.AtOffset"); + private static final String strYes = Messages.getString("TorrentFileDatParser.Yes"); private static final String padding = "_____padding_file"; @@ -141,10 +144,12 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, for (int i = 0; i < files.size(); i++) { FileInTorrent file = files.get(i); if (file.item == null) { - IItemReader item = searchAndMatchFileInCase(searcher, file.length, info.pieceLength, info.pieces, + ItemPiecesMatchInfo itemPiecesMatchInfo = searchAndMatchFileInCase(searcher, file.length, + info.pieceLength, info.pieces, (int) (tot / info.pieceLength), (int) (tot % info.pieceLength), i == files.size() - 1); - if (item != null) { - file.item = item; + if (itemPiecesMatchInfo != null) { + file.item = itemPiecesMatchInfo.item; + file.itemPiecesMatchInfo = itemPiecesMatchInfo; metadata.add(ExtraProperties.LINKED_ITEMS, BasicProps.HASH + ":" + file.item.getHash()); } } @@ -220,7 +225,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.startElement("tr", "class", row % 2 == 0 ? "ra" : "rb"); String[] rowElements = new String[] { String.valueOf(++row), file.fullPath, Long.toString(file.length), - file.md5, file.sha1, file.ed2k, file.item != null ? strYes : "" }; + file.md5, file.sha1, file.ed2k, + file.item != null ? formatMatchInfo(file.itemPiecesMatchInfo) : "" }; for (int col = 0; col < rowElements.length; col++) { if (include[col]) { String str = rowElements[col]; @@ -274,6 +280,19 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endDocument(); } + + private String formatMatchInfo(ItemPiecesMatchInfo itemPiecesMatchInfo) { + + if(itemPiecesMatchInfo!=null){ + String str = strYes + " (" + strConfirmedPieces + " " + (itemPiecesMatchInfo.startPiece + 1) + "-" + + (itemPiecesMatchInfo.finalPiece + 1) + " " + strAtOffset + " " + itemPiecesMatchInfo.startOffset + + ")"; + return str; + }else{ + return ""; + } + } + private static void outputInfo(XHTMLContentHandler xhtml, String key, Object value) throws SAXException { outputInfo(xhtml, key, value, false); } @@ -373,6 +392,7 @@ private static void linkTorrentToItem(IItemSearcher searcher, Metadata metadata, } private static class FileInTorrent { + public ItemPiecesMatchInfo itemPiecesMatchInfo; String fullPath; long length; String md5; @@ -427,7 +447,15 @@ private static class TorrentInfo { String[] pieces; } - private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long fileLength, long pieceLength, + private static class ItemPiecesMatchInfo { + IItemReader item; + int startPiece; + int finalPiece; + int startOffset; + } + + private static ItemPiecesMatchInfo searchAndMatchFileInCase(IItemSearcher searcher, long fileLength, + long pieceLength, String[] pieces, final int firstPiece, final int offset, final boolean isLast) { if (fileLength < minFileLength || fileLength > maxFileLength) { return null; @@ -454,16 +482,19 @@ private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long if (item.getHash() == null || !seen.add(item.getHash())) { continue; } - // Check if the all pieces hashes match try (BufferedInputStream is = item.getBufferedInputStream()) { + ItemPiecesMatchInfo itemPiecesMatchInfo = new ItemPiecesMatchInfo(); + itemPiecesMatchInfo.startOffset = offset; if (offset > 0) { int read = is.readNBytes(bytes, 0, bytes.length - offset); if (read < bytes.length - offset) { continue NEXT; } } - for (int n = offset == 0 ? 0 : 1; n < totPieces; n++) { + int n = offset == 0 ? 0 : 1; + itemPiecesMatchInfo.startPiece = n + firstPiece; + for (; n < totPieces; n++) { int read = is.readNBytes(bytes, 0, bytes.length); if (read < 0 || (read < bytes.length && n < totPieces - 1)) { continue NEXT; @@ -479,9 +510,11 @@ private static IItemReader searchAndMatchFileInCase(IItemSearcher searcher, long } } } + itemPiecesMatchInfo.finalPiece = n + firstPiece; + itemPiecesMatchInfo.item = item; // Found an item that matches all pieces hashes - return item; + return itemPiecesMatchInfo; } catch (Exception e) { e.printStackTrace(); From 3c48a3b1849d3cb1c03c82b2f60ba0c37db69259 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Mon, 6 May 2024 19:58:43 -0300 Subject: [PATCH 051/126] '#2185: Add a column with case item's path and minor HTML formatting. --- .../iped-parsers-messages.properties | 1 + .../iped-parsers-messages_de_DE.properties | 5 +- .../iped-parsers-messages_es_AR.properties | 5 +- .../iped-parsers-messages_it_IT.properties | 5 +- .../iped-parsers-messages_pt_BR.properties | 1 + .../parsers/bittorrent/TorrentFileParser.java | 50 +++++++++++-------- 6 files changed, 40 insertions(+), 27 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index fab0b78c86..9f2c28f686 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -366,6 +366,7 @@ TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse inform TorrentFileDatParser.File=File TorrentFileDatParser.FileFoundInCase=File Found in the Case TorrentFileDatParser.FilesFoundInCase=Files Found in the Case +TorrentFileDatParser.PathInCase=Path of Item Found in the Case TorrentFileDatParser.Yes=Yes TorrentFileDatParser.ConfirmedPieces=Confirmed pieces TorrentFileDatParser.AtOffset=at offset diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 20eaffb0d4..e609c64855 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -366,9 +366,10 @@ TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse inform TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] +TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] -TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) -TorrentFileDatParser.AtOffset=at offset(TBT) +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] +TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=Kontakt ID: TelegramContact.FirstName=Vorname: TelegramContact.LastName=Nachname: diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index fe0403c298..655d8f7220 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -366,9 +366,10 @@ TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse inform TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] +TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] -TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) -TorrentFileDatParser.AtOffset=at offset(TBT) +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] +TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=Contact ID: TelegramContact.FirstName=Nombre de la persona: TelegramContact.LastName=Segundo Nombre: diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index 70cf6e5aca..d2cdda67dd 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -366,9 +366,10 @@ TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse inform TorrentFileDatParser.File=File[TBT] TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] +TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] -TorrentFileDatParser.ConfirmedPieces=Confirmed pieces(TBT) -TorrentFileDatParser.AtOffset=at offset(TBT) +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] +TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=ID Contatto: TelegramContact.FirstName=Nome: TelegramContact.LastName=Cognome: diff --git a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties index 46cad3b5ab..41e2f63137 100644 --- a/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_pt_BR.properties @@ -366,6 +366,7 @@ TorrentFileDatParser.IncompleteWarning=Arquivo incompleto. Algumas das informaç TorrentFileDatParser.File=Arquivo TorrentFileDatParser.FileFoundInCase=Arquivo Localizado no Caso TorrentFileDatParser.FilesFoundInCase=Arquivos Localizados no Caso +TorrentFileDatParser.PathInCase=Caminho do Item Localizado no Caso TorrentFileDatParser.Yes=Sim TorrentFileDatParser.ConfirmedPieces=Partes confirmadas TorrentFileDatParser.AtOffset=a partir do offset diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 7330c637a5..61a25723ac 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -50,7 +50,7 @@ public class TorrentFileParser extends AbstractParser { public static final String TORRENT_INFO_HASH = ExtraProperties.P2P_META_PREFIX + "torrentInfoHash"; public static final String TORRENT_FILES_FOUND_IN_CASE = ExtraProperties.P2P_META_PREFIX + "torrentFilesFoundInCase"; - + private static final long serialVersionUID = 3238363426940179831L; private static final Set SUPPORTED_TYPES = Collections.singleton(MediaType.application("x-bittorrent")); //$NON-NLS-1$ public static final String TORRENT_FILE_MIME_TYPE = "application/x-bittorrent"; //$NON-NLS-1$ @@ -60,7 +60,8 @@ public class TorrentFileParser extends AbstractParser { Messages.getString("TorrentFileDatParser.MD5"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.SHA1"), //$NON-NLS-1$ Messages.getString("TorrentFileDatParser.ED2K"), //$NON-NLS-1$ - Messages.getString("TorrentFileDatParser.FileFoundInCase") + Messages.getString("TorrentFileDatParser.FileFoundInCase"), + Messages.getString("TorrentFileDatParser.PathInCase") }; private static final String strConfirmedPieces = Messages.getString("TorrentFileDatParser.ConfirmedPieces"); private static final String strAtOffset = Messages.getString("TorrentFileDatParser.AtOffset"); @@ -102,8 +103,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, IItemSearcher searcher = context.get(IItemSearcher.class); List files = extractFileList(dict, metadata, searcher); - char[] colClass = { 'c', 'a', 'c', 'h', 'h', 'h', 'b' }; - boolean[] include = { true, true, true, false, false, false, false }; + char[] colClass = { 'c', 'a', 'c', 'h', 'h', 'h', 'b', 'a' }; + boolean[] include = { true, true, true, false, false, false, false, false }; for (FileInTorrent file : files) { if (!file.md5.isEmpty()) include[3] = true; @@ -121,11 +122,12 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, + ".rh { font-weight: bold; text-align: center; background-color:#AAAAEE; } " + ".ra { vertical-align: middle; } " + ".rb { background-color:#E7E7F0; vertical-align: middle; } " - + ".a { border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; word-wrap: break-word; } " - + ".b { border: solid; border-width: thin; padding: 3px; text-align: center; vertical-align: middle; word-wrap: break-word; } " - + ".c { border: solid; border-width: thin; padding: 3px; text-align: right; vertical-align: middle; word-wrap: break-word; } " + + ".a { min-width: 200px; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; word-wrap: break-word; } " + + ".b { min-width: 100px; border: solid; border-width: thin; padding: 3px; text-align: center; vertical-align: middle; word-wrap: break-word; } " + + ".c { min-width: 80px; border: solid; border-width: thin; padding: 3px; text-align: right; vertical-align: middle; word-wrap: break-word; } " + ".d { font-weight: bold; background-color:#AAAAEE; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; white-space: nowrap; } " - + ".h { font-weight: bold; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; white-space: nowrap; font-family: monospace; } "); + + ".h { min-width: 200px; font-weight: bold; border: solid; border-width: thin; padding: 3px; text-align: left; vertical-align: middle; white-space: nowrap; font-family: monospace; } " + + ".s { font-size: x-small; } "); xhtml.endElement("style"); //$NON-NLS-1$ xhtml.newline(); @@ -164,6 +166,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, paddingEntries++; } else if (file.item != null) { include[6] = true; + include[7] = true; foundInCase++; } } @@ -225,8 +228,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } xhtml.startElement("tr", "class", row % 2 == 0 ? "ra" : "rb"); String[] rowElements = new String[] { String.valueOf(++row), file.fullPath, Long.toString(file.length), - file.md5, file.sha1, file.ed2k, - file.item != null ? formatMatchInfo(file.itemPiecesMatchInfo) : "" }; + file.md5, file.sha1, file.ed2k, "", file.item == null ? "" : file.item.getPath() }; for (int col = 0; col < rowElements.length; col++) { if (include[col]) { String str = rowElements[col]; @@ -242,6 +244,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } if (col == 1 && file.item != null) { P2PUtil.printNameWithLink(xhtml, file.item, str); + } else if (col == 6) { + outputMatchInfo(xhtml, file.itemPiecesMatchInfo); } else { xhtml.characters(str); } @@ -280,16 +284,20 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, xhtml.endDocument(); } - - private String formatMatchInfo(ItemPiecesMatchInfo itemPiecesMatchInfo) { - - if(itemPiecesMatchInfo!=null){ - String str = strYes + " (" + strConfirmedPieces + " " + (itemPiecesMatchInfo.startPiece + 1) + "-" - + (itemPiecesMatchInfo.finalPiece + 1) + " " + strAtOffset + " " + itemPiecesMatchInfo.startOffset - + ")"; - return str; - }else{ - return ""; + private static void outputMatchInfo(XHTMLContentHandler xhtml, ItemPiecesMatchInfo itemPiecesMatchInfo) + throws SAXException { + if (itemPiecesMatchInfo != null) { + xhtml.characters(strYes); + xhtml.startElement("br"); + xhtml.startElement("span", "class", "s"); + xhtml.characters("(" + strConfirmedPieces + " "); + xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.startPiece + 1)); + xhtml.characters("-"); + xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.finalPiece + 1)); + xhtml.characters(" " + strAtOffset + " "); + xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.startOffset)); + xhtml.characters(")"); + xhtml.endElement("span"); } } @@ -392,7 +400,7 @@ private static void linkTorrentToItem(IItemSearcher searcher, Metadata metadata, } private static class FileInTorrent { - public ItemPiecesMatchInfo itemPiecesMatchInfo; + ItemPiecesMatchInfo itemPiecesMatchInfo; String fullPath; long length; String md5; From 9ba47e0e3f900f294ae3a1eac395d8f33d511762 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Thu, 9 May 2024 10:03:48 -0300 Subject: [PATCH 052/126] removes a useless static lock found while investigating #2200 --- .../engine/datasource/ad1/AD1Extractor.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/datasource/ad1/AD1Extractor.java b/iped-engine/src/main/java/iped/engine/datasource/ad1/AD1Extractor.java index 7a1d53ddf8..a65a953ccb 100644 --- a/iped-engine/src/main/java/iped/engine/datasource/ad1/AD1Extractor.java +++ b/iped-engine/src/main/java/iped/engine/datasource/ad1/AD1Extractor.java @@ -27,8 +27,6 @@ public class AD1Extractor implements Closeable { private static final long SIGNATURE_SIZE = 512; // 0x200 private static final String charset = "UTF-8"; - private static Object lock = new Object(); - private File file; private Map> fcMap = new HashMap<>(); private List channels = new ArrayList<>(); @@ -322,20 +320,17 @@ private int seekAndRead(int ad1Ord, long seekOff, byte[] buf, int off, int len) try { List bbList; - synchronized (lock) { - bbList = fcMap.get(ad1Ord); - if (bbList == null) { - File newAd1 = new File( - file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".") + 3) + ad1Ord); - FileChannel fc = FileChannel.open(newAd1.toPath(), StandardOpenOption.READ); - channels.add(fc); - bbList = new ArrayList<>(); - for (long pos = 0; pos < fc.size(); pos += Integer.MAX_VALUE) { - int size = (int) Math.min(fc.size() - pos, Integer.MAX_VALUE); - bbList.add(fc.map(MapMode.READ_ONLY, pos, size)); - } - fcMap.put(ad1Ord, bbList); + bbList = fcMap.get(ad1Ord); + if (bbList == null) { + File newAd1 = new File(file.getAbsolutePath().substring(0, file.getAbsolutePath().lastIndexOf(".") + 3) + ad1Ord); + FileChannel fc = FileChannel.open(newAd1.toPath(), StandardOpenOption.READ); + channels.add(fc); + bbList = new ArrayList<>(); + for (long pos = 0; pos < fc.size(); pos += Integer.MAX_VALUE) { + int size = (int) Math.min(fc.size() - pos, Integer.MAX_VALUE); + bbList.add(fc.map(MapMode.READ_ONLY, pos, size)); } + fcMap.put(ad1Ord, bbList); } ByteBuffer src = bbList.get((int) (seekOff / Integer.MAX_VALUE)); int seek = (int) (seekOff % Integer.MAX_VALUE); @@ -346,9 +341,7 @@ private int seekAndRead(int ad1Ord, long seekOff, byte[] buf, int off, int len) return size; } catch (ClosedChannelException e) { - synchronized (lock) { - fcMap.put(ad1Ord, null); - } + fcMap.put(ad1Ord, null); throw e; } } From 64a6e72361811a51883e3a7e38e39cd0b79bbe9c Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 17:27:28 -0300 Subject: [PATCH 053/126] '#1182: create initial French localization files from English ones --- .../iped-categories_fr_FR.properties | 162 ++++++ .../iped-desktop-messages_fr_FR.properties | 444 +++++++++++++++ .../iped-engine-messages_fr_FR.properties | 125 +++++ .../iped-filters_fr_FR.properties | 18 + .../iped-geo-messages_fr_FR.properties | 29 + .../iped-parsers-messages_fr_FR.properties | 507 ++++++++++++++++++ .../iped-properties_fr_FR.properties | 13 + .../iped-utils-messages_fr_FR.properties | 4 + .../iped-viewer-messages_fr_FR.properties | 122 +++++ 9 files changed, 1424 insertions(+) create mode 100644 iped-app/resources/localization/iped-categories_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-desktop-messages_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-engine-messages_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-filters_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-geo-messages_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-parsers-messages_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-properties_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-utils-messages_fr_FR.properties create mode 100644 iped-app/resources/localization/iped-viewer-messages_fr_FR.properties diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties new file mode 100644 index 0000000000..0be75b7742 --- /dev/null +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -0,0 +1,162 @@ +Categories=Categories +Documents=Documents +RTF\ Documents=RTF\ Documents +PDF\ Documents=PDF\ Documents +HTML\ Documents=HTML\ Documents +XML\ Files=XML\ Files +Georeferenced\ Files=Georeferenced\ Files +Text\ Documents=Text\ Documents +Spreadsheets=Spreadsheets +Presentations=Presentations +OLE\ files=OLE\ files +Links=Links +Link\ files=Link\ files +URL\ links=URL\ links +Other\ Documents=Other\ Documents +Emails\ and\ Mailboxes=Emails\ and\ Mailboxes +Emails=Emails +Mailboxes=Mailboxes +Appointments=Appointments +GDrive\ Synced\ Files=GDrive\ Synced\ Files +GDrive\ File\ Entries=GDrive\ File\ Entries +Databases=Databases +Compressed\ Archives=Compressed\ Archives +Contacts=Contacts +Chats=Chats +Others\ Chats=Others\ Chats +Windows\ Artifacts=Windows\ Artifacts +Event\ Files=Event\ Files +Event\ Records=Event\ Records +Prefetch\ and\ Superfetch=Prefetch\ and\ Superfetch +User\ Activities=User\ Timeline +User\ Activities\ Entries=User\ Timeline\ Records +Windows\ Registry=Windows\ Registry +Main\ Registry\ Files=Main\ Registry\ Files +Other\ Registry\ Files=Other\ Registry\ Files +Registry\ Full\ Reports=Registry\ Full\ Reports +Registry\ Custom\ Reports=Registry\ Custom\ Reports +Registry\ OS\ Info=Registry\ OS\ Info +Registry\ Installed\ Apps=Registry\ Installed\ Apps +Registry\ Network\ Info=Registry\ Network\ Info +Registry\ Storage\ Info=Registry\ Storage\ Info +Registry\ Device\ Info=Registry\ Device\ Info +Registry\ Program\ Run=Registry\ Program\ Run +Registry\ Auto\ Run=Registry\ Auto\ Run +Registry\ Log\ Info=Registry\ Log\ Info +Registry\ Malware\ Info=Registry\ Malware\ Info +Registry\ Web\ Info=Registry\ Web\ Info +Registry\ User\ Info=Registry\ User\ Info +Registry\ User\ Accounts=Registry\ User\ Accounts +Registry\ User\ Activity=Registry\ User\ Activity +Registry\ User\ Files=Registry\ User\ Files +Registry\ User\ Network\ Activity=Registry\ User\ Network\ Activity +Registry\ User\ Config=Registry\ User\ Config +Registry\ User\ Virtualization=Registry\ User\ Virtualization +Registry\ User\ Communication=Registry\ User\ Communication +Windows\ Recycle=Windows\ Recycle +USN\ Journal=USN\ Journal +Programs\ and\ Libraries=Programs\ and\ Libraries +Android\ Applications=Android\ Applications +Unallocated=Unallocated +File\ Slacks=File\ Slacks +Multimedia=Multimedia +Audios=Audios +Images=Images +Temporary\ Internet\ Images=Temporary\ Internet\ Images +Images\ in\ System\ Folders=Images\ in\ System\ Folders +Other\ Images=Other\ Images +Videos=Videos +Video\ Thumbnails=Video Thumbnails +Plain\ Texts=Plain\ Texts +Temporary\ Internet\ Texts=Temporary\ Internet\ Texts +Texts\ in\ System\ Folders=Texts\ in\ System\ Folders +Other\ Texts=Other\ Texts +Other\ files=Other\ files +Empty\ Files=Empty\ Files +Peer-to-peer=Peer-to-peer +Ares\ Galaxy=Ares\ Galaxy +E-Mule=E-Mule +Shareaza=Shareaza +Torrent=Torrent +Other Peer-to-peer=Other Peer-to-peer +Browser\ Artifacts=Browser\ Artifacts +Internet\ History=Internet\ History +Internet\ History\ Entries=Internet\ History\ Entries +Web\ Bookmarks=Web\ Bookmarks +Image\ Disks=Image\ Disks +ISO\ disks=ISO\ disks +Virtual\ disks=Virtual\ disks +Other\ disks=Other\ disks +Mozilla\ Firefox\ Saved\ Session=Mozilla\ Firefox\ Saved\ Session +Folders=Folders +Scanned\ Documents=Scanned\ Documents +Extraction\ Summary=Extraction\ Summary +Calls=Calls +SMS\ Messages=SMS\ Messages +MMS\ Messages=MMS\ Messages +Instant\ Messages=Instant\ Messages +Bluetooth\ Devices=Bluetooth\ Devices +SIM\ Data=SIM\ Data +Calendar=Calendar +Logs=Logs +User\ Accounts=User\ Accounts +Searches=Searches +Notes=Notes +Wireless\ Networks=Wireless\ Networks +Notifications=Notifications +Locations=Locations +Cookies=Cookies +Configuration=Configuration +Passwords=Passwords +Autofill=Autofill +Cell\ Towers=Cell\ Towers +Power\ Events=Power\ Events +User\ Dictionaries=User\ Dictionaries +IP\ Connections=IP\ Connections +Recordings=Recordings +Mobile\ Cards=Mobile\ Cards +Applications\ Usage=Application\ Usage +Device\ Information=Device\ Information +iPhone\ Backup=iPhone\ Backup +Torchat=Torchat +Tor=Tor +TorTCFragment=Tor Communication Fragments +Cloud\ Drives=Cloud\ Drives +Google\ Drive=Google\ Drive +Telegram=Telegram +Brazilian\ Software=Brazilian\ Software +Internal\ Revenue\ of\ Brazil=Internal\ Revenue\ of\ Brazil +Social\ Security\ and\ CAIXA\ Bank=Social\ Security\ and\ CAIXA\ Bank +Tax\ Returns\ and\ Receipts\ IRPF=Tax\ Returns\ and\ Receipts\ IRPF +Tax\ Returns\ and\ Receipts\ DIRF=Tax\ Returns\ and\ Receipts\ DIRF +Tax\ Returns\ and\ Receipts\ DIPJ=Tax\ Returns\ and\ Receipts\ DIPJ +Tax\ Returns\ and\ Receipts\ CNPJ=Tax\ Returns\ and\ Receipts\ CNPJ +Tax\ Returns\ and\ Receipts\ DSIMPLES=Tax\ Returns\ and\ Receipts\ DSIMPLES +Tax\ Returns\ and\ Receipts\ DCTF=Tax\ Returns\ and\ Receipts\ DCTF +Tax\ Returns\ and\ Receipts\ PER\ DCOMP=Tax\ Returns\ and\ Receipts\ PER\ DCOMP +Other\ Tax\ Returns\ and\ Receipts=Other\ Tax\ Returns\ and\ Receipts +PDF\ Bills\ of\ Exchange=PDF\ Bills\ of\ Exchange +SPED\ Program\ Files=SPED\ Program\ Files +Receitanet\ Program\ Files=Receitanet\ Program\ Files +RFB\ Program\ Files=RFB\ Program\ Files +SEFIP_GEFIP\ Files=SEFIP_GEFIP\ Files +SEFIP\ Databases=SEFIP\ Databases +SEFIP\ Executables=SEFIP\ Executables +SEFIP\ Files=SEFIP\ Files +Social\ Connectivity\ Program\ Executables=Social\ Connectivity\ Program\ Executables +Social\ Connectivity\ Program\ Files=Social\ Connectivity\ Program\ Files +GRRF\ Files=GRRF\ Files +Activities\ Sensor=Activities\ Sensor +Chat\ Activities=Chat\ Activities +Credit\ Cards=Credit\ Cards +Device\ Connectivity=Device\ Connectivity +Device\ Events=Device\ Events +File\ Downloads=File\ Downloads +File\ Uploads=File\ Uploads +Fuzzy\ Data=Fuzzy\ Data +Financial\ Accounts=Financial\ Accounts +Transfers\ of\ Funds=Transfers\ of\ Funds +Journeys=Journeys +Networks\ Usage=Networks\ Usage +Recognized\ Devices=Recognized\ Devices +Social\ Media\ Activities=Social\ Media\ Activities diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties new file mode 100644 index 0000000000..8a4504e69e --- /dev/null +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -0,0 +1,444 @@ +App.Case=Case +App.Checked=[Checked] +App.ExportZip=Export Selected to ZIP +App.FilterTip=Filter +App.ClearFilter=Clear Filter +App.ClearFilters=Clear Filters +App.FilterDuplicates=Filter Listed Duplicates +App.FilterDuplicatesTip=Filter duplicates on demand from current result +App.Gallery=Gallery +App.Help=Help +App.Hits=Hits +App.Map=Map +App.Links=Links +App.Metadata=Metadata +App.NoFilter=[No filter] +App.Options=Options +App.RecursiveListing=Recursive Listing +App.Search=Search +App.SearchBoxTip=[Type or choose the search expression. Use [TAB] to autocomplete properties.] +App.SearchLabel=Search: +App.Table=Table +App.ToggleTimelineView=Toggle Table Timeline View +App.Update=Update +App.Wait=Wait... +AppLazyInitializer.errorMsg.line1=Error opening case. Has the processing finished without errors?\n +AppLazyInitializer.errorMsg.line2=If yes, contact support and send the error log\n +AppLazyInitializer.errorMsg.line3=\nResumed error:\n +AppLazyInitializer.errorTitle=Initializing error +AppListener.NoHits=No hits +AppListener.UncheckAll=Do you confirm unchecking all items? +AppListener.UncheckAll.Title=Confirmation +AppMain.NoCasesFile=Case list file not found: +AppMain.warn.Title=Initializing warn +BookmarksController.HistoryDelimiter=-----------------------History----------------------- +BookmarksController.LoadError=Error loading bookmarks\! +BookmarksController.LoadError.Title=Error +BookmarksController.LoadSuccess=Success loading bookmarks +BookmarksController.LoadSuccess.Title=Success +BookmarksController.SaveError=Error saving bookmarks\! +BookmarksController.SaveError.Title=Error +BookmarksController.SaveSuccess=Success saving bookmarks +BookmarksController.SaveSuccess.Title=Success +BookmarksManager.Add=Add +BookmarksManager.Add.Tip=Add items to selected bookmarks +BookmarksManager.AddDuplicates=Add duplicates (hash) +BookmarksManager.AlertMultipleSelectedBookmarks=Select just one bookmark! +BookmarksManager.AlertNoCheckedtems=No checked items! +BookmarksManager.AlertNoHighlightedItems=No highlighted items! +BookmarksManager.AlertNoSelectedBookmarks=No selected bookmarks! +BookmarksManager.Checked=Checked items +BookmarksManager.ConfirmDelete=Really want to delete selected bookmarks? +BookmarksManager.ConfirmDelTitle=Confirm +BookmarksManager.Dataset=Dataset: +BookmarksManager.Delete=Delete +BookmarksManager.Delete.Tip=Delete selected bookmarks +BookmarksManager.Edit=Edit +BookmarksManager.Edit.Color=Color +BookmarksManager.Edit.Name=Name +BookmarksManager.Edit.Tip=Edit selected bookmark name and color +BookmarksManager.Edit.Title=Edit Bookmark +BookmarksManager.Highlighted=Highlighted items +BookmarksManager.KeyStrokeBookmark=Type a key (combination) to define a shortcut to [Add].
ALT+key will trigger [Remove]. +BookmarksManager.KeyStrokeAlert1=Select just one bookmark to define key shortcut. +BookmarksManager.KeyStrokeAlert2=ALT is always used to remove from bookmark. +BookmarksManager.KeyStrokeAlert3=Key shortcut already used, change it first. +BookmarksManager.KeyStrokeAlert4=Key shortcut already used for other action. +BookmarksManager.New=New +BookmarksManager.New.Tip=New bookmark +BookmarksManager.NewBookmark.Tip=Enter bookmark name +BookmarksManager.Remove=Remove +BookmarksManager.Remove.Tip=Remove items from selected bookmarks +BookmarksManager.SearchingDuplicates=Searching Duplicates... +BookmarksManager.Title=Bookmarks +BookmarksManager.CommentsTooltip=Bookmark comments +BookmarksManager.Update=Update +BookmarksManager.UpdateTooltip=Update comments +BookmarksManager.AlreadyExists=Bookmark name already exists! +BookmarksTreeModel.NoBookmarks=[No Bookmarks] +BookmarksTreeModel.RootName=Bookmarks +CategoryTreeModel.RootName=Categories +ColumnsManager.Advanced=Advanced +ColumnsManager.All=All +ColumnsManager.Audio=Audio +ColumnsManager.Basic=Basic +ColumnsManager.Common=Common +ColumnsManager.Communication=Communication +ColumnsManager.HashDB=Hash Database +ColumnsManager.HTML=HTML +ColumnsManager.Image=Image +ColumnsManager.Language=Language +ColumnsManager.NamedEntity=Named Entities +ColumnsManager.Office=Office +ColumnsManager.Other=Other +ColumnsManager.PDF=PDF +ColumnsManager.Regex=Regex +ColumnsManager.ShowCols=Show Columns: +ColumnsManager.Title=Visible Columns +ColumnsManager.Video=Video +ColumnsManager.PeerToPeer=PeerToPeer +ColumnsManager.UFED=UFED +ColumnsManager.AutoManageCols=Manage columns automatically (slower) +ColumnsManager.LoadingCols=Loading used columns... +ColumnsManager.Filter=[Type to filter] +ColumnsManager.WindowsEvt=Windows Events +CopyProperties.Copying=Copying +CopyProperties.CSVDateFormat=MM/dd/yyyy HH:mm:ss z +CopyProperties.CSVDelimiter=, +CopyProperties.from=\ of +DuplicatesTableModel.Duplicates=\ Duplicates +ExportFiles.Copying=Copying +ExportFiles.of=\ of +ExportFilesToZip.Copying=Copying +ExportFilesToZip.from=\ of +ExportFileTree.Copied=Copied +ExportFileTree.ExportError=Error exporting files. Check permissions and available space.\n +ExportFileTree.from=\ of +ExportIndexedTerms.Exported=Exported +ExportIndexedTerms.ofWords=\ of words. +ExportToZIP.DefaultName=ExportedFiles.zip +ExportToZIP.DefaultPath=/home/caine/DADOS_EXPORTADOS +ExportToZIP.FileAlreadyExistsMessageText=A file with the same name already exists at this location. Would you like to overwrite it? +ExportToZIP.FileAlreadyExistsMessageTitle=File already exists +FileProcessor.OpeningEvidence=Opening evidence... +FilterManager.Del.Tip=Delete selected filter +FilterManager.Delete=Delete +FilterManager.Expresion=Expression: +FilterManager.Expression.Tip=Filter rule +FilterManager.Filters=Filters: +FilterManager.New=New +FilterManager.New.Tip=New filter +FilterManager.NewName=New filter name +FilterManager.Save=Save +FilterManager.Save.Tip=Save changes +FilterManager.Title=Filters +Gallery.DecreaseThumbsSize=Reduce thumbnails size +Gallery.IncreaseThumbsSize=Increase thumbnails size +Gallery.GalleryBlurFilter=Toggle blur filter in gallery (use Ctrl+Q for global effect) +Gallery.GalleryGrayFilter=Toggle gray filter in gallery (use Ctrl+W for global effect) +Gallery.ToggleVideoFrames=Toggle video thumbnails frames configuration (Complete / Reduced) +GraphAnalysis.GraphvizError=Error testing graphviz tool {0}. Is it installed? +GraphAnalysis.Expand=Expand +GraphAnalysis.ExpandConfiguration=Expand (Filter) +GraphAnalysis.Expand.Links=Links +GraphAnalysis.Expand.Entities=Entities +GraphAnalysis.Expand.MaxNodes=Expand most linked entities up to +GraphAnalysis.FindConnectios=Find Connections +GraphAnalysis.FindPaths=Find Paths +GraphAnalysis.Remove=Remove +GraphAnalysis.ShowEvidence=Show Evidence +GraphAnalysis.SelectAll=Select All +GraphAnalysis.Processing=Processing... +GraphAnalysis.Done=Done. +GraphAnalysis.Preparing=Preparing... +GraphAnalysis.Ready=Ready. +GraphAnalysis.ExportingImage=Generating image... +GraphAnalysis.Error=An error occurred while processing the operation. +GraphAnalysis.UndoAction=Undo Action +GraphAnalysis.RedoAction=Redo Action +GraphAnalysis.SaveImage=Save Image +GraphAnalysis.SearchEntities=Search Linked Entities +GraphAnalysis.Search=Search +GraphAnalysis.Add=Add +GraphAnalysis.Cancel=Cancel +GraphAnalysis.Export=Export +GraphAnalysis.Id +GraphAnalysis.Type=Type +GraphAnalysis.Quantity=Quantity +GraphAnalysis.Property=Property +GraphAnalysis.Value=Value +GraphAnalysis.FitToScreen=Fit To Screen +GraphAnalysis.ExportLinks=Export Links +GraphAnalysis.Origin=Origin +GraphAnalysis.Destiny=Destiny +GraphAnalysis.Distance=Distance +GraphAnalysis.FileExistsConfirmation=The file {0} already exists. Continue? +GraphAnalysis.FileSaved=File {0} saved successfully. +GraphAnalysis.Results=Found {0} results in {1}ms. +GraphAnalysis.AdvancedSearch=Advanced Search +GraphAnalysis.AddToAnalysis=Add To Analysis +GraphAnalysis.Execute=Execute +GraphAnalysis.SearchLinks=Search Links +GraphAnalysis.Links=Links +GraphAnalysis.Datasources=Datasources +GraphAnalysis.LinksSearching=Searching links... Found {0}. +GraphAnalysis.CreateMultiGraph=Graph not created for this multicase. Do you want to create it now? +GraphAnalysis.MultiGraphError=Could not create multicase graph, check log! +GraphAnalysis.MultiGraphOk=Multicase graph created. +GraphAnalysis.InitialGraphMsg=Initial graph view ready. It just includes the most linked entities. +KeywordListImporter.BookmarkPrefix=Results of search for: +KeywordListImporter.Msg.1=Imported +KeywordListImporter.Msg.2=\ keywords with hits of +KeywordListImporter.SyntaxError=Syntax error in the following expressions: +HashDialog.MD5Title=MD5 Hash of exported ZIP +ImageSimilarity.ExternalError=Unable to open the selected image. +ImageSimilarity.ExternalTitle=External Similar Image +ImageSimilarity.FilterTipTitle=Similar Images Filter +ImageSimilarity.FilterTipExternal=External Reference Image +ImageSimilarity.FilterTipInternal=Reference Image +ImageSimilarity.Image=Image +ImageSimilarity.RemoveFilter=Clear Similar Images Filter +FaceSimilarity.ExternalTitle=External Similar Face +FaceSimilarity.FilterTipTitle=Similar Faces Filter +FaceSimilarity.FilterTipExternal=External Reference Face +FaceSimilarity.FilterTipInternal=Reference Face +FaceSimilarity.RemoveFilter=Clear Similar Faces Filter +FaceSimilarity.Image=Face +FaceSimilarity.MinScore=Define minimum similarity (1-100) +FaceSimilarity.LoadingFace=Loading Face... +FaceSimilarity.ExternalFaceNotFound=Face not found in external file! +MenuClass.AddToGraph=Add to link analysis +MenuClass.ChangeGalleryColCount=Change Gallery Column Count +MenuClass.ChangeLayout=Change Vertical/Horizontal Layout +MenuClass.CheckHighlighted=Check Highlighted items +MenuClass.CheckRecursivelyHighlighted=Check highlighted items and subitems +MenuClass.ClearSearches=Clear Search history +MenuClass.ColorTheme=Color Theme +MenuClass.CopyViewerImage=Take viewer screenshot +MenuClass.ExportChecked=Export Checked items +MenuClass.ExportCheckedToZip=Export Checked items To Zip +MenuClass.ExportHighlighted=Export Highlighted items +MenuClass.ExportIndexedWords=Export Indexed Word list +MenuClass.ExportItens=Export items... +MenuClass.ExportProps.Checked=Export checked items properties +MenuClass.ExportProps.Highlighed=Export highlighted items properties +MenuClass.ExportTree=Export file tree +MenuClass.ExportTree.Checked=Export file tree (checked items) +MenuClass.ExportTreeToZip.Checked=Export file tree to ZIP (checked items) +MenuClass.FindSimilarDocs=Find Similar Documents +MenuClass.FindSimilarImages=Find Similar Images +MenuClass.FindSimilarImages.Current=Highlighted item +MenuClass.FindSimilarImages.External=External image... +MenuClass.FindSimilarFaces=Find Similar Faces +MenuClass.FindSimilarFaces.Current=Highlighted item +MenuClass.FindSimilarFaces.External=External face... +MenuClass.GenerateReport=Create Indexed Report +MenuClass.GoToParent=Go to parent in file tree +MenuClass.GoToChat=Go to parent chat position +MenuClass.ImportKeywords=Import Keyword list +MenuClass.LayoutAppearance=Layout / Appearance +MenuClass.LoadBookmarks=Load Bookmarks +MenuClass.ManageBookmarks=Manage Bookmarks +MenuClass.ManageColumns=Manage Columns +MenuClass.ManageVisibleCols=Manage Visible Columns +MenuClass.PinFirstCols=Pin First Columns... +MenuClass.LoadLastColLayout=Load Last Saved Layout +MenuClass.SaveColLayout=Save Columns Layout +MenuClass.ResetColLayout=Reset Columns Layout +MenuClass.ManageFilters=Manage Filters +MenuClass.OpenViewFile = Open preview/report externally +MenuClass.LoadPanelsLayout=Load Last Saved Layout +MenuClass.SavePanelsLayout=Save Panels Layout +MenuClass.ResetLayout=Reset to Default Layout +MenuClass.SaveBookmarks=Save Bookmarks +MenuClass.UiZoom=Change User Interface Zoom +MenuClass.IconSize=Icons Size +MenuClass.UnCheckHighlighted=Uncheck Highlighted items +MenuClass.UnCheckRecursivelyHighlighted=Uncheck highlighted items and subitems +MenuListener.ChatNotFound=Parent chat not found +MenuListener.Cols=Columns: +MenuListener.ExportTree.Warn=Highlight 01 (one) tree node as export reference\! +MenuListener.Gallery=Gallery +MenuListener.PinFirstCols=Pin first columns +MenuListener.SimilarityLabel=Similarity Score (0 a 100) +MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark +MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark +MenuListener.TableAndOthers=Table and Others +MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or '{}' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. +MetadataPanel.AlphaNumeric=AlphaNumeric +MetadataPanel.Clear=Clear metadata filter +MetadataPanel.Group=Group: +MetadataPanel.Hits=Hits +MetadataPanel.Linear=Linear +MetadataPanel.Log=Logarithmic +MetadataPanel.NoRanges=No Ranges +MetadataPanel.Property=Property: +MetadataPanel.RangeSeparator=to +MetadataPanel.Scale=Scale: +MetadataPanel.Sort=Sort: +MetadataPanel.Update=Update +MetadataPanel.Filter=Filter: +MetadataPanel.FilterProps=Properties +MetadataPanel.FilterValues=Values +MetadataPanel.CopyClipboard=Copy to clipboard +MetadataPanel.UpdateWarn=[Click on Update] +NoJavaFX.Error=This application needs JavaFX to be installed! +ProcessingNotFinished.title=Processing not finished +ProcessingNotFinished.message=Processing didn''t finish successfully. Many case items could be missing, including allocated.\nTry to resume it with --continue option. +ProcessingNotFinished.cases=\ Following cases are affected: +ProcessingNotFinished.evidence=Affected evidence: +ReferencesTab.Title=Referencing +ReferencedByTab.Title=Referenced By +ResultTableModel.bookmark=bookmark +ResultTableModel.score=score +ReportDialog.AddToReport=Add to existing report +ReportDialog.AppendWarning=Existing html report is not updated yet, just indexed case! +ReportDialog.CaseInfo=Fill Case Information (case number, examiner, report number...) +ReportDialog.ChooseLabel=Choose bookmarks to insert in report: +ReportDialog.Create=Create +ReportDialog.ErrorTitle=Error +ReportDialog.Evidences=Evidence Description +ReportDialog.Examiner=Examiner +ReportDialog.FillInfo=Case Info +ReportDialog.Investigation=Case Number +ReportDialog.KeywordsFile=Keywords file (optional): +ReportDialog.LoadButton=Load +ReportDialog.LoadInfo=Load case information from .json or .asap file: +ReportDialog.NoAttachments=Do not auto export email attachments +ReportDialog.noLinkedItems=Do not auto export chat attachments +ReportDialog.Output=Output folder: +ReportDialog.OutputRequired=Output folder required\! +ReportDialog.Record=Lab Case Number +ReportDialog.RecordDate=Lab Case Date +ReportDialog.ReportDate=Report Date +ReportDialog.ReportError=Error creating report, check error log\! +ReportDialog.ReportFinished=Report created\! +ReportDialog.ReportNum=Report Number +ReportDialog.ReportTitle=Report Title +ReportDialog.Request=Request Form +ReportDialog.RequestDate=Request Date +ReportDialog.Requester=Requester +ReportDialog.TableHeader1=Bookmark +ReportDialog.TableHeader2=ThumbsOnly +ReportDialog.Title=Create Report +ParentTableModel.ParentCount=Parent Item +ResultTableModel.DateFormat=MM/dd/yyyy HH:mm:ss z +ResultTableModel.Error=ERROR +ResultTableModel.FATDateFormat=MM/dd/yyyy +ResultTableRowSorter.Sorting=Sorting... +RowComparator.SortCanceled=Sort Canceled. +SearchStateFilter.BookmarksFile=Bookmarks File +SubitemTableModel.Subitens=\ Attachs/Subitems +TextParserListener.Found=Found +TextParserListener.hits=\ hits +TreeViewModel.RootName=Evidences +UISearcher.Canceled=Search canceled\! +UISearcher.Error.Msg=Query syntax error: +UISearcher.Error.Title=Error +UnsupportedIcon.Unavailable=Thumbnail not supported +ViewerController.OfficeViewerUnSupported=Office viewer not supported in java 32bits anymore! Please install a java 64bits. +ViewerController.FixViewer=Fix Viewer +ViewerController.NextHit=Next Hit +ViewerController.PrevHit=Previous Hit +ViewerController.ShowToolBar=Show/Hide Toolbar +HexSearcherImpl.hits=Hits +HexSearcherImpl.hit=Hit +HexSearcherImpl.of=of +HexSearcherImpl.timeLeft=Time Left +HexSearcherImpl.noHits=No results found +Theme.Dark=Dark +Theme.Light=Light (default) +TimeLineGraph.highlightEventItensOnPeriod=Highlight event items in range +TimeLineGraph.highlightItensOnPeriod=Highlight items in range +TimeLineGraph.checkEventItensOnPeriod=Check event items in range +TimeLineGraph.checkItensOnPeriod=Check items in range +TimeLineGraph.filterBefore=Filter before +TimeLineGraph.filterAfter=Filter after +TimeLineGraph.selectBefore=Highlight before +TimeLineGraph.selectAfter=Highlight after +TimeLineGraph.filterAllDefinedIntervals=Filter defined ranges +TimeLineGraph.selectItensOnThisInterval=Highlight items in current range +TimeLineGraph.deleteInterval=Delete range +TimeLineGraph.continueIntervalSelection=Continue selecting ranges... +TimeLineGraph.hideSeriesOnChart=Hide on chart +TimeLineGraph.filterEventFromResultSet=Remove from result set +TimeLineGraph.unfilterEventFromResultSet=Reinclude in result set +TimeLineGraph.Year=Year +TimeLineGraph.Quarter=Quarter +TimeLineGraph.Month=Month +TimeLineGraph.Week=Week +TimeLineGraph.Day=Day +TimeLineGraph.Hour=Hour +TimeLineGraph.Minute=Minute +TimeLineGraph.Second=Second +TimeLineGraph.Millisecond=Millisecond +TimeLineGraph.donotBreak=Do not split chart +TimeLineGraph.breakByBookmark=Split chart by bookmark +TimeLineGraph.breakByMetadata=Split chart by metadata +TimeLineGraph.breakByCategory=Split chart by category +TimeLineGraph.checkingItemsProgressLabel=Checking items from time chart... +TimeLineGraph.highlightingItemsProgressLabel=Highlighting items from time chart... +TimeLineGraph.PeriodGranularity=Time Scale +TimeLineGraph.Timezone=Time Zone +TimeLineGraph.applyDefinedFilters=Apply defined filters +TimeLineGraph.clearDefinedFilters=Clear defined filters +TimeLineGraph.openIntervalsDialogMenu=Open time range definition dialog... +TimeLineGraph.visibleRangeToGreat=The visible range is too large for the current scale %s.\n Would you like to continue and zoom in centering on the middle date %s? +TimeLineGraph.visibleZoominForGranularity=Max zoom in reached for the scale %s.\n Would you like to change the scale to %s and continue to zoom in? +TimeLineGraph.visibleZoomoutForGranularity=Max zoom out reached for the scale %s.\n Would you like to change the scale to %s and continue to zoom out? +TimeLineGraph.syncTableSelectionInChartView=Show table highlights in time chart +TimeLineGraph.resetZoom=Reset Zoom +TimeLineGraph.selectAllEventTypes=Select all event types +TimeLineGraph.unselectAllEventTypes=Unselect all event types +TimeLineGraph.checkEventItems=Check corresponding event type items +TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items +IntervalDefinitionDialog.Title=Time line chart defined ranges +IntervalDefinitionDialog.dateFormat=MM/dd/yyyy +IntervalDefinitionDialog.hourFormat=HH:mm:ss +IntervalDefinitionDialog.Exit=Exit +App.appliedFilters=Filters +iped.app.graph.FilterSelectedEdges.filtererName=Graph Edge Filter +iped.app.timelinegraph.IpedChartsPanel.filtererName=Time Chart Filter +iped.app.ui.App.DuplicatesFilterer.filtererName=Duplicates Filter +iped.app.ui.App.SimilarDocumentFilterer.filtererName=Similar Documents Filter +iped.app.ui.App.SimilarFacesSearchFilterer.filtererName=Similar Faces Filter +iped.app.ui.App.SimilarImagesQueryFilterer.filtererName=Similar Images Filter +iped.app.ui.App.SearchFilterer.filtererName=Keyword Search Filter +iped.app.ui.BookmarksTreeListener.filtererName=Bookmarks Filter +iped.app.ui.CategoryTreeListener.filtererName=Category Filter +iped.app.ui.ComboFilterer.filtererName=Predefined Filter +iped.app.ui.ComboFilterer.tooltip=Select a Predefined Filter +iped.app.ui.MetadataPanel.filtererName=Metadata Filter +iped.app.ui.TableHeaderFilterManager.filtererName=Table Header Filter +iped.app.ui.TimelineListener.filtererName=Timeline Filter +iped.app.ui.TreeListener.filtererName=Evidence Tree Filter +iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Combined Filter +iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Apply Combined Filter +FilterValue.Duplicates=Duplicate Filter Result +FilterValue.SimilarDocument=Similar Documents +FilterValue.SimilarFace=Similar Faces: +FilterValue.SimilarImage=Similar Images: +FilterValue.TimelineView=Timeline View Result +Operand.AND=AND +Operand.OR=OR +OperandMenu.invertFilter=Invert filter +OperandMenu.changeOperand=Change to +OperandMenu.addAnd=Add AND node +OperandMenu.addOr=Add OR node +OperandMenu.removeNode=Remove node +FiltererMenu.clearFilters=Clear filters +FiltererMenu.goToItem=Go to referenced item +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set. +FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception. +FieldValuePopupMenu.NonEmpty=Non empty +FieldValuePopupMenu.Empty=Empty +FieldValuePopupMenu.Contains=Contains ... +FieldValuePopupMenu.NotContains=Not Contains ... +FieldValuePopupMenu.After=After ... +FieldValuePopupMenu.Before=Before ... +FieldValuePopupMenu.GreaterThan=Filter greater than... +FieldValuePopupMenu.LessThan=Filter less than... +FieldValuePopupMenu.Equals=Equals to... +FieldValuePopupMenu.StartsWith=Starts with... +FieldValuePopupMenu.Clear=Clear +FieldValuePopupMenu.Filter=Filter \ No newline at end of file diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties new file mode 100644 index 0000000000..2a9e8db475 --- /dev/null +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -0,0 +1,125 @@ +ExportCSVTask.CsvColNames="Name","Link","Size","Extension","Bookmark","Category","MD5","SHA1","Deleted","Carved","Accessed","Modified","Created","Path","TrackId"\r\n +ExportCSVTask.CsvSeparator=, +ExportCSVTask.CsvName=FileList.csv +ExportCSVTask.LinkFunction=HYPERLINK +ExportCSVTask.LinkName=Open +ExportFileTask.DeletingData1=Deleting removed data from FS... +ExportFileTask.DeletingData2=Deleting removed data from storages... +ExportFileTask.DeletedData1=Deleted data from FS: {} +ExportFileTask.DeletedData2=Deleted data from storages: {} +ExportFileTask.ExportFolder=Exported/files +HTMLReportTask.Bookmark=Bookmark +HTMLReportTask.Bookmarks=Bookmarks +HTMLReportTask.Categories=Categories +HTMLReportTask.Category=Category +HTMLReportTask.Dateformat=MM/dd/yyyy HH:mm:ss +HTMLReportTask.FileCount=File Count +HTMLReportTask.FirstPage=First Page +HTMLReportTask.GalleryLink=Image Gallery +HTMLReportTask.GalleryTitle=Thumbnails +HTMLReportTask.LastPage=Last Page +HTMLReportTask.MakingHtmlReport=Creating HTML report... +HTMLReportTask.NextPage=Next Page +HTMLReportTask.No=No +HTMLReportTask.NoBookmarks=[No Bookmark] +HTMLReportTask.of=\ of +HTMLReportTask.Page=Page +HTMLReportTask.PreviewReport=Preview Report +HTMLReportTask.PrevPage=Previous Page +HTMLReportTask.ReportFileName=report.htm +HTMLReportTask.ReportSubFolder=report +HTMLReportTask.VideoThumbs=Video Thumbnails +HTMLReportTask.Yes=Yes +Main.Finished=Finished +IPEDSource.ImageNotFound=Image Not Found:\ +IPEDSource.ImgFragNotFound=Image segment not found:\ +ItemProducer.Adding=Adding ' +JavaVersion.Error=Unsupported java version. Update to version {}. +JavaVersion.Warn=Java version {} not tested, unexpected errors may occur! +JavaVersion.Bug=Problematic Java version {1} detected! Update to the latest Java {2} or the program may crash. +JavaVersion.Arch=You are using a java 32bits, some features won't work properly. Please update to a java 64 bits! +Manager.Adding=Adding " +Manager.ClosingIndex=Closing Index... +Manager.CopyingIndex=Copying Index... +Manager.OpeningIndex=Opening Index... +Manager.DeletingTreeNodes=Deleting empty tree nodes +Manager.FilteringKeywords=Filtering Keywords... +Manager.Optimizing=Optimizing index... +Manager.CommitStarted=Starting commit... +Manager.CommitFinished=Commit finished. +P2PBookmarker.P2PBookmarkPrefix=Probably Shared By\ +ProgressConsole.files=\ files +ProgressConsole.FinishIn=\ Finish in\ +ProgressConsole.Found=Found\ +ProgressConsole.Processing=Processing\ +ProgressConsole.Starting=Starting... +ProgressFrame.ActiveProcessed=Actual Items Processed +ProgressFrame.AlreadyOpen=The analysis app is already open\! +ProgressFrame.Carved=Carved Items +ProgressFrame.CarvedDiscarded=Carved Discarded +ProgressFrame.Continue=Continue +ProgressFrame.CurrentItems=Current Items +ProgressFrame.CurrentSpeed=Current Speed +ProgressFrame.Environment=Environment +ProgressFrame.EstimatedEnd=Estimated Finish +ProgressFrame.Exported=Exported Items +ProgressFrame.FinishIn=\ - Finish in\ +ProgressFrame.Found=Found\ +ProgressFrame.FreeMemory=Free Memory +ProgressFrame.Ignored=Ignored Items +ProgressFrame.IncompleteProcessing=Many case items could be unavailable until processing is finished\! +ProgressFrame.items=\ items +ProgressFrame.ItemsFound=Items Found +ProgressFrame.ItemsProcessed=Items Processed +ProgressFrame.JavaVersion=Java Version +ProgressFrame.MaxMemory=Maximum Memory +ProgressFrame.MeanSpeed=Average Speed +ProgressFrame.OpenApp=Preview Case +ProgressFrame.OutputFree=Output Free +ProgressFrame.OutputTempFree=Output/Temp Free +ProgressFrame.OutputTempVolume=Output/Temp Volume +ProgressFrame.OutputVolume=Output Volume +ProgressFrame.ParserTimes=Parser Times +ProgressFrame.ParsingErrors=Parsing Errors +ProgressFrame.Pause=Pause +ProgressFrame.Paused=[PAUSED] +ProgressFrame.Pausing=[PAUSING...] +ProgressFrame.PhysicalMemory=Physical Memory +ProgressFrame.Processing=Processing\ +ProgressFrame.ProcessingTime=Processing Time +ProgressFrame.ReadErrors=Read Errors +ProgressFrame.Starting=Starting... +ProgressFrame.Statistics=Statistics +ProgressFrame.SubitemsProcessed=Subitems Processed +ProgressFrame.TaskTimes=Task Times +ProgressFrame.TempFree=Temp Free +ProgressFrame.TempVolume=Temp Volume +ProgressFrame.Timeouts=Timeouts +ProgressFrame.TotalMemory=Total Memory +ProgressFrame.VolumeFound=Volume Found +ProgressFrame.VolumeProcessed=Volume Processed +ProgressFrame.WaitingItem=Waiting Item... +RegexTask.SeparatorNotFound.1=Separator '=' not found in\ +RegexTask.SeparatorNotFound.2=\ line:\ +ReportInfo.EvidencePrefix=Evidence\ +SleuthkitReader.Creating=Creating\ +SleuthkitReader.WaitDecode=Wait, decoding image\ +Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease 'numthreads' in LocalConfig.txt. +Statistics.LowMemory.Title=Memory Alert +UfedXmlReader.Attachments=Attachments +UfedXmlReader.Bcc=Bcc +UfedXmlReader.Cc=Cc +UfedXmlReader.Date=Date +UfedXmlReader.From=From +UfedXmlReader.Subject=Subject +UfedXmlReader.To=To +UfedXmlReader.LowConfidence=\ [low confidence] +UfedXmlReader.DeviceInfo=Device Information +UfedXmlReader.Extraction=Extraction +Worker.Starting=Starting\ +GraphAnalysis.LinksCalls=Calls +GraphAnalysis.LinksContacts=Contacts +GraphAnalysis.LinksEmails=E-mails +GraphAnalysis.LinksInstantMessages=Instant Messages +GraphAnalysis.LinksWireless=Wireless Networks +GraphAnalysis.LinksDocuments=Documents \ No newline at end of file diff --git a/iped-app/resources/localization/iped-filters_fr_FR.properties b/iped-app/resources/localization/iped-filters_fr_FR.properties new file mode 100644 index 0000000000..3e0840fe35 --- /dev/null +++ b/iped-app/resources/localization/iped-filters_fr_FR.properties @@ -0,0 +1,18 @@ +Filter\ Known\ Hashes=Filter\ Known\ Hashes +Hash\ Alert=Hash\ Alert +Hash\ Alert\ (Child\ Porn)=Hash\ Alert\ (Child\ Porn) +PhotoDNA\ Alert\ (Child\ Porn)=PhotoDNA\ Alert\ (Child\ Porn) +Encrypted\ Files=Encrypted\ Files +Possibly\ encrypted\ (entropy)=Possibly\ encrypted\ (entropy) +Parsing\ Error=Parsing\ Error +Read\ Error=Read\ Error +Timeout=Timeout +Actual\ Files=Actual\ Files +Deleted\ Files=Deleted\ Files +Carved\ Files=Carved\ Files +Geo-referenced\ Files=Geo-referenced\ Files +Container\ Subitems=Container\ Subitems +Containers\ not\ Expanded=Containers\ not\ Expanded +Explicit\ Images\ &\ Videos=Explicit\ Images\ &\ Videos +Images\ &\ Videos\ with\ Thumbs=Images\ &\ Videos\ with\ Thumbs +Files\ with\ Thumbnails=Files\ with\ Thumbnails \ No newline at end of file diff --git a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties new file mode 100644 index 0000000000..e1b0ade91f --- /dev/null +++ b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties @@ -0,0 +1,29 @@ +App.Map=Map +KMLResult.LoadingGPSData=Loading GPS Data +KMLResult.NoGPSItem=No Item with GPS data Found\! +KMLResult.Results=Results +KMLResult.Save=Save +KMLResult.SearchResults=Search Results +KMLResult.SearchResultsDescription=GPS Search Results. +KMLResult.ShowInTree=Show in tree. +JMapOptionsPane.title=Select map tile source to use +JMapOptionsPane.GoogleApiKeyLabel=Enter a valid GoogleMaps API Key +JMapOptionsPane.UseLeaflet=Use Leaflet +JMapOptionsPane.UrlPatternLabel=Enter map tile source URL pattern: +JMapOptionsPane.AnotherURL=Another URL +JMapOptionsPane.UseGoogleMaps=Use GoogleMaps +toolbar.Radius=Radius +toolbar.ExportKML=Export KML +toolbar.Next=Next +toolbar.Previous=Previous +toolbar.First=First +toolbar.Last=Last +toolbar.Area=Area +toolbar.Selection=Selection +toolbar.Navigation=Navigation +toolbar.Sorting=Sorting +toolbar.DisplayAll=Display All +toolbar.MappedItensCount=Mapped Itens +toolbar.ChangeTileServer=Change Tile Server +gpxXslt.dateTrailLabel=Trail in +gpxXslt.routeLabel=Route \ No newline at end of file diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties new file mode 100644 index 0000000000..6b441d003d --- /dev/null +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -0,0 +1,507 @@ +AbstractDBParser.ProbableDate=*Possible date decoded.\n +AbstractDBParser.Table=Table:\ +AresParser.Album=Album +AresParser.Artist=Artist +AresParser.Category=Category +AresParser.Comments=Comments +AresParser.Corrupted=Corrupted +AresParser.DateFormat=MM/dd/yyyy HH:mm:ss +AresParser.FileDate=File Date (Local Time) +AresParser.FoundInCase=Found in the Case +AresParser.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +AresParser.HashSha1=Hash SHA1 +AresParser.No=No +AresParser.Path=Full Path +AresParser.Seq=Seq +AresParser.Shared=Shared +AresParser.Size=Size +AresParser.Title=Title +AresParser.URL=URL +AresParser.Yes=Yes +DateFormat=MM/dd/yyyy HH:mm:ss +DiscordParser.Attachments=Attachments +DiscordParser.Start=Start +DiscordParser.End=End +DiscordParser.EditTime=Edit time: +DiscordParser.Participants=Participants +DiscordParser.Reactions=Reactions: +DiscordParser.DateFormat0=(hh:mm:ss a MM/dd/yyyy) +DiscordParser.DateFormat2=MM/dd/yy +EmbeddedDocumentParser.UnNamed=[UnNamed]- +FirefoxSessions.TabsHeader=Mozilla Firefox Tabs From Saved Sessions +FirefoxSessions.TabsTitle=Title +FirefoxSessions.TabsURL=URL +FirefoxSessions.CookiesHeader=Mozilla Firefox Cookies From Saved Sessions +FirefoxSessions.CookiesHost=Host +FirefoxSessions.CookiesPath=Path +FirefoxSessions.CookiesName=Name +FirefoxSessions.CookiesCookie=Cookie +IncrediMailParser.NoSubject=[No Subject] +StandardParser.MetadataTitle=METADATA: +KnownMetParser.AcceptedRequests=Accepted Requests +KnownMetParser.BytesSent=Bytes Sent +KnownMetParser.DataFormat=MM/dd/yyyy HH:mm:ss +KnownMetParser.Hash=Hash eDonkey +KnownMetParser.FoundInCase=Found in the Case +KnownMetParser.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +KnownMetParser.LastModDate=Last Modified Date (UTC) +KnownMetParser.LastPubDate=Last Publication Date (UTC) +KnownMetParser.LastShareDate=Last Shared Date +KnownMetParser.Name=File Name +KnownMetParser.Requests=Total Requests +KnownMetParser.Seq=Seq +KnownMetParser.Size=File Size +KnownMetParser.TempFile=Temporary File +KnownMetParser.Totals=TOTALS +KnownMetParser.Yes=Yes +PreferencesDat.Version=Version +PreferencesDat.UserHash=User Hash +LibpffPSTParser.AttachedMessage=Attached Message +LibpffPSTParser.Attachments=Attachments +LibpffPSTParser.NoSubject=[No Subject] +LNKShortcutParser.Accessed=Last Accessed Date +LNKShortcutParser.BirthDroidFileId=Birth Droid File Identifier +LNKShortcutParser.BirthDroidVolId=Birth Droid Volume Identifier +LNKShortcutParser.CmdLineArgs=Command Line Args +LNKShortcutParser.CommonPath=Common Path +LNKShortcutParser.CommonPathUnicode=Common Path - Unicode +LNKShortcutParser.Created=Created Date +LNKShortcutParser.DataNotDecoded=(data not decoded) +LNKShortcutParser.DataStrings=Data Strings ( +LNKShortcutParser.DateFormat=MM/dd/yyyy HH:mm:ss [z] +LNKShortcutParser.Description=Description +LNKShortcutParser.Directory=Directory +LNKShortcutParser.DistributedLinkTrackProps=Distributed Link Tracker Properties +LNKShortcutParser.DriveSerial=Drive Serial Number +LNKShortcutParser.DriveType=Drive type +LNKShortcutParser.DroidFileId=Droid File Identifier +LNKShortcutParser.DroidVolId=Droid Volume Identifier +LNKShortcutParser.EntryType=Entry Type +LNKShortcutParser.Extensions=Extensions +LNKShortcutParser.File=File +LNKShortcutParser.FileAttr=File Attributes +LNKShortcutParser.FileHeader=File Header (LNK) +LNKShortcutParser.HotKey=Hot Key +LNKShortcutParser.IconIndex=Icon Index +LNKShortcutParser.IconLocation=Icon Location +LNKShortcutParser.LastMod=Last Modified +LNKShortcutParser.LinkAttr=Link Attributes (Data Flags) +LNKShortcutParser.LinkLocationInfo=Link Location Information (HasLinkInfo) +LNKShortcutParser.LinkTargetID=Link Target Identifier (HasTargetIDList) +LNKShortcutParser.LocalizedNames=Local Name Shell +LNKShortcutParser.LocalPath=Local Path +LNKShortcutParser.LocalPathUnicode=Local Path - Unicode +LNKShortcutParser.LocationFlags=Location Flags +LNKShortcutParser.MachineId=Machine Identifier +LNKShortcutParser.Modified=Last Modified Date +LNKShortcutParser.NetComments=Net Comments +LNKShortcutParser.NetDescription=Net Description +LNKShortcutParser.NetDeviceName=Net Device Name +LNKShortcutParser.NetDevNameUnicode=Net Device Name - Unicode +LNKShortcutParser.NetItemName=Net - Item Name +LNKShortcutParser.NetItemType=Net - Item Type +LNKShortcutParser.NetProviderType=Net Provider Type +LNKShortcutParser.NetShare=Net Share Name +LNKShortcutParser.NetShareUnicode=Net Share Name - Unicode +LNKShortcutParser.NtfsRef=NTFS Reference +LNKShortcutParser.PrimaryName=Primary Name +LNKShortcutParser.RelativePath=Relative Path +LNKShortcutParser.SecondaryName=Secondary Name +LNKShortcutParser.Size=Size +LNKShortcutParser.TargetAttr=Target Attributes +LNKShortcutParser.TargetSize=Target Size +LNKShortcutParser.UnknownData=Unknown data +LNKShortcutParser.VolumeLabel=Volume Label +LNKShortcutParser.VolumeLabelUnicode=Volume Label - Unicode +LNKShortcutParser.WindowAttr=Window Attributes +LNKShortcutParser.WorkingDir=Working Directory +MboxParser.NoSubject=[No Subject] +MetadataUtil.NoSubject=[No Subject] +MSAccessParser.Table=Table:\ +OutlookPSTParser.Attachment=Attachment- +OutlookPSTParser.Attachments=Attachments +OutlookPSTParser.DateFormat=MM/dd/yyyy HH:mm:ss +OutlookPSTParser.From=From +OutlookPSTParser.NoSubject=[No Subject] +OutlookPSTParser.Sent=Sent +OutlookPSTParser.Subject=Subject +OutlookPSTParser.To=To: +OutlookPSTParser.ImportanceHigh=High +OutlookPSTParser.ImportanceNormal=Normal +OutlookPSTParser.ImportanceLow=Low +PythonModule.JepNotFound=JEP not found, all python modules were disabled.\ +PythonModule.ModuleDisabled=\ module disabled.\ +PythonModule.SeeManual=See https://github.com/sepinf-inc/IPED/wiki/User-Manual#python-modules +ReportGenerator.DownloadedFile=[Downloaded File] +ReportGenerator.TranscriptionTitle=Automatic transcription +ReportGenerator.Unknown=Unknown +ReportGenerator.UnknownDate=Unknown Date +RFC822Parser.AttachedEmail=AttachedEmail.eml +RFC822Parser.UnNamed=[UnNamed] +SkypeConversation.SkypeChat=Skype Chat\ +SkypeFileTransfer.Download=Download +SkypeFileTransfer.FileOffer=File Offering (*) +SkypeFileTransfer.FileSend=File Sending +SkypeParser.DateFormat=MM/dd/yyyy HH:mm:ss +SkypeParser.SkypeTransfer=Skype Transfer +SkypeReport.About=About +SkypeReport.AcceptDate=Accept Date +SkypeReport.Attribute=Attribute +SkypeReport.Author=Author +SkypeReport.Avatar=Avatar: +SkypeReport.AvatarDate=Avatar Date +SkypeReport.BirthDate=Birth Date +SkypeReport.Chat=Chat +SkypeReport.ChatID=Chat ID +SkypeReport.ChatName=Chat Name +SkypeReport.City=City +SkypeReport.ContactCount=Contact Count:\ +SkypeReport.Content=Content +SkypeReport.Country=Country +SkypeReport.Date=Date +SkypeReport.DisplayName=Display Name +SkypeReport.EditedBy=Edited By +SkypeReport.EditedDate=Edited Date +SkypeReport.Email=Email +SkypeReport.Empty=[Empty] +SkypeReport.FileName=File Name +SkypeReport.FileSize=File Size +SkypeReport.FinishDate=Finish Date +SkypeReport.From=From +SkypeReport.FullName=Full Name +SkypeReport.FullPath=Full Path +SkypeReport.HomePhone=Home Phone +SkypeReport.ID=ID +SkypeReport.ImageCacheMsg=Image from media cache +SkypeReport.LastContactedDate=Last Contacted Date +SkypeReport.LastOnlineDate=Last Online Date +SkypeReport.LikelyFile=Likely File: +SkypeReport.MessageCount=Message Count:\ +SkypeReport.Messages=Messages +SkypeReport.MobilePhone=Mobile Phone +SkypeReport.Mood=Mood +SkypeReport.MoodDate=Mood Date +SkypeReport.OfficePhone=Office Phone +SkypeReport.Participants=Participants: +SkypeReport.Phone=Phones +SkypeReport.ProfileDate=Profile Date +SkypeReport.Province=Province +SkypeReport.PstnNum=PSTN Number +SkypeReport.Recipient=Recipient +SkypeReport.RemoteID=Remote ID +SkypeReport.SentBytes=Sent Bytes +SkypeReport.SkypeID=Skype ID +SkypeReport.StartDate=Start Date +SkypeReport.TotalCount=Total Count +SkypeReport.TransferCount=Transfer Count:\ +SkypeReport.TypeDescr=Type Description +SkypeReport.UserData=User Data: +SkypeReport.Value=Value +SQLite3TableReader.DateFormat=MM/dd/yyyy_HH:mm:ssz +WhatsAppReport.AccountID=Account ID:\ +WhatsAppReport.ChatContinuation=[Chat continuation...] +WhatsAppReport.ChatContinues=[Chat continues...] +WhatsAppReport.ContactDeleted=Recovered deleted contact +WhatsAppReport.RecoveredChat=Recovered deleted chat +WhatsAppReport.ContactID=Contact ID:\ +WhatsAppReport.DisplayName=Display Name:\ +WhatsAppReport.GivenName=Given Name:\ +WhatsAppReport.NickName=NickName:\ +WhatsAppReport.SortName=Sort Name:\ +WhatsAppReport.Status=Status:\ +WhatsAppReport.Video=Video +WhatsAppReport.WAName=WA Name:\ +WhatsAppReport.UnknownMessage=Unknown Message. +WhatsAppReport.UnknownMediaMessage=Unknown Media Message +WhatsAppReport.Forwarded=Forwarded +WhatsAppReport.SecurityChanged=Security code changed. Tap for more info. +WhatsAppReport.BlockedContact=You blocked this contact. Tap to unblock. +WhatsAppReport.UnblockedContact=You unblocked this contact. +WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info. +WhatsAppReport.BusinessToStandard=This business account has now registered as a standard account. Tap for more info. +WhatsAppReport.ChatBusiness=This chat is with a business account. Tap for more info. +WhatsAppReport.ChatEncrypted=Messages and calls are end-to-end encrypted. No one outside of this chat, not even WhatsApp, can read or listen to them. Tap to learn more. +WhatsAppReport.ChatNowEncrypted=Messages to this chat and calls are now secured with end-to-end encryption. Tap for more info. +WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info. +WhatsAppReport.GroupNowEncrypted=Messages to this group are now secured with end-to-end encryption. Tap for more info. +WhatsAppReport.MissedVideoCall=Missed video call +WhatsAppReport.MissedVoiceCall=Missed voice call +WhatsAppReport.RefusedVoiceCall=Refused voice call +WhatsAppReport.RefusedVideoCall=Refused video call +WhatsAppReport.UnavailableVoiceCall=Unavailable voice call +WhatsAppReport.UnavailableVideoCall=Unavailable video call +WhatsAppReport.UnknownVoiceCall=Unknown type of voice call +WhatsAppReport.UnknownVideoCall=Unknown type of video call +WhatsAppReport.GroupCreated=Group created by +WhatsAppReport.UserAddedToCommunity=added user to community +WhatsAppReport.UserAddedToGroup=added user to group +WhatsAppReport.UserCommunityAdmin=set user as community admin +WhatsAppReport.CommunityAdmin=is now community admin +WhatsAppReport.UserLeftGroup=User left group +WhatsAppReport.UserRemovedGroup=removed user from group +WhatsAppReport.AddedToCommunity=added to community +WhatsAppReport.AddedToGroup=added to group +WhatsAppReport.RemovedGroup=removed from group +WhatsAppReport.GroupIconChanged=Group icon changed +WhatsAppReport.GroupIconDeleted=Group icon deleted +WhatsAppReport.MessageDeleted=Message deleted +WhatsAppReport.MessageDeletedByAdmin=Message deleted by admin +WhatsAppReport.MessageDeletedBySender=Message deleted by the sender +WhatsAppReport.MessageDeletedRecovered=Recovered deleted message +WhatsAppReport.LocationMessage=Location +WhatsAppReport.SharedLocationMessage=Shared Location +WhatsAppReport.Latitude=Latitude +WhatsAppReport.Longitude=Longitude +WhatsAppReport.Attachment=Attachment +WhatsAppReport.VoiceCall=Voice Call +WhatsAppReport.VideoCall=Video Call +WhatsAppReport.UserJoinedGroupCommunity=joined group from community +WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation +WhatsAppReport.UserJoinedGroupLink=joined group from shared link +WhatsAppReport.ResetGroupLink=reset this group's invite link +WhatsAppReport.GroupDescriptionChanged=Group description changed +WhatsAppReport.GroupDescriptionDeleted=deleted group description +WhatsAppReport.GroupNameChanged=changed the group name to +WhatsAppReport.SubjectChanged=Subject changed +WhatsAppReport.UserAdmin=is now admin of this group +WhatsAppReport.YouAdmin=You are now admin of this group +WhatsAppReport.YouNotAdmin=You are no longer an admin of this group +WhatsAppReport.WaitingMessage=Waiting for message +WhatsAppReport.Duration=Duration +WhatsAppReport.AudioMessageTitle=Audio Message File +WhatsAppReport.VideoMessageTitle=Video Message File +WhatsAppReport.Contact=Contact +WhatsAppReport.RecoveredFrom=Recovered from +WhatsAppReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +WhatsAppReport.Owner=Owner +WhatsAppReport.Recovered=Recovered +WhatsAppReport.QuoteNotFound=Quoted message not found +WhatsAppReport.Document=Document +WhatsAppReport.Photo=Photo +WhatsAppReport.Audio=Audio +WhatsAppReport.ChatFragment=This quoted message is located on chat fragment +WhatsAppReport.ReferenceId=Quoted message reference ID +WhatsAppReport.Close=Close +WhatsAppReport.GroupInvite=WhatsApp Group Invite +WhatsAppReport.Poll=Poll +WhatsAppReport.Vote=vote +WhatsAppReport.Votes=votes +WhatsAppReport.EphemeralDurationChanged=changed the duration of disappearing messages to +WhatsAppReport.EphemeralDefault=uses a default timer for disappearing messages messages in new chats. All new messages will disappear from this chat after +WhatsAppReport.EphemeralOn=turned on disappearing messages. All new messages will disappear from this chat after +WhatsAppReport.EphemeralOff=turned off disappearing messages. +WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat. +WhatsAppReport.Days=days +WhatsAppReport.Hours=hours +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group. +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info. +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info. +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages. +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages. +WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group. +WhatsAppReport.ChangedDevice=changed device. +WhatsAppReport.ChangedNumberTo=changed to +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number. +WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number. +WhatsAppReport.SenderInContacts=is in your contacts. +WhatsAppReport.SenderAddedToContacts=was added to your contacts. +WhatsAppReport.BusinessChangedName=This business account changed its name. +WhatsAppReport.ChatBusinessOfficial=This chat is with an official business account. +WhatsAppReport.GroupAddedToCommunity=Group was added to the community +WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community +WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group. +WhatsAppReport.CommunityManagementAction=Community management action. +WhatsAppReport.CommunityRenamed=changed the community's name +WhatsAppReport.CommunityWelcome=Welcome to the community. +WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group. +WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number. +WhatsAppReport.ChannelAddedPrivacy=This channel has added privacy for your profile and phone number. +WhatsAppReport.ChannelCreated=Channel was created. +WhatsAppReport.ProductTitle=Product +WhatsAppReport.ProductSeller=Seller +WhatsAppReport.ProductAmount=Amount +WhatsAppReport.OrderCount=Item Count +WhatsAppReport.EditedOn=Edited on +WhatsAppReport.UserJoinedWhatsApp=joined WhatsApp +WhatsAppReport.PinnedMessage=pinned a message +WhatsAppReport.AIThirdParty=This AI is from a third-party developer. Meta receives your AI chats to improve AI quality. +VCardParser.FormattedName=Formatted Name +VCardParser.Name=Name +VCardParser.Nickname=Nickname +VCardParser.Email=Email +VCardParser.Telephone=Telephone +VCardParser.Organization=Organization +VCardParser.Notes=Notes +VCardParser.Photo=Photo +BitTorrentResumeDatParser.DateFormat=MM/dd/yyyy HH:mm:ss +BitTorrentResumeDatParser.TorrentFile=Torrent file +BitTorrentResumeDatParser.RootDir=Root directory +BitTorrentResumeDatParser.Path=Full path +BitTorrentResumeDatParser.Downloaded=Downloaded (bytes) +BitTorrentResumeDatParser.Uploaded=Uploaded (bytes) +BitTorrentResumeDatParser.AddedDate=Date/Time added +BitTorrentResumeDatParser.CompletedDate=Date/Time completed +BitTorrentResumeDatParser.Time=Date/Time +BitTorrentResumeDatParser.LastSeenCompleteDate=Last Seen Complete +BitTorrentResumeDatParser.SeedTime=Seed time (s) +BitTorrentResumeDatParser.RunTime=Run time (s) +TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss +TorrentFileDatParser.FullPath=Full Path +TorrentFileDatParser.FileSize=File Size (Bytes) +TorrentFileDatParser.MD5=MD5 Hash +TorrentFileDatParser.SHA1=SHA1 Hash +TorrentFileDatParser.ED2K=ED2K Hash +TorrentFileDatParser.Announce=Tracker URL +TorrentFileDatParser.Comment=Comment +TorrentFileDatParser.CreatedBy=Created by +TorrentFileDatParser.CreationDate=Creation date +TorrentFileDatParser.InfoHash=InfoHash +TorrentFileDatParser.Name=Name +TorrentFileDatParser.NumberOfFiles=Number of files +TorrentFileDatParser.NumberOfPieces=Number of pieces +TorrentFileDatParser.Piece=Piece +TorrentFileDatParser.PieceLength=Piece length +TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify. +TelegramContact.ContactID=Contact ID: +TelegramContact.FirstName=First Name: +TelegramContact.LastName=Last Name: +TelegramContact.Username=Username: +TelegramContact.Phone=Phone: +TelegramContact.Channel=Telegram Channel +TelegramContact.Group=Telegram Group +TelegramReport.GroupCreate=Group/chat/channel created +TelegramReport.AddMember=Add members +TelegramReport.RemoveMember=Remove members +TelegramReport.PhotoUpdated=Photo Updated +TelegramReport.TitleUpdated=Title Updated +TelegramReport.pinnMessage=pinned Message Updated +TelegramReport.UserJoinLink=User joined by Link +TelegramReport.ChangeToChannel=Change group to channel +TelegramReport.HistoryCleared=history Cleared +TelegramReport.HistoryScreenshot=history Screenshot +TelegramReport.MessageAutoRemove=Set message auto remove timeout +TelegramReport.GameScore=game Score +TelegramReport.PhoneCall=phone Call +TelegramReport.PaymentSent=payment Sent +TelegramReport.CustomText=custom Text +TelegramReport.BotAcess=bot Domain Access Granted +TelegramReport.BotSent=bot SentSecure Values +TelegramReport.PeerJoin=peer Joined +TelegramReport.PhoneNumberRequest=phone Number Request +TelegramReport.ContactSignUp=Contact sign up +TelegramReport.ChatDeletePhoto=Chat delete photo +TelegramReport.UnknownMessage=Unknown message type:\ +TelegramReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +TelegramReport.geoProximityReached=geoProximity alert was Reached\ +TelegramReport.groupPhoneCall=Group phone call +TelegramReport.inviteToGroupPhoneCall=Invited the group to a phone call +TelegramReport.ChangeChatTheme=Changed the theme of the chat +TelegramReport.joinedByRequest=User joined by Request +TelegramReport.ChannelMigratedFromGroup=This channel migrated from a group +TelegramReport.RecoveredChannel=Recovered deleted channel +TelegramReport.RecoveredGroup=Recovered deleted group +TelegramReport.Link=Link +TelegramReport.LinkTitle=Title +TelegramReport.LinkURL=URL +TelegramReport.Pool=Pool +ThreemaReport.ChatContinuation=[Chat continuation] +ThreemaReport.ChatContinues=[Chat continues...] +ThreemaReport.UnknownMessage=Unknown Message +ThreemaReport.GroupRenamed=Group renamed +ThreemaReport.GroupNoteStart=*You are alone in here* Use this chat as a secure notebook for text, media, and documents. +ThreemaReport.GroupNoteEnd=*You are no longer alone in this chat* New messages will be sent to all group members. +ThreemaReport.GroupCreatorLeft=*This group is orphaned* The group creator has left the group, and it can no longer be maintained. One of the remaining members should clone the group (via group details) to become the new admin. +ThreemaReport.GroupIconChanged=Group picture changed +ThreemaReport.GroupCallStarted=Group call started +ThreemaReport.GroupCallEnded=Group call ended +ThreemaReport.UserLeftGroup=User left this group +ThreemaReport.UserJoinedGroup=User joined this group +ThreemaReport.UserRemovedFromGroup=User removed from this group +ThreemaReport.SelfAddedToGroup=You were added to this group +ThreemaReport.SelfRemovedToGroup=You were removed from this group +ThreemaReport.SelfLeftGroup=You have left the group +ThreemaReport.MissedCall=Missed call +ThreemaReport.RejectedCall=Call Rejected +ThreemaReport.RejectedCallBusy=Call Rejected (Busy) +ThreemaReport.RejectedCallTimeout=Call recipient is unavailable +ThreemaReport.RejectedCallDisabled=Threema calls disabled by recipient +ThreemaReport.RejectedCallUnknown=Call Rejected (Unknown) +ThreemaReport.RejectedCallOffHours=Call Rejected (OffHours) +ThreemaReport.WorkConsumerInfo=This contact uses different version (Work/Private) from Threema App +ThreemaReport.ThreemaCall=Threema Call +ThreemaReport.Duration=Duration +ThreemaReport.UnknownMediaMessage=Unknown Media message +ThreemaReport.LocationMessage=Location: +ThreemaReport.AudioMessageTitle=Audio Message File +ThreemaReport.VideoMessageTitle=Video Message File +ThreemaReport.Video=Video +ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +P2P.FoundInPedoHashDB=* Red lines mean the hashes were found in child porn alert hash databases. +Win10Mail.NotFound=Not Found +APKParser.Permissions=Permissions Required +APKParser.Manifest=Manifest XML +APKParser.Package=Package +APKParser.Version=Version +APKParser.SDKVersion=SDK Version +APKParser.Features=Features +APKParser.Signers=Signers +APKParser.SignersV2=Signers(V2) +APKParser.Path=Path +APKParser.Certificate=Certificate +APKParser.Algorithm=Algorithm +APKParser.MD5=MD5 +APKParser.OID=OID +APKParser.StartDate=Start Date +APKParser.EndDate=End Date +OFXParser.AccessKey=Access Key +OFXParser.AccountKey=Account Key +OFXParser.AccountLastUpdate=Account Last Update +OFXParser.AccountNumber=Account Number +OFXParser.AccountType=Account Type +OFXParser.Amount=Amount +OFXParser.AvailableBalanceAmount=Available Balance Amount +OFXParser.AvailableBalanceDate=Available Balance Date +OFXParser.Bank=Bank +OFXParser.BankId=Bank Id +OFXParser.BranchId=Branch Id +OFXParser.CheckNumber=Check Number +OFXParser.CorrectionId=Correction Id +OFXParser.CreditCard=CreditCard +OFXParser.CurrencyCode=Currency Code +OFXParser.CurrencyExchangeRate=Currency Exchange Rate +OFXParser.DateAvailable=Date Available +OFXParser.DateInitiated=Date Initiated +OFXParser.DatePosted=Date Posted +OFXParser.ExpirationUserKey=Expiration User Key +OFXParser.FinancialInstitutionId=Financial Institution ID +OFXParser.FinancialInstitutionOrganization=Financial Institution Organization +OFXParser.Id=Id +OFXParser.Language=Language +OFXParser.LedgerBalanceAmount=Ledger Balance Amount +OFXParser.LedgerBalanceDate=Ledger Balance Date +OFXParser.Memo=Memo +OFXParser.Name=Name +OFXParser.OriginalCurrencyCode=Original Currency Code +OFXParser.OriginalCurrencyExchangeRate=Original Currency Exchange Rate +OFXParser.Payee=Payee +OFXParser.PayeeId=Payee Id +OFXParser.ProfileLastUpdate=Profile Last Update +OFXParser.ReferenceNumber=Reference Number +OFXParser.ServerAssignedTemporaryId=Server-Assigned Temporary Id +OFXParser.SessionId=Session Id +OFXParser.Signon=Signon +OFXParser.StandardIndustrialCode=Standard Industrial Code +OFXParser.StatusCode=Status Code +OFXParser.StatusSeverity=Status Serverity +OFXParser.TimestampResponse=Timestamp Response +OFXParser.Transactions=Transactions +OFXParser.TransactionStartDate=Transaction Start Date +OFXParser.TransactionEndDate=Transaction End Date +OFXParser.Type=Type +OFXParser.UserKey=User Key +OFXParser.DateOfStatement=Date of Statement +OFXParser.BrokerId=Broker ID +OFXParser.Investment=Investment +OFXParser.BankTransactions=Bank Transactions +OFXParser.SubAccountFund=Sub Account Fund +OFXParser.Investments=Investments diff --git a/iped-app/resources/localization/iped-properties_fr_FR.properties b/iped-app/resources/localization/iped-properties_fr_FR.properties new file mode 100644 index 0000000000..2dbeac77c4 --- /dev/null +++ b/iped-app/resources/localization/iped-properties_fr_FR.properties @@ -0,0 +1,13 @@ +accessed=accessed +category=category +content=content +created=created +deleted=deleted +modified=modified +changed=metaChanged +name=name +path=path +size=size +type=type +nudityScore=nudityScore +nudityClass=nudityClass \ No newline at end of file diff --git a/iped-app/resources/localization/iped-utils-messages_fr_FR.properties b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties new file mode 100644 index 0000000000..c7f17d99a6 --- /dev/null +++ b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties @@ -0,0 +1,4 @@ +IOUtil.ConfirmOpening=Are you sure to open or run +IOUtil.ConfirmOpening.Unknown=unknown +SelectImage.ImageNotFound=Evidence Not Found:\ +SelectImage.NewImgPath=Select new path for \ No newline at end of file diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties new file mode 100644 index 0000000000..6e78c4aa65 --- /dev/null +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -0,0 +1,122 @@ +ATextViewer.TabName=Text +MultiViewer.TabName=Preview +EmailViewer.AttachedEmail=Attached Email.eml +EmailViewer.Attachments=Attachments +EmailViewer.Bcc=Bcc +EmailViewer.Cc=Cc +EmailViewer.Date=Date +EmailViewer.DateFormat=MM/dd/yyyy HH:mm:ss +EmailViewer.EmbeddedMessage=Embedded Message +EmailViewer.From=From +EmailViewer.NotFound=(Not Found) +EmailViewer.Subject=Subject +EmailViewer.To=To +EmailViewer.UnNamed=[Unnamed] +ExternalViewer.Open=Click here to view the highlighted file +HitsTableModel.ContentHits=Content Hits +HtmlLinkViewer.AttachNotFound=Attachment not found\! +HtmlViewer.OpenExternally=Open Externally +HtmlViewer.TooBigToOpen=File too big to open internally\! +ImageViewer.Blur=Toggle blur filter in viewer (use Ctrl+Q for a global effect) +ImageViewer.Copy=Copy viewer image +ImageViewer.GrayScale=Toggle gray filter in viewer (use Ctrl+W for a global effect) +LibreOfficeViewer.RestartingViewer=Restarting Viewer... +LOExtractor.DecompressingLO=Unpacking LibreOffice... +MetadataViewer.AdvancedProps=Advanced Properties +MetadataViewer.BasicProps=Basic Properties +MetadataViewer.Metadata=Metadata +MetadataViewer.TabTitle=Metadata +NoJavaFXViewer.Warn=Viewing not supported. Update Java to 7u06 or newer. +TiffViewer.InvalidPage=is not a valid page number.\nPlease enter a number between 1 and\ +TiffViewer.Page=\ Page\ +PDFViewer.OpenError=ERROR: Could not open PDF file! +MsgViewer.OpenError=ERROR: Could not open the message! +HexViewerPlus.TabName=Hex +HexViewerPlus.appName=Hex Viewer Plus +HexViewerPlus.HvpFileSettings=Hex Viewer Plus File Settings +HexViewerPlus.position=Position +HexViewerPlus.relative=Relative +HexViewerPlus.charset=Charset +HexViewerPlus.selection=Selection +HexViewerPlus.to=to +HexViewerPlus.settings=Settings +HexViewerPlus.hit=Hit +HexViewerPlus.hits=Hits +HexViewerPlus.of=of +HexViewerPlus.search=Search +HexViewerPlus.nextHit=Next Hit +HexViewerPlus.preHit=Previous Hit +HexViewerPlus.goToHit=Go to Hit +HexViewerPlus.goToPosition=Go to Position +HexViewerPlus.selectBlock=Select Block +HexViewerPlus.selectAll=Select All +HexViewerPlus.copyHex=Copy Hexadecimal +HexViewerPlus.copyText=Copy Text +HexViewerPlus.options=Options +HexViewerPlus.selectColor=Pick a Color +HexViewerPlus.codeArea=Code Area +HexViewerPlus.header=Header +HexViewerPlus.layout=Layout +HexViewerPlus.cursor=Cursor +HexViewerPlus.mode=Mode +HexViewerPlus.font=Font +HexViewerPlus.size=Size +HexViewerPlus.blink=Blink +HexViewerPlus.bytesPerLine=Bytes per line +HexViewerPlus.cursorColor=Cursor Color +HexViewerPlus.fontColor=Font Color +HexViewerPlus.backGroundColor=Background Color +HexViewerPlus.selectionCharactersMirror=Select Characters - Mirror +HexViewerPlus.selectionCharactersMain=Select Characters - Main +HexViewerPlus.searchHitsFoundMatch=Search Hits - Found Match +HexViewerPlus.searchHitsCurrentMatch=Search Hits - Current Match +HexViewerPlus.loadDefault=Load Default +HexViewerPlus.saveDefault=Save Default +HexViewerPlus.close=Close +HexViewerPlus.ok=OK +HexViewerPlus.cancel=Cancel +HexViewerPlus.hexLowerCase=Hexadecimal lowercase +HexViewerPlus.showHeader=Show Header +HexViewerPlus.showLines=Show Lines +HexViewerPlus.lineBreak=Line Break +HexViewerPlus.showAllCharacters=Show All Characters +HexViewerPlus.loadFile=Load File +HexViewerPlus.saveFile=Save File +HexViewerPlus.failOpenFile=Failed to Open File! +HexViewerPlus.failSaveFile=Failed to Save File! +HexViewerPlus.yes=Yes +HexViewerPlus.no=No +HexViewerPlus.overWriteFile=already exists. Overwrite? +HexViewerPlus.select=Selection +HexViewerPlus.type=Type +HexViewerPlus.interval=Interval +HexViewerPlus.invalidPosition=Invalid Position! +HexViewerPlus.startPosition=Start Position +HexViewerPlus.endPosition=End Position +HexViewerPlus.format=Format +HexViewerPlus.hexadecimal=Hexadecimal +HexViewerPlus.decimal=Decimal +HexViewerPlus.octal=Octal +HexViewerPlus.invalidStartPosition=Invalid Start Position! +HexViewerPlus.invalidSize=Invalid Size! +HexViewerPlus.invalidEndPosition=Invalid End Position! +HexViewerPlus.start=Start +HexViewerPlus.invalidHit=Invalid Hit! +HexViewerPlus.text=Text +HexViewerPlus.all=All +HexViewerPlus.max=Max +HexViewerPlus.caseSensitive=Case Sensitive +HexViewerPlus.invalidSearchText=Invalid Serach Text! +HexViewerPlus.invalidHexadecimalText=Invalid Search Hexadecimal! +HexViewerPlus.invalidMax=Invalid Max +HexViewerPlus.invalidMaxLessThen=Invalid Max. Less than or equal to\ +HexViewerPlus.invalid=invalid +HexViewerPlus.showPositionBar=Show Position Bar +HexViewerPlus.showSelectionBar=Show Selection Bar +HexViewerPlus.showLineNumberBackground=Merge Header and Line With Layout +HexViewerPlus.headerLineBackground=Header and Line Number Column +ProgressDialog.Cancel=Cancel +ProgressDialog.Progress=Progress +ProgressDialog.Searching=Searching... +ReferenceViewer.FileNotFound=Referenced File Not Found:\ +ReferenceViewer.NotSupported=File type not supported:\ From 62cddba7b4f26938dcb52424f96d8bb3795b6963 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:15:01 -0300 Subject: [PATCH 054/126] '#1182: translate iped-utils-messages to FR --- .../localization/iped-utils-messages_fr_FR.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/localization/iped-utils-messages_fr_FR.properties b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties index c7f17d99a6..61e044c366 100644 --- a/iped-app/resources/localization/iped-utils-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties @@ -1,4 +1,4 @@ -IOUtil.ConfirmOpening=Are you sure to open or run -IOUtil.ConfirmOpening.Unknown=unknown -SelectImage.ImageNotFound=Evidence Not Found:\ -SelectImage.NewImgPath=Select new path for \ No newline at end of file +IOUtil.ConfirmOpening=ètes-vous sur de vouloir ouvrir ou exécuter +IOUtil.ConfirmOpening.Unknown=inconnu +SelectImage.ImageNotFound=Preuve introuvable:\ +SelectImage.NewImgPath=Sélectionner un nouveau chemin pour \ No newline at end of file From e25e7ec7bf4cfac9a198ca57992270954b8cae82 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:15:19 -0300 Subject: [PATCH 055/126] '#1182: translate iped-properties-messages to FR --- .../iped-properties_fr_FR.properties | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/iped-app/resources/localization/iped-properties_fr_FR.properties b/iped-app/resources/localization/iped-properties_fr_FR.properties index 2dbeac77c4..95c6ebd5bc 100644 --- a/iped-app/resources/localization/iped-properties_fr_FR.properties +++ b/iped-app/resources/localization/iped-properties_fr_FR.properties @@ -1,13 +1,13 @@ -accessed=accessed -category=category -content=content -created=created -deleted=deleted -modified=modified -changed=metaChanged -name=name -path=path -size=size -type=type -nudityScore=nudityScore -nudityClass=nudityClass \ No newline at end of file +accessed=consulté +category=catégorie +content=contenu +created=créé +deleted=supprimé +modified=modifié +changed=méta changé +name=nom +path=emplacement +size=taille +type=type[TBT] +nudityScore=taux de nudité +nudityClass=classement de nudité \ No newline at end of file From e05020d55158bfed7996bded5aa006ec815c81c2 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:15:43 -0300 Subject: [PATCH 056/126] '#1182: translate iped-geo-messages to FR --- .../iped-geo-messages_fr_FR.properties | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties index e1b0ade91f..024ea940b6 100644 --- a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties @@ -1,29 +1,29 @@ -App.Map=Map -KMLResult.LoadingGPSData=Loading GPS Data -KMLResult.NoGPSItem=No Item with GPS data Found\! -KMLResult.Results=Results -KMLResult.Save=Save -KMLResult.SearchResults=Search Results -KMLResult.SearchResultsDescription=GPS Search Results. -KMLResult.ShowInTree=Show in tree. -JMapOptionsPane.title=Select map tile source to use -JMapOptionsPane.GoogleApiKeyLabel=Enter a valid GoogleMaps API Key -JMapOptionsPane.UseLeaflet=Use Leaflet -JMapOptionsPane.UrlPatternLabel=Enter map tile source URL pattern: -JMapOptionsPane.AnotherURL=Another URL -JMapOptionsPane.UseGoogleMaps=Use GoogleMaps -toolbar.Radius=Radius -toolbar.ExportKML=Export KML -toolbar.Next=Next -toolbar.Previous=Previous -toolbar.First=First -toolbar.Last=Last -toolbar.Area=Area -toolbar.Selection=Selection +App.Map=Carte +KMLResult.LoadingGPSData=Chargement des données GPS +KMLResult.NoGPSItem=Aucun éléments trouvé avec les données GPS! +KMLResult.Results=Résultats +KMLResult.Save=Enregistrement +KMLResult.SearchResults=Recherche des résultats +KMLResult.SearchResultsDescription=Résultats de recherche GPS. +KMLResult.ShowInTree=Consulter dans l'arboresence. +JMapOptionsPane.title=Sélectionner la source de la carte utilisée +JMapOptionsPane.GoogleApiKeyLabel=Saisissez une clé API Google Maps valide +JMapOptionsPane.UseLeaflet=Utiliser la plateforme +JMapOptionsPane.UrlPatternLabel=Saisir l'URL source de la carte: +JMapOptionsPane.AnotherURL=Autre URL +JMapOptionsPane.UseGoogleMaps=Utiliser Google Maps +toolbar.Radius=Rayon +toolbar.ExportKML=Exporter en KML +toolbar.Next=Suivant +toolbar.Previous=Précédent +toolbar.First=Premier +toolbar.Last=Dernier +toolbar.Area=Zone +toolbar.Selection=Sélectionner toolbar.Navigation=Navigation -toolbar.Sorting=Sorting -toolbar.DisplayAll=Display All -toolbar.MappedItensCount=Mapped Itens -toolbar.ChangeTileServer=Change Tile Server -gpxXslt.dateTrailLabel=Trail in -gpxXslt.routeLabel=Route \ No newline at end of file +toolbar.Sorting=Tri +toolbar.DisplayAll=Afficher tout +toolbar.MappedItensCount=Eléments cartographiés +toolbar.ChangeTileServer=Changer de serveur +gpxXslt.dateTrailLabel=Sentier dans +gpxXslt.routeLabel=Itinéraire \ No newline at end of file From 7408887526ee05fe381edb3ddd6dfa4541e26cdc Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:16:01 -0300 Subject: [PATCH 057/126] '#1182: translate iped-filters to FR --- .../iped-filters_fr_FR.properties | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/iped-app/resources/localization/iped-filters_fr_FR.properties b/iped-app/resources/localization/iped-filters_fr_FR.properties index 3e0840fe35..86dcf2c85c 100644 --- a/iped-app/resources/localization/iped-filters_fr_FR.properties +++ b/iped-app/resources/localization/iped-filters_fr_FR.properties @@ -1,18 +1,18 @@ -Filter\ Known\ Hashes=Filter\ Known\ Hashes -Hash\ Alert=Hash\ Alert -Hash\ Alert\ (Child\ Porn)=Hash\ Alert\ (Child\ Porn) -PhotoDNA\ Alert\ (Child\ Porn)=PhotoDNA\ Alert\ (Child\ Porn) -Encrypted\ Files=Encrypted\ Files -Possibly\ encrypted\ (entropy)=Possibly\ encrypted\ (entropy) -Parsing\ Error=Parsing\ Error -Read\ Error=Read\ Error -Timeout=Timeout -Actual\ Files=Actual\ Files -Deleted\ Files=Deleted\ Files -Carved\ Files=Carved\ Files -Geo-referenced\ Files=Geo-referenced\ Files -Container\ Subitems=Container\ Subitems -Containers\ not\ Expanded=Containers\ not\ Expanded -Explicit\ Images\ &\ Videos=Explicit\ Images\ &\ Videos -Images\ &\ Videos\ with\ Thumbs=Images\ &\ Videos\ with\ Thumbs -Files\ with\ Thumbnails=Files\ with\ Thumbnails \ No newline at end of file +Filter\ Known\ Hashes=Filtre\ connus\ Hashs +Hash\ Alert=Alerte\ Hash +Hash\ Alert\ (Child\ Porn)=Détection\ Hash\ (Pédopornographie) +PhotoDNA\ Alert\ (Child\ Porn)=Détection\ PhotoDNA\ (Pédopornographie) +Encrypted\ Files=Fichiers\ Chiffés +Possibly\ encrypted\ (entropy)=Certainement\ chiffré\ (entropy) +Parsing\ Error=Erreur\ d'analyse +Read\ Error=Erreur\ de lecture +Timeout=Temps dépassé +Actual\ Files=Fichier\ actuel +Deleted\ Files=Fichiers\ supprimés +Carved\ Files=Fichiers\ Carvés +Geo-referenced\ Files=Fichiers\ géotagués +Container\ Subitems=Sous éléments\ du conteneur +Containers\ not\ Expanded=Conteneur\ non\ entendu +Explicit\ Images\ &\ Videos=Images\ &\ Vidéos\ Explicites +Images\ &\ Videos\ with\ Thumbs=Images\ &\ Vidéos\ avec\ Vignettes +Files\ with\ Thumbnails=Fichiers \ avec\ vignettes \ No newline at end of file From 09e2a5857ad8cd4c95d26fe1ac112d686cd8450e Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:16:22 -0300 Subject: [PATCH 058/126] '#1182: translate iped-categories to FR --- .../iped-categories_fr_FR.properties | 258 +++++++++--------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index 0be75b7742..2783bac195 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -1,132 +1,132 @@ Categories=Categories Documents=Documents -RTF\ Documents=RTF\ Documents -PDF\ Documents=PDF\ Documents -HTML\ Documents=HTML\ Documents -XML\ Files=XML\ Files -Georeferenced\ Files=Georeferenced\ Files -Text\ Documents=Text\ Documents -Spreadsheets=Spreadsheets -Presentations=Presentations -OLE\ files=OLE\ files -Links=Links -Link\ files=Link\ files -URL\ links=URL\ links -Other\ Documents=Other\ Documents -Emails\ and\ Mailboxes=Emails\ and\ Mailboxes +RTF\ Documents=Documents \ RTF +PDF\ Documents=Documents\ PDF +HTML\ Documents=Documents\ HTML +XML\ Files=Fichiers\ XML +Georeferenced\ Files=Fichiers\ Géotagué +Text\ Documents=Documents\ Texte +Spreadsheets=Tableur +Presentations=Présentations +OLE\ files=Fichiers\ OLE +Links=Liens +Link\ files=Liens +URL\ links= Liens\ URL +Other\ Documents=Autres\ Documents +Emails\ and\ Mailboxes=Emails\ et\ Boîtes Mail Emails=Emails -Mailboxes=Mailboxes -Appointments=Appointments -GDrive\ Synced\ Files=GDrive\ Synced\ Files -GDrive\ File\ Entries=GDrive\ File\ Entries -Databases=Databases -Compressed\ Archives=Compressed\ Archives +Mailboxes=Boites Mails +Appointments=Calendriers +GDrive\ Synced\ Files=Fichiers de\ synchronisation\ GDrive +GDrive\ File\ Entries=Fichier de \ l'application\ GDrive +Databases=Bases de données +Compressed\ Archives=Archives\ (Fichiers compressés) Contacts=Contacts Chats=Chats -Others\ Chats=Others\ Chats -Windows\ Artifacts=Windows\ Artifacts -Event\ Files=Event\ Files -Event\ Records=Event\ Records -Prefetch\ and\ Superfetch=Prefetch\ and\ Superfetch -User\ Activities=User\ Timeline -User\ Activities\ Entries=User\ Timeline\ Records -Windows\ Registry=Windows\ Registry -Main\ Registry\ Files=Main\ Registry\ Files -Other\ Registry\ Files=Other\ Registry\ Files -Registry\ Full\ Reports=Registry\ Full\ Reports -Registry\ Custom\ Reports=Registry\ Custom\ Reports -Registry\ OS\ Info=Registry\ OS\ Info -Registry\ Installed\ Apps=Registry\ Installed\ Apps -Registry\ Network\ Info=Registry\ Network\ Info -Registry\ Storage\ Info=Registry\ Storage\ Info -Registry\ Device\ Info=Registry\ Device\ Info -Registry\ Program\ Run=Registry\ Program\ Run -Registry\ Auto\ Run=Registry\ Auto\ Run -Registry\ Log\ Info=Registry\ Log\ Info -Registry\ Malware\ Info=Registry\ Malware\ Info -Registry\ Web\ Info=Registry\ Web\ Info -Registry\ User\ Info=Registry\ User\ Info -Registry\ User\ Accounts=Registry\ User\ Accounts -Registry\ User\ Activity=Registry\ User\ Activity -Registry\ User\ Files=Registry\ User\ Files -Registry\ User\ Network\ Activity=Registry\ User\ Network\ Activity -Registry\ User\ Config=Registry\ User\ Config -Registry\ User\ Virtualization=Registry\ User\ Virtualization -Registry\ User\ Communication=Registry\ User\ Communication -Windows\ Recycle=Windows\ Recycle -USN\ Journal=USN\ Journal -Programs\ and\ Libraries=Programs\ and\ Libraries -Android\ Applications=Android\ Applications -Unallocated=Unallocated -File\ Slacks=File\ Slacks -Multimedia=Multimedia +Others\ Chats=Autres\ Chats +Windows\ Artifacts=Artéfacts\ Windows +Event\ Files=Fichiers\ d'évènements +Event\ Records=Enregistrements\ d'évènements +Prefetch\ and\ Superfetch=Prefetch\ et\ Superfetch +User\ Activities=Activités de\ l'utilisateur +User\ Activities\ Entries=Utilisateurs\ Actibités\ Entrées +Windows\ Registry=Registre de\ Windows +Main\ Registry\ Files=Fichiers\Importants +Other\ Registry\ Files=Autres\ Fichiers +Registry\ Full\ Reports=Rapport\ Complet +Registry\ Custom\ Reports=Rapport\ Personnalisé +Registry\ OS\ Info=Information sur\ l'OS +Registry\ Installed\ Apps=Applications\ Installées +Registry\ Network\ Info=Informations\ Réseau +Registry\ Storage\ Info=Informations\ sur le Stockage +Registry\ Device\ Info=Informations\ sur l'Appareil +Registry\ Program\ Run=\ Liste des Programmes\ Exécutés +Registry\ Auto\ Run=Exécution \Automatique de programmes +Registry\ Log\ Info=Information sur les \ Logs +Registry\ Malware\ Info=Information sur \ les Malware +Registry\ Web\ Info=Informations\ Internet +Registry\ User\ Info=Informations\ sur l'Utilisateur +Registry\ User\ Accounts=Comptes\ Utilisateur +Registry\ User\ Activity=Activité\ de l'Utilisateur +Registry\ User\ Files=Fichiers\ Utilisateur\ +Registry\ User\ Network\ Activity=Activité\ Réseau\ Utilisateur +Registry\ User\ Config=Configuration\ Utilisateur +Registry\ User\ Virtualization=Virtualisation\ Utilisateur +Registry\ User\ Communication=Communications\ Utilisateur +Windows\ Recycle=Corbeille +USN\ Journal=Journal\ USN +Programs\ and\ Libraries=Programmes\ et\ Librairies +Android\ Applications=Android\ Applications[TBT] +Unallocated=Non alloué +File\ Slacks=Fichiers\ Slacks +Multimedia=Multimédia Audios=Audios Images=Images -Temporary\ Internet\ Images=Temporary\ Internet\ Images -Images\ in\ System\ Folders=Images\ in\ System\ Folders -Other\ Images=Other\ Images -Videos=Videos -Video\ Thumbnails=Video Thumbnails -Plain\ Texts=Plain\ Texts -Temporary\ Internet\ Texts=Temporary\ Internet\ Texts -Texts\ in\ System\ Folders=Texts\ in\ System\ Folders -Other\ Texts=Other\ Texts -Other\ files=Other\ files -Empty\ Files=Empty\ Files +Temporary\ Internet\ Images=Images\ Temporaires\ Internet +Images\ in\ System\ Folders=Images\ du système +Other\ Images=Autres\ Images +Videos=Vidéos +Video\ Thumbnails=Vignettes Vidéos +Plain\ Texts=Textes\ Bruts +Temporary\ Internet\ Texts=\Fichiers textes\ Temporaires +Texts\ in\ System\ Folders=Textes\ dans\ Dossiers\ Système +Other\ Texts=Autres\ Textes +Other\ files=Autres\ fichiers +Empty\ Files=Fichiers\ Vides Peer-to-peer=Peer-to-peer Ares\ Galaxy=Ares\ Galaxy E-Mule=E-Mule Shareaza=Shareaza Torrent=Torrent -Other Peer-to-peer=Other Peer-to-peer -Browser\ Artifacts=Browser\ Artifacts -Internet\ History=Internet\ History -Internet\ History\ Entries=Internet\ History\ Entries -Web\ Bookmarks=Web\ Bookmarks -Image\ Disks=Image\ Disks -ISO\ disks=ISO\ disks -Virtual\ disks=Virtual\ disks -Other\ disks=Other\ disks -Mozilla\ Firefox\ Saved\ Session=Mozilla\ Firefox\ Saved\ Session -Folders=Folders -Scanned\ Documents=Scanned\ Documents -Extraction\ Summary=Extraction\ Summary -Calls=Calls -SMS\ Messages=SMS\ Messages -MMS\ Messages=MMS\ Messages -Instant\ Messages=Instant\ Messages -Bluetooth\ Devices=Bluetooth\ Devices -SIM\ Data=SIM\ Data -Calendar=Calendar +Other Peer-to-peer=Autres Peer-to-peer +Browser\ Artifacts=Artéfacts\ des Navigateurs +Internet\ History=Historique\ Internet +Internet\ History\ Entries=Entrées\ Historique\ Internet +Web\ Bookmarks=Favoris\ Internet +Image\ Disks=Image\ Disques +ISO\ disks=ISO\ Disques +Virtual\ disks=Disque\ Virtuel +Other\ disks=Autre\ Disque +Mozilla\ Firefox\ Saved\ Session=Sauvegarde\ Session\ Mozilla\ Firefox +Folders=Dossiers +Scanned\ Documents=Documents\ Scannés +Extraction\ Summary=Sommaire\ Extraction +Calls=Appels +SMS\ Messages=SMS +MMS\ Messages=MMS +Instant\ Messages=Messages\ Instantannés +Bluetooth\ Devices=Appareils\ Bluetooth +SIM\ Data=Données\ SIM +Calendar=Calendrier Logs=Logs -User\ Accounts=User\ Accounts -Searches=Searches +User\ Accounts=Comptes\ Utilisateur +Searches=Recherches Notes=Notes -Wireless\ Networks=Wireless\ Networks +Wireless\ Networks=Réseaux\ Sans fil Notifications=Notifications -Locations=Locations +Locations=Géolocalisation Cookies=Cookies Configuration=Configuration -Passwords=Passwords -Autofill=Autofill -Cell\ Towers=Cell\ Towers -Power\ Events=Power\ Events -User\ Dictionaries=User\ Dictionaries -IP\ Connections=IP\ Connections -Recordings=Recordings -Mobile\ Cards=Mobile\ Cards -Applications\ Usage=Application\ Usage -Device\ Information=Device\ Information -iPhone\ Backup=iPhone\ Backup +Passwords=Mot de passe +Autofill=Remplissage automatique +Cell\ Towers=Antenne\ relai +Power\ Events=Journal d'évènements\ (ON/OFF) +User\ Dictionaries=Dictionnaire\ Utilisateur +IP\ Connections=Connexions\ IP +Recordings=Enregistrements +Mobile\ Cards=Cartes\ Mobile +Applications\ Usage=Utilisation\ des Applications +Device\ Information=Informations\ Appareil +iPhone\ Backup=Sauvegardes\ d'iPhone Torchat=Torchat Tor=Tor -TorTCFragment=Tor Communication Fragments -Cloud\ Drives=Cloud\ Drives +TorTCFragment=Extraits de Communications Tor +Cloud\ Drives=Cloud Google\ Drive=Google\ Drive Telegram=Telegram -Brazilian\ Software=Brazilian\ Software -Internal\ Revenue\ of\ Brazil=Internal\ Revenue\ of\ Brazil -Social\ Security\ and\ CAIXA\ Bank=Social\ Security\ and\ CAIXA\ Bank +Brazilian\ Software=Logiciel\ Brésilien +Internal\ Revenue\ of\ Brazil=Recette\ Interne\ du\ Brésil +Social\ Security\ and\ CAIXA\ Bank=Banque\ Social\ Sécurité\ et\ CAIXA Tax\ Returns\ and\ Receipts\ IRPF=Tax\ Returns\ and\ Receipts\ IRPF Tax\ Returns\ and\ Receipts\ DIRF=Tax\ Returns\ and\ Receipts\ DIRF Tax\ Returns\ and\ Receipts\ DIPJ=Tax\ Returns\ and\ Receipts\ DIPJ @@ -138,25 +138,25 @@ Other\ Tax\ Returns\ and\ Receipts=Other\ Tax\ Returns\ and\ Receipts PDF\ Bills\ of\ Exchange=PDF\ Bills\ of\ Exchange SPED\ Program\ Files=SPED\ Program\ Files Receitanet\ Program\ Files=Receitanet\ Program\ Files -RFB\ Program\ Files=RFB\ Program\ Files -SEFIP_GEFIP\ Files=SEFIP_GEFIP\ Files -SEFIP\ Databases=SEFIP\ Databases +RFB\ Program\ Files=RFB\ Program\ Fichiers +SEFIP_GEFIP\ Files=SEFIP_GEFIP\ Fichiers +SEFIP\ Databases=SEFIP\ Base de donnée SEFIP\ Executables=SEFIP\ Executables -SEFIP\ Files=SEFIP\ Files -Social\ Connectivity\ Program\ Executables=Social\ Connectivity\ Program\ Executables -Social\ Connectivity\ Program\ Files=Social\ Connectivity\ Program\ Files -GRRF\ Files=GRRF\ Files -Activities\ Sensor=Activities\ Sensor -Chat\ Activities=Chat\ Activities -Credit\ Cards=Credit\ Cards -Device\ Connectivity=Device\ Connectivity -Device\ Events=Device\ Events -File\ Downloads=File\ Downloads -File\ Uploads=File\ Uploads -Fuzzy\ Data=Fuzzy\ Data -Financial\ Accounts=Financial\ Accounts -Transfers\ of\ Funds=Transfers\ of\ Funds -Journeys=Journeys -Networks\ Usage=Networks\ Usage -Recognized\ Devices=Recognized\ Devices -Social\ Media\ Activities=Social\ Media\ Activities +SEFIP\ Files=SEFIP\ Fichiers +Social\ Connectivity\ Program\ Executables=Sociale\ Connexion\ Program\ Executables +Social\ Connectivity\ Program\ Files=Sociale\ Connexion\ Program\ Files +GRRF\ Files=GRRF\ Fichiers +Activities\ Sensor=Capteur\ d'Activités +Chat\ Activities=Chats +Credit\ Cards=Cartes de Crédit +Device\ Connectivity=Connexions\ de l'Appareil +Device\ Events=Evènements +File\ Downloads=Téléchargements +File\ Uploads=Fichiers Uploadés +Fuzzy\ Data=Données\ Fuzzy +Financial\ Accounts=Comptes\ Financier +Transfers\ of\ Funds=Transfers\ of\ Funds[TBT] +Journeys=Voyages +Networks\ Usage=Réseaux\ Utilisés +Recognized\ Devices=Appareil +Social\ Media\ Activities=Activités\ sur les Réseaux\ Sociaux From 9eb479a0b2e951023447c6b4adedfe5bd8fcd585 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:16:35 -0300 Subject: [PATCH 059/126] '#1182: translate iped-viewer-messages to FR --- .../iped-viewer-messages_fr_FR.properties | 218 +++++++++--------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index 6e78c4aa65..9c26d549fd 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -1,122 +1,122 @@ -ATextViewer.TabName=Text -MultiViewer.TabName=Preview -EmailViewer.AttachedEmail=Attached Email.eml -EmailViewer.Attachments=Attachments +ATextViewer.TabName=Texte +MultiViewer.TabName=Prévisualisation +EmailViewer.AttachedEmail=Pièces jointes des Email.eml +EmailViewer.Attachments=Pièces jointes EmailViewer.Bcc=Bcc EmailViewer.Cc=Cc EmailViewer.Date=Date -EmailViewer.DateFormat=MM/dd/yyyy HH:mm:ss -EmailViewer.EmbeddedMessage=Embedded Message -EmailViewer.From=From -EmailViewer.NotFound=(Not Found) -EmailViewer.Subject=Subject -EmailViewer.To=To -EmailViewer.UnNamed=[Unnamed] -ExternalViewer.Open=Click here to view the highlighted file -HitsTableModel.ContentHits=Content Hits -HtmlLinkViewer.AttachNotFound=Attachment not found\! -HtmlViewer.OpenExternally=Open Externally -HtmlViewer.TooBigToOpen=File too big to open internally\! -ImageViewer.Blur=Toggle blur filter in viewer (use Ctrl+Q for a global effect) -ImageViewer.Copy=Copy viewer image -ImageViewer.GrayScale=Toggle gray filter in viewer (use Ctrl+W for a global effect) -LibreOfficeViewer.RestartingViewer=Restarting Viewer... -LOExtractor.DecompressingLO=Unpacking LibreOffice... -MetadataViewer.AdvancedProps=Advanced Properties -MetadataViewer.BasicProps=Basic Properties -MetadataViewer.Metadata=Metadata -MetadataViewer.TabTitle=Metadata -NoJavaFXViewer.Warn=Viewing not supported. Update Java to 7u06 or newer. -TiffViewer.InvalidPage=is not a valid page number.\nPlease enter a number between 1 and\ +EmailViewer.DateFormat=dd/MM/yyyy HH:mm:ss +EmailViewer.EmbeddedMessage=Message intégré +EmailViewer.From=De +EmailViewer.NotFound=(Non trouvé) +EmailViewer.Subject=Sujet +EmailViewer.To=à +EmailViewer.UnNamed=[Inconnu] +ExternalViewer.Open=Cliquer ici pour visualiser le fichier en surbrillance +HitsTableModel.ContentHits=Contenu des résultats +HtmlLinkViewer.AttachNotFound=Pièce jointe non trouvée\! +HtmlViewer.OpenExternally=Ouvert à l'extérieur +HtmlViewer.TooBigToOpen=Fichier trop volumineux pour être ouvert\! +ImageViewer.Blur=Activer/Dasactiver le filtre "Flou" dans la visionneuse (utiliser Ctrl+Q pour tout flouter) +ImageViewer.Copy=Copier l'image de la visionneuse +ImageViewer.GrayScale=Activer/Dasactiver le filtre "Griser" dans la visionneuse (utiliser Ctrl+W for pour tout griser) +LibreOfficeViewer.RestartingViewer=Redémarrez la visionneuse... +LOExtractor.DecompressingLO=Décompresser LibreOffice... +MetadataViewer.AdvancedProps=Propriétés avancées +MetadataViewer.BasicProps=Propriétés de base +MetadataViewer.Metadata=Métadonnées +MetadataViewer.TabTitle=Métadonnées +NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieur. +TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre supérieur à 1 and\ TiffViewer.Page=\ Page\ -PDFViewer.OpenError=ERROR: Could not open PDF file! -MsgViewer.OpenError=ERROR: Could not open the message! +PDFViewer.OpenError=ERREUR: Impossible d'ouvrir le fichier PDF! +MsgViewer.OpenError=ERROR: Impossible d'ouvrir le message! HexViewerPlus.TabName=Hex HexViewerPlus.appName=Hex Viewer Plus -HexViewerPlus.HvpFileSettings=Hex Viewer Plus File Settings +HexViewerPlus.HvpFileSettings=Paramères de Hex Viewer Plus HexViewerPlus.position=Position HexViewerPlus.relative=Relative -HexViewerPlus.charset=Charset -HexViewerPlus.selection=Selection -HexViewerPlus.to=to -HexViewerPlus.settings=Settings -HexViewerPlus.hit=Hit -HexViewerPlus.hits=Hits -HexViewerPlus.of=of -HexViewerPlus.search=Search -HexViewerPlus.nextHit=Next Hit -HexViewerPlus.preHit=Previous Hit -HexViewerPlus.goToHit=Go to Hit -HexViewerPlus.goToPosition=Go to Position -HexViewerPlus.selectBlock=Select Block -HexViewerPlus.selectAll=Select All -HexViewerPlus.copyHex=Copy Hexadecimal -HexViewerPlus.copyText=Copy Text +HexViewerPlus.charset=Jeu de caractères +HexViewerPlus.selection=Selectionner +HexViewerPlus.to=à +HexViewerPlus.settings=Paramètres +HexViewerPlus.hit=Elément trouvé +HexViewerPlus.hits=Eléments trouvés +HexViewerPlus.of=de +HexViewerPlus.search=Rechercher +HexViewerPlus.nextHit=Elément trouvé suivant +HexViewerPlus.preHit=Elément trouvé précédent +HexViewerPlus.goToHit=Aller aux éléments trouvés +HexViewerPlus.goToPosition=Aller à la position +HexViewerPlus.selectBlock=Selectionner le Bloque +HexViewerPlus.selectAll=Tout sélectionner +HexViewerPlus.copyHex=Copier l'Hexadecimal +HexViewerPlus.copyText=Copier le Texte HexViewerPlus.options=Options -HexViewerPlus.selectColor=Pick a Color -HexViewerPlus.codeArea=Code Area -HexViewerPlus.header=Header -HexViewerPlus.layout=Layout -HexViewerPlus.cursor=Cursor +HexViewerPlus.selectColor=Choisir une couleur +HexViewerPlus.codeArea=Code de la zone +HexViewerPlus.header=Entête +HexViewerPlus.layout=Mise page +HexViewerPlus.cursor=Curseur HexViewerPlus.mode=Mode -HexViewerPlus.font=Font -HexViewerPlus.size=Size -HexViewerPlus.blink=Blink -HexViewerPlus.bytesPerLine=Bytes per line -HexViewerPlus.cursorColor=Cursor Color -HexViewerPlus.fontColor=Font Color -HexViewerPlus.backGroundColor=Background Color -HexViewerPlus.selectionCharactersMirror=Select Characters - Mirror -HexViewerPlus.selectionCharactersMain=Select Characters - Main -HexViewerPlus.searchHitsFoundMatch=Search Hits - Found Match -HexViewerPlus.searchHitsCurrentMatch=Search Hits - Current Match -HexViewerPlus.loadDefault=Load Default -HexViewerPlus.saveDefault=Save Default -HexViewerPlus.close=Close +HexViewerPlus.font=Police de caractères +HexViewerPlus.size=Taille +HexViewerPlus.blink=Clignoter +HexViewerPlus.bytesPerLine=Bytes par ligne +HexViewerPlus.cursorColor=Couleur du curseur +HexViewerPlus.fontColor=Couleur de la police de caractères +HexViewerPlus.backGroundColor=Couleur du fond +HexViewerPlus.selectionCharactersMirror=Selectionner les personnes - identiques +HexViewerPlus.selectionCharactersMain=Selectionner personnes - Principales +HexViewerPlus.searchHitsFoundMatch=Rechercher les éléments trouvés - Correspondance trouvée +HexViewerPlus.searchHitsCurrentMatch=Rechercher les éléments trouvés - En cours +HexViewerPlus.loadDefault=Charger les paramètres par défaut +HexViewerPlus.saveDefault=Enregistrer les paramètres par défaut +HexViewerPlus.close=Cloturer HexViewerPlus.ok=OK -HexViewerPlus.cancel=Cancel -HexViewerPlus.hexLowerCase=Hexadecimal lowercase -HexViewerPlus.showHeader=Show Header -HexViewerPlus.showLines=Show Lines -HexViewerPlus.lineBreak=Line Break -HexViewerPlus.showAllCharacters=Show All Characters -HexViewerPlus.loadFile=Load File -HexViewerPlus.saveFile=Save File -HexViewerPlus.failOpenFile=Failed to Open File! -HexViewerPlus.failSaveFile=Failed to Save File! -HexViewerPlus.yes=Yes -HexViewerPlus.no=No -HexViewerPlus.overWriteFile=already exists. Overwrite? -HexViewerPlus.select=Selection +HexViewerPlus.cancel=Arrêter +HexViewerPlus.hexLowerCase=Hexadecimal minuscule +HexViewerPlus.showHeader=Afficher les entêtes +HexViewerPlus.showLines=Afficher les Lignes +HexViewerPlus.lineBreak=Ligne Brisée +HexViewerPlus.showAllCharacters=Afficher toutes les personnes +HexViewerPlus.loadFile=Charger le fichier +HexViewerPlus.saveFile=Sauvegarder le fichier +HexViewerPlus.failOpenFile=Echec d'ouverture du fichier! +HexViewerPlus.failSaveFile=Erreur d'enregistrement du fichier! +HexViewerPlus.yes=Oui +HexViewerPlus.no=Non +HexViewerPlus.overWriteFile=Existe déjà. Voulez vous le remplacer? +HexViewerPlus.select=Selectionner HexViewerPlus.type=Type -HexViewerPlus.interval=Interval -HexViewerPlus.invalidPosition=Invalid Position! -HexViewerPlus.startPosition=Start Position -HexViewerPlus.endPosition=End Position +HexViewerPlus.interval=Intervalle +HexViewerPlus.invalidPosition=IPosition non valide! +HexViewerPlus.startPosition=Position de départ +HexViewerPlus.endPosition=Position d'arrivée HexViewerPlus.format=Format -HexViewerPlus.hexadecimal=Hexadecimal -HexViewerPlus.decimal=Decimal -HexViewerPlus.octal=Octal -HexViewerPlus.invalidStartPosition=Invalid Start Position! -HexViewerPlus.invalidSize=Invalid Size! -HexViewerPlus.invalidEndPosition=Invalid End Position! -HexViewerPlus.start=Start -HexViewerPlus.invalidHit=Invalid Hit! -HexViewerPlus.text=Text -HexViewerPlus.all=All -HexViewerPlus.max=Max -HexViewerPlus.caseSensitive=Case Sensitive -HexViewerPlus.invalidSearchText=Invalid Serach Text! -HexViewerPlus.invalidHexadecimalText=Invalid Search Hexadecimal! -HexViewerPlus.invalidMax=Invalid Max -HexViewerPlus.invalidMaxLessThen=Invalid Max. Less than or equal to\ -HexViewerPlus.invalid=invalid -HexViewerPlus.showPositionBar=Show Position Bar -HexViewerPlus.showSelectionBar=Show Selection Bar -HexViewerPlus.showLineNumberBackground=Merge Header and Line With Layout -HexViewerPlus.headerLineBackground=Header and Line Number Column -ProgressDialog.Cancel=Cancel -ProgressDialog.Progress=Progress -ProgressDialog.Searching=Searching... -ReferenceViewer.FileNotFound=Referenced File Not Found:\ -ReferenceViewer.NotSupported=File type not supported:\ +HexViewerPlus.hexadecimal=Hexadécimal +HexViewerPlus.decimal=Décimal +HexViewerPlus.octal=Octale +HexViewerPlus.invalidStartPosition=Position de départ non valide! +HexViewerPlus.invalidSize=Taille invalide! +HexViewerPlus.invalidEndPosition=Position d'arrivée non valide! +HexViewerPlus.start=Démarrer +HexViewerPlus.invalidHit=Eléments trouvés invalides! +HexViewerPlus.text=Texte +HexViewerPlus.all=Tout +HexViewerPlus.max=Maximum +HexViewerPlus.caseSensitive=Respecter la casse +HexViewerPlus.invalidSearchText=Texte de recherche invalide! +HexViewerPlus.invalidHexadecimalText=Recherche Hexadecimal invalide! +HexViewerPlus.invalidMax=Maximum invalide +HexViewerPlus.invalidMaxLessThen=Maximum invalide. Inférieur ou égal à\ +HexViewerPlus.invalid=invalide +HexViewerPlus.showPositionBar=Afficher la barre de position +HexViewerPlus.showSelectionBar=Afficher la barre de sélection +HexViewerPlus.showLineNumberBackground=Fusionner en-tête et ligne avec la mise en page +HexViewerPlus.headerLineBackground=En-tête de colonne et numéro de ligne +ProgressDialog.Cancel=Abandonner +ProgressDialog.Progress=En cours +ProgressDialog.Searching=Recherche... +ReferenceViewer.FileNotFound=Fichier de référence introuvable:\ +ReferenceViewer.NotSupported=Type de fichier non supporté:\ From 2029562e8cc483f5f3a4bbcfa8277567ba29f76e Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:16:49 -0300 Subject: [PATCH 060/126] '#1182: translate iped-engine-messages to FR --- .../iped-engine-messages_fr_FR.properties | 226 +++++++++--------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index 2a9e8db475..dd2f54dec2 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -1,125 +1,125 @@ -ExportCSVTask.CsvColNames="Name","Link","Size","Extension","Bookmark","Category","MD5","SHA1","Deleted","Carved","Accessed","Modified","Created","Path","TrackId"\r\n +ExportCSVTask.CsvColNames="Nom","Liens","Taille","Extension","Favoris","Catégorie","MD5","SHA1","Supprimé","Carvé","Accès","Modifié","Créé","Emplacement","TrackId"\r\n ExportCSVTask.CsvSeparator=, -ExportCSVTask.CsvName=FileList.csv -ExportCSVTask.LinkFunction=HYPERLINK -ExportCSVTask.LinkName=Open -ExportFileTask.DeletingData1=Deleting removed data from FS... -ExportFileTask.DeletingData2=Deleting removed data from storages... -ExportFileTask.DeletedData1=Deleted data from FS: {} -ExportFileTask.DeletedData2=Deleted data from storages: {} -ExportFileTask.ExportFolder=Exported/files -HTMLReportTask.Bookmark=Bookmark -HTMLReportTask.Bookmarks=Bookmarks -HTMLReportTask.Categories=Categories -HTMLReportTask.Category=Category -HTMLReportTask.Dateformat=MM/dd/yyyy HH:mm:ss -HTMLReportTask.FileCount=File Count -HTMLReportTask.FirstPage=First Page -HTMLReportTask.GalleryLink=Image Gallery -HTMLReportTask.GalleryTitle=Thumbnails -HTMLReportTask.LastPage=Last Page -HTMLReportTask.MakingHtmlReport=Creating HTML report... -HTMLReportTask.NextPage=Next Page -HTMLReportTask.No=No -HTMLReportTask.NoBookmarks=[No Bookmark] -HTMLReportTask.of=\ of +ExportCSVTask.CsvName=Liste de fichiers.csv +ExportCSVTask.LinkFunction=Lien hyper texte +ExportCSVTask.LinkName=Ouvert +ExportFileTask.DeletingData1=Suppression des données supprimées de FS... +ExportFileTask.DeletingData2=Suppression des données supprimées des supports... +ExportFileTask.DeletedData1=Supprimer les données de FS: {} +ExportFileTask.DeletedData2=Supprimer les données des supports: {} +ExportFileTask.ExportFolder=Exporter/les fichiers +HTMLReportTask.Bookmark=Favori +HTMLReportTask.Bookmarks=Favoris +HTMLReportTask.Categories=Catégories +HTMLReportTask.Category=Catégorie +HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss +HTMLReportTask.FileCount=Compteur de fichier +HTMLReportTask.FirstPage=Première page +HTMLReportTask.GalleryLink=Galerie d'images +HTMLReportTask.GalleryTitle=Vignette +HTMLReportTask.LastPage=Dernière page +HTMLReportTask.MakingHtmlReport=Création d'un rapport HTML... +HTMLReportTask.NextPage=Page suivante +HTMLReportTask.No=Non +HTMLReportTask.NoBookmarks=[Pas de favori] +HTMLReportTask.of=\ de HTMLReportTask.Page=Page -HTMLReportTask.PreviewReport=Preview Report -HTMLReportTask.PrevPage=Previous Page -HTMLReportTask.ReportFileName=report.htm -HTMLReportTask.ReportSubFolder=report -HTMLReportTask.VideoThumbs=Video Thumbnails -HTMLReportTask.Yes=Yes -Main.Finished=Finished -IPEDSource.ImageNotFound=Image Not Found:\ -IPEDSource.ImgFragNotFound=Image segment not found:\ -ItemProducer.Adding=Adding ' -JavaVersion.Error=Unsupported java version. Update to version {}. -JavaVersion.Warn=Java version {} not tested, unexpected errors may occur! -JavaVersion.Bug=Problematic Java version {1} detected! Update to the latest Java {2} or the program may crash. -JavaVersion.Arch=You are using a java 32bits, some features won't work properly. Please update to a java 64 bits! -Manager.Adding=Adding " -Manager.ClosingIndex=Closing Index... -Manager.CopyingIndex=Copying Index... -Manager.OpeningIndex=Opening Index... -Manager.DeletingTreeNodes=Deleting empty tree nodes -Manager.FilteringKeywords=Filtering Keywords... -Manager.Optimizing=Optimizing index... -Manager.CommitStarted=Starting commit... -Manager.CommitFinished=Commit finished. -P2PBookmarker.P2PBookmarkPrefix=Probably Shared By\ -ProgressConsole.files=\ files -ProgressConsole.FinishIn=\ Finish in\ -ProgressConsole.Found=Found\ -ProgressConsole.Processing=Processing\ -ProgressConsole.Starting=Starting... -ProgressFrame.ActiveProcessed=Actual Items Processed -ProgressFrame.AlreadyOpen=The analysis app is already open\! -ProgressFrame.Carved=Carved Items -ProgressFrame.CarvedDiscarded=Carved Discarded -ProgressFrame.Continue=Continue -ProgressFrame.CurrentItems=Current Items -ProgressFrame.CurrentSpeed=Current Speed -ProgressFrame.Environment=Environment -ProgressFrame.EstimatedEnd=Estimated Finish -ProgressFrame.Exported=Exported Items -ProgressFrame.FinishIn=\ - Finish in\ -ProgressFrame.Found=Found\ -ProgressFrame.FreeMemory=Free Memory -ProgressFrame.Ignored=Ignored Items -ProgressFrame.IncompleteProcessing=Many case items could be unavailable until processing is finished\! -ProgressFrame.items=\ items -ProgressFrame.ItemsFound=Items Found -ProgressFrame.ItemsProcessed=Items Processed -ProgressFrame.JavaVersion=Java Version -ProgressFrame.MaxMemory=Maximum Memory -ProgressFrame.MeanSpeed=Average Speed -ProgressFrame.OpenApp=Preview Case -ProgressFrame.OutputFree=Output Free -ProgressFrame.OutputTempFree=Output/Temp Free -ProgressFrame.OutputTempVolume=Output/Temp Volume -ProgressFrame.OutputVolume=Output Volume -ProgressFrame.ParserTimes=Parser Times -ProgressFrame.ParsingErrors=Parsing Errors +HTMLReportTask.PreviewReport=Aperçu du rapport +HTMLReportTask.PrevPage=Aperçu de la page +HTMLReportTask.ReportFileName=rapport.htm +HTMLReportTask.ReportSubFolder=rapport +HTMLReportTask.VideoThumbs=Vignette vidéo +HTMLReportTask.Yes=Oui +Main.Finished=Terminé +IPEDSource.ImageNotFound=Image Non trouvée:\ +IPEDSource.ImgFragNotFound=Morceau d'image non trouvé:\ +ItemProducer.Adding=Ajouter +JavaVersion.Error=Version de java non supportée. Mettre à jour la version {}. +JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c'est produite! +JavaVersion.Bug=Problème avec la version e Java {1} detecté! Installer la dernière version de Java {2} sinon le programme risque de ne pas fonctionner. +JavaVersion.Arch=Vous utilisez ue version 32 bits de Java, certaines fonctionnalités peuvent ne pas fonctionner correctement. Merci de mettre jour vers une version 64 bits! +Manager.Adding=Ajouter " +Manager.ClosingIndex=Index de clotûre... +Manager.CopyingIndex=Index de copie... +Manager.OpeningIndex=Index d'ouverture... +Manager.DeletingTreeNodes=Supprimer les noeuds vides de l'arborescence +Manager.FilteringKeywords=Filtrer les mots clés... +Manager.Optimizing=Optimisation de l'index... +Manager.CommitStarted=Commencer la validation... +Manager.CommitFinished=Validation terminée. +P2PBookmarker.P2PBookmarkPrefix=Probablement partagé avec\ +ProgressConsole.files=\ fichiers +ProgressConsole.FinishIn=\ Terminé dans\ +ProgressConsole.Found=Trouvé\ +ProgressConsole.Processing=En cours de traitement\ +ProgressConsole.Starting=Début... +ProgressFrame.ActiveProcessed=Eléments traités +ProgressFrame.AlreadyOpen=L'application d'analyse est déjà ouverte\! +ProgressFrame.Carved=Eléments carvés +ProgressFrame.CarvedDiscarded=Eléments carvés exclus +ProgressFrame.Continue=Continuer +ProgressFrame.CurrentItems=Eléments en cours +ProgressFrame.CurrentSpeed=Vitesse actuel +ProgressFrame.Environment=Environement +ProgressFrame.EstimatedEnd=Temps estimé +ProgressFrame.Exported=Eléments exportés +ProgressFrame.FinishIn=\ - Terminé\ +ProgressFrame.Found=Trouvé\ +ProgressFrame.FreeMemory=Mémoire libre +ProgressFrame.Ignored=Elément ignoré +ProgressFrame.IncompleteProcessing=De nombreux éléments du dossier peuvent être indisponible en cours de traitement\! +ProgressFrame.items=\ Eléments +ProgressFrame.ItemsFound=Eléments trouvés +ProgressFrame.ItemsProcessed=Eléments traités +ProgressFrame.JavaVersion=Version de Java +ProgressFrame.MaxMemory=Mémoire max +ProgressFrame.MeanSpeed=Vitesse moyenne +ProgressFrame.OpenApp=Prévisualisation du cas +ProgressFrame.OutputFree=Espace libre +ProgressFrame.OutputTempFree=Température de/sortie +ProgressFrame.OutputTempVolume=Volume de températurede/sortie +ProgressFrame.OutputVolume=Volume de sortie +ProgressFrame.ParserTimes=Durer d'analyse +ProgressFrame.ParsingErrors=Erreurs d'analyse ProgressFrame.Pause=Pause -ProgressFrame.Paused=[PAUSED] -ProgressFrame.Pausing=[PAUSING...] -ProgressFrame.PhysicalMemory=Physical Memory -ProgressFrame.Processing=Processing\ -ProgressFrame.ProcessingTime=Processing Time -ProgressFrame.ReadErrors=Read Errors -ProgressFrame.Starting=Starting... -ProgressFrame.Statistics=Statistics -ProgressFrame.SubitemsProcessed=Subitems Processed -ProgressFrame.TaskTimes=Task Times +ProgressFrame.Paused=[En pause] +ProgressFrame.Pausing=[Faire une pause...] +ProgressFrame.PhysicalMemory=Mémoire physique +ProgressFrame.Processing=Traitement en cours\ +ProgressFrame.ProcessingTime=Durée du traitement +ProgressFrame.ReadErrors=Erreurs de lecture +ProgressFrame.Starting=Début... +ProgressFrame.Statistics=Statistiques +ProgressFrame.SubitemsProcessed=Sous dossiers traités +ProgressFrame.TaskTimes=Durée du traitement ProgressFrame.TempFree=Temp Free ProgressFrame.TempVolume=Temp Volume -ProgressFrame.Timeouts=Timeouts -ProgressFrame.TotalMemory=Total Memory -ProgressFrame.VolumeFound=Volume Found -ProgressFrame.VolumeProcessed=Volume Processed -ProgressFrame.WaitingItem=Waiting Item... -RegexTask.SeparatorNotFound.1=Separator '=' not found in\ -RegexTask.SeparatorNotFound.2=\ line:\ -ReportInfo.EvidencePrefix=Evidence\ -SleuthkitReader.Creating=Creating\ -SleuthkitReader.WaitDecode=Wait, decoding image\ -Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease 'numthreads' in LocalConfig.txt. -Statistics.LowMemory.Title=Memory Alert -UfedXmlReader.Attachments=Attachments +ProgressFrame.Timeouts=Temps dépassé +ProgressFrame.TotalMemory=Mémoire totale +ProgressFrame.VolumeFound=Volume trouvé +ProgressFrame.VolumeProcessed=Volume traité +ProgressFrame.WaitingItem=En attente... +RegexTask.SeparatorNotFound.1=Separateur '=' non trouvé dans\ +RegexTask.SeparatorNotFound.2=\ ligne:\ +ReportInfo.EvidencePrefix=Extraction\ +SleuthkitReader.Creating=Créer\ +SleuthkitReader.WaitDecode=Décodage de l'image en cours\ +Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l'analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l'option java -Xmx \n ou diminuez-le 'numthreads' dans me fichier LocalConfig.txt. +Statistics.LowMemory.Title=Alerte/Mémoire +UfedXmlReader.Attachments=Pièces jointes UfedXmlReader.Bcc=Bcc UfedXmlReader.Cc=Cc UfedXmlReader.Date=Date -UfedXmlReader.From=From -UfedXmlReader.Subject=Subject -UfedXmlReader.To=To -UfedXmlReader.LowConfidence=\ [low confidence] -UfedXmlReader.DeviceInfo=Device Information +UfedXmlReader.From=De +UfedXmlReader.Subject=Sujet +UfedXmlReader.To=à +UfedXmlReader.LowConfidence=\ [Confiance faible] +UfedXmlReader.DeviceInfo=Information sur le support UfedXmlReader.Extraction=Extraction -Worker.Starting=Starting\ -GraphAnalysis.LinksCalls=Calls +Worker.Starting=Début\ +GraphAnalysis.LinksCalls=Appels GraphAnalysis.LinksContacts=Contacts GraphAnalysis.LinksEmails=E-mails -GraphAnalysis.LinksInstantMessages=Instant Messages -GraphAnalysis.LinksWireless=Wireless Networks +GraphAnalysis.LinksInstantMessages=Messages instantannés +GraphAnalysis.LinksWireless=Réseaux sans fils GraphAnalysis.LinksDocuments=Documents \ No newline at end of file From c9bc909044fcf6fded3c2d3f21e56a1904a762d5 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:17:01 -0300 Subject: [PATCH 061/126] '#1182: translate iped-desktop-messages to FR --- .../iped-desktop-messages_fr_FR.properties | 834 +++++++++--------- 1 file changed, 417 insertions(+), 417 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index 8a4504e69e..0e326d5dff 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -1,444 +1,444 @@ -App.Case=Case -App.Checked=[Checked] -App.ExportZip=Export Selected to ZIP -App.FilterTip=Filter -App.ClearFilter=Clear Filter -App.ClearFilters=Clear Filters -App.FilterDuplicates=Filter Listed Duplicates -App.FilterDuplicatesTip=Filter duplicates on demand from current result -App.Gallery=Gallery -App.Help=Help -App.Hits=Hits -App.Map=Map -App.Links=Links -App.Metadata=Metadata -App.NoFilter=[No filter] +App.Case=Cas +App.Checked=[Vérification] +App.ExportZip=Export en fichier ZIP +App.FilterTip=Filtres +App.ClearFilter=Supprimer le Filtre +App.ClearFilters=Supprimer les Filtres +App.FilterDuplicates=Filtre de la Liste des doublons +App.FilterDuplicatesTip=Filtre des doublons à partir du résultat +App.Gallery=Galerie +App.Help=Aide +App.Hits=Résultats positifs +App.Map=Carte +App.Links=Liens +App.Metadata=Métadonnées +App.NoFilter=[Non filtré] App.Options=Options -App.RecursiveListing=Recursive Listing -App.Search=Search -App.SearchBoxTip=[Type or choose the search expression. Use [TAB] to autocomplete properties.] -App.SearchLabel=Search: -App.Table=Table -App.ToggleTimelineView=Toggle Table Timeline View -App.Update=Update -App.Wait=Wait... -AppLazyInitializer.errorMsg.line1=Error opening case. Has the processing finished without errors?\n -AppLazyInitializer.errorMsg.line2=If yes, contact support and send the error log\n +App.RecursiveListing=Récursivité +App.Search=Recherche +App.SearchBoxTip=[Type ou choix de la recherche] +App.SearchLabel=Recherche: +App.Table=Tableau +App.ToggleTimelineView=Basculer la ligne de temps en tableau +App.Update=Mise à jour +App.Wait=Attendre... +AppLazyInitializer.errorMsg.line1=Erreur d'ouverture du cas. Le traitement c'est-il terminé sans erreur?\n +AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d'évènement\n AppLazyInitializer.errorMsg.line3=\nResumed error:\n -AppLazyInitializer.errorTitle=Initializing error -AppListener.NoHits=No hits -AppListener.UncheckAll=Do you confirm unchecking all items? +AppLazyInitializer.errorTitle=Erreur d'initialisation +AppListener.NoHits=Pas de résultat positif +AppListener.UncheckAll=Confirmez-vous que tous les éléments sont décochés? AppListener.UncheckAll.Title=Confirmation -AppMain.NoCasesFile=Case list file not found: -AppMain.warn.Title=Initializing warn -BookmarksController.HistoryDelimiter=-----------------------History----------------------- -BookmarksController.LoadError=Error loading bookmarks\! -BookmarksController.LoadError.Title=Error -BookmarksController.LoadSuccess=Success loading bookmarks -BookmarksController.LoadSuccess.Title=Success -BookmarksController.SaveError=Error saving bookmarks\! -BookmarksController.SaveError.Title=Error -BookmarksController.SaveSuccess=Success saving bookmarks -BookmarksController.SaveSuccess.Title=Success -BookmarksManager.Add=Add -BookmarksManager.Add.Tip=Add items to selected bookmarks -BookmarksManager.AddDuplicates=Add duplicates (hash) -BookmarksManager.AlertMultipleSelectedBookmarks=Select just one bookmark! -BookmarksManager.AlertNoCheckedtems=No checked items! -BookmarksManager.AlertNoHighlightedItems=No highlighted items! -BookmarksManager.AlertNoSelectedBookmarks=No selected bookmarks! -BookmarksManager.Checked=Checked items -BookmarksManager.ConfirmDelete=Really want to delete selected bookmarks? -BookmarksManager.ConfirmDelTitle=Confirm +AppMain.NoCasesFile=Les fichiers du cas sont introuvables: +AppMain.warn.Title=Initialisation +BookmarksController.HistoryDelimiter=-----------------------Historique----------------------- +BookmarksController.LoadError=Erreur de chargement des favoris\! +BookmarksController.LoadError.Title=Erreur +BookmarksController.LoadSuccess=Chargement des favoris avec succès +BookmarksController.LoadSuccess.Title=Succès +BookmarksController.SaveError=Erreur de sauvegarde des favoris\! +BookmarksController.SaveError.Title=Erreur +BookmarksController.SaveSuccess=Sauvegarde des favoris avec succès +BookmarksController.SaveSuccess.Title=Succès +BookmarksManager.Add=Ajouter +BookmarksManager.Add.Tip=Ajouter des éléments au favori sélectionné +BookmarksManager.AddDuplicates=Ajouter les doublons (Hash) +BookmarksManager.AlertMultipleSelectedBookmarks=Select just one bookmark![TBT] +BookmarksManager.AlertNoCheckedtems=No checked items![TBT] +BookmarksManager.AlertNoHighlightedItems=No highlighted items![TBT] +BookmarksManager.AlertNoSelectedBookmarks=No selected bookmarks![TBT] +BookmarksManager.Checked=Vérification des éléments +BookmarksManager.ConfirmDelete=Voulez-vous vraiment supprimer les favoris sélectionnés? +BookmarksManager.ConfirmDelTitle=Confirmer BookmarksManager.Dataset=Dataset: -BookmarksManager.Delete=Delete -BookmarksManager.Delete.Tip=Delete selected bookmarks -BookmarksManager.Edit=Edit -BookmarksManager.Edit.Color=Color -BookmarksManager.Edit.Name=Name -BookmarksManager.Edit.Tip=Edit selected bookmark name and color -BookmarksManager.Edit.Title=Edit Bookmark -BookmarksManager.Highlighted=Highlighted items -BookmarksManager.KeyStrokeBookmark=Type a key (combination) to define a shortcut to [Add].
ALT+key will trigger [Remove]. -BookmarksManager.KeyStrokeAlert1=Select just one bookmark to define key shortcut. -BookmarksManager.KeyStrokeAlert2=ALT is always used to remove from bookmark. -BookmarksManager.KeyStrokeAlert3=Key shortcut already used, change it first. -BookmarksManager.KeyStrokeAlert4=Key shortcut already used for other action. -BookmarksManager.New=New -BookmarksManager.New.Tip=New bookmark -BookmarksManager.NewBookmark.Tip=Enter bookmark name -BookmarksManager.Remove=Remove -BookmarksManager.Remove.Tip=Remove items from selected bookmarks -BookmarksManager.SearchingDuplicates=Searching Duplicates... -BookmarksManager.Title=Bookmarks -BookmarksManager.CommentsTooltip=Bookmark comments -BookmarksManager.Update=Update -BookmarksManager.UpdateTooltip=Update comments -BookmarksManager.AlreadyExists=Bookmark name already exists! -BookmarksTreeModel.NoBookmarks=[No Bookmarks] -BookmarksTreeModel.RootName=Bookmarks -CategoryTreeModel.RootName=Categories -ColumnsManager.Advanced=Advanced -ColumnsManager.All=All +BookmarksManager.Delete=Supprimer +BookmarksManager.Delete.Tip=Supprimer les favoris sélectionnés +BookmarksManager.Edit=Edit[TBT] +BookmarksManager.Edit.Color=Color[TBT] +BookmarksManager.Edit.Name=Name[TBT] +BookmarksManager.Edit.Tip=Edit selected bookmark name and color[TBT] +BookmarksManager.Edit.Title=Edit Bookmark[TBT] +BookmarksManager.Highlighted=Surligner les éléments +BookmarksManager.KeyStrokeBookmark=Type Définir la touche (ou combinaison de touche) pour 'Ajouter'.
Alt+touche définie 'Effacer'. +BookmarksManager.KeyStrokeAlert1=Créer un raccourci pour sélectionner un favori. +BookmarksManager.KeyStrokeAlert2=Maintenir Alt pour effacer une favori. +BookmarksManager.KeyStrokeAlert3=Modifier le raccourci. +BookmarksManager.KeyStrokeAlert4=Maintenir la touche de raccourci pour une autre action. +BookmarksManager.New=Nouveau +BookmarksManager.New.Tip=Nouveau favori +BookmarksManager.NewBookmark.Tip=Saisissez le nom du favori +BookmarksManager.Remove=Supprimer +BookmarksManager.Remove.Tip=Supprimer le favori sélectionné +BookmarksManager.SearchingDuplicates=Recherche des doublons... +BookmarksManager.Title=Favoris +BookmarksManager.CommentsTooltip=Commentaires sur les favoris +BookmarksManager.Update=Mise à jour +BookmarksManager.UpdateTooltip=Mettre à jour les commentaires +BookmarksManager.AlreadyExists=Nom des favoris existants! +BookmarksTreeModel.NoBookmarks=[Pas de favori] +BookmarksTreeModel.RootName=Favoris +CategoryTreeModel.RootName=Catégories +ColumnsManager.Advanced=Avancer +ColumnsManager.All=Tout ColumnsManager.Audio=Audio ColumnsManager.Basic=Basic -ColumnsManager.Common=Common -ColumnsManager.Communication=Communication -ColumnsManager.HashDB=Hash Database +ColumnsManager.Common=Commun +ColumnsManager.Communication=Communications +ColumnsManager.HashDB=Hash de la base de données ColumnsManager.HTML=HTML ColumnsManager.Image=Image -ColumnsManager.Language=Language -ColumnsManager.NamedEntity=Named Entities -ColumnsManager.Office=Office -ColumnsManager.Other=Other +ColumnsManager.Language=Langue +ColumnsManager.NamedEntity=Nom des individus +ColumnsManager.Office=Bureau +ColumnsManager.Other=Autres ColumnsManager.PDF=PDF ColumnsManager.Regex=Regex -ColumnsManager.ShowCols=Show Columns: -ColumnsManager.Title=Visible Columns -ColumnsManager.Video=Video +ColumnsManager.ShowCols=Afficher les Colonnes: +ColumnsManager.Title=Colonnes visibles +ColumnsManager.Video=Vidéo ColumnsManager.PeerToPeer=PeerToPeer ColumnsManager.UFED=UFED -ColumnsManager.AutoManageCols=Manage columns automatically (slower) -ColumnsManager.LoadingCols=Loading used columns... -ColumnsManager.Filter=[Type to filter] -ColumnsManager.WindowsEvt=Windows Events -CopyProperties.Copying=Copying +ColumnsManager.AutoManageCols=Gérer les colonnes automatiquement (Plus lent) +ColumnsManager.LoadingCols=Chargement des colonnes utilisées... +ColumnsManager.Filter=[Type de filtre] +ColumnsManager.WindowsEvt=Fenètre d'évènements +CopyProperties.Copying=Copier CopyProperties.CSVDateFormat=MM/dd/yyyy HH:mm:ss z CopyProperties.CSVDelimiter=, -CopyProperties.from=\ of -DuplicatesTableModel.Duplicates=\ Duplicates -ExportFiles.Copying=Copying -ExportFiles.of=\ of -ExportFilesToZip.Copying=Copying -ExportFilesToZip.from=\ of -ExportFileTree.Copied=Copied -ExportFileTree.ExportError=Error exporting files. Check permissions and available space.\n -ExportFileTree.from=\ of -ExportIndexedTerms.Exported=Exported -ExportIndexedTerms.ofWords=\ of words. +CopyProperties.from=\ de +DuplicatesTableModel.Duplicates=\ Doublons +ExportFiles.Copying=Copier +ExportFiles.of=\ de +ExportFilesToZip.Copying=Copier +ExportFilesToZip.from=\ de +ExportFileTree.Copied=Copié +ExportFileTree.ExportError=Erreur d'exportation de fichiers. Vérifier les droits et l'espace disponible.\n +ExportFileTree.from=\ de +ExportIndexedTerms.Exported=Exporté +ExportIndexedTerms.ofWords=\ des mots. ExportToZIP.DefaultName=ExportedFiles.zip -ExportToZIP.DefaultPath=/home/caine/DADOS_EXPORTADOS -ExportToZIP.FileAlreadyExistsMessageText=A file with the same name already exists at this location. Would you like to overwrite it? -ExportToZIP.FileAlreadyExistsMessageTitle=File already exists -FileProcessor.OpeningEvidence=Opening evidence... -FilterManager.Del.Tip=Delete selected filter -FilterManager.Delete=Delete +ExportToZIP.DefaultPath=/home/caine/Dossiers d'exportation +ExportToZIP.FileAlreadyExistsMessageText=Le nom du fichier existe déjà. Voulez-vous le remplacer? +ExportToZIP.FileAlreadyExistsMessageTitle=Le fichier existe déjà +FileProcessor.OpeningEvidence=Ouvrir le fichier d'analyse... +FilterManager.Del.Tip=Supprimer le filtre sélectionné +FilterManager.Delete=Supprimer FilterManager.Expresion=Expression: -FilterManager.Expression.Tip=Filter rule -FilterManager.Filters=Filters: -FilterManager.New=New -FilterManager.New.Tip=New filter -FilterManager.NewName=New filter name -FilterManager.Save=Save -FilterManager.Save.Tip=Save changes -FilterManager.Title=Filters -Gallery.DecreaseThumbsSize=Reduce thumbnails size -Gallery.IncreaseThumbsSize=Increase thumbnails size -Gallery.GalleryBlurFilter=Toggle blur filter in gallery (use Ctrl+Q for global effect) -Gallery.GalleryGrayFilter=Toggle gray filter in gallery (use Ctrl+W for global effect) -Gallery.ToggleVideoFrames=Toggle video thumbnails frames configuration (Complete / Reduced) -GraphAnalysis.GraphvizError=Error testing graphviz tool {0}. Is it installed? -GraphAnalysis.Expand=Expand -GraphAnalysis.ExpandConfiguration=Expand (Filter) -GraphAnalysis.Expand.Links=Links -GraphAnalysis.Expand.Entities=Entities -GraphAnalysis.Expand.MaxNodes=Expand most linked entities up to -GraphAnalysis.FindConnectios=Find Connections +FilterManager.Expression.Tip=Règles du filtre +FilterManager.Filters=Filtres: +FilterManager.New=Nouveau +FilterManager.New.Tip=Nouveau filtre +FilterManager.NewName=Nom du filtre +FilterManager.Save=Enregistrement +FilterManager.Save.Tip=Enregistrer les modifications +FilterManager.Title=Filtres +Gallery.DecreaseThumbsSize=Reduire la taille des vignettes +Gallery.IncreaseThumbsSize=Augmenter la taille des vignettes +Gallery.GalleryBlurFilter=Ativer/désactiver: Floutage de la galerie (utiliser Ctrl+Q pour tout sélectionner) +Gallery.GalleryGrayFilter=Ativer/désactiver: Griser la gallerie (utiliser Ctrl+W pour tout sélectionner) +Gallery.ToggleVideoFrames=Ativer/désactiver: la configuration des vignettes vidéo (Complète / Reduite) +GraphAnalysis.GraphvizError=Test d'erreur de graphviz tool {0}. Est-il installé? +GraphAnalysis.Expand=Développer +GraphAnalysis.ExpandConfiguration=Développer (Filtre) +GraphAnalysis.Expand.Links=Liens +GraphAnalysis.Expand.Entities=Entités +GraphAnalysis.Expand.MaxNodes=Afficher les liens entre les individus jusqu'à +GraphAnalysis.FindConnectios=Communications entre les individus GraphAnalysis.FindPaths=Find Paths -GraphAnalysis.Remove=Remove -GraphAnalysis.ShowEvidence=Show Evidence -GraphAnalysis.SelectAll=Select All -GraphAnalysis.Processing=Processing... -GraphAnalysis.Done=Done. -GraphAnalysis.Preparing=Preparing... -GraphAnalysis.Ready=Ready. -GraphAnalysis.ExportingImage=Generating image... -GraphAnalysis.Error=An error occurred while processing the operation. -GraphAnalysis.UndoAction=Undo Action -GraphAnalysis.RedoAction=Redo Action -GraphAnalysis.SaveImage=Save Image -GraphAnalysis.SearchEntities=Search Linked Entities -GraphAnalysis.Search=Search -GraphAnalysis.Add=Add -GraphAnalysis.Cancel=Cancel -GraphAnalysis.Export=Export +GraphAnalysis.Remove=Supprimer +GraphAnalysis.ShowEvidence=Afficher les résultats +GraphAnalysis.SelectAll=Tout sélectionner +GraphAnalysis.Processing=En cours... +GraphAnalysis.Done=Terminé. +GraphAnalysis.Preparing=En cours de préparation... +GraphAnalysis.Ready=Prêt. +GraphAnalysis.ExportingImage=Création de l'image... +GraphAnalysis.Error=Une erreur est apparue lors de l'opération. +GraphAnalysis.UndoAction=Annuler l'opération en cours +GraphAnalysis.RedoAction=Recommencer +GraphAnalysis.SaveImage=Enregistrer l'Image +GraphAnalysis.SearchEntities=Recherche des liens entre individus +GraphAnalysis.Search=Rechercher +GraphAnalysis.Add=Ajouter +GraphAnalysis.Cancel=Arrêter +GraphAnalysis.Export=Exporter GraphAnalysis.Id GraphAnalysis.Type=Type -GraphAnalysis.Quantity=Quantity -GraphAnalysis.Property=Property -GraphAnalysis.Value=Value -GraphAnalysis.FitToScreen=Fit To Screen -GraphAnalysis.ExportLinks=Export Links -GraphAnalysis.Origin=Origin -GraphAnalysis.Destiny=Destiny +GraphAnalysis.Quantity=Quantité +GraphAnalysis.Property=Propriété +GraphAnalysis.Value=Valeur +GraphAnalysis.FitToScreen=Adapter à l'écran +GraphAnalysis.ExportLinks=Exporter les liens +GraphAnalysis.Origin=Origine +GraphAnalysis.Destiny=Destination GraphAnalysis.Distance=Distance -GraphAnalysis.FileExistsConfirmation=The file {0} already exists. Continue? -GraphAnalysis.FileSaved=File {0} saved successfully. -GraphAnalysis.Results=Found {0} results in {1}ms. -GraphAnalysis.AdvancedSearch=Advanced Search -GraphAnalysis.AddToAnalysis=Add To Analysis -GraphAnalysis.Execute=Execute -GraphAnalysis.SearchLinks=Search Links -GraphAnalysis.Links=Links -GraphAnalysis.Datasources=Datasources -GraphAnalysis.LinksSearching=Searching links... Found {0}. -GraphAnalysis.CreateMultiGraph=Graph not created for this multicase. Do you want to create it now? -GraphAnalysis.MultiGraphError=Could not create multicase graph, check log! -GraphAnalysis.MultiGraphOk=Multicase graph created. -GraphAnalysis.InitialGraphMsg=Initial graph view ready. It just includes the most linked entities. +GraphAnalysis.FileExistsConfirmation=Le fichier {0} existe déjà. Continuer? +GraphAnalysis.FileSaved=Le fichiers {0} a été enregistré avec succès. +GraphAnalysis.Results=Résultats {0} de la recherche dans {1}ms. +GraphAnalysis.AdvancedSearch=Recherches avancées +GraphAnalysis.AddToAnalysis=Ajouter à l'analyse +GraphAnalysis.Execute=Executer +GraphAnalysis.SearchLinks=Liens recherchés +GraphAnalysis.Links=Liens +GraphAnalysis.Datasources=Bases de données +GraphAnalysis.LinksSearching=Liens recherchés... Trouvés {0}. +GraphAnalysis.CreateMultiGraph=Graphique non créé pour ce cas multiple. Souhaitez-vous le créer maintenant? +GraphAnalysis.MultiGraphError=Impossible de créer le graphique du cas multiple, vérifier les logs! +GraphAnalysis.MultiGraphOk=Graphique du cas multiple créé. +GraphAnalysis.InitialGraphMsg=Graphique prêt. Il présente uniquement les individues ayant le plus de contacts. KeywordListImporter.BookmarkPrefix=Results of search for: -KeywordListImporter.Msg.1=Imported +KeywordListImporter.Msg.1=Importer KeywordListImporter.Msg.2=\ keywords with hits of -KeywordListImporter.SyntaxError=Syntax error in the following expressions: -HashDialog.MD5Title=MD5 Hash of exported ZIP -ImageSimilarity.ExternalError=Unable to open the selected image. -ImageSimilarity.ExternalTitle=External Similar Image -ImageSimilarity.FilterTipTitle=Similar Images Filter -ImageSimilarity.FilterTipExternal=External Reference Image -ImageSimilarity.FilterTipInternal=Reference Image +KeywordListImporter.SyntaxError=Erreur de syntaxe dnas les expressions suivantes: +HashDialog.MD5Title=Valeur MD5 Hash des ZIP exportés +ImageSimilarity.ExternalError=Impossible d'ouvrir le fichier image sélectionné. +ImageSimilarity.ExternalTitle=Image similaire +ImageSimilarity.FilterTipTitle=Filtre des Images Similaires +ImageSimilarity.FilterTipExternal=Image de référence +ImageSimilarity.FilterTipInternal=Image de référence ImageSimilarity.Image=Image -ImageSimilarity.RemoveFilter=Clear Similar Images Filter -FaceSimilarity.ExternalTitle=External Similar Face -FaceSimilarity.FilterTipTitle=Similar Faces Filter -FaceSimilarity.FilterTipExternal=External Reference Face -FaceSimilarity.FilterTipInternal=Reference Face -FaceSimilarity.RemoveFilter=Clear Similar Faces Filter -FaceSimilarity.Image=Face -FaceSimilarity.MinScore=Define minimum similarity (1-100) -FaceSimilarity.LoadingFace=Loading Face... -FaceSimilarity.ExternalFaceNotFound=Face not found in external file! -MenuClass.AddToGraph=Add to link analysis -MenuClass.ChangeGalleryColCount=Change Gallery Column Count -MenuClass.ChangeLayout=Change Vertical/Horizontal Layout -MenuClass.CheckHighlighted=Check Highlighted items -MenuClass.CheckRecursivelyHighlighted=Check highlighted items and subitems -MenuClass.ClearSearches=Clear Search history -MenuClass.ColorTheme=Color Theme -MenuClass.CopyViewerImage=Take viewer screenshot -MenuClass.ExportChecked=Export Checked items -MenuClass.ExportCheckedToZip=Export Checked items To Zip -MenuClass.ExportHighlighted=Export Highlighted items -MenuClass.ExportIndexedWords=Export Indexed Word list +ImageSimilarity.RemoveFilter=Filtre de suppression d'image identique +FaceSimilarity.ExternalTitle=Visage similaire +FaceSimilarity.FilterTipTitle=Filtre de visage similaire +FaceSimilarity.FilterTipExternal=Visage de référence +FaceSimilarity.FilterTipInternal=Visage de référence +FaceSimilarity.RemoveFilter=Filtre de suppression de visage similaire +FaceSimilarity.Image=Visage +FaceSimilarity.MinScore=Définir la précision de ressemblance (1-100) +FaceSimilarity.LoadingFace=Cahrgement des visages... +FaceSimilarity.ExternalFaceNotFound=Pas de visage trouvé dans le fichier! +MenuClass.AddToGraph=Ajouter à link analysis +MenuClass.ChangeGalleryColCount=Modifier le nombre de colonnes de la galerie +MenuClass.ChangeLayout=Changer la disposition Vertical/Horizontal +MenuClass.CheckHighlighted=Vérifier les éléments en surbrillance +MenuClass.CheckRecursivelyHighlighted=Vérifier les sous-éléments et éléments en surbrillance +MenuClass.ClearSearches=Supprimer l'historique des recherches +MenuClass.ColorTheme=Couleur du Thème +MenuClass.CopyViewerImage=Visionneuse de capture d'écran +MenuClass.ExportChecked=Exporter les éléments vérifiés +MenuClass.ExportCheckedToZip=Exporter les résultats au format Zip +MenuClass.ExportHighlighted=Exporter les éléments surlignés +MenuClass.ExportIndexedWords=Exporter la liste des expressions indexées MenuClass.ExportItens=Export items... -MenuClass.ExportProps.Checked=Export checked items properties -MenuClass.ExportProps.Highlighed=Export highlighted items properties -MenuClass.ExportTree=Export file tree -MenuClass.ExportTree.Checked=Export file tree (checked items) -MenuClass.ExportTreeToZip.Checked=Export file tree to ZIP (checked items) -MenuClass.FindSimilarDocs=Find Similar Documents -MenuClass.FindSimilarImages=Find Similar Images -MenuClass.FindSimilarImages.Current=Highlighted item -MenuClass.FindSimilarImages.External=External image... -MenuClass.FindSimilarFaces=Find Similar Faces -MenuClass.FindSimilarFaces.Current=Highlighted item -MenuClass.FindSimilarFaces.External=External face... -MenuClass.GenerateReport=Create Indexed Report -MenuClass.GoToParent=Go to parent in file tree -MenuClass.GoToChat=Go to parent chat position -MenuClass.ImportKeywords=Import Keyword list -MenuClass.LayoutAppearance=Layout / Appearance -MenuClass.LoadBookmarks=Load Bookmarks -MenuClass.ManageBookmarks=Manage Bookmarks -MenuClass.ManageColumns=Manage Columns -MenuClass.ManageVisibleCols=Manage Visible Columns -MenuClass.PinFirstCols=Pin First Columns... -MenuClass.LoadLastColLayout=Load Last Saved Layout -MenuClass.SaveColLayout=Save Columns Layout -MenuClass.ResetColLayout=Reset Columns Layout -MenuClass.ManageFilters=Manage Filters -MenuClass.OpenViewFile = Open preview/report externally -MenuClass.LoadPanelsLayout=Load Last Saved Layout -MenuClass.SavePanelsLayout=Save Panels Layout -MenuClass.ResetLayout=Reset to Default Layout -MenuClass.SaveBookmarks=Save Bookmarks -MenuClass.UiZoom=Change User Interface Zoom -MenuClass.IconSize=Icons Size -MenuClass.UnCheckHighlighted=Uncheck Highlighted items -MenuClass.UnCheckRecursivelyHighlighted=Uncheck highlighted items and subitems -MenuListener.ChatNotFound=Parent chat not found -MenuListener.Cols=Columns: -MenuListener.ExportTree.Warn=Highlight 01 (one) tree node as export reference\! -MenuListener.Gallery=Gallery -MenuListener.PinFirstCols=Pin first columns -MenuListener.SimilarityLabel=Similarity Score (0 a 100) -MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark -MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark -MenuListener.TableAndOthers=Table and Others -MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or '{}' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. -MetadataPanel.AlphaNumeric=AlphaNumeric -MetadataPanel.Clear=Clear metadata filter -MetadataPanel.Group=Group: -MetadataPanel.Hits=Hits -MetadataPanel.Linear=Linear -MetadataPanel.Log=Logarithmic -MetadataPanel.NoRanges=No Ranges -MetadataPanel.Property=Property: -MetadataPanel.RangeSeparator=to -MetadataPanel.Scale=Scale: -MetadataPanel.Sort=Sort: -MetadataPanel.Update=Update -MetadataPanel.Filter=Filter: -MetadataPanel.FilterProps=Properties -MetadataPanel.FilterValues=Values -MetadataPanel.CopyClipboard=Copy to clipboard -MetadataPanel.UpdateWarn=[Click on Update] -NoJavaFX.Error=This application needs JavaFX to be installed! -ProcessingNotFinished.title=Processing not finished -ProcessingNotFinished.message=Processing didn''t finish successfully. Many case items could be missing, including allocated.\nTry to resume it with --continue option. -ProcessingNotFinished.cases=\ Following cases are affected: -ProcessingNotFinished.evidence=Affected evidence: -ReferencesTab.Title=Referencing -ReferencedByTab.Title=Referenced By -ResultTableModel.bookmark=bookmark -ResultTableModel.score=score -ReportDialog.AddToReport=Add to existing report -ReportDialog.AppendWarning=Existing html report is not updated yet, just indexed case! -ReportDialog.CaseInfo=Fill Case Information (case number, examiner, report number...) -ReportDialog.ChooseLabel=Choose bookmarks to insert in report: -ReportDialog.Create=Create -ReportDialog.ErrorTitle=Error -ReportDialog.Evidences=Evidence Description -ReportDialog.Examiner=Examiner -ReportDialog.FillInfo=Case Info -ReportDialog.Investigation=Case Number -ReportDialog.KeywordsFile=Keywords file (optional): -ReportDialog.LoadButton=Load -ReportDialog.LoadInfo=Load case information from .json or .asap file: -ReportDialog.NoAttachments=Do not auto export email attachments -ReportDialog.noLinkedItems=Do not auto export chat attachments -ReportDialog.Output=Output folder: -ReportDialog.OutputRequired=Output folder required\! -ReportDialog.Record=Lab Case Number -ReportDialog.RecordDate=Lab Case Date -ReportDialog.ReportDate=Report Date -ReportDialog.ReportError=Error creating report, check error log\! -ReportDialog.ReportFinished=Report created\! -ReportDialog.ReportNum=Report Number -ReportDialog.ReportTitle=Report Title -ReportDialog.Request=Request Form -ReportDialog.RequestDate=Request Date -ReportDialog.Requester=Requester -ReportDialog.TableHeader1=Bookmark +MenuClass.ExportProps.Checked=Exporter les propriétés des éléments cochés +MenuClass.ExportProps.Highlighed=Exporter les propriétés des éléments surlignés +MenuClass.ExportTree=Exporter l'arborescence des fichiers +MenuClass.ExportTree.Checked=Exporter l'arborescence des fichiers (éléments sélectionnés) +MenuClass.ExportTreeToZip.Checked=Exporter l'arborescence des fichiers au format ZIP (éléments sélectionnés) +MenuClass.FindSimilarDocs=Recherche des documents similaires +MenuClass.FindSimilarImages=Recherche des images similaires +MenuClass.FindSimilarImages.Current=Eléments en surbrillance +MenuClass.FindSimilarImages.External=Image externe... +MenuClass.FindSimilarFaces=Recherche des images similaires +MenuClass.FindSimilarFaces.Current=Eléments en surbrillance +MenuClass.FindSimilarFaces.External=Visage externe... +MenuClass.GenerateReport=Créer un rapport indexé +MenuClass.GoToParent=Retour à la racine de l'arborescence de fichier +MenuClass.GoToChat=Retour à la racine du chat +MenuClass.ImportKeywords=Importer une liste de mots clés +MenuClass.LayoutAppearance=Disposition / Apparence +MenuClass.LoadBookmarks=Chargement des favoris +MenuClass.ManageBookmarks=Gestion des favoris +MenuClass.ManageColumns=Gestion des colonnes +MenuClass.ManageVisibleCols=Gestion des colonnes visibles +MenuClass.PinFirstCols=Epingler la première colonne... +MenuClass.LoadLastColLayout=Charger la dernière mise en page enregistrée +MenuClass.SaveColLayout=Sauvegarder la mise en forme des colonnes +MenuClass.ResetColLayout=Réinitialiser la mise en forme des colonnes +MenuClass.ManageFilters=Gestion des Filtres +MenuClass.OpenViewFile = Ouvrir un aperçu/rapport externe +MenuClass.LoadPanelsLayout=Cahrger la dernière mise en page sauvegardée +MenuClass.SavePanelsLayout=Sauvegarder la mise en forme +MenuClass.ResetLayout=Restaurer la mise en forme par défaut +MenuClass.SaveBookmarks=Sauvegarder les favoris +MenuClass.UiZoom=Réglage du Zoom +MenuClass.IconSize=Taille des icones +MenuClass.UnCheckHighlighted=Décocher les éléments en surbrillance +MenuClass.UnCheckRecursivelyHighlighted=Décocher les éléments et sous-éléments en surbrillance +MenuListener.ChatNotFound=Origine du chat non trouvé +MenuListener.Cols=Colonnes: +MenuListener.ExportTree.Warn=Surbrillance 01 (one) tree node as export reference\! +MenuListener.Gallery=Galerie +MenuListener.PinFirstCols=Epingler la première colonne +MenuListener.SimilarityLabel=Taux de similitude (0 a 100) +MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark[TBT] +MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark[TBT] +MenuListener.TableAndOthers=Tableaux and autres +MenuListener.UiScaleDialog=Définir l'échelle de l'interface.\nUtilisez une valeur à virgule flottante (par exemple 1,5) ou « {} » pour ajuster automatiquement le zoom..\nVous devez redémarrer l'application pour que cette modification prenne effet. +MetadataPanel.AlphaNumeric=AlphaNumérique +MetadataPanel.Clear=Supprimer le filtre de métadonnées +MetadataPanel.Group=Groupe: +MetadataPanel.Hits=Résultats +MetadataPanel.Linear=Linéaire +MetadataPanel.Log=Logarithmique +MetadataPanel.NoRanges=Aucune plage +MetadataPanel.Property=propriété: +MetadataPanel.RangeSeparator=de +MetadataPanel.Scale=Echelle: +MetadataPanel.Sort=Trier: +MetadataPanel.Update=Mise à jour +MetadataPanel.Filter=Filtre: +MetadataPanel.FilterProps=Propriétés +MetadataPanel.FilterValues=Valeurs +MetadataPanel.CopyClipboard=Copier dnas le presse papier +MetadataPanel.UpdateWarn=[Cliquer pour mettre à jour] +NoJavaFX.Error=Cette application à besoins de JavaFX pour être installée! +ProcessingNotFinished.title=Le processus n'est pas terminé +ProcessingNotFinished.message=Le traitement ne c'est pas terminé correctement. De nombreux éléments du dossier peuvent être manquants, y compris ceux alloués.\nEssayez de le reprendre avec l'option --continuer. +ProcessingNotFinished.cases=\ Les cas suivants sont concernés :\n +ProcessingNotFinished.evidence=Affected evidence:[TBT] +ReferencesTab.Title=Référencement +ReferencedByTab.Title=Référencé avec +ResultTableModel.bookmark=favori +ResultTableModel.score=résultats +ReportDialog.AddToReport=Ajouter un rapport existant +ReportDialog.AppendWarning=Le rapport HTML existant n'est pas encore mis à jour, le cas est uniquement indexé ! +ReportDialog.CaseInfo=Compléter les informations sur le cas (numéro du cas, nom de l'analyste, numéro du rapport...) +ReportDialog.ChooseLabel=Sélectionner les favoris à insérer dans le rapport: +ReportDialog.Create=Création +ReportDialog.ErrorTitle=Erreur +ReportDialog.Evidences=Description de la preuve +ReportDialog.Examiner=Analyste +ReportDialog.FillInfo=Informations sur le cas +ReportDialog.Investigation=Numéro du cas +ReportDialog.KeywordsFile=Fichier de mots clés (optionnel): +ReportDialog.LoadButton=chargement +ReportDialog.LoadInfo=Charger les informations du cas à partir du fichier .json ou .asap : +ReportDialog.NoAttachments=Ne pas exporter automatiquement les pièces jointes des e-mails +ReportDialog.noLinkedItems=Ne pas exporter automatiquement les pièces jointes du chat +ReportDialog.Output=Dossier d'enregistrement: +ReportDialog.OutputRequired=Dossier de sortie requis\! +ReportDialog.Record=Numéro de dossier +ReportDialog.RecordDate=Date du dossier +ReportDialog.ReportDate=Date du rapport +ReportDialog.ReportError=Erreur de création du rapport, vérifier le log d'erreurs\! +ReportDialog.ReportFinished=Rapport creé\! +ReportDialog.ReportNum=Numéro de rapport +ReportDialog.ReportTitle=Titre du rapport +ReportDialog.Request=Formulaire de demande +ReportDialog.RequestDate=Date de la demande +ReportDialog.Requester=Requérant +ReportDialog.TableHeader1=Favoris ReportDialog.TableHeader2=ThumbsOnly -ReportDialog.Title=Create Report -ParentTableModel.ParentCount=Parent Item -ResultTableModel.DateFormat=MM/dd/yyyy HH:mm:ss z -ResultTableModel.Error=ERROR -ResultTableModel.FATDateFormat=MM/dd/yyyy -ResultTableRowSorter.Sorting=Sorting... -RowComparator.SortCanceled=Sort Canceled. -SearchStateFilter.BookmarksFile=Bookmarks File -SubitemTableModel.Subitens=\ Attachs/Subitems -TextParserListener.Found=Found -TextParserListener.hits=\ hits -TreeViewModel.RootName=Evidences -UISearcher.Canceled=Search canceled\! -UISearcher.Error.Msg=Query syntax error: -UISearcher.Error.Title=Error -UnsupportedIcon.Unavailable=Thumbnail not supported -ViewerController.OfficeViewerUnSupported=Office viewer not supported in java 32bits anymore! Please install a java 64bits. -ViewerController.FixViewer=Fix Viewer -ViewerController.NextHit=Next Hit -ViewerController.PrevHit=Previous Hit -ViewerController.ShowToolBar=Show/Hide Toolbar -HexSearcherImpl.hits=Hits -HexSearcherImpl.hit=Hit -HexSearcherImpl.of=of -HexSearcherImpl.timeLeft=Time Left -HexSearcherImpl.noHits=No results found -Theme.Dark=Dark -Theme.Light=Light (default) -TimeLineGraph.highlightEventItensOnPeriod=Highlight event items in range -TimeLineGraph.highlightItensOnPeriod=Highlight items in range -TimeLineGraph.checkEventItensOnPeriod=Check event items in range -TimeLineGraph.checkItensOnPeriod=Check items in range -TimeLineGraph.filterBefore=Filter before -TimeLineGraph.filterAfter=Filter after -TimeLineGraph.selectBefore=Highlight before -TimeLineGraph.selectAfter=Highlight after -TimeLineGraph.filterAllDefinedIntervals=Filter defined ranges -TimeLineGraph.selectItensOnThisInterval=Highlight items in current range -TimeLineGraph.deleteInterval=Delete range -TimeLineGraph.continueIntervalSelection=Continue selecting ranges... -TimeLineGraph.hideSeriesOnChart=Hide on chart -TimeLineGraph.filterEventFromResultSet=Remove from result set -TimeLineGraph.unfilterEventFromResultSet=Reinclude in result set -TimeLineGraph.Year=Year -TimeLineGraph.Quarter=Quarter -TimeLineGraph.Month=Month -TimeLineGraph.Week=Week -TimeLineGraph.Day=Day -TimeLineGraph.Hour=Hour +ReportDialog.Title=Créer un rapport +ParentTableModel.ParentCount=Dossier source +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z +ResultTableModel.Error=ERREUR +ResultTableModel.FATDateFormat=dd/MM/yyyy +ResultTableRowSorter.Sorting=Tri... +RowComparator.SortCanceled=Tri annulé. +SearchStateFilter.BookmarksFile=Fichier des favoris +SubitemTableModel.Subitens=\ Pièces jointes/sous éléments +TextParserListener.Found=Trouvé +TextParserListener.hits=\ requêtes +TreeViewModel.RootName=Analyse +UISearcher.Canceled=Arrêter la recherche\! +UISearcher.Error.Msg=Erreur de syntaxe dans la requête: +UISearcher.Error.Title=Erreur +UnsupportedIcon.Unavailable=Vignette non supportée +ViewerController.OfficeViewerUnSupported=La visionneuse Office n'est plus prise en charge dans Java 32 bits ! Veuillez installer un Java 64 bits. +ViewerController.FixViewer=Correction de la visionneuse +ViewerController.NextHit=Autres résultats +ViewerController.PrevHit=Résultats précédents +ViewerController.ShowToolBar=Afficher/Masquer la barre d'outils +HexSearcherImpl.hits=requêtes +HexSearcherImpl.hit=requête +HexSearcherImpl.of=de +HexSearcherImpl.timeLeft=Temps restant +HexSearcherImpl.noHits=Aucun résultat trouvé +Theme.Dark=Mode sombre +Theme.Light=Mode clair (default) +TimeLineGraph.highlightEventItensOnPeriod=Mettre en surbrillance les éléments d'événement dans la plage +TimeLineGraph.highlightItensOnPeriod=Mettre en surbrillance les éléments dans la plage +TimeLineGraph.checkEventItensOnPeriod=Véfifier les évènements des éléments de la plage +TimeLineGraph.checkItensOnPeriod=Vérifier les éléments de la plage +TimeLineGraph.filterBefore=Filtrer avant +TimeLineGraph.filterAfter=Filtrer après +TimeLineGraph.selectBefore=Mettre en surbrillance avant +TimeLineGraph.selectAfter=Mettre en surbrillance après +TimeLineGraph.filterAllDefinedIntervals=Filtrer les plages définies +TimeLineGraph.selectItensOnThisInterval=Mettre en surbrillance les éléments de la plage sélectionnée +TimeLineGraph.deleteInterval=Supprimer la plage +TimeLineGraph.continueIntervalSelection=Continuer à sélectionner des plages... +TimeLineGraph.hideSeriesOnChart=Masquer sur le graphique +TimeLineGraph.filterEventFromResultSet=Supprimer des résultats +TimeLineGraph.unfilterEventFromResultSet=Réinclure dans le jeu de résultats +TimeLineGraph.Year=Année +TimeLineGraph.Quarter=Quart +TimeLineGraph.Month=Mois +TimeLineGraph.Week=Semaine +TimeLineGraph.Day=Jour +TimeLineGraph.Hour=Heure TimeLineGraph.Minute=Minute -TimeLineGraph.Second=Second -TimeLineGraph.Millisecond=Millisecond -TimeLineGraph.donotBreak=Do not split chart -TimeLineGraph.breakByBookmark=Split chart by bookmark -TimeLineGraph.breakByMetadata=Split chart by metadata -TimeLineGraph.breakByCategory=Split chart by category -TimeLineGraph.checkingItemsProgressLabel=Checking items from time chart... -TimeLineGraph.highlightingItemsProgressLabel=Highlighting items from time chart... -TimeLineGraph.PeriodGranularity=Time Scale -TimeLineGraph.Timezone=Time Zone -TimeLineGraph.applyDefinedFilters=Apply defined filters -TimeLineGraph.clearDefinedFilters=Clear defined filters -TimeLineGraph.openIntervalsDialogMenu=Open time range definition dialog... -TimeLineGraph.visibleRangeToGreat=The visible range is too large for the current scale %s.\n Would you like to continue and zoom in centering on the middle date %s? -TimeLineGraph.visibleZoominForGranularity=Max zoom in reached for the scale %s.\n Would you like to change the scale to %s and continue to zoom in? -TimeLineGraph.visibleZoomoutForGranularity=Max zoom out reached for the scale %s.\n Would you like to change the scale to %s and continue to zoom out? -TimeLineGraph.syncTableSelectionInChartView=Show table highlights in time chart -TimeLineGraph.resetZoom=Reset Zoom -TimeLineGraph.selectAllEventTypes=Select all event types -TimeLineGraph.unselectAllEventTypes=Unselect all event types -TimeLineGraph.checkEventItems=Check corresponding event type items -TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items -IntervalDefinitionDialog.Title=Time line chart defined ranges -IntervalDefinitionDialog.dateFormat=MM/dd/yyyy +TimeLineGraph.Second=Seconde +TimeLineGraph.Millisecond=Milliseconde +TimeLineGraph.donotBreak=Ne pas diviser le graphique +TimeLineGraph.breakByBookmark=Diviser le graphique par favoris +TimeLineGraph.breakByMetadata=Diviser le graphique par métadonnées +TimeLineGraph.breakByCategory=Diviser le graphique par categories +TimeLineGraph.checkingItemsProgressLabel=Vérification des éléments du diagramme temporel... +TimeLineGraph.highlightingItemsProgressLabel=Mise en surbrillance des éléments du diagramme temporel... +TimeLineGraph.PeriodGranularity=Échelle de temps +TimeLineGraph.Timezone=Fuseau horaire +TimeLineGraph.applyDefinedFilters=Appliquer les filtres définis +TimeLineGraph.clearDefinedFilters=Effacer les filtres définis +TimeLineGraph.openIntervalsDialogMenu=Ouvrir la boîte de dialogue de définition de plage horaire... +TimeLineGraph.visibleRangeToGreat=La plage visible est trop grande pour l'échelle actuelle %s.\n Souhaitez-vous continuer et zoomer en centrant sur la date du milieu %s ? +TimeLineGraph.visibleZoominForGranularity=Zoom avant maximum atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer à zoomer ? +TimeLineGraph.visibleZoomoutForGranularity=Le zoom arrière maximum a été atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer le zoom arrière ? +TimeLineGraph.syncTableSelectionInChartView=Afficher la table en surbrillance dans le diagramme temporel +TimeLineGraph.resetZoom=Réinitialiser le zoom +TimeLineGraph.selectAllEventTypes=Select all event types[TBT] +TimeLineGraph.unselectAllEventTypes=Unselect all event types[TBT] +TimeLineGraph.checkEventItems=Check corresponding event type items[TBT] +TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items[TBT] +IntervalDefinitionDialog.Title=Plages définies dnas la ligne de temps +IntervalDefinitionDialog.dateFormat=dd/MM/yyyy IntervalDefinitionDialog.hourFormat=HH:mm:ss -IntervalDefinitionDialog.Exit=Exit -App.appliedFilters=Filters -iped.app.graph.FilterSelectedEdges.filtererName=Graph Edge Filter -iped.app.timelinegraph.IpedChartsPanel.filtererName=Time Chart Filter -iped.app.ui.App.DuplicatesFilterer.filtererName=Duplicates Filter -iped.app.ui.App.SimilarDocumentFilterer.filtererName=Similar Documents Filter -iped.app.ui.App.SimilarFacesSearchFilterer.filtererName=Similar Faces Filter -iped.app.ui.App.SimilarImagesQueryFilterer.filtererName=Similar Images Filter -iped.app.ui.App.SearchFilterer.filtererName=Keyword Search Filter -iped.app.ui.BookmarksTreeListener.filtererName=Bookmarks Filter -iped.app.ui.CategoryTreeListener.filtererName=Category Filter -iped.app.ui.ComboFilterer.filtererName=Predefined Filter -iped.app.ui.ComboFilterer.tooltip=Select a Predefined Filter -iped.app.ui.MetadataPanel.filtererName=Metadata Filter -iped.app.ui.TableHeaderFilterManager.filtererName=Table Header Filter -iped.app.ui.TimelineListener.filtererName=Timeline Filter -iped.app.ui.TreeListener.filtererName=Evidence Tree Filter -iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Combined Filter -iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Apply Combined Filter -FilterValue.Duplicates=Duplicate Filter Result -FilterValue.SimilarDocument=Similar Documents -FilterValue.SimilarFace=Similar Faces: -FilterValue.SimilarImage=Similar Images: -FilterValue.TimelineView=Timeline View Result -Operand.AND=AND -Operand.OR=OR -OperandMenu.invertFilter=Invert filter -OperandMenu.changeOperand=Change to -OperandMenu.addAnd=Add AND node -OperandMenu.addOr=Add OR node -OperandMenu.removeNode=Remove node -FiltererMenu.clearFilters=Clear filters -FiltererMenu.goToItem=Go to referenced item -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set. -FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception. -FieldValuePopupMenu.NonEmpty=Non empty -FieldValuePopupMenu.Empty=Empty -FieldValuePopupMenu.Contains=Contains ... -FieldValuePopupMenu.NotContains=Not Contains ... -FieldValuePopupMenu.After=After ... -FieldValuePopupMenu.Before=Before ... -FieldValuePopupMenu.GreaterThan=Filter greater than... -FieldValuePopupMenu.LessThan=Filter less than... -FieldValuePopupMenu.Equals=Equals to... -FieldValuePopupMenu.StartsWith=Starts with... -FieldValuePopupMenu.Clear=Clear -FieldValuePopupMenu.Filter=Filter \ No newline at end of file +IntervalDefinitionDialog.Exit=Sortie +App.appliedFilters=Filters[TBT] +iped.app.graph.FilterSelectedEdges.filtererName=Graph Edge Filter[TBT] +iped.app.timelinegraph.IpedChartsPanel.filtererName=Time Chart Filter[TBT] +iped.app.ui.App.DuplicatesFilterer.filtererName=Duplicates Filter[TBT] +iped.app.ui.App.SimilarDocumentFilterer.filtererName=Similar Documents Filter[TBT] +iped.app.ui.App.SimilarFacesSearchFilterer.filtererName=Similar Faces Filter[TBT] +iped.app.ui.App.SimilarImagesQueryFilterer.filtererName=Similar Images Filter[TBT] +iped.app.ui.App.SearchFilterer.filtererName=Keyword Search Filter[TBT] +iped.app.ui.BookmarksTreeListener.filtererName=Bookmarks Filter[TBT] +iped.app.ui.CategoryTreeListener.filtererName=Category Filter[TBT] +iped.app.ui.ComboFilterer.filtererName=Predefined Filter[TBT] +iped.app.ui.ComboFilterer.tooltip=Select a Predefined Filter[TBT] +iped.app.ui.MetadataPanel.filtererName=Metadata Filter[TBT] +iped.app.ui.TableHeaderFilterManager.filtererName=Table Header Filter[TBT] +iped.app.ui.TimelineListener.filtererName=Timeline Filter[TBT] +iped.app.ui.TreeListener.filtererName=Evidence Tree Filter[TBT] +iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Combined Filter[TBT] +iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Apply Combined Filter[TBT] +FilterValue.Duplicates=Duplicate Filter Result[TBT] +FilterValue.SimilarDocument=Similar Documents[TBT] +FilterValue.SimilarFace=Similar Faces:[TBT] +FilterValue.SimilarImage=Similar Images:[TBT] +FilterValue.TimelineView=Timeline View Result[TBT] +Operand.AND=AND[TBT] +Operand.OR=OR[TBT] +OperandMenu.invertFilter=Invert filter[TBT] +OperandMenu.changeOperand=Change to[TBT] +OperandMenu.addAnd=Add AND node[TBT] +OperandMenu.addOr=Add OR node[TBT] +OperandMenu.removeNode=Remove node[TBT] +FiltererMenu.clearFilters=Clear filters[TBT] +FiltererMenu.goToItem=Go to referenced item[TBT] +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.[TBT] +FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.[TBT] +FieldValuePopupMenu.NonEmpty=Non empty[TBT] +FieldValuePopupMenu.Empty=Empty[TBT] +FieldValuePopupMenu.Contains=Contains ...[TBT] +FieldValuePopupMenu.NotContains=Not Contains ...[TBT] +FieldValuePopupMenu.After=After ...[TBT] +FieldValuePopupMenu.Before=Before ...[TBT] +FieldValuePopupMenu.GreaterThan=Filter greater than...[TBT] +FieldValuePopupMenu.LessThan=Filter less than...[TBT] +FieldValuePopupMenu.Equals=Equals to...[TBT] +FieldValuePopupMenu.StartsWith=Starts with...[TBT] +FieldValuePopupMenu.Clear=Clear[TBT] +FieldValuePopupMenu.Filter=Filter[TBT] \ No newline at end of file From 69addd7764923643839f0785cf400f0fcb90eb36 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:17:12 -0300 Subject: [PATCH 062/126] '#1182: translate iped-parsers-messages to FR --- .../iped-parsers-messages_fr_FR.properties | 942 +++++++++--------- 1 file changed, 471 insertions(+), 471 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 6b441d003d..2d899232d1 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -1,100 +1,100 @@ -AbstractDBParser.ProbableDate=*Possible date decoded.\n +AbstractDBParser.ProbableDate=*Date possiblement décodée.\n AbstractDBParser.Table=Table:\ AresParser.Album=Album -AresParser.Artist=Artist -AresParser.Category=Category -AresParser.Comments=Comments -AresParser.Corrupted=Corrupted -AresParser.DateFormat=MM/dd/yyyy HH:mm:ss -AresParser.FileDate=File Date (Local Time) -AresParser.FoundInCase=Found in the Case -AresParser.FoundInPedoHashDB=Found in Child Porn Alert Hash Database +AresParser.Artist=Artiste +AresParser.Category=Categories +AresParser.Comments=Commentaires +AresParser.Corrupted=Corrompu +AresParser.DateFormat=dd/MM/yyyy HH:mm:ss +AresParser.FileDate=Horodatage du fichier (Heure locale) +AresParser.FoundInCase=Trouvé dans le cas +AresParser.FoundInPedoHashDB=Correspondance dans la base de hash avec de la pédopornographie AresParser.HashSha1=Hash SHA1 -AresParser.No=No -AresParser.Path=Full Path -AresParser.Seq=Seq -AresParser.Shared=Shared -AresParser.Size=Size -AresParser.Title=Title +AresParser.No=Non +AresParser.Path=Chemin complet +AresParser.Seq=Séquence +AresParser.Shared=Partagé +AresParser.Size=Taille +AresParser.Title=Titre AresParser.URL=URL -AresParser.Yes=Yes -DateFormat=MM/dd/yyyy HH:mm:ss -DiscordParser.Attachments=Attachments -DiscordParser.Start=Start -DiscordParser.End=End -DiscordParser.EditTime=Edit time: +AresParser.Yes=oui +DateFormat=dd/MM/yyyy HH:mm:ss +DiscordParser.Attachments=Pièces jointes +DiscordParser.Start=Début +DiscordParser.End=Fin +DiscordParser.EditTime=Modifier l'heure: DiscordParser.Participants=Participants -DiscordParser.Reactions=Reactions: -DiscordParser.DateFormat0=(hh:mm:ss a MM/dd/yyyy) -DiscordParser.DateFormat2=MM/dd/yy -EmbeddedDocumentParser.UnNamed=[UnNamed]- -FirefoxSessions.TabsHeader=Mozilla Firefox Tabs From Saved Sessions -FirefoxSessions.TabsTitle=Title +DiscordParser.Reactions=Réactions: +DiscordParser.DateFormat0=(hh:mm:ss dd/MM/yyyy) +DiscordParser.DateFormat2=dd/MM/yy +EmbeddedDocumentParser.UnNamed=[Inconnu]- +FirefoxSessions.TabsHeader=Onglets des sessions sauvegardées de Mozilla Firefox +FirefoxSessions.TabsTitle=Titre FirefoxSessions.TabsURL=URL -FirefoxSessions.CookiesHeader=Mozilla Firefox Cookies From Saved Sessions -FirefoxSessions.CookiesHost=Host -FirefoxSessions.CookiesPath=Path -FirefoxSessions.CookiesName=Name +FirefoxSessions.CookiesHeader=Cookies des sessions sauvegardées de Mozilla Firefox +FirefoxSessions.CookiesHost=Hôte +FirefoxSessions.CookiesPath=Chemin +FirefoxSessions.CookiesName=Nom FirefoxSessions.CookiesCookie=Cookie -IncrediMailParser.NoSubject=[No Subject] -StandardParser.MetadataTitle=METADATA: -KnownMetParser.AcceptedRequests=Accepted Requests -KnownMetParser.BytesSent=Bytes Sent -KnownMetParser.DataFormat=MM/dd/yyyy HH:mm:ss +IncrediMailParser.NoSubject=[Sans sujet] +StandardParser.MetadataTitle=Métadonnées: +KnownMetParser.AcceptedRequests=Demandes acceptées +KnownMetParser.BytesSent=Bytes envoyés +KnownMetParser.DataFormat=dd/MM/yyyy HH:mm:ss KnownMetParser.Hash=Hash eDonkey -KnownMetParser.FoundInCase=Found in the Case -KnownMetParser.FoundInPedoHashDB=Found in Child Porn Alert Hash Database -KnownMetParser.LastModDate=Last Modified Date (UTC) -KnownMetParser.LastPubDate=Last Publication Date (UTC) -KnownMetParser.LastShareDate=Last Shared Date -KnownMetParser.Name=File Name -KnownMetParser.Requests=Total Requests -KnownMetParser.Seq=Seq -KnownMetParser.Size=File Size -KnownMetParser.TempFile=Temporary File -KnownMetParser.Totals=TOTALS -KnownMetParser.Yes=Yes +KnownMetParser.FoundInCase=Trouvé dans le cas +KnownMetParser.FoundInPedoHashDB=Pédopornographie trouvée dans la base de Hash +KnownMetParser.LastModDate=Dernière date de modification (UTC) +KnownMetParser.LastPubDate=Dernière date de publication (UTC) +KnownMetParser.LastShareDate=Dernière date d'échange +KnownMetParser.Name=Nom du fichier +KnownMetParser.Requests=Total des demandes +KnownMetParser.Seq=Séquence +KnownMetParser.Size=Taille du fichier +KnownMetParser.TempFile=Fichier temporaire +KnownMetParser.Totals=Total +KnownMetParser.Yes=Oui PreferencesDat.Version=Version -PreferencesDat.UserHash=User Hash -LibpffPSTParser.AttachedMessage=Attached Message -LibpffPSTParser.Attachments=Attachments -LibpffPSTParser.NoSubject=[No Subject] -LNKShortcutParser.Accessed=Last Accessed Date +PreferencesDat.UserHash=Hash utilisateur +LibpffPSTParser.AttachedMessage=Message joint +LibpffPSTParser.Attachments=Pièces jointes +LibpffPSTParser.NoSubject=[Sans sujet] +LNKShortcutParser.Accessed=Date du dernier accès LNKShortcutParser.BirthDroidFileId=Birth Droid File Identifier LNKShortcutParser.BirthDroidVolId=Birth Droid Volume Identifier -LNKShortcutParser.CmdLineArgs=Command Line Args -LNKShortcutParser.CommonPath=Common Path -LNKShortcutParser.CommonPathUnicode=Common Path - Unicode -LNKShortcutParser.Created=Created Date -LNKShortcutParser.DataNotDecoded=(data not decoded) -LNKShortcutParser.DataStrings=Data Strings ( -LNKShortcutParser.DateFormat=MM/dd/yyyy HH:mm:ss [z] +LNKShortcutParser.CmdLineArgs=Arguments ligne de commande +LNKShortcutParser.CommonPath=Chemin commun +LNKShortcutParser.CommonPathUnicode=Chemin commun - Unicode +LNKShortcutParser.Created=Date de création +LNKShortcutParser.DataNotDecoded=(donnée non décodée) +LNKShortcutParser.DataStrings=Chaine de données ( +LNKShortcutParser.DateFormat=dd/MM/yyyy HH:mm:ss [z] LNKShortcutParser.Description=Description -LNKShortcutParser.Directory=Directory -LNKShortcutParser.DistributedLinkTrackProps=Distributed Link Tracker Properties -LNKShortcutParser.DriveSerial=Drive Serial Number -LNKShortcutParser.DriveType=Drive type -LNKShortcutParser.DroidFileId=Droid File Identifier -LNKShortcutParser.DroidVolId=Droid Volume Identifier -LNKShortcutParser.EntryType=Entry Type +LNKShortcutParser.Directory=Dossier +LNKShortcutParser.DistributedLinkTrackProps=Propriété du tacker de liens distribués +LNKShortcutParser.DriveSerial=Numéro de série du lecteur +LNKShortcutParser.DriveType=Type de lecteur +LNKShortcutParser.DroidFileId=Identifiant du fichier du Droid +LNKShortcutParser.DroidVolId=Identifiant du volume du Droid +LNKShortcutParser.EntryType=Type d'entrée LNKShortcutParser.Extensions=Extensions -LNKShortcutParser.File=File -LNKShortcutParser.FileAttr=File Attributes -LNKShortcutParser.FileHeader=File Header (LNK) -LNKShortcutParser.HotKey=Hot Key -LNKShortcutParser.IconIndex=Icon Index -LNKShortcutParser.IconLocation=Icon Location -LNKShortcutParser.LastMod=Last Modified -LNKShortcutParser.LinkAttr=Link Attributes (Data Flags) -LNKShortcutParser.LinkLocationInfo=Link Location Information (HasLinkInfo) -LNKShortcutParser.LinkTargetID=Link Target Identifier (HasTargetIDList) -LNKShortcutParser.LocalizedNames=Local Name Shell -LNKShortcutParser.LocalPath=Local Path -LNKShortcutParser.LocalPathUnicode=Local Path - Unicode -LNKShortcutParser.LocationFlags=Location Flags -LNKShortcutParser.MachineId=Machine Identifier -LNKShortcutParser.Modified=Last Modified Date -LNKShortcutParser.NetComments=Net Comments +LNKShortcutParser.File=Fichier +LNKShortcutParser.FileAttr=Attributs du fichier +LNKShortcutParser.FileHeader=En-tête du fichier (LNK) +LNKShortcutParser.HotKey=Touche de raccourci +LNKShortcutParser.IconIndex=Index des icones +LNKShortcutParser.IconLocation=Emplacement des icones +LNKShortcutParser.LastMod=Dernière modification +LNKShortcutParser.LinkAttr=Attributs des liens (Data Flags) +LNKShortcutParser.LinkLocationInfo=Information sur l'emplacement des liens (HasLinkInfo) +LNKShortcutParser.LinkTargetID=Identification de la cible du lien (HasTargetIDList) +LNKShortcutParser.LocalizedNames=Nom local du Shell +LNKShortcutParser.LocalPath=Chemin local +LNKShortcutParser.LocalPathUnicode=Chemin local - Unicode +LNKShortcutParser.LocationFlags=Indicateur de localisation +LNKShortcutParser.MachineId=Identifiant de la machine +LNKShortcutParser.Modified=Date de dernière modification +LNKShortcutParser.NetComments=commentaires du Net LNKShortcutParser.NetDescription=Net Description LNKShortcutParser.NetDeviceName=Net Device Name LNKShortcutParser.NetDevNameUnicode=Net Device Name - Unicode @@ -103,405 +103,405 @@ LNKShortcutParser.NetItemType=Net - Item Type LNKShortcutParser.NetProviderType=Net Provider Type LNKShortcutParser.NetShare=Net Share Name LNKShortcutParser.NetShareUnicode=Net Share Name - Unicode -LNKShortcutParser.NtfsRef=NTFS Reference -LNKShortcutParser.PrimaryName=Primary Name -LNKShortcutParser.RelativePath=Relative Path -LNKShortcutParser.SecondaryName=Secondary Name -LNKShortcutParser.Size=Size -LNKShortcutParser.TargetAttr=Target Attributes -LNKShortcutParser.TargetSize=Target Size -LNKShortcutParser.UnknownData=Unknown data -LNKShortcutParser.VolumeLabel=Volume Label -LNKShortcutParser.VolumeLabelUnicode=Volume Label - Unicode -LNKShortcutParser.WindowAttr=Window Attributes -LNKShortcutParser.WorkingDir=Working Directory -MboxParser.NoSubject=[No Subject] -MetadataUtil.NoSubject=[No Subject] +LNKShortcutParser.NtfsRef=Référence NTFS +LNKShortcutParser.PrimaryName=Nom principal +LNKShortcutParser.RelativePath=Chemin relatif +LNKShortcutParser.SecondaryName=Nom secondaire +LNKShortcutParser.Size=Taille +LNKShortcutParser.TargetAttr=Propriétés de la cible +LNKShortcutParser.TargetSize=Taille de la cible +LNKShortcutParser.UnknownData=Donnée inconnue +LNKShortcutParser.VolumeLabel=Nom du lecteur +LNKShortcutParser.VolumeLabelUnicode=Nom du lecteur - Unicode +LNKShortcutParser.WindowAttr=Propriétés de la fenêtre +LNKShortcutParser.WorkingDir=Dossier de travail +MboxParser.NoSubject=[Sans sujet] +MetadataUtil.NoSubject=[Sans sujet] MSAccessParser.Table=Table:\ -OutlookPSTParser.Attachment=Attachment- -OutlookPSTParser.Attachments=Attachments -OutlookPSTParser.DateFormat=MM/dd/yyyy HH:mm:ss -OutlookPSTParser.From=From -OutlookPSTParser.NoSubject=[No Subject] -OutlookPSTParser.Sent=Sent -OutlookPSTParser.Subject=Subject -OutlookPSTParser.To=To: -OutlookPSTParser.ImportanceHigh=High +OutlookPSTParser.Attachment=Pièces jointes- +OutlookPSTParser.Attachments=Pièces jointes +OutlookPSTParser.DateFormat=dd/MM/yyyy HH:mm:ss +OutlookPSTParser.From=de +OutlookPSTParser.NoSubject=[Sans sujet] +OutlookPSTParser.Sent=Envoyer +OutlookPSTParser.Subject=Sujet +OutlookPSTParser.To=à: +OutlookPSTParser.ImportanceHigh=Haute OutlookPSTParser.ImportanceNormal=Normal -OutlookPSTParser.ImportanceLow=Low -PythonModule.JepNotFound=JEP not found, all python modules were disabled.\ -PythonModule.ModuleDisabled=\ module disabled.\ -PythonModule.SeeManual=See https://github.com/sepinf-inc/IPED/wiki/User-Manual#python-modules -ReportGenerator.DownloadedFile=[Downloaded File] -ReportGenerator.TranscriptionTitle=Automatic transcription -ReportGenerator.Unknown=Unknown -ReportGenerator.UnknownDate=Unknown Date -RFC822Parser.AttachedEmail=AttachedEmail.eml -RFC822Parser.UnNamed=[UnNamed] -SkypeConversation.SkypeChat=Skype Chat\ -SkypeFileTransfer.Download=Download -SkypeFileTransfer.FileOffer=File Offering (*) -SkypeFileTransfer.FileSend=File Sending -SkypeParser.DateFormat=MM/dd/yyyy HH:mm:ss -SkypeParser.SkypeTransfer=Skype Transfer -SkypeReport.About=About -SkypeReport.AcceptDate=Accept Date -SkypeReport.Attribute=Attribute -SkypeReport.Author=Author +OutlookPSTParser.ImportanceLow=faible +PythonModule.JepNotFound=JEP non trouvé, tous les modules python sont désactivés.\ +PythonModule.ModuleDisabled=\ module désactivé.\ +PythonModule.SeeManual=Consulter https://github.com/sepinf-inc/IPED/wiki/User-Manual#python-modules +ReportGenerator.DownloadedFile=[Fichier téléchargé] +ReportGenerator.TranscriptionTitle=Transcription automatique +ReportGenerator.Unknown=Inconnu +ReportGenerator.UnknownDate=Horodatage inconnu +RFC822Parser.AttachedEmail=PiècesjointesEmail.eml +RFC822Parser.UnNamed=[Inconnu] +SkypeConversation.SkypeChat=Chat de l'application Skype\ +SkypeFileTransfer.Download=Télécharhement +SkypeFileTransfer.FileOffer=Proposition de fichier (*) +SkypeFileTransfer.FileSend=Envoi de fichier +SkypeParser.DateFormat=dd/MM/yyyy HH:mm:ss +SkypeParser.SkypeTransfer=Transfert Skype +SkypeReport.About=A propos +SkypeReport.AcceptDate=Accepter la date +SkypeReport.Attribute=Propriété +SkypeReport.Author=Auteur SkypeReport.Avatar=Avatar: -SkypeReport.AvatarDate=Avatar Date -SkypeReport.BirthDate=Birth Date +SkypeReport.AvatarDate=Date de l'avatar +SkypeReport.BirthDate=Date de naissance SkypeReport.Chat=Chat -SkypeReport.ChatID=Chat ID -SkypeReport.ChatName=Chat Name -SkypeReport.City=City -SkypeReport.ContactCount=Contact Count:\ -SkypeReport.Content=Content -SkypeReport.Country=Country +SkypeReport.ChatID=Identifiant du chat +SkypeReport.ChatName=Nom du chat +SkypeReport.City=Ville +SkypeReport.ContactCount=Nombre de contacts:\ +SkypeReport.Content=Contenu +SkypeReport.Country=Pays SkypeReport.Date=Date -SkypeReport.DisplayName=Display Name -SkypeReport.EditedBy=Edited By -SkypeReport.EditedDate=Edited Date +SkypeReport.DisplayName=Afficher le Nom +SkypeReport.EditedBy=Modifié par +SkypeReport.EditedDate=Date de modification SkypeReport.Email=Email -SkypeReport.Empty=[Empty] -SkypeReport.FileName=File Name -SkypeReport.FileSize=File Size -SkypeReport.FinishDate=Finish Date -SkypeReport.From=From -SkypeReport.FullName=Full Name -SkypeReport.FullPath=Full Path -SkypeReport.HomePhone=Home Phone -SkypeReport.ID=ID -SkypeReport.ImageCacheMsg=Image from media cache -SkypeReport.LastContactedDate=Last Contacted Date -SkypeReport.LastOnlineDate=Last Online Date -SkypeReport.LikelyFile=Likely File: -SkypeReport.MessageCount=Message Count:\ +SkypeReport.Empty=[Vide] +SkypeReport.FileName=Nom du fichier +SkypeReport.FileSize=Taille du fichier +SkypeReport.FinishDate=Date de fin +SkypeReport.From=De +SkypeReport.FullName=Nom complet +SkypeReport.FullPath=Chemin complet +SkypeReport.HomePhone=Téléphone fixe +SkypeReport.ID=Identifiant +SkypeReport.ImageCacheMsg=Image du cache multimédia +SkypeReport.LastContactedDate=Date du dernier contact +SkypeReport.LastOnlineDate=Dernière date de connexion +SkypeReport.LikelyFile=Fichier probable: +SkypeReport.MessageCount=Nombre de messages:\ SkypeReport.Messages=Messages -SkypeReport.MobilePhone=Mobile Phone +SkypeReport.MobilePhone=Téléphone mobile SkypeReport.Mood=Mood SkypeReport.MoodDate=Mood Date -SkypeReport.OfficePhone=Office Phone +SkypeReport.OfficePhone=Téléphone du domicile SkypeReport.Participants=Participants: -SkypeReport.Phone=Phones -SkypeReport.ProfileDate=Profile Date +SkypeReport.Phone=Téléphone +SkypeReport.ProfileDate=Date du profil SkypeReport.Province=Province -SkypeReport.PstnNum=PSTN Number -SkypeReport.Recipient=Recipient -SkypeReport.RemoteID=Remote ID -SkypeReport.SentBytes=Sent Bytes -SkypeReport.SkypeID=Skype ID -SkypeReport.StartDate=Start Date -SkypeReport.TotalCount=Total Count -SkypeReport.TransferCount=Transfer Count:\ -SkypeReport.TypeDescr=Type Description -SkypeReport.UserData=User Data: -SkypeReport.Value=Value -SQLite3TableReader.DateFormat=MM/dd/yyyy_HH:mm:ssz -WhatsAppReport.AccountID=Account ID:\ -WhatsAppReport.ChatContinuation=[Chat continuation...] -WhatsAppReport.ChatContinues=[Chat continues...] -WhatsAppReport.ContactDeleted=Recovered deleted contact -WhatsAppReport.RecoveredChat=Recovered deleted chat -WhatsAppReport.ContactID=Contact ID:\ -WhatsAppReport.DisplayName=Display Name:\ -WhatsAppReport.GivenName=Given Name:\ -WhatsAppReport.NickName=NickName:\ -WhatsAppReport.SortName=Sort Name:\ -WhatsAppReport.Status=Status:\ -WhatsAppReport.Video=Video -WhatsAppReport.WAName=WA Name:\ -WhatsAppReport.UnknownMessage=Unknown Message. -WhatsAppReport.UnknownMediaMessage=Unknown Media Message -WhatsAppReport.Forwarded=Forwarded -WhatsAppReport.SecurityChanged=Security code changed. Tap for more info. -WhatsAppReport.BlockedContact=You blocked this contact. Tap to unblock. -WhatsAppReport.UnblockedContact=You unblocked this contact. -WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info. -WhatsAppReport.BusinessToStandard=This business account has now registered as a standard account. Tap for more info. -WhatsAppReport.ChatBusiness=This chat is with a business account. Tap for more info. -WhatsAppReport.ChatEncrypted=Messages and calls are end-to-end encrypted. No one outside of this chat, not even WhatsApp, can read or listen to them. Tap to learn more. -WhatsAppReport.ChatNowEncrypted=Messages to this chat and calls are now secured with end-to-end encryption. Tap for more info. -WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info. -WhatsAppReport.GroupNowEncrypted=Messages to this group are now secured with end-to-end encryption. Tap for more info. -WhatsAppReport.MissedVideoCall=Missed video call -WhatsAppReport.MissedVoiceCall=Missed voice call -WhatsAppReport.RefusedVoiceCall=Refused voice call -WhatsAppReport.RefusedVideoCall=Refused video call -WhatsAppReport.UnavailableVoiceCall=Unavailable voice call -WhatsAppReport.UnavailableVideoCall=Unavailable video call -WhatsAppReport.UnknownVoiceCall=Unknown type of voice call -WhatsAppReport.UnknownVideoCall=Unknown type of video call -WhatsAppReport.GroupCreated=Group created by -WhatsAppReport.UserAddedToCommunity=added user to community -WhatsAppReport.UserAddedToGroup=added user to group -WhatsAppReport.UserCommunityAdmin=set user as community admin -WhatsAppReport.CommunityAdmin=is now community admin -WhatsAppReport.UserLeftGroup=User left group -WhatsAppReport.UserRemovedGroup=removed user from group -WhatsAppReport.AddedToCommunity=added to community -WhatsAppReport.AddedToGroup=added to group -WhatsAppReport.RemovedGroup=removed from group -WhatsAppReport.GroupIconChanged=Group icon changed -WhatsAppReport.GroupIconDeleted=Group icon deleted -WhatsAppReport.MessageDeleted=Message deleted -WhatsAppReport.MessageDeletedByAdmin=Message deleted by admin -WhatsAppReport.MessageDeletedBySender=Message deleted by the sender -WhatsAppReport.MessageDeletedRecovered=Recovered deleted message -WhatsAppReport.LocationMessage=Location -WhatsAppReport.SharedLocationMessage=Shared Location -WhatsAppReport.Latitude=Latitude -WhatsAppReport.Longitude=Longitude -WhatsAppReport.Attachment=Attachment -WhatsAppReport.VoiceCall=Voice Call -WhatsAppReport.VideoCall=Video Call -WhatsAppReport.UserJoinedGroupCommunity=joined group from community -WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation -WhatsAppReport.UserJoinedGroupLink=joined group from shared link -WhatsAppReport.ResetGroupLink=reset this group's invite link -WhatsAppReport.GroupDescriptionChanged=Group description changed -WhatsAppReport.GroupDescriptionDeleted=deleted group description -WhatsAppReport.GroupNameChanged=changed the group name to -WhatsAppReport.SubjectChanged=Subject changed -WhatsAppReport.UserAdmin=is now admin of this group -WhatsAppReport.YouAdmin=You are now admin of this group -WhatsAppReport.YouNotAdmin=You are no longer an admin of this group -WhatsAppReport.WaitingMessage=Waiting for message -WhatsAppReport.Duration=Duration -WhatsAppReport.AudioMessageTitle=Audio Message File -WhatsAppReport.VideoMessageTitle=Video Message File -WhatsAppReport.Contact=Contact -WhatsAppReport.RecoveredFrom=Recovered from -WhatsAppReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database -WhatsAppReport.Owner=Owner -WhatsAppReport.Recovered=Recovered -WhatsAppReport.QuoteNotFound=Quoted message not found -WhatsAppReport.Document=Document -WhatsAppReport.Photo=Photo -WhatsAppReport.Audio=Audio -WhatsAppReport.ChatFragment=This quoted message is located on chat fragment -WhatsAppReport.ReferenceId=Quoted message reference ID -WhatsAppReport.Close=Close -WhatsAppReport.GroupInvite=WhatsApp Group Invite -WhatsAppReport.Poll=Poll -WhatsAppReport.Vote=vote -WhatsAppReport.Votes=votes -WhatsAppReport.EphemeralDurationChanged=changed the duration of disappearing messages to -WhatsAppReport.EphemeralDefault=uses a default timer for disappearing messages messages in new chats. All new messages will disappear from this chat after -WhatsAppReport.EphemeralOn=turned on disappearing messages. All new messages will disappear from this chat after -WhatsAppReport.EphemeralOff=turned off disappearing messages. -WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat. -WhatsAppReport.Days=days -WhatsAppReport.Hours=hours -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group. -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info. -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info. -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages. -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages. -WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group. -WhatsAppReport.ChangedDevice=changed device. -WhatsAppReport.ChangedNumberTo=changed to -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number. -WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number. -WhatsAppReport.SenderInContacts=is in your contacts. -WhatsAppReport.SenderAddedToContacts=was added to your contacts. -WhatsAppReport.BusinessChangedName=This business account changed its name. -WhatsAppReport.ChatBusinessOfficial=This chat is with an official business account. -WhatsAppReport.GroupAddedToCommunity=Group was added to the community -WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community -WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group. -WhatsAppReport.CommunityManagementAction=Community management action. -WhatsAppReport.CommunityRenamed=changed the community's name -WhatsAppReport.CommunityWelcome=Welcome to the community. -WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group. -WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number. -WhatsAppReport.ChannelAddedPrivacy=This channel has added privacy for your profile and phone number. -WhatsAppReport.ChannelCreated=Channel was created. -WhatsAppReport.ProductTitle=Product -WhatsAppReport.ProductSeller=Seller -WhatsAppReport.ProductAmount=Amount -WhatsAppReport.OrderCount=Item Count -WhatsAppReport.EditedOn=Edited on -WhatsAppReport.UserJoinedWhatsApp=joined WhatsApp -WhatsAppReport.PinnedMessage=pinned a message -WhatsAppReport.AIThirdParty=This AI is from a third-party developer. Meta receives your AI chats to improve AI quality. -VCardParser.FormattedName=Formatted Name -VCardParser.Name=Name -VCardParser.Nickname=Nickname +SkypeReport.PstnNum=Numéro PSTN +SkypeReport.Recipient=Correspondant +SkypeReport.RemoteID=Identifiant d'envoi +SkypeReport.SentBytes=Bytes envoyés +SkypeReport.SkypeID=Identifiant Skype +SkypeReport.StartDate=Date de début +SkypeReport.TotalCount=Compteur Total +SkypeReport.TransferCount=Compteur de transfert:\ +SkypeReport.TypeDescr=Description +SkypeReport.UserData=Donnée utilisateur: +SkypeReport.Value=Valeur +SQLite3TableReader.DateFormat=dd/MM/yyyy_HH:mm:ssz +WhatsAppReport.AccountID=Identifiant du compte:\ +WhatsAppReport.ChatContinuation=[Suite du chat...] +WhatsAppReport.ChatContinues=[le chat continu...] +WhatsAppReport.ContactDeleted=Contacts supprimés récupérés +WhatsAppReport.RecoveredChat=Chat supprimés récupérés +WhatsAppReport.ContactID=Identifiant de contact:\ +WhatsAppReport.DisplayName=Nom:\ +WhatsAppReport.GivenName=Prénom:\ +WhatsAppReport.NickName=Surnom:\ +WhatsAppReport.SortName=Trier le nom:\ +WhatsAppReport.Status=Statut:\ +WhatsAppReport.Video=Vidéo +WhatsAppReport.WAName=Quel nom:\ +WhatsAppReport.UnknownMessage=Message inconnu. +WhatsAppReport.UnknownMediaMessage=Message Média inconnu +WhatsAppReport.Forwarded=Transféré +WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d'informations. +WhatsAppReport.BlockedContact=Vous avez bloqué ce contact. Appuyer pour débloquer. +WhatsAppReport.UnblockedContact=Vous avez débloqué ce contact. +WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info.[TBT] +WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. +WhatsAppReport.ChatBusiness=Ce chat s'effectue avec un compte professionnel. Appuyer pour plus d'informations. +WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp,. Appuyer pour en savoir plus. +WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. +WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info.[TBT] +WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. +WhatsAppReport.MissedVideoCall=Appel vidéo manqué +WhatsAppReport.MissedVoiceCall=Appel vocal manqué +WhatsAppReport.RefusedVoiceCall=Appel vocal rejeté +WhatsAppReport.RefusedVideoCall=Appel vidéo rejeté +WhatsAppReport.UnavailableVoiceCall=Appel vocal indisponible +WhatsAppReport.UnavailableVideoCall=Appel vidéo indisponible +WhatsAppReport.UnknownVoiceCall=Type d'appel vocal inconnu +WhatsAppReport.UnknownVideoCall=Type d'appel vidéo inconnu +WhatsAppReport.GroupCreated=Groupe créé par +WhatsAppReport.UserAddedToCommunity=added user to community[TBT] +WhatsAppReport.UserAddedToGroup=added user to group[TBT] +WhatsAppReport.UserCommunityAdmin=set user as community admin[TBT] +WhatsAppReport.CommunityAdmin=is now community admin[TBT] +WhatsAppReport.UserLeftGroup=Utilisateur ayant quitté le groupe:\ +WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe:\ +WhatsAppReport.AddedToCommunity=added to community[TBT] +WhatsAppReport.AddedToGroup=added to group[TBT] +WhatsAppReport.RemovedGroup=removed from group[TBT] +WhatsAppReport.GroupIconChanged=l'icône du groupe a changé +WhatsAppReport.GroupIconDeleted=l'icône du groupe a été supprimé +WhatsAppReport.MessageDeleted=Message supprimé +WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l'administrateur +WhatsAppReport.MessageDeletedBySender=Message supprimé par l'expéditeur +WhatsAppReport.MessageDeletedRecovered=Message supprimé récupéré +WhatsAppReport.LocationMessage=Emplacement: +WhatsAppReport.SharedLocationMessage=Emplacement partagé: +WhatsAppReport.Latitude=Latitude[TBT] +WhatsAppReport.Longitude=Longitude[TBT] +WhatsAppReport.Attachment=Attachment[TBT] +WhatsAppReport.VoiceCall=Appel vocal +WhatsAppReport.VideoCall=Appel vidéo +WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] +WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] +WhatsAppReport.UserJoinedGroupLink=L'utilisateur a rejoint le groupe à partir d'un lien partagé +WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.GroupDescriptionChanged=Description du groupe modifiée +WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] +WhatsAppReport.GroupNameChanged=changed the group name to [TBT] +WhatsAppReport.SubjectChanged=Sujet modifié +WhatsAppReport.UserAdmin=is now admin of this group[TBT] +WhatsAppReport.YouAdmin=Vous ètes à présent administrateur du groupe +WhatsAppReport.YouNotAdmin=You are no longer an admin of this group[TBT] +WhatsAppReport.WaitingMessage=En attente de message +WhatsAppReport.Duration=Durée +WhatsAppReport.AudioMessageTitle=Fichier de message audio +WhatsAppReport.VideoMessageTitle=Fichier de message vidéo +WhatsAppReport.Contact=Contact[TBT] +WhatsAppReport.RecoveredFrom=Récupéré de +WhatsAppReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs +WhatsAppReport.Owner=Propriétaire +WhatsAppReport.Recovered=Recovered[TBT] +WhatsAppReport.QuoteNotFound=Quoted message not found[TBT] +WhatsAppReport.Document=Document[TBT] +WhatsAppReport.Photo=Photo[TBT] +WhatsAppReport.Audio=Audio[TBT] +WhatsAppReport.ChatFragment=This quoted message is located on chat fragment[TBT] +WhatsAppReport.ReferenceId=Quoted message reference ID[TBT] +WhatsAppReport.Close=Close[TBT] +WhatsAppReport.GroupInvite=WhatsApp Group Invite[TBT] +WhatsAppReport.Poll=Poll[TBT] +WhatsAppReport.Vote=vote[TBT] +WhatsAppReport.Votes=votes[TBT] +WhatsAppReport.EphemeralDurationChanged=changed the duration of disappearing messages to[TBT] +WhatsAppReport.EphemeralDefault=uses a default timer for disappearing messages messages in new chats. All new messages will disappear from this chat after[TBT] +WhatsAppReport.EphemeralOn=turned on disappearing messages. All new messages will disappear from this chat after[TBT] +WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] +WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat.[TBT] +WhatsAppReport.Days=days[TBT] +WhatsAppReport.Hours=hours[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] +WhatsAppReport.ChangedDevice=changed device.[TBT] +WhatsAppReport.ChangedNumberTo=changed to[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] +WhatsAppReport.SenderInContacts=is in your contacts.[TBT] +WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] +WhatsAppReport.BusinessChangedName=This business account changed its name.[TBT] +WhatsAppReport.ChatBusinessOfficial=This chat is with an official business account.[TBT] +WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] +WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] +WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group.[TBT] +WhatsAppReport.CommunityManagementAction=Community management action.[TBT] +WhatsAppReport.CommunityRenamed=changed the community's name[TBT] +WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] +WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] +WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] +WhatsAppReport.ChannelAddedPrivacy=This channel has added privacy for your profile and phone number.[TBT] +WhatsAppReport.ChannelCreated=Channel was created.[TBT] +WhatsAppReport.ProductTitle=Product[TBT] +WhatsAppReport.ProductSeller=Seller[TBT] +WhatsAppReport.ProductAmount=Amount[TBT] +WhatsAppReport.OrderCount=Item Count[TBT] +WhatsAppReport.EditedOn=Edited on[TBT] +WhatsAppReport.UserJoinedWhatsApp=joined WhatsApp[TBT] +WhatsAppReport.PinnedMessage=pinned a message[TBT] +WhatsAppReport.AIThirdParty=This AI is from a third-party developer. Meta receives your AI chats to improve AI quality.[TBT] +VCardParser.FormattedName=Nom formaté +VCardParser.Name=Nom +VCardParser.Nickname=Surnom VCardParser.Email=Email -VCardParser.Telephone=Telephone -VCardParser.Organization=Organization +VCardParser.Telephone=Téléphone +VCardParser.Organization=Organisation VCardParser.Notes=Notes VCardParser.Photo=Photo -BitTorrentResumeDatParser.DateFormat=MM/dd/yyyy HH:mm:ss -BitTorrentResumeDatParser.TorrentFile=Torrent file -BitTorrentResumeDatParser.RootDir=Root directory -BitTorrentResumeDatParser.Path=Full path -BitTorrentResumeDatParser.Downloaded=Downloaded (bytes) -BitTorrentResumeDatParser.Uploaded=Uploaded (bytes) -BitTorrentResumeDatParser.AddedDate=Date/Time added -BitTorrentResumeDatParser.CompletedDate=Date/Time completed -BitTorrentResumeDatParser.Time=Date/Time -BitTorrentResumeDatParser.LastSeenCompleteDate=Last Seen Complete +BitTorrentResumeDatParser.DateFormat=dd/MM/yyyy HH:mm:ss +BitTorrentResumeDatParser.TorrentFile=Fichier Torrent +BitTorrentResumeDatParser.RootDir=Dossier racine +BitTorrentResumeDatParser.Path=Chemin complet +BitTorrentResumeDatParser.Downloaded=Téléchargements (bytes) +BitTorrentResumeDatParser.Uploaded=Upload (bytes) +BitTorrentResumeDatParser.AddedDate=Date/Heure ajoutées +BitTorrentResumeDatParser.CompletedDate=Date/Heure complètes +BitTorrentResumeDatParser.Time=Date/Heure +BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière consultation BitTorrentResumeDatParser.SeedTime=Seed time (s) -BitTorrentResumeDatParser.RunTime=Run time (s) -TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss -TorrentFileDatParser.FullPath=Full Path -TorrentFileDatParser.FileSize=File Size (Bytes) -TorrentFileDatParser.MD5=MD5 Hash -TorrentFileDatParser.SHA1=SHA1 Hash -TorrentFileDatParser.ED2K=ED2K Hash -TorrentFileDatParser.Announce=Tracker URL -TorrentFileDatParser.Comment=Comment -TorrentFileDatParser.CreatedBy=Created by -TorrentFileDatParser.CreationDate=Creation date -TorrentFileDatParser.InfoHash=InfoHash -TorrentFileDatParser.Name=Name -TorrentFileDatParser.NumberOfFiles=Number of files -TorrentFileDatParser.NumberOfPieces=Number of pieces -TorrentFileDatParser.Piece=Piece -TorrentFileDatParser.PieceLength=Piece length -TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify. -TelegramContact.ContactID=Contact ID: -TelegramContact.FirstName=First Name: -TelegramContact.LastName=Last Name: -TelegramContact.Username=Username: -TelegramContact.Phone=Phone: -TelegramContact.Channel=Telegram Channel -TelegramContact.Group=Telegram Group -TelegramReport.GroupCreate=Group/chat/channel created -TelegramReport.AddMember=Add members -TelegramReport.RemoveMember=Remove members -TelegramReport.PhotoUpdated=Photo Updated -TelegramReport.TitleUpdated=Title Updated -TelegramReport.pinnMessage=pinned Message Updated -TelegramReport.UserJoinLink=User joined by Link -TelegramReport.ChangeToChannel=Change group to channel -TelegramReport.HistoryCleared=history Cleared -TelegramReport.HistoryScreenshot=history Screenshot -TelegramReport.MessageAutoRemove=Set message auto remove timeout -TelegramReport.GameScore=game Score -TelegramReport.PhoneCall=phone Call -TelegramReport.PaymentSent=payment Sent -TelegramReport.CustomText=custom Text -TelegramReport.BotAcess=bot Domain Access Granted -TelegramReport.BotSent=bot SentSecure Values -TelegramReport.PeerJoin=peer Joined -TelegramReport.PhoneNumberRequest=phone Number Request -TelegramReport.ContactSignUp=Contact sign up -TelegramReport.ChatDeletePhoto=Chat delete photo -TelegramReport.UnknownMessage=Unknown message type:\ -TelegramReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database -TelegramReport.geoProximityReached=geoProximity alert was Reached\ -TelegramReport.groupPhoneCall=Group phone call -TelegramReport.inviteToGroupPhoneCall=Invited the group to a phone call -TelegramReport.ChangeChatTheme=Changed the theme of the chat -TelegramReport.joinedByRequest=User joined by Request -TelegramReport.ChannelMigratedFromGroup=This channel migrated from a group -TelegramReport.RecoveredChannel=Recovered deleted channel -TelegramReport.RecoveredGroup=Recovered deleted group -TelegramReport.Link=Link -TelegramReport.LinkTitle=Title -TelegramReport.LinkURL=URL -TelegramReport.Pool=Pool -ThreemaReport.ChatContinuation=[Chat continuation] -ThreemaReport.ChatContinues=[Chat continues...] -ThreemaReport.UnknownMessage=Unknown Message -ThreemaReport.GroupRenamed=Group renamed -ThreemaReport.GroupNoteStart=*You are alone in here* Use this chat as a secure notebook for text, media, and documents. -ThreemaReport.GroupNoteEnd=*You are no longer alone in this chat* New messages will be sent to all group members. -ThreemaReport.GroupCreatorLeft=*This group is orphaned* The group creator has left the group, and it can no longer be maintained. One of the remaining members should clone the group (via group details) to become the new admin. -ThreemaReport.GroupIconChanged=Group picture changed -ThreemaReport.GroupCallStarted=Group call started -ThreemaReport.GroupCallEnded=Group call ended -ThreemaReport.UserLeftGroup=User left this group -ThreemaReport.UserJoinedGroup=User joined this group -ThreemaReport.UserRemovedFromGroup=User removed from this group -ThreemaReport.SelfAddedToGroup=You were added to this group -ThreemaReport.SelfRemovedToGroup=You were removed from this group -ThreemaReport.SelfLeftGroup=You have left the group -ThreemaReport.MissedCall=Missed call -ThreemaReport.RejectedCall=Call Rejected -ThreemaReport.RejectedCallBusy=Call Rejected (Busy) -ThreemaReport.RejectedCallTimeout=Call recipient is unavailable -ThreemaReport.RejectedCallDisabled=Threema calls disabled by recipient -ThreemaReport.RejectedCallUnknown=Call Rejected (Unknown) -ThreemaReport.RejectedCallOffHours=Call Rejected (OffHours) -ThreemaReport.WorkConsumerInfo=This contact uses different version (Work/Private) from Threema App -ThreemaReport.ThreemaCall=Threema Call -ThreemaReport.Duration=Duration -ThreemaReport.UnknownMediaMessage=Unknown Media message -ThreemaReport.LocationMessage=Location: -ThreemaReport.AudioMessageTitle=Audio Message File -ThreemaReport.VideoMessageTitle=Video Message File -ThreemaReport.Video=Video -ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database -P2P.FoundInPedoHashDB=* Red lines mean the hashes were found in child porn alert hash databases. -Win10Mail.NotFound=Not Found -APKParser.Permissions=Permissions Required -APKParser.Manifest=Manifest XML -APKParser.Package=Package -APKParser.Version=Version -APKParser.SDKVersion=SDK Version -APKParser.Features=Features -APKParser.Signers=Signers -APKParser.SignersV2=Signers(V2) -APKParser.Path=Path -APKParser.Certificate=Certificate -APKParser.Algorithm=Algorithm -APKParser.MD5=MD5 -APKParser.OID=OID -APKParser.StartDate=Start Date -APKParser.EndDate=End Date -OFXParser.AccessKey=Access Key -OFXParser.AccountKey=Account Key -OFXParser.AccountLastUpdate=Account Last Update -OFXParser.AccountNumber=Account Number -OFXParser.AccountType=Account Type -OFXParser.Amount=Amount -OFXParser.AvailableBalanceAmount=Available Balance Amount -OFXParser.AvailableBalanceDate=Available Balance Date -OFXParser.Bank=Bank -OFXParser.BankId=Bank Id -OFXParser.BranchId=Branch Id -OFXParser.CheckNumber=Check Number -OFXParser.CorrectionId=Correction Id -OFXParser.CreditCard=CreditCard -OFXParser.CurrencyCode=Currency Code -OFXParser.CurrencyExchangeRate=Currency Exchange Rate -OFXParser.DateAvailable=Date Available -OFXParser.DateInitiated=Date Initiated -OFXParser.DatePosted=Date Posted -OFXParser.ExpirationUserKey=Expiration User Key -OFXParser.FinancialInstitutionId=Financial Institution ID -OFXParser.FinancialInstitutionOrganization=Financial Institution Organization -OFXParser.Id=Id -OFXParser.Language=Language -OFXParser.LedgerBalanceAmount=Ledger Balance Amount -OFXParser.LedgerBalanceDate=Ledger Balance Date -OFXParser.Memo=Memo -OFXParser.Name=Name -OFXParser.OriginalCurrencyCode=Original Currency Code -OFXParser.OriginalCurrencyExchangeRate=Original Currency Exchange Rate -OFXParser.Payee=Payee -OFXParser.PayeeId=Payee Id -OFXParser.ProfileLastUpdate=Profile Last Update -OFXParser.ReferenceNumber=Reference Number -OFXParser.ServerAssignedTemporaryId=Server-Assigned Temporary Id -OFXParser.SessionId=Session Id -OFXParser.Signon=Signon -OFXParser.StandardIndustrialCode=Standard Industrial Code -OFXParser.StatusCode=Status Code -OFXParser.StatusSeverity=Status Serverity -OFXParser.TimestampResponse=Timestamp Response -OFXParser.Transactions=Transactions -OFXParser.TransactionStartDate=Transaction Start Date -OFXParser.TransactionEndDate=Transaction End Date -OFXParser.Type=Type -OFXParser.UserKey=User Key -OFXParser.DateOfStatement=Date of Statement -OFXParser.BrokerId=Broker ID -OFXParser.Investment=Investment -OFXParser.BankTransactions=Bank Transactions -OFXParser.SubAccountFund=Sub Account Fund -OFXParser.Investments=Investments +BitTorrentResumeDatParser.RunTime=Durée (s) +TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss +TorrentFileDatParser.FullPath=Chemin complet +TorrentFileDatParser.FileSize=Taille du fichier (Bytes) +TorrentFileDatParser.MD5=Hash MD5 +TorrentFileDatParser.SHA1=Hash SHA1 +TorrentFileDatParser.ED2K=Hash ED2K +TorrentFileDatParser.Announce=Tracker URL[TBT] +TorrentFileDatParser.Comment=Comment[TBT] +TorrentFileDatParser.CreatedBy=Created by[TBT] +TorrentFileDatParser.CreationDate=Creation date[TBT] +TorrentFileDatParser.InfoHash=InfoHash[TBT] +TorrentFileDatParser.Name=Name[TBT] +TorrentFileDatParser.NumberOfFiles=Number of files[TBT] +TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] +TorrentFileDatParser.Piece=Piece[TBT] +TorrentFileDatParser.PieceLength=Piece length[TBT] +TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] +TelegramContact.ContactID=Identifiant du contact: +TelegramContact.FirstName=Prénom: +TelegramContact.LastName=Nom: +TelegramContact.Username=Nom d'utilisateur: +TelegramContact.Phone=Téléphone: +TelegramContact.Channel=Telegram Channel[TBT] +TelegramContact.Group=Telegram Group[TBT] +TelegramReport.GroupCreate=Groupe/chat/canal créés +TelegramReport.AddMember=Ajouter un membre +TelegramReport.RemoveMember=Supprimer un membre +TelegramReport.PhotoUpdated=Mise à jour de la Photo +TelegramReport.TitleUpdated=Mise à jour du titre +TelegramReport.pinnMessage=Message épinglé mis à jour +TelegramReport.UserJoinLink=Utilisateur ayant rejoint via un lien +TelegramReport.ChangeToChannel=Changer le canal du groupe +TelegramReport.HistoryCleared=historique effacé +TelegramReport.HistoryScreenshot=Capture d'écran de l'historique +TelegramReport.MessageAutoRemove=Définir le délai de suppression automatique des messages +TelegramReport.GameScore=score du jeu +TelegramReport.PhoneCall=Appel téléphonique +TelegramReport.PaymentSent=paiement envoyé +TelegramReport.CustomText=Texte personnalisé +TelegramReport.BotAcess=Accès au domaine bot accordé +TelegramReport.BotSent=valeurs du bot SentSecure +TelegramReport.PeerJoin=pair Rejoint +TelegramReport.PhoneNumberRequest=Demande de numéro de téléphone +TelegramReport.ContactSignUp=Contact inscrivez-vous +TelegramReport.ChatDeletePhoto=Supprimer la photo du chat +TelegramReport.UnknownMessage=Type de message inconnu:\ +TelegramReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs +TelegramReport.geoProximityReached=L'alerte de géoproximité a été atteinte\ +TelegramReport.groupPhoneCall=Appel téléphonique de groupe +TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d'appel téléphonique +TelegramReport.ChangeChatTheme=Changement du thème du chat +TelegramReport.joinedByRequest=Utilisateur rejoint par requête +TelegramReport.ChannelMigratedFromGroup=Cette chaîne a migré depuis un groupe +TelegramReport.RecoveredChannel=Recovered deleted channel[TBT] +TelegramReport.RecoveredGroup=Groupe supprimé récupéré +TelegramReport.Link=Link[TBT] +TelegramReport.LinkTitle=Title[TBT] +TelegramReport.LinkURL=URL[TBT] +TelegramReport.Pool=Pool[TBT] +ThreemaReport.ChatContinuation=[Chat continuation][TBT] +ThreemaReport.ChatContinues=[Chat continues...][TBT] +ThreemaReport.UnknownMessage=Unknown Message[TBT] +ThreemaReport.GroupRenamed=Group renamed[TBT] +ThreemaReport.GroupNoteStart=*You are alone in here* Use this chat as a secure notebook for text, media, and documents.[TBT] +ThreemaReport.GroupNoteEnd=*You are no longer alone in this chat* New messages will be sent to all group members.[TBT] +ThreemaReport.GroupCreatorLeft=*This group is orphaned* The group creator has left the group, and it can no longer be maintained. One of the remaining members should clone the group (via group details) to become the new admin.[TBT] +ThreemaReport.GroupIconChanged=Group picture changed[TBT] +ThreemaReport.GroupCallStarted=Group call started[TBT] +ThreemaReport.GroupCallEnded=Group call ended[TBT] +ThreemaReport.UserLeftGroup=User left this group[TBT] +ThreemaReport.UserJoinedGroup=User joined this group[TBT] +ThreemaReport.UserRemovedFromGroup=User removed from this group[TBT] +ThreemaReport.SelfAddedToGroup=You were added to this group[TBT] +ThreemaReport.SelfRemovedToGroup=You were removed from this group[TBT] +ThreemaReport.SelfLeftGroup=You have left the group[TBT] +ThreemaReport.MissedCall=Missed call[TBT] +ThreemaReport.RejectedCall=Call Rejected[TBT] +ThreemaReport.RejectedCallBusy=Call Rejected (Busy)[TBT] +ThreemaReport.RejectedCallTimeout=Call recipient is unavailable[TBT] +ThreemaReport.RejectedCallDisabled=Threema calls disabled by recipient[TBT] +ThreemaReport.RejectedCallUnknown=Call Rejected (Unknown)[TBT] +ThreemaReport.RejectedCallOffHours=Call Rejected (OffHours)[TBT] +ThreemaReport.WorkConsumerInfo=This contact uses different version (Work/Private) from Threema App[TBT] +ThreemaReport.ThreemaCall=Threema Call[TBT] +ThreemaReport.Duration=Duration[TBT] +ThreemaReport.UnknownMediaMessage=Unknown Media message[TBT] +ThreemaReport.LocationMessage=Location:[TBT] +ThreemaReport.AudioMessageTitle=Audio Message File[TBT] +ThreemaReport.VideoMessageTitle=Video Message File[TBT] +ThreemaReport.Video=Video[TBT] +ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database[TBT] +P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d'alertes en matière de pédopornographie. +Win10Mail.NotFound=Non trouvé +APKParser.Permissions=Permissions Required[TBT] +APKParser.Manifest=Manifest XML[TBT] +APKParser.Package=Package[TBT] +APKParser.Version=Version[TBT] +APKParser.SDKVersion=SDK Version[TBT] +APKParser.Features=Features[TBT] +APKParser.Signers=Signers[TBT] +APKParser.SignersV2=Signers(V2)[TBT] +APKParser.Path=Path[TBT] +APKParser.Certificate=Certificate[TBT] +APKParser.Algorithm=Algorithm[TBT] +APKParser.MD5=MD5[TBT] +APKParser.OID=OID[TBT] +APKParser.StartDate=Start Date[TBT] +APKParser.EndDate=End Date[TBT] +OFXParser.AccessKey=Access Key[TBT] +OFXParser.AccountKey=Account Key[TBT] +OFXParser.AccountLastUpdate=Account Last Update[TBT] +OFXParser.AccountNumber=Account Number[TBT] +OFXParser.AccountType=Account Type[TBT] +OFXParser.Amount=Amount[TBT] +OFXParser.AvailableBalanceAmount=Available Balance Amount[TBT] +OFXParser.AvailableBalanceDate=Available Balance Date[TBT] +OFXParser.Bank=Bank[TBT] +OFXParser.BankId=Bank Id[TBT] +OFXParser.BranchId=Branch Id[TBT] +OFXParser.CheckNumber=Check Number[TBT] +OFXParser.CorrectionId=Correction Id[TBT] +OFXParser.CreditCard=CreditCard[TBT] +OFXParser.CurrencyCode=Currency Code[TBT] +OFXParser.CurrencyExchangeRate=Currency Exchange Rate[TBT] +OFXParser.DateAvailable=Date Available[TBT] +OFXParser.DateInitiated=Date Initiated[TBT] +OFXParser.DatePosted=Date Posted[TBT] +OFXParser.ExpirationUserKey=Expiration User Key[TBT] +OFXParser.FinancialInstitutionId=Financial Institution ID[TBT] +OFXParser.FinancialInstitutionOrganization=Financial Institution Organization[TBT] +OFXParser.Id=Id[TBT] +OFXParser.Language=Language[TBT] +OFXParser.LedgerBalanceAmount=Ledger Balance Amount[TBT] +OFXParser.LedgerBalanceDate=Ledger Balance Date[TBT] +OFXParser.Memo=Memo[TBT] +OFXParser.Name=Name[TBT] +OFXParser.OriginalCurrencyCode=Original Currency Code[TBT] +OFXParser.OriginalCurrencyExchangeRate=Original Currency Exchange Rate[TBT] +OFXParser.Payee=Payee[TBT] +OFXParser.PayeeId=Payee Id[TBT] +OFXParser.ProfileLastUpdate=Profile Last Update[TBT] +OFXParser.ReferenceNumber=Reference Number[TBT] +OFXParser.ServerAssignedTemporaryId=Server-Assigned Temporary Id[TBT] +OFXParser.SessionId=Session Id[TBT] +OFXParser.Signon=Signon[TBT] +OFXParser.StandardIndustrialCode=Standard Industrial Code[TBT] +OFXParser.StatusCode=Status Code[TBT] +OFXParser.StatusSeverity=Status Serverity[TBT] +OFXParser.TimestampResponse=Timestamp Response[TBT] +OFXParser.Transactions=Transactions[TBT] +OFXParser.TransactionStartDate=Transaction Start Date[TBT] +OFXParser.TransactionEndDate=Transaction End Date[TBT] +OFXParser.Type=Type[TBT] +OFXParser.UserKey=User Key[TBT] +OFXParser.DateOfStatement=Date of Statement[TBT] +OFXParser.BrokerId=Broker ID[TBT] +OFXParser.Investment=Investment[TBT] +OFXParser.BankTransactions=Bank Transactions[TBT] +OFXParser.SubAccountFund=Sub Account Fund[TBT] +OFXParser.Investments=Investments[TBT] \ No newline at end of file From 292743c1340901518aba0c852086b8fbccd862ec Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:33:15 -0300 Subject: [PATCH 063/126] '#1182: update LocalConfig.txt supported language comments --- iped-app/resources/config/LocalConfig.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/config/LocalConfig.txt b/iped-app/resources/config/LocalConfig.txt index eb36d891aa..e131f9d5b9 100644 --- a/iped-app/resources/config/LocalConfig.txt +++ b/iped-app/resources/config/LocalConfig.txt @@ -2,7 +2,7 @@ # Local environment configuration ######################################################################## -# Defines program localization/language. Currently there are localizations for 'en', 'pt-BR', 'it-IT', 'de-DE' & 'es-AR' +# Defines program localization/language. Currently there are localizations for 'en', 'pt-BR', 'it-IT', 'de-DE', 'es-AR' and 'fr-FR'. locale = en # Temporary directory for processing: "default" uses the system temporary folder. From b054acac502be0c85dba5749a1ef28aa68529b18 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:50:30 -0300 Subject: [PATCH 064/126] '#1182: translation of search help --- iped-app/resources/root/help/Help_fr-FR.htm | 121 ++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 iped-app/resources/root/help/Help_fr-FR.htm diff --git a/iped-app/resources/root/help/Help_fr-FR.htm b/iped-app/resources/root/help/Help_fr-FR.htm new file mode 100644 index 0000000000..26a058a2b5 --- /dev/null +++ b/iped-app/resources/root/help/Help_fr-FR.htm @@ -0,0 +1,121 @@ + + + + + IPED Aide + + + + + +

IPED +Aide

+

Syntaxe utilisée pour les recherches:
+

+

Pour +ouvrir l'interface d'analyse, vous avez besoin d'un système +d'exploitation 64 bits. Si votre cas ou votre rapport est stocké +sur un disque optique, l’analyse peut devenir lente. Si tel est +le cas, copiez l'intégralité du cas sur un disque dur +local, à partir duquel l'application d'analyse doit être +ouverte.

+
+La recherche par mot-clé recherche les termes dans le nom de fichier et le contenu des fichiers texte, comme Word, Excel, PDF, les e-mails, les pages Internet, les chats, etc. Si elle est activée, la technologie OCR (Optical Character Recognition) est utilisée pour rechercher du texte dans les fichiers image. Cependant, certains résultats peuvent ne pas être trouvés dans des images de mauvaise qualité ou de faible résolution, ou si les polices sont petites ou peu courantes. +

+La recherche par mot-clé ne différencie pas les majuscules ou les accents des lettres. Mais il est recommandé d'inclure des accents dans les recherches, afin que les mots-clés soient correctement mis en évidence dans l'onglet « Aperçu ». Il n'est pas recommandé de rechercher des mots-clés courants ou très courts, comme OF. Vous trouverez ci-dessous quelques exemples de recherche. 

+ +

+
    +
  • 1. suspect
    +Recherchez + les fichiers contenant le terme exact suspect. + Les dossiers contenant suspects + ne seront pas trouvés.

    +
  • 2. suspect?
    +Recherchez + des fichiers contenant des mots commençant par suspect + suivis d'une lettre à la fin, comme suspects.

    +
  • 3. suspect*
    +Recherchez + des fichiers contenant des mots commençant par suspect + avec ou sans suffixe, comme suspect, + suspects + et suspect.

    +
  • 4. Sicrano~
    +Recherchez + des fichiers contenant des mots égaux ou similaires à + sicrano, + comme siclano, + cicrano + et ciclano. + C’est plus long, + mais son utilisation est recommandée pour rechercher du texte + dans les images (si l'OCR a été activé). +

    +
  • 5. "Thomas + Edson"
    +Recherchez l’expression + exacte Thomas Edson. + Il n'est pas possible d'utiliser * ? ~ entre guillemets.

    +
  • 6. Thomas Edson
    +Recherchez + des fichiers contenant l’un des mots Thomas + ou Edson. + Cela équivaut à rechercher Thomas + OU Edson

    +
  • 7. Thomas AND + Edson
    +Rechercher Thomas et Edson +

    +
  • 8. corruption + -paiement
    +Recherchez des fichiers + contenant corruption + mais sans référence à un paiement. + Cela équivaut à rechercher corruption + ET NON un paiement.

    +
  • 9. (Thomas Edson) && + paiement
    +Recherchez des fichiers + contenant un paiement ET l'un de Thomas OU Edson

    +
  • 10. "Thomas + Edson"~5
    +Recherche de fichiers + contenant Thomas au plus 5 mots de distance d'Edson. +

    +
  • 11. (Thomas Edson + John)@2
    +Recherchez des fichiers + contenant au moins deux termes de l'ensemble. +

    +
  • 12. nom:reçu
    + + Recherchez les fichiers contenant un reçu en son nom propre.
    + Toutes les propriétés affichées dans le gestionnaire de colonnes peuvent être utilisées, à l'exception actuellement de "bookmark" et "score". +

    +
+
    +
  • 13. size:[5000 TO + *]
    +Recherchez des fichiers d'une taille + supérieure ou égale à 5 000 octets inclus. + Utilisez {} au lieu de [] pour exclure la valeur. +

    +
  • 14. modifié:[2015-01-31 + TO 2015-03-31T12\:59\:59Z]
    +Recherche des + fichiers dont la date de modification est comprise entre 0h00 du + 31/01/2015 et 12h59:59 du 31/03/2015. +

    +
  • 15. /<0-17>y(r|o)/
    +Recherchez + une expression régulière, délimitée par + 2 barres obliques. Cela ne fonctionne que pour les lettres indexées + (alphanumériques par défaut). +

    +
+
Pour plus d'informations sur la syntaxe de recherche, consulter: https://lucene.apache.org/core/9_2_0/queryparser/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.html.
+ + \ No newline at end of file From f5d4450a5115a9ea94c6174707b4194d0fd0d868 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Mon, 13 May 2024 22:58:05 -0300 Subject: [PATCH 065/126] '#1182: initial report template for French --- .../root/htmlreport/fr-FR/caseinformation.htm | 41 ++++++ .../root/htmlreport/fr-FR/contents.htm | 33 +++++ .../root/htmlreport/fr-FR/report.htm | 16 +++ .../root/htmlreport/fr-FR/res/background.jpg | Bin 0 -> 10312 bytes .../root/htmlreport/fr-FR/res/bookmarks.css | 30 +++++ .../root/htmlreport/fr-FR/res/common.css | 120 ++++++++++++++++++ .../root/htmlreport/fr-FR/res/contents.css | 66 ++++++++++ .../root/htmlreport/fr-FR/res/estilo.css | 29 +++++ .../root/htmlreport/fr-FR/res/header.gif | Bin 0 -> 1550 bytes .../root/htmlreport/fr-FR/res/info.css | 9 ++ .../root/htmlreport/fr-FR/res/lupa.png | Bin 0 -> 37345 bytes .../root/htmlreport/fr-FR/res/main.css | 21 +++ .../root/htmlreport/fr-FR/res/navigation.css | 25 ++++ .../root/htmlreport/fr-FR/templates/arq.html | 18 +++ .../root/htmlreport/fr-FR/templates/item.html | 12 ++ .../htmlreport/fr-FR/templates/perito.html | 1 + 16 files changed, 421 insertions(+) create mode 100644 iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm create mode 100644 iped-app/resources/root/htmlreport/fr-FR/contents.htm create mode 100644 iped-app/resources/root/htmlreport/fr-FR/report.htm create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/background.jpg create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/bookmarks.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/common.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/contents.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/estilo.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/header.gif create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/info.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/lupa.png create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/main.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/res/navigation.css create mode 100644 iped-app/resources/root/htmlreport/fr-FR/templates/arq.html create mode 100644 iped-app/resources/root/htmlreport/fr-FR/templates/item.html create mode 100644 iped-app/resources/root/htmlreport/fr-FR/templates/perito.html diff --git a/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm new file mode 100644 index 0000000000..6c8da606e4 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm @@ -0,0 +1,41 @@ + + + + Nom du service + + + + +
+ + + + + + + + + + + + + + + + + + + +
%HEADER%
Rapport%REPORT%
Date%REPORT_DATE%
Numéro de dossier%TITLE%
Analyste/Expert(s) + %EXAMINERS% +
Références + %INVESTIGATION%
+ %REQUEST_DOC% at %REQUEST_DATE%
+ Requested by %REQUESTER%
+ Laboratory Case %RECORD% at %RECORD_DATE%
+
Scellé analysé + %EVIDENCE% +
+
+ + diff --git a/iped-app/resources/root/htmlreport/fr-FR/contents.htm b/iped-app/resources/root/htmlreport/fr-FR/contents.htm new file mode 100644 index 0000000000..125ed90f1c --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/contents.htm @@ -0,0 +1,33 @@ + + + + IPED Forensic Report + + + + + + + + diff --git a/iped-app/resources/root/htmlreport/fr-FR/report.htm b/iped-app/resources/root/htmlreport/fr-FR/report.htm new file mode 100644 index 0000000000..a49269859e --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/report.htm @@ -0,0 +1,16 @@ + + + + IPED Forensic Report + + + + + + + <body> + </body> + + + + diff --git a/iped-app/resources/root/htmlreport/fr-FR/res/background.jpg b/iped-app/resources/root/htmlreport/fr-FR/res/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..576c5c95a105bd6b270ea4ec0dd5843a682e60bd GIT binary patch literal 10312 zcmeHMdpML^+h5N-b8tRRiY7D8A|yGCVv>+lqJwHDX^cY{8ipjMs1%i`q*QjaJMPWi zwIe!AQJW&tNjjlOHbvw(W1e@-jMVpC*ZaPE@4o*&%XOLG^Ly@fuXW$+UiZDO^3E{{Z%e67KHo?6<_*)75>U3qTM6D836r*bz7t0K(bP9B;R|w3Vw? z(?~S{2V?;eSOVbBjEY>e)O8tv&E3VB76paG_-pHb3ZNzc9+}NwLZf}<{}NJVMslJ7 zK$bvhs{mFM6XIlu!(yW&#e5gUag}4r4{V;BL2*iC5lfzm5Q2^j&#e6i284R%*#0s2c z-p&xy0gzD$l3)cFFKPQ0Z91$Mr&yE99lf|8Yn%K28=wlm8x{Zz540GuHvGyNdj!FGzAYNLjM6Z`* z$qn#8(!hRj2pk2u;1oCq3cy8B46cD&;15s*9)Ks{1!w}TpaXP+ejq>)goG#} z>WC&nMGO#AWCmh~I3g~{Lc|+cg{(t@5H`X^wjjw!8j^_|MNT5;kl&CJ8O~D!BEO2%>C!7av8O|3MgxiSQjN6Xehs(z0;eN&y;cnroa8Gbe zxDH$&3Q&1e1JyyzP&?Ea^+Z>rfhY$}L{rf$G!HF6OVJAS5!!@yqCVl#!RA%FK{)m02yrmPwMyk~uGPL*}7On~XqKMb<#pUe;4KKsHV`UG|i0 zscfxmtE@myRnADxL2jAc2Dxo=*>VMPcjR8m^~%f3>&nyRz2rmWx5{VB|0-W8-z-0* zpr&A=;H#1pu|(k zQ7Te;sPs`;R@p$=NqMdEX5}p9OUkv%ohq^_hAPe~{wj$oIVvS8^(uX;>Z+Eio~q%h zdsNS>-c^0CMp83Wb5RRW+pdnBU8$!bZTp8&(YqXeNg*`b~{y_>PQWt9;EWAf6^w< zoM>URY}##Fw+=;Tz7ALCq)v^FK-Wljxo(nfq3$a^IXyeQK)r){WqRHERQ*NzTl6pJ zKR1vyurmlYIBZa1Fkon8=wp~-SZw&-Xp)h;(PpCyMlX#OjTy!pjq{8jPbE&Zn;JUx z_|yj`I1_7=V3Qn^T2q{}h$^>dh3)oXld(E|@i&YnU%IPckny z|7f9avDzZTqQXKn-FkZ1^i$JcSgKhruuQTnwd|Q;GJ`oIXU1bIMJrb;p4AnrPcuzt zvSyx``OI3~dXaUCb(!^ujjavGrog7%R^N7=?J?VWJF?vpyFGT5bOL=Yokzb$AF{Wx zkG8*P-!;o@R_Ltrv)<1(n$4PhYW7G}UQ?)6Y&H=T4u?nR|KefU~`Gg7eLJ=sdT1sq<=F)LfRk9Cdl^s_Po$dcn2Z z&Dt&A?dE*Ke2@7V^XuKGxHH|)xpyzHU68QgwugepQjen^Zx)&?XMM`7l-ynTT_L+_c3bT} zvRjlIka{m|dRkVRa1V3Oy}g!uv-e{A0{7LV+oYe^Pu$Pm|1^V$r?(mNxKR!F@cCskXFfS{gm>-k>?$nA?6+hYibndj)>9o@$XV_<&&U&A{ zea`mWx$~6s=@)PpxEI=gUi0&VU*`RCrNFGJwW5<=jX(b0HK(h(du4a)C(b9V zXHTzY@0rgtKbQ3_>3iKD-Y*zP9n>5=J7hOhG3+zkCWsZ1gxMogM@mH=qL)}WhK-*E z#?J!dXMypv!1!5U{46kj78pMZjNc24-wTZ23yj|jjNc24-wTZ23;h4R7r<@;RT)qT zj8Q}t;8YP*6~SJB?eMeXe{DD%4t}-7Aqc#!hYdwhh)`7gghF<#Nw8SrZ#C>T0zYdZ z1gRS7aRol(P&|Q1l982@R{=N#j)q4G1U&q{fh53p0Iy0=)3J0Ss(bm9bT^V`Y|A() zqc``rTNAwNy7jHrbCP7`G$u~c)G{zMGM;KO)7r+?j&AQf&&AbkzWaiu%a*V3fgfI& z0j$8F;E)Yb(cGBWO>vu(x9`}QvTJv0=7EEUvJPh-IhvP$>Zj9Z&YnAe@zU>?i;Az5 zl$Mp>zVk;#<=uM^A3c8ZwEkJc^X4~iTUy_>y>I{XQ%~>bzW#y1p2x z{Rj?^NAV=FJqRvVY^*Atpkql?bMhkjZ&cTvu}y|NH{;}Qw`BFKyt^l?=hVq*=+A66 z_#`$-V$okSDCr+rG-lA4J=k-gfFdw#P*uPHA~dm*SGnO)!;pyDy|AP)_cg!LQOr2x z<~C#SqwIGuuLShZ)PcH!#y|`lN+j7@iE=P7T}tLR@LT=1Mlss?y~>wzoiLD~<&Yy< zK1llOLRPVzuN%)`V0CE;_3&Gf8)LMqZE-sWp5|u^B{EtlwZjp@@=>{cZmokD*graG zd}8j%2D-SXQ#A%oW1!mc{)b^+-`SQ#zw{yLJgj(~6@ru=YP0W_j1PnSUb;j6M^T^1 zzn?i$KBU~8pXtD#DDwY6jU6b2W>7y;D|tI85=rG?0slHLJ0Tkbks@cIaZ7r{9Smg0 zyS*CefD@8xb<>Yev=Ej*ckJr&d&f>VHmodoUms*q_zF6{wQVggWhkYg_D2ld*h{&= zj}@wXA9Y;0;X1#z&3A2WZ8rvzqIwH0u0wYu){Ddbaon7ETmO<@`BET_%Yp*Wk8rCgE#|fk@Wq`aVaT{T$h)cZeU$yEvW}KS9tQ(f zIl05dLY2{B;dU6Q5|)1#r5@iY>KO9z(d`v7D%;vbzrZkcto_J8L`f4z6zzMM7Xtdg z2(RqwGy$XJ*cJ@D7V?^4@bf!FE=C?#H3BBR^6v#qfY19D=a6vhCbI;hhh)isQP z9U2L_FUxZUjp@)}iJ~+(G5^|;t_qPXzds`45e9zoP5cu07>I}Akp!1%gfaYhH1z*( zNcM;{0=WX~hJ+4bO++yNhzQQ|Jwrz{GhV`#Keu?t+cg@g+V^ApHp8sgpEi{Hh8pCU z+(UiqcFFhfYksvuo+xNgoB&|l*LBvj#5qQ+%@709jl3oE!(d^r-H8kA-i$aP-N-4H&pl~!+_qoRieTGtI^$P0Y9+Jef{?$ZNVfpbPn4I=v;8MEt z5cLy`)ITxMt&}+0RYK+;80HH>TOtomnkKOO%*eoi7M*bc12?}6@z>;RXCLSqO6}+m z9rAk<)yrpG=k1R(YV0M)TMG+6jjGZYh}NeE@(+o0YJ@QDI<@5Ts=Yevd-%7dWl5sK z;i$-GP-@I%zI5Zoa2OU9!hN#}86{&0PC_Mh)PCfB*`A|GqO@0#`^62C#j=iiJ4u$nWO1kNG-hkDn zntz&K?O4sY!q5|uIp$TcSWy0k*nPO5k}Lxg1FUS68;``vaqDRGOZ<}jJPvLz^ncdL zcu$K85rF04GX^@mBuQ2|L|j2{e#u&r;`w1V+=s-*(L%-TaVvfUYia8{-Xk7N^^VD+ z;h7vMN6-D-__d-*%A``zh%GD;aC>y+k5-PLYPgWE%*jXffri;v$W z-aS5=`$ckehMkQ)g*QjXxX$+!UDk${n+VarC3fV&sKIa$nC6;}t?8)hl7!4RsbZ{3 rN<7mk#DMakPR+F&1Cp>2=NdOj=M?)ML8BzL#IuoRABsdD4{P`r5*-O z!NFz@VXc@G8x|gJ7f|+^oko7H+agku=lT43E+h%2WuT#4{d7G=}?J2>xuHBxx zos&Ig+JVf@JJXM7sxO;y+BH3``0`Ru+0t8EBW24A%EX^nlyrsPoBM3$^Lz7Z7Kz`V z&wo)}!|&(AB-qulG@*$rY}bM?UbhvR5fKwp72DEQZdHuVuKaN= zX89&lrB1bHPp7Z0UHbXPqwaQ9wZ&^qt=t~>PI%jq+&7(7QzzqykoB#Jo?4x=vQ|01 ze3Km-WGOxE%BN>b3l5fYE-O5x`aE}L@;uGFSywl{e75uM$(M6?m2R7@UiJQ)=K89J zYr8Kj_##?0zpkC_s76CC+m9CqSc9@YEag@E^I%!D?}?Sm7c5eJ)wXz+lz697SH|>X zYhP_$)TPBIX0*2XVO93J-Ji0O`=)$-@oB@MwlbB8CzW=pZ1%O|&YcqEm#sSWYSGT6 z(_^!Czny+p@A=vt>8p0C?R=3Yp1!MK*KNId5$9KzR(&gb`}KN4yY9CeDbsVm-OO0N U_S>zT?Qg%`E;!B`=)hnN0Hu|%U;qFB literal 0 HcmV?d00001 diff --git a/iped-app/resources/root/htmlreport/fr-FR/res/info.css b/iped-app/resources/root/htmlreport/fr-FR/res/info.css new file mode 100644 index 0000000000..c17e24262d --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/res/info.css @@ -0,0 +1,9 @@ +table.info { + width: 90%; + +} + +table.info td { + border: 1px solid rgb(200,200,200); + padding: 5px; +} \ No newline at end of file diff --git a/iped-app/resources/root/htmlreport/fr-FR/res/lupa.png b/iped-app/resources/root/htmlreport/fr-FR/res/lupa.png new file mode 100644 index 0000000000000000000000000000000000000000..bc18b4226ddbbb4537f4c1a91ba9c5a8d06032b2 GIT binary patch literal 37345 zcmV*VKw7_vP)=e6F zZLolfy?`{a0n&T#W!YVN@4fehU0_*6W#^qau!h)Ca0Qv~yB|u~bLakd+Bs9Cr22q3 zi3PI&;HAF!?0YCIIvbi=TEW$q4UR7UV1CUVY@C81A*~pi$@kA*2|U>Ai=MUe7ZsJ& z!cO%wpkNR=Rz{CCO3onqlL?2JACJ>ze>na~?0cj2BZk|#g+Oh6GxXZRzF{eVA39zy zN`9O!M-~?^tR1NBztr;^aPf({v-s8M%6YLRO={US0&QG8zrJ-( zc1`Q%gtF!Z@_OuVAGG*eKdq9=$gSwv;-ReA;g_#_ft)@|9T&gAD*r1eyKzl)F@JMn zdGn^k(x$cS0^WRigQ#B~w)ptt(XR+v+j_S6!i|hD-4ix+aXEeV4mk!(dHVUp)gCEz z3xl$_^W_-q*<_&^kF)rVp1$>;j2Izh?d1Qj#mU!oFT95Yi+}6*7mUP(#~QLnkI{?!XtH+H zJ5{y(C*wLLs}#oTGbiK1*723|a=L=S?h6;!w{D3q<u!d(~wkJFF(>V6B4(DQx+U8f!`TuI(eboy}N&Gy+p z1ZHs+Qz`^|a_a;-g>?e0ygK3bv?{@BIR@v)hb`B)+C_l*}~*)rVBHeyJhvG)X1B?(Lb|s zo_9KT!9vTVxn#jvBuIGV!uBpbTv$jnRQH8RAh1zZpS^~BZyEXC{Ks9`!6U3^3p3;L zV5ENB=BHgatDv%H3y&N%_SNgILGUySkJAYq-oSf;I2*Or(=3dS`KKB4WqPzI?f|N8 z-z)DO91Bmfu$qQ3R6mL4Dl6ySY8JEsY94E1m3p$U?3aH`Z*Obw`JxOxz4r2ohFhtb z`QYIf0Ukk#;1d!LkF)T)y{07gdV(!WT-3|U3oI=xz}C?R&Rf{Qz9Uyab(i)Bs8sAo zy!_KaZ^OG6R^4|I@{4M~CnB}yi|Xm=-dR+i!GLXBRqy$b>Az2t3T0(NGx0bu&b~po zD=e*p!{^lFoZ!^-2Bd> zQ>Xs&>^XfFkN4)?i+=z8ch8>FufP7PZx<~ttG^W(7}U9_o*rFv%9Q`z>eEG$0ANdc zW&!Ne(WZ<3{PRzBeZHue9NYq_8k{lx*VJdW=<`M@2uR>`Gd88Q8goz&dqv(fB`BER|z0 zWiSB6<53Jk@rV=yQ9LG2`M2^LX8_$E0>9KmOPd?F&{Ae^I{G+i)Vky%Yf#VS^2E%w* ziQ(Y{qvYXhcA9{HWD1~nXy?g(J~mj;Z)zoxJ?>p77(~%{7mt6%Op_Q%MjQ#^nIuMo z^iZ_xRJOSBhFV%x^L&r=`mg^mPx-Jr(|AOT0XZHMkD0yuJv>f8H_6)d36B(>mgX;6 z`*~ASD|iLP!ly>@BQVbHJn!ga`bu>5pW*}9hcR8rzoA~hZBt4rZ~DtOqxOG_HW?pv zXIeoo{0%%mLAM$YaJFfjhX8_nRSh3jEMNBQ7*^eXrS2Aa-SE^A!))|`#Z3QpK7Mjk zK5rw&`j5kOIq$}HOaMqMZ<-aDUH{e5pu$md`s~T#{UCJbyEBb}jDktdI}V=Vfbpk{ z{NxdR&hY4QGB4xneBC98o^E$%db?xR5B{0;Yf>r%>W{;8G55yy{5pYBT4nQmW)W{1 z?p28M1Rl!t3D&SL^g`dp6ZQt45R8q_KV@#lBPcR97oy_xU<4z6cz34fm?nL7Il6Lg zXf}5pL2XxdP3yh~F=%sHo|Nf{r($1mB(HgWLoa3m-A#)&GQw~J3DXyFF9*-k zagza$v=>;W{Bb;_bcS_YD!MGcx8i+#j&A^|*&=+~mOHblh*iQ*8|W@o*W#e>`Bu zEdV@Z#%R1ZnYJOy6gR{BjAnUBl9(JpdFM!p= zQ<5~(dMB?#8__Y_o+P=dr-W%}Ng1WEUh5)HQcQ2wG8Yw<)qz*o6D0RMDTT*mLt#lR zY|=1;XU+6RvSw{9AG~^cV)CRE6_ejyR^D(6&zDWE28u8cxb6~6Oc--VUo-vLw51DO zyqQ#68=iA}b_fH&E!>vGbM4fOJYcdDNfeY0twgpk-*miQq;hXFy-mXeTzr@`(sB#v zLr0`LG4%9qVp@u)rzeSV+ld!cMw#{S4X0^H=gjTk#CaRhxk~{eK3@n$&-!r>t(IUF7CuSB?B`nO%X}SdNww*D%4qAsV zV-i6J?v5|t!qDyh_e-~)FAid5Knr;*@QO<*qQ~WSZb4w{><88k-eB$MLqx+5uDb?< zXJ8B@XO_|5`kTqvJ~q-N$2AUS6($Gkf8}g)RkU-SH@9$B$R&-^@lv=eD`Jd38Jvva+%={hL`N zb8~ZP^o?5t=q}db#@T(DoiStjO-bKtuTx=ZbtdM0disT9x;&_FggK}Ck6wWZ3bK;EofnHpgf;}f)&UHSNiLXGD-ylc_5Hrxw|K_BJ<;ZZGSFyi-%cE82{5nB+R+beNOWas?M}XW1MX(x5luiu3Y1nh(3m;5s0Pko3GC=MZ-DWYKv7Ly z6RoE44oM&(qz`P%YmQ-*tb@=%d`hsRQ1qi53w>~VK9 zEk~Fhv7ht%Z?l%nkTkE9*6%eFG&Tx= zLr_-SZ2}4gECm_e&VumnOjq%594zM26H6^|nRITgU~O0d?^j))Jem73t#FJrY$79a z=zb#`NY5^Znpz$lIAL!rQHDdJ3O3hsTOd3p2R7_A1w4?yo9Qxc+s=G$8=hF|+|4u| z$mi4w*0A$=znzIJm%AU+v@}33;SI&zrVyW245dWQ$&2(O!I0^s3Ocyt_DQ8wT&-2gbezV;^cf^C39(6AAwGA3(P*h$AafEq^Fzp$f z2#vfJIC|cm)>hojbZSM*PQvv5M>5@bLoK_uWpPwt8x`?D{_&V@Q^~1rS;8*nO|wg= z8ZUp8Ntu>0;K+^9iy0$h7(Y_X^eA1o#|__m4ByIHfugE(?#{dO<7gV3klOxk?9}LaNflSH%^Zudq1XS3=-bn zq+u>9C5{hP)jkuZjV`#^BFZ+zG%4sZKkv@;R_Dy`!t%K5vuaxpJ`U5Ryc;`+23Jg} zXr2>U(D>sY#)+R{QO={7R?v$Wh8YNbel9I0O!hA-sRKM}xtnP#PQ~o#k|veMVY;kQ zs9sRtx+SZoWkq6H)66$_hyHJ@ZuIAm!}N#80^VG=#|&y3ny^g0?{{d?QE>C;fINdW zr90Cbu4jGkl2p4Sy0}R#vn$EwK}?r43N;G3t!ikelPjAS{C8j2H?sQCQ+mSm(4ij; z^CSLxR$m{;I|rs}U;tr9UTsXW>CW^)--2H~QtFmR7xPsfCeuWQ)yem^68pTKX!s?& z+;XSN=(Bsw^ccOc*KC{vp|z)VW<4b{o1mNA#uiw&*Zg*OrY9J(KRXs&Ji|SuZW%Mb zadSdx)6R@)fkt+%Ku64UUY$TAzh1bDFsqtbEm)UQ(XxzF+&EiSm-YPn zrD7@-UNtQ{GOAm)W>htACg>_9mhzWz3Y+K17_xqT8m6~sTi&iA;$~$R*3oB7hjOxk z8J7#A3}Uv)>9aM7T<<}qXPP8@X%JBOyKQ{sJn!_n<>9$JCBpc|xKjRR!r+#q^5%_+ zWzFjnN}5*1l<*ga=MjYU+0&kuX;m$Y+U)$Qr!Sj*7_o_c#*QNL`piR}Oh@e{*G_V6 z-RG4*&5~9Ams4WxLcgrKLTU4y zQ3oUDj$^R?lGSDR8q3BH6Q^{hNka#_k13hR@S!cK)>O#Lqy*xGSh28 zHyauSv?k+uV0!ERi_k{w^xB<$XtFLjG56rMt-XsMNStZvoCMH}!9HUcX~>WvQq^^Q za7Q;(pQR;9riZ;hVz_U367d_V`abBu7JmgLwKU+6B-88nnn4}68LXd0z+rA5dgW$Y zJKeOG6w~9hS#RUPfl$!LueO+Q6M>bO2MKAVuwDH;NP_8&8s<=1RuBG9QnCG{G;h=K zTQ`K578#06?|PO@zxv@ADK|eB-7b3T-H*pU6Nb;6IWvS@FL?%aZVVp3-~i8z=|i0x zgIF!}%nH)}^Pg8<&B(5}$!%!44FEfHi>e?krwrC>pxy3!rt!7LQXj99!&t-UCB4D)T83jZ9^lmxhbWggAxf%y z$2=2;*Q{9$CMG7g+}+(ot*tjZYU>&yF(vyB!)BMA;Eb6ql`(9(ioUR4SORQ2a1lly zj-CA^On=UZoN|(&8yJ~J59tG#84wc_Gvt{tylBxv%CMW8tH{~e8LnKp0!gVk;N>3y z7pxq?{E9PW*zmM9{5oTX~x+Z9D7J_eB5=DNyhB1s}aHc(o>2dn3Z%66H z$fBZha19_adn#?OR$ATw`e$68ozmL0X`@JtFlG4iWiU222BRZKD8on2Si`HYz45By zscW!H*Xmz4*4Ebc@uU-AFgH9bDH2y8r9psZzlt&iEemk7eQk>R@$K1vWqhIj7R zK}^PGSh#ROk6*iwKmNGuUoXACbiKw5{EGh@HEL9^^3WqvRaFt)EyH&sj0~f!FInC*w z2E)X)Y<*lAmh`>$3Q>f+MN0!3;qzv8Drs5e=vu-HgD^5&&uzKg-hK-PJi=n)a$7n& zw`uv1Ur;u%5$;a7FP&eAyOtRc6c&At9hUU{^%=z{A;TPSbPEFW%gzIzVKHIjQj04t zbl1}0)U|=nFw*ADn}>)Q-hJ1u4@-`NRO@v@0Am zH2(6^rAyD|H0nj8U-$WaE;eesi@_LAj$)!DQu`RQWqc0ep zw}(|bE{K%1%|S)Oq-N#@1FO&VLPtrrft2*H_obwUc3vMGOOyJavhg3w4_PIsXqgMQ zXj^ow++iXzy5I=5PQKva9!5Wx9iI<4tp$5-VuA|xvc^hLGn)`mOhVb@v16Z2zQ}+i zS6A1U)b?3{M_>Y#N|Z8eb(NA;Mjt-rerXzBg{_*#@a>`aiE?@owD=R-P-E4rxD~ay zsf!R8r|_^HwgPs$qI_ z6oWOUdv&k4*LYt5jV-#dWD+}8(+WbPq_^K1|Kls0H7z<&dtl#UJekE>GMpNkkX8a_ zwjr49*#CE%`+`)ouQd9Er$BvIPl@F8QosRZCoVX^1}*av1-+>8Sl=q{ss1RSW%bx2 zH`ru-Roik?r;OLOkJidH2sH}og{m1ZjSoS5DFK$Qw7#FzSQH1G=+4 zxwuaD-33~&Y$BlBIs4KEeAtl?{RH$GTzq5U*Et)HJoQ}hfk5Z3MWlL%rT~vGq~&K3 zvAKYyXzTZybr3M+#r3?jasESqeorUjlcM^z{auZ>JDYEFg<4%*$7w<2zgn($R)lUZ zs1qn9SG6qU6!52er`LadI?;9)>dHe$)-*LKxEc9jG61Zb>x zuHfC+Ra7V3lvOQQj>82aavOhfPOSUy>2fZ^LVFp`9VO-5}@tktNzHU zZq>O{c7U;6}rKNqdq$mO^4%5(qq3%O^06RR3S{> zeiYEyu^cN?R1Voxp_d-Q%A}!Ueo-}?vGTwD#v5-)8k*jtlP6C~Uv*(ZZG8(g@&w>P zywgpZsH&sB#6ceq0($g8mV!}G$#1?Hbt~dZnzj;ky}vhsF5?OJpfnfO3D@V=2v^`} z7*yTZiN-&x?n~SFN`+$~MI$j^8}Em9ws}IJu_yl@TaNF$blsDtL1TBig5qj8ZRy)P z1Dz#J^XAQyHoX=MSa%cO2`vX1oRKny_VWrct4+ATozd5;F zuoqj6^cK)%4Z__ejjd`$b!{87YXz&(KBL->E#Utin&0sK2Rae7MG3vHUIH2`3zzEH z9kX-sC1xv&W=Ut{l*4Yu063Z2q-h0->BV&KIE0l2*X+Gvq(R&#|1{UQ7wD?311BdH)RuWdjV*T(uNy53hP@{^6CWZvugya(kojQCzmzN#?jjE zXor4@l^57)zb}Bs@glo+pQFw0Q!}s0{e_msx*G8mp%wY$Ad?M!1oH!o2jbJ58a$;%ooKN>heT(HaI8LFjftE33zOi1{0XKy$`zY=$dN5x0N*@yGrb zdf{%+_5)WSr?84{g!qId!nT7Kv8~3p4+DCQb^3Qlf(oZ!iLRW7J%d7WxJv8-o^nE2 z)Ap2#=DitJ&6?SFH%@vm(3*wy!o3A`!ku}wt!g>7ty^-c1?w}b1Z%L}PJCJOg1j2x zY}rGs?{Q|vvjQ6X9!&Z6w;eVPzVwg=J#p-3xP8x|xst}M$5dZm|DS6vQNZK3LPbp@ zTz3nB?HcEA;RAdS&_ADw{bHMA_D{z{ivK{M-ID8;`e$<2MCLWF=M?dkFp%D5aG*tww+o z%bOQ+3Y+H08nAxG!6;Za_N;-PbT#^owYyA3u6}IbkthVK8_!t!^-o(JKx_{lC*mL$ zd)EN8&8nSq$Jm;3j3{M!2J?&VK>v9@ehQA+GYT%8K~(o_w9y`Eb;|<@*x`AN>mm#J zn=p<}DCMgV?^rFltYvFTWy{vo&WqUb7S*(h7L~NhmMy83%^QijUzb$Tw3dWrtBCzw z8dJhs$Si7{``*6DUvT;j76(cSXoV9ouc&BR(A~h|@;W+U9Z$d{jaiTBfYC*j$hc0m z6w1j0V=HH@wcmFKXnmGCwwS>2W90ig$OBZEL4a1Z&;CKzyWrRJp=C2KbCe-R&j0`* z07*naR4V4!CsZx)AThLGX8nr5och(F`P{XU1w2Jo0dHM&@jq8=F;6MBl&2U|)U-AR z`(zb2tzZ}Nm#_+Xiz4%R^Aalrf0Gw$I*vHP3Q$P{jg$R0>s-vhk%np6<A6 z{s;8pP5NPYe1{4uj#W?Ki(I)^&GQehGkUw-?nj8 zbDfiF7r3X^F80o-TSCEgK{{wm-N_3Z_fz!tyD$(}>t%4)x zXzv9EYa_NIz$t9B9f3Z34FPL4PGghD3VnUnGAvlf0cD*<>&*FBxK0O^F<5`$u(IbB z=q)-{8Ms@9E&WlVeL|k$aKqlBv13L{VWT*VpYh1f$^9-H{S-jUb^$%EUjrTU3Lfs* zx&+bgCOG2T)`QjmfaY?!onAL#prWb~?1|UCL*snMAkdvae`d*|UbkD9*Ii!O2*y_e z`XA63N2_RCL3Vy6&8@;X8pk*gP!9|O9roH+KmNM=nu8aFN9WL{5zP2p2#n6#BWc{8 znB2Q|#tKSn;kt7WY}B-)cUBpFF2Sr!82{z8<&wtgsc7NCh0+(U28uA* z0DH*!hQ!0JLsme5+Vdg;z4CyaEzXq+BQHHB5vJu-&?E#&3zZudd63RIJv*(jPN^Q?PN1g7T_H+Jh7Gx@ls9rdbDhuxkAo z=n?YYC@AeVrFq@Bk8q22j;w@pmjXoP<>dpf5_9IvneQOLLSefIn^a(tTpgDOm+Qr19u&y7R`q{`%We@wAn28||Nr0Aq6w1Q`1$Guep{6w1L-*&=0~%VpjK zaGV~AiTxS56;!34zvv8GHH>i@#)jt+=y3-_-rt~UA#!l>qlx-xif$2rv9#8~D;l=% zKeuT>)n2Vzrv!Ssy0kx~jg8Iigw(S3@`{FA*e|-R?IvIg<<#_l01oT~n6^{CYUf2; zDjQqci+=ch!R)K9QIJ(oNxf5)bd+*Ok1#lA=?rR`7hn`4cD5ve{>;GtyG@#wB8-Qz zni9tw2?VXQ5+gpP7)-7PiuUYLA6P1S;llaA(9`Pz*!niM#`5y=qRo@+u3x7B=NFYj zVrn)-uoA$_KN38B{{a|VNS`yeqYYVb7Cg3+#?MViNO)<7?$sL}K?zV;Tt|=bnu%se z%PynI|JR%X;J`6!*rI6$3VM+%2$+le0%&dGciGLucImFFAxmWLz%bC^)o# z*f|=9d*WCtRGW5gA!H3dIC9<|R_`+HP}VSmEm~$R3w3P6e>~`;A+I0x(KHL*;vdtdO_LB3eMA!`OpsDkT-zzZ#>V$Z@O2`=*z>JBz}O0n{66i& zs;Qwt0oF3S4FCOT1XXPSFeI#fJS4;)>;&&Yb)X-mJ`?tuvqlT=8P z>sko#w0*d+v;RnST@$sL=<#B&5*&z*y-UJ4S=1bG5(}u>#iDxzudZGI%`L6;CBlo} zB!D8?IwKDpy<@=eoE!N0hDqDm+4bpjmKbShXrKh&($mxJ0{9UUeDWl1{ni~|Yyr1z z+g93ecjd|zFnsv%Uh`1U*_l0iwv?-@i`1L%j`?-H#zi=4;t5vv5x4C;i7yb8NJsjH zu(N1dEzWHWi_W4_iOCTz0r6n#&H@YD&|8etE}(P5HRThTNh7?y2X@ip9g>%qmr_wy z?xvzUC0Gpb<47>Jyb}Ygq@+kY!TtH?9|LPwsK3(g-MgigmABmbM@4r^uvkUkkzfmp z`%18ey86E)SPby2SuS`he~jFC+jgK z`1|j_gTXe5&jFDDUs`ReDgxYY+_ljmmS7jO!Ce4b5`eMcy%=D90`P%uaWG0SHp>3OA^ni>RH$k4r`qI<;#fA`(D17k{9eWsr*ZV#fJ?j!D4{# zkzfV`4(#9mKnX?_Eot5ciBMi%-Vjw)6`|ORwza*F1V4cnJt)D?0T~$?Q5)F>aIZ@6 zH{X0c2(Y9Hrx!D0^4im~DsGlwRwcLPc4%mXhyV;vYlFv(89fN_^FkRp6=5Z1^#tJN zJ883+#)8wZ?CtCxEWr=)qNh!pDv&f^gLEHSxNy<`#A&nj;O~eKtVS_ccg^)aL{MFL(R*o5c++BjQpEW^ob= zX2m4u{YAd_`u%=)ke*}Wa=FrP4S)Zwjfm8g$xCYqWA zP*ux^-25tFCFFreP$FD%2=CZLfS|yXNE%*RhVu)emeOy}|OD8@b%+za3ruX^qu2 z2Vbyv4*^%7DDt=Q5D}dNIRyOrMnR{gM~B)##*P^n`V zygEFClOT@(fW5765Y>yd)akk9;1`xmhos>I+AG(+V3Ve~Xp@F{hnkkz%{4lgv%Xh8 zzeH9)Ziw`-_oVO|f@6hWc}r@_!O#)EZaIE%iSre)3GY4x2AFy!_09QX2 z1V*J%b&jeXCB3n+mG&TU@{0u(ZAHlPGd~V2kbqjFviKT_{%>p5juy)!v zGb}or0%7M80EbT6;w(#8v(F}S+{x5e-44r` z4;(W;P%vQ9X|v-E*`vFU6@FZx#}S}$+N^leEM5~2C%pgG_rHFyQ~exl)G!Bo7k_Z| zWl_%^wFx?R*n|e}>A0B}Jpmka*m^*Vluv`3e;gE+)KSm4p`n#dWkx9BK=6x5q77+Kx~quB@ge@g67r(H^Ui?lP18HH zdeus)vsV5cF)0PKlK~d8v*PmTEM~?jTUe)InWGyl@{>bRACEl1 z{Ajc;^W#xEtdC?5g#PzQfR-^zc$>U9Zw>uwrPLNpQ?Rn}02dz?jRH`zu?1!*@%;5p zyMTkEktw4CqXH$C3ep*JehdW0idLA-Z4g>^WONb+0l;!w8CNb z=wUm;-i|A6-cr-tzQ3eFsEt$Xin+pF+10HZQp;PGaEf?;x~J8AZ^9~_wAd=;6PX?Y zjU$ESPe#ABQ2FTP_3Ea?DGY*e;vi!COKfh7n=T|26nT4l4}y*K)?34*%xr@pE3cB; zV{9;osv4awbb=HNSe^5u9|PzKhD@2TT&`+CU7I!?aQ4r*LajSpc@~h6%BL}t+j(UC}~}c70-@-B+&ZIv8+7)`uxrbcK=MW zdjQboe4$1KzfHZUzI97hP0Nae@}|E-avFcKjj#Dk+q-a-!r`6){rQQ&H%IPudV7;$)wj^*HnB;CaP)$QXz0+Pl78Hhp)+UBNS`qG=}1m50rJK}Sp}DRvZhyD zVfq30L*n_-j{^GpV=?3MYW^8n__#ph?C4USa93en+s3TwmZfp!O|!zX8-H?$tNu*K zqhRFtqpThQ{l&4MH^-dJ8M;No6s|k@(eA~#TZh}R5ivQSZukQ3rhV|i2U5z~7a=Mx zm%jCQnBWl@1LrTgz;_2d7k3{N{ve>`^x5O03i-?Lo=w>kpz$hhY*Wpz6|7CGYF-dq z%Af9^#r@_IyHY{*diKYk^$_S0dI@igHco$Yv!)r?yZTX&9QOclC(k!B9oFtR6)ov! z|4eD$2|Ihgh%{(wX@y2&&wQ{!oTCrSJm|(ikRJu~NUbQDm}35hyxMz*koFYla^8&{ zg$-@%Gl^6umNm_aDro%KHKX>6Q^BQUzdIWHUQdDk^mO#=qs~OXzERUcg!|}0tPDC+ zgxlCcclbX0{L2?dhugTbX%8@b071-jVv~J=sJu$?kno2AJ;8t}M?B{B2y$-$UDD9D zF}tR9MM`DU98NKBT3~klS5~nV@~TeRBOVv%Pftg^PVRBU<$~} zK!`~ypuNwq+n}j+a7S}<^T6Id`{tW(q)(W6-Nq^CH`{MO60y&Cc%Y(XCb}~y{2@U9 zelB4`Xl~=$+}hTIy$JNqqK4K@c{PHSX_d|M;!60_Lvy*`+9g#_G6*1!*`bF6t#C9P z|Nkj&#K;-2KNbT$o@j&D=cr4q-eCexUg7kNyq)+W%(y&QyyeuuE|^f;XL3E5l};TL z?DXg28wG23Ul7SNm{T4F^t5v^6a6ylmu1wnXwuoyy(rOQptGt3^KmMCcz(n8?rF7? z&qS7tooA8w!To?9r^|j%PM&)I=jP%Is>%xi1~XJ2Bf zu3AYNj=mvF3kzv0hj3AKZ4+(f=ogj**GL#O>R7@j2=c>#o_v@y-XW=aUP38<>z#@4 zy$AGmRNZ2r$r>{v@*95eBzD>~s#Iq6wUiIL11)zfW+;057`GFk$2 zH;|ZDt2cqJ;E@ok@y1r-jBOyFxgr%+cNfrJ1ZWF(**ImpjE_2jju<{pmpMUBk1g91 zpg$u(%N$F5XM?&qQQ?tvUmSfC@33UptiU;q zoIXe4VL+3II$l4Z@MoX&x)t#yP1_LU-UOP&(Ys3;TU83ULM8GNEla6vo*PSSG^%dT zE}*wKW_%>C8~wgKxtFozrF#;fQPrsvQt9Gy|! zvN)x@>F<~l-fv-f-0wWnYd<$-mW>;IFlsX1&(i`u@d#(w1`TtOy?Ypxl+{CPYa3uP z<42#$jFvP$y+T!0RsXqYA111*;nTLrp22aTy3Z11b(vp24Cv1cSd&hNmQ44`s9zCX z%va5*Y}V>cpvzF28``!O)}h)KtjefrS(I4bG>cutn;MeK{l+=Hc9Oh4d$L^DJv}YZ zlNclnn=*A1Hlq(B4k_-1=MY=H&&UBg9ZMRfr>78h#?K+FOlq4m^D4lagj1@Trd$O1 zVLI6zT)h){~v?7k!pRB^hpJPh- zU&-r7eIZBgtv7+5%!nMePQy&(=otZ()s4{Hj2?I_y!6sbl7{K&>Bu>EQC?vUwM)Ll z(>`+E4o2&ybuRVqxO(c;sZw^H zY???{UCRSUuW(S-G6Q^w4+C1wA^QglcKP34#0g^-G;Ah7?<5kf-5WrcHVAhYaa*?* z5ZjzvD^SYnl;#ETWlggZ%A0?c)#H5Gmq5Sq!FcI4J1@{=Lo{XORSjT#E%>ISv3e@n zxc$(6OqRztH!h_Jt~>j~7l*=sdKl2ZoQ?kCkazyHYcZAcd^5SLSw(ybbZ^+`k_O?P zBCc>d0a-b(POvVsTCh5u*yiMlrrCLQZGXt?v%c#s=~t|zAhBzDHJMpSKwCxM3HWg^WHUq1}!RhKiqF$yW1LA>pS{+Zl0>`tI}q*b

{TzUP~({ zcYiw919QchBqBLt;&55gcs&v6=;#cwydDNMb)6H>aah^Ly(S=ji1!0pL60?Qt7G;L zXTpmAbV#ULyF=9jaWYh?>dkS<3k>o-m$pv-79eD_HP3y+2YJp-#Wy^|` z^5#V`B~5=%)Q|e^SpqFBuOPKq(;U1)66ma~+@fkYc-*Of+G$4zdnxyz1e)lVS5yNy zZFQyg)v$*F{mZGiFVsD9e=&(DpXHcTwHPIuIAa?L7-~u7O}o;o1R7Zc?A)48kRJwg z5dpfWUZ`GJC)|}^MERHK}o;z}1#P@Q~80c}w6JOn^WpN8% z{stlhSngwP69UoE(fu#wXv(+Keh-eyq?;t@S=u`JfQ&)Zgogn=?_%Ot+Ftq72+)5a z(0-Zqt0M9m)^iGZ%AHc(v^%|8piU%GGq;WaUfT`iIspN=Rl9&I)GVkKsOQ%U_v8^N zCIG8t*S0EW5s=A?vNpA{X=M@tIlioU-uEZtf0ET_|M0AVmNhPXb*s7wSUUyMVd0n? z?ivseix)4FG;BSm^VT8G=zw9uUqECE7#TZ&tZt0_!+>6PCFPp~T|nE#S1s~PuU{FG z%T;3L^Ebs5^Hmeeo3<0jX;)f>U=MMm_7cD~a>$ieE6~U$;1Vx-Z*GlncTSCPC$Z<- zb81^uv#VM+r&l&_$fyt~rdBquNGjzoL6Bog__O5n*%AYK)gcF4to%qwEvA{T0g>ro za{jEOVe2_<)UcrCteETU6C4K{h^MK*h}tjDV6C_x(6Z!OeJ%A{UGMx~O~cD)*~V5a z@JOp$9+bmf6OqSTk4{-!DFu5QQR6#Os{}iVgzm}`Up0cAB-Y+R!liBGQp>DrRnDkt z-jr6+ypCvswMk{oE8|P}i(`s;^D`@(|0W*xFOmfMwO9W0uEjNXnj(x^4|CXm`fHu3 zq;cyJeeuN?Qbs18GxzeAT3~7PaK^maVCk^isnsrJ_YO zt*T{9T6yzk;=FB0s%TP7E^k^LSJt#5zLbDm#G6N6ioXe1QzZ>FJ|}g9E8rKNLU#>Q zGfP4DjC+x!vFj0i_St7rX4itDx}HxxZakh-)93~?gQYk>+vl}JdohS>ELu_gSaoD$wbR$=2jqW))%*Ngh~c>wzJy_a9Z z3Q!!VidrwXunM*vywblsZvwRRCCBjFSaDcg#|H_Xo9X!13- zn5Tpn0dj3zNz-ahVbjX!V*YY=A%8J>ITnQHHO~3@RP65r&+<=FAi|@&r&--AJdvZqYVxeGt%cjHsP*4EFYs`y(~f-SWTJ z_b>R(IJ|78RdmH{hxnTLE~&MPebefe`e)Uz2+nR?6`s?$Ix@d;H8a0)4PH@&jjQlt z7c{OQ62B}mpT8ucfVVI_pEr+4^lSxv)*teEoEgs(&{GaOzM{0(Oyus*fu%9@5QiM9~*1ZeW0x5(==H<6!h z9HYxxZ{S-*B(!mkdur_h*OZ!t-s#+hKIHOF<1X+?tDR5m_I#V@nz=H1thof#Ir6%! zzsY*fEzk=3wp60s{MgV$99Eozt$)U~e*uj)`m$5R?fS+}8;w~NYMK}BamF48Xa)VK z4diF*$=@oGzg?@qV67&=tRjEAf~e$W3JlIt^7F;yZx@o!ov)zBnkUx}fc{Fi(?(;3 z3T~Jbmeqk~f3wll>$VLcUUw7J^O`%oZq0kW?xzJ>t{(%9UiZ2^rk!55ppAAx+NF1` ze*ukzDKe;zTAGF6?#~9LUB-hz-xWviVO*wl;5URfASt61PFng$N*cEw(-y6ZLQS!nd_ue0t>zG7Qcj(05L+ zjKSK;AM%T;X+pnyU?MD8yjaq(^_-lY9Hp?cu7G%y`Sd(G5LWKHnm-71^y}l!q`bOG z%i^|^cO>msR@cxB7wy7;$z=AwbWqGNv9b>n)pG?<$L-88*`#g?gFr{q9^vcvnu1qQ z92JDZ;#x2~=hpu`ZZRD=;R?CLA;V33zwjj3!?*)Q7>G zv3*8Yy(Nv;6Vr;#T85$QYO?Jncayzb^!n%8~dTF^~rXXpOi z1;NPJy`!MG23mzes=f`+k}%7Fv+G3#dZV6QJoXP~#^qAA9i31B8?`KNNgAi8rZ86K z)S#$L+I=W1zmhgeSJAj2d=Y{EpJDva^|baXoYr1pvmR&Pxc=*ebtj=v`0_=&aHy%} z)7B0iL9wt|%Nz(WnlBpAGgR!iUbgjw0A^}uHDy6H=$&$gci(+i(lGT7sU5QJU?t>3 z`;B%;$}9yNrvO-|d9mt+0$ML<*hUTW4$QVGF6RV04+h%zIl~!-6e?jFnJMxo^UDt%?;{i^tcwsM6|UM z$22kx)~jjFk~A*8PFJs9mA0}E7h%c_o@n_;q`+l6FCY(AZ9oI97e9QHra4@7@agPI z)ZR{=QX>=34oPFuXEbfTiX~Pg;2T{*yiQl&D8SJL0~zSqOLv?krW^9pNjR#o$9%!orqu(2GfaGV*5&DNAP zF5DbQKr0*!_z)YvVlPnK{>33_c#3CoHR$%=fB!9MXnL0dA`s*f3NneKZ#Olyb+onJ zyk%hObKNg8l{RbPHMP*mb2g4XFn6DQ*gyb!?BS6A;(j)E=X7(e0j zS0s%~uac#ug;b{`*WRqIL6C(AvZ$@C9eBKE(H;X^h>Xpl-4Lp3c(lpfX>(`z<&gKq z{tWczM$C^kXj*`idjJGPCX;Yd2>fON_>!<{hwfF|0j08$EG*2WIwiSDEXiFUw?K7u zJyBz2I9vphGKy)7c9CCN}lKrSk&gshw*$jHtI<12xpjNEcMsjjqwOHXxh zn~tQ1tHU*+%lX0jw9iW1eU0KbeS)s2(TNUcc7()yex&W@-;_)x{r~orbw+q(St;=MiXmgYYq%w67K^?J)&=w-5-A&836c zusRZtA+bh0Iy!n_fxLC=R%vzhy*Kvh=ulha9h3q&`BgW$+?Lxn+i#1yOL8a3u@qz% zuV6Y=X20&yg!5MdJ2*-CR2uMM(Mfim;h=lU7F0A$+vONhO3w?>@6Shh$fh7Scigyf ztFuF1MJz)NH#Bw*0mpX7*uCDCNH=ai zOg-pxR#u<2Mp8hJKN2=dRm0>aPM^heAph`Ws3cJXolRNYNbWTW7H&BS)22-uSRmuz zP$J3gr%s%tAUioZc6fMrfV;apw6_zGiP|nJuOTYD5IAw&CHdbVpEbV@r!LsS%m4Y$ z&;?sgflEL<6cCWnZa4CUblNOtlG+j5y+Pev^z%WVW3u{DE1nh5By^J9s(!u$XJp_6 zd5-`Noi>Y_2WzL&$-l3;MnQ07?h;93((8m>X(`AjJ3)4Ibf6%+xw(O(y*+q(dO}%6 z4P+9KqvO&bFq8xCK4DanQCde#~kCp!zx#!s5^vdPsTV8!P_V^a$~%f_q> z9Po+bg`M2|L20jPhl<99TVol~a|qCjdK+k>IX;&=5;qbH1lOsX(iWFk=E@>39i}ng zY9~@$+XO*T8F19tW55nDdksMrt7}I`$A3U}Z~z+{8?dsn0v8uID#-}4vqvyovT+Bi zuIpbQpR)$t<5xlF=(RfyP=EPlsMnYj*yKAPJ30L$$qq!4t*xyo$fg%Az}Yir z;PMrlJ0PDUz@9X*Az$s_tXZeJMoC7HHS{mR--?F!-B=(J10KPN#P(Mb&$f-din z38>2Sk4UCcj`N%^*?NJpjwP(yZ7NdJG66+RtDNck-AyLyMlKnn&-vdNM%?(3dNB$L z`s^>i)Aidjf1jPtW(_m0s+KA70WOF%46ndddvCbz8U(I>EC`NDhrFUHnz4y?7`rUt zVT_}945;nD1gB1(c-GJU*%5+#w@tnWWK&ZL^6_KGz|hbT&R)1kK|Wz@19~T}0?uAG zI%iXNqzhzqgG;bW_p<0gG3TqV(n{0+7+vrH7ymejPb-ExZs$~2EITFMJ?-oh9-Twy zLb?!77&|SXG-8;BnU~fMK6JpT4Y{s6`H;(({M?^{igT)QXU;!73D}AGw0R89g2s&; z-1xw4S{xOOZK-$bTf?NupFi7&{;cWW>e}I7>RJr483Fkmf_(fq1zGpdA<)s*2BXtf z6l7H$Q!2H%?>lVRFezgzXLbDl%$YME>mJ^IYpB$2hV_lBE=&j{5{K0w^$h|FI!awD z9TC_{JpBg9CDNFZRSKNM0utNi&<1YdvDtt#KCt*NJ*S++_qBAIJFmHoW~+97MjKSu z@*y>=9DKu501Nwy$Svb)p$%nc?-n(ZH?AX2? zRQH*+_tp)O&mXdA?T!W7N3MgFLwJWzXfj|DBGzSN!9WuU>jcCj#)A`_H-+jRL2SQq zlS(RHZ3NKfmNw$>wbD^V=nLRDPx2le+B6KDXD<2F$F3 zMb@rSB4@uiqRLYsFfyG=GlGa0dhh5hdxj)|qfZQRs+b+;to%hPS{I25Pf-~*^bM(< zJ9qZKZo5xI-9Z-HWLH<$huUP6e|_liPsrDgUVn4=h*w@4`mvPMkPn8EmxIse4QXp@lg7V!Vd-8;{wGfU zmrW+>`fi)t9psH0H^9o3D`58Qzkx_fKdks3pmgk*(R=>}`4Ki*tggj2`7V%Ak`d&k zOP4;L$2CZOPYi~}2i+a72deAGw8>(SCr_UIyQFy=q%QLD@%hjFB>8DPa{k-d*#>scvgr$o+a{xT?McW_t<12(eje!ZIHT1M`z#ozOcze zU4JTR-Ug|Qw6(Rrdh9s48_18c$u>5&FV>FI^GtK*%$f0To80ZFvD*Q~18wpH;$%}( zGfA^HNMf2bYu4O**B?W_t@k|#mS0_iUVNc^#CE_crAJyn`|ZqxtqGa zpG_94Yx2?kcwFiLqk{(zu6fwD=7SusN7-aa^EF7_X!`W&8z1O+-JLXm2NZXK{2-ew zX}$)j8%>@1iz)^A_`T}-&SnVO{*<{y6&n|!~`kU^XLoD#9ghCQ;$k9j~LX}$)j8~yUj&jtwc ziQ~r~Y?H;CA@{S%4>+J8AN@ik$UXOjHurpmYycr^vzWnk_NwYUd zV$#r1XZ?Fyvv+LrfawO`-^te2MvACezuvaVbLPwzEnmJ|((Db=ufP5(?H87IJ1)7X zJ-4vt=GoJy;9)lT?&SK1*<=J+Q&UsYEDjQqcTgI{rxds67Szz*ntXn1hqJR2^oC9T z{`IM0{~85(@1op;`m zG#i8TI20crKcu*{O4J?XPy(`VP-kyVXRmN#lkZLBBkCHy{q|c)-~J%=gp?E&rIOQf zM4Y%3BFXXK7sMhUhtghJ*tE^m%IR*K42u^Jc9ZCr^z+X@OVKX5LHBmarEM2YtnaAn zZ@>Lc(ziQEPeW*LyGybdyWqTn!SL+l0VH`*67A5D8X};b3VO3TEVc*i8TQMPD#7@rFaEoI%~d z7Icm|;Z<|o+%N3Mzc!l9S*HB=VKWn{m1ON@OP5Lo1qHqQ_19lZ`jHIMAU)rdot-Ux z^ytwc@4fqu)HZcJ`4y@sYWFg1Z{bu3s9TLRv9o zWS7w<$%UnLP+rvl<<*T)Rl}!qVyf$!==?V9oZY|^(64pe7N{ZLuc>c_%IYTCLA$85 z9tw(UA+N9+QnSh+E~SVL+YM%Afp2&!xCJJFohJvZh+;Tn<#${Ej4N!`x+vJT|AH&t z|J!fBEd>CyoM6CBdK{!ddKfX8O!~&h#*02!y~E_T9H0+0Njc+6WXxde0)O4sM#=vsq(K6XmS-{Us6KxI`U5&jxT$t;D)xLoij z0`KA%3zr-t;QS^3TWUHN!8I_&kcjqcM95zn%%T{i0YiAkoRE+pJ@oDWj@Lc!nWcTy z4lHa#J8+sy05hEq#KhSX1K)^b2xO)~C?^YIk_(97mO)-|HJv((V~6-nt#m#{=a__cqEK!? zOG_J79;KCB`upM0S=5_AC1r9Ypkv)`Q#f|^D$T0U*Vi93;e*tFNKQ^pTF3D48$0!F zlMT+g0lLfHA<1-PF^-2qSC~(%DGCA#MOzzMKOxi+7r2;MWE>uYL)me#E6(piAw{9I zaR~xzrvR{b382&YPMbTyp%XTMBcYUaEJaFt&2KC2F}tm#ZVv1BngPznR@E?}mzw%N zm#W4E@-tJ|M1GFHt4ROO^!B>FW+D|GOW4b}42;v)!P45D4z_b}4FDU*0I+inremz! z{5jwg8V@0?bUNfFBe#MIazjHi74*(IC`8EVP@EPhA&MX|y#xZIGU%8LvunYk-3)8^ z`LFf1@4q`-%FfPiP{0T2`5{?ZS*b~rCQ32RT-V=s%nmHChl)Ij>x`3%bBNnqQ`bxf z&39U}He%s~#Es@d9KOgj7M1s|KWf)1rWwd=pjAbN_9B0V9IeSITHI3UgPk4d#wLEW{>lSBMx)kc=grS-~Qie_BShZ-CTC6 zp8*xk3$Q`U;?}x7X0S!u5>63?;^^v6?$;0O-NV3zSbMJ!BIuk^-C5l!Y%UBf+JMSEL#n8wYzg4AQeF9IK9(&M9Y~W2RnU zNZk*27Kil`K&DZN7ifrJE7AeEXb`Bc|THzkAMq=FAyL$u6fiEJj>BuMeYe z8$F?m3z>P95X#O5pO82LZ!|cPi0eQips9@~Y*#UXJsOq+`!!7lww81q2cveK)r}z|ezKTB+@uEqdMX|4|4lm? z|Gr>|=&;|TLofC{(Ni(+(s458U2)yWcW_9aN_hL@lkE3JPM7=_ufs}J>obZPSNmlT zUmK88GX1Pl~@Q~ z!O3857Y3>%dfyJ=Osc7=89#I$A|pnRUKojkgM);QpR+%G*3<_ayg9^cWYLgjm!#K`oIL7HU45hJp_{hOw?UEI^d!9{sjnGt(b0gjFBW$QO+OMP zDXz;BmN1B(CK!^saZ_M&66pmOm z$!S@@c4ZUZ850-s;0h!Uuu$sn{UcK8q#s6bJOa4Chd*zClWyfzO~4_(9sReteHc$p z%L*pE^TCwk$B!}9IE?KQvbdx$q~ zgEW$A21Tb+-%C%#B`GO-T#{0PqJ~-j6z!6)r=E-cKwO_KCThSI!GRzP#*+(l?1U+& zS#*445cMYc-eg3)IZ58)^>=42njow1mL*F7msT}{D^?!#0CyLkNbn6!q{mX`5&O~H z+(jn>@u7%ELYG!HlE_^E9s!AP*(Q*8;(}+H>Y;-|%m!0N4=o*IS7##&|3SBa1bReu z8Hph6o&1!shrnFdz@=$6PGI4TF`j$wLdbdn!xwRyblWNv!_Vv$B2vQa6|<| z0Q1ugbmW`DXG8xhd?tmA0pwoY6u01qcN$nD`80Mg+f1O0`K$4z^(Fwo^ zlF<|v*Fg)n8}5*(-9s!(Q)?Gw6;@G8bJLwgzQ%!PaOUb%e1DiVZ$^J92?-G)*~8|% z%h!XzH!KZOv&!l5<9*$IG&OADcG8G~ei&zbF%l!hQise4#HKJ?JNgR=9rnk}vl4Lv%pr_-%9gUv+#*y%M=AUIxGVm*#6Pn+&D5aufMQUZo&j}UW6|AE6Wnl#^ zOM-J67kFmY&v#0#{mhb6Ia5EdL|oQBZ|b)flRpq85Kq&7+(5^_K^{17;H$*h*w?3? z<4kya){oCCsb7J;nwC6`lQ+T6#UEU~Bf&2$iO!%`R5cUN&Ch~5h?S`zX*y0ey86a} zk@@XGX*u<+JRXlp#~J-zN{R=BewH~0W_Dq;Ix4H6nyvvO#8|k2(Ks=)4E(~A!Nofq z>|FgpN!uFaHO*n^@!JQ*4LD*F2C)*7x-4-?g!xedZNUEM!y_>hS6<2Zw64AXIJf7H zUO_{bdRc3a7LJO0ho)du4UNi{9*wf*UgeUe?tOW6UAwYsJGZ1%b*zae;76CVEea&C zyQkECW))jG!yu$sbeD71hcnK_z9(|>@c~W8x!Bi9w(y#yNyUWO+l{8}BT-xGpcz=& zd(kC2PvW_QSy_--Ox|K?joMMx{eD8#A|y7CV{cJ@8GO2mnp@@#xh_t5)#_A zOPYXuro+rGl;=l4&P9;hI_VlQ&d65PHq)qpOG^&87VP2&I}V!iw~zmHpTk(UY+8m9<7q*-XlZfFpjcjKFkjSG#zcd8dYsQ8dcn0 zjS6m`QYnGEps{OLUVYcrjOxy{N#z|Y*u`y&Li1a{@y=}e{6=EU%(KCjV#;n=Q|6yz zzbCF6@z{VCj5$U@uTGY^AS7+*ds|k^lBYr*nCQ1%eWM^CB9$(8VTBudZCnnkt>;2q zdI|N}XH9*18+IzJwzRZl^6+O(=)Ec`DxOz5VSVe8bpX#dEEO{HDxsOnj{@CY-B4NG z0+I3g;6>7Ed-otPvAG2@8Ww{;9(UIf*N>AF*X0b4M*;L(8WB^@N0cqBYU$H1Z0tT# zMBwF*t|KF0{^vlG*P6CI^-6A^T188rVp&tSTwz0(bZ&jumaN*2wMiB26zuT)*024t znm%_(ZkT1lsu4fzT{>l%S>}5pryn2CvyFmZooy8O>YTG7ugo%#A|zn({vmQRj_;&!S1CIyOmbYIeK&8*jX32;p8ebapJ_$zRei@TbeuXo2jQw zym{^c33MYuz2K=&BXSE}7xfN`qab6&)E-UC!MVqMH%sbA&k{3;n~vjA06png)U+F% z>hFphdyf`1cHcW5GtfAy2-IXKA=D*}J-Z4?v?l5J`t<6KRY?_XOJfST--YG1eC3_q z`04e8x{t4fSBj|IDxCb?)wFkK=&>Iw&=Yl&|AS+aUh;oLx9SVY5o?3%^*CRFmd8IL zg+}aVVvG8RmJ3UX#|~%b!gaT3_(kR{>?YY4qo-II85u%q`i|W;E>RFh-gum~#-%6p z$+$BqF|8DQLlVI8Rw&$b_Qlz1-uK$x8WQ@PnWDNeALIC^Ku^`?h{!l(&E}MIcacbZ z{C6P#i$LS3=Ju&pwDuh+YwngUZtj*Ytnb;HUE8@Xt-5_>a%J06Rx$Vc$in9Nz8Ot( zos;Wkm_=8Kp157|;YORR_k{lipeGWbCtu*a^3j#_SH*W33+>Y|qsw3R#QM1TL_=Uy zIxVT~=;)@a54b@E%TaHKr@|%cz`+Pk!DdZOO(qS0`t;J&lUKcXUO`E8iy-bsx=U_= zwvH~k{V*Uh4O~b{=j7o}B7rGy%MrT}Q9aIdQT^B%0+=5b=;>rk)ng0WC)O;9FXhS< zG;|#!Fdr*y=sq^uKo3P~rLxvu`I44inWCod9eMSgn{sPA)}&UouON|n38%F6yYQlx zFMV^H<~pX;eQd_67Bvhmp1j#6>wS^O26W1QKGcnUMc9!2s+b}B?P>aP|HD~#3FEx? z=Pcg51=qEeb*$;+q^Ca{qT&mnvZjSrp!IcQ8s0){;%#rSK3}e_6^ABp9;Nl zR8-XXLk9MF*BrtiBsLpLD;nt;(jlStCsqkpnxwPph4tOX5#%ujv`SfP-~Q5;?!6@am&VkaK)pV*y5r}R zs`h0G<=jQAlGblR3!1<1$!?fq8&@~|601U3Gq7m#&!%bb%{s;U$3RQ!M!za*#C}!W zFlM5-4tvs6!t`)lK~0tdpU1NezJ(*G+jxlKA*33XX5d8G2^yC8_u|J8!yt z=pT^`8F^JSO5;)&x4nzbjo?FE@4P#<1!88xpJe^?;}W6$$F75mF9+h%N@(pcUDNFB zfr7F+lCJTivZK2nNUNK}JRSdyBD%4&MReIS|0&SlT}_-}!>L*tn%BIIK%tnAQ5j(# zn?NfM1KrFAI=`-SLw0S~Y7(WFCz2@5F6Dk3QP})tU~c1FmyG(EH{z?rjKfPmI^dK) zapA@IxBo8C7>$L`M7@Qx`qOZ2-7x7xEQ}Ep#QY`DI-IvA8?Yx3LZ6o-X*h0Vv2_Wc z<)u;a`A}QmPOTJr>yoktT9{&TGl&-F%=GD9}y60-Z~MP9te|G6G%3T^Lo=@>OtN(`VjU4YTc&Y9ubjR0wMY z6iwb>llt!DQ-2OLxlS03-^7OJ)Xuy7J)?wBJG0U?5?l*90 zmC-<`{pfa6+$&yM(ZFvC(bGp~!Vz?9*GS%vTeTb7+PI^8lQMd6iAv0wa@Ndu&?hVv z@``H7Q@WR~E91mhbYea&(?stjt!mEOrgbAmOfU8mNqx?&e*(0)UaaI{pW?4bI=VbC zuW?&kS=+wMnhsTjd5i;nsIs+B5j}KiOYfed#vUp1J8sQu=v<#u+c^^G?-1ya{HD)+ zN!sm{Tq}8vT`8gyP%>q=W9IwQjoEMg7HF|kk*|pv#C{~I!x1B1TU4-2_o#uMsgv}k z=-JE((-&=7gzMM(7ahTYq~N%3J1dv}FvsP{2J-&1k_zFbM-0en*}&B+S4R6*W%Os7 zF=NKKgru~$v6w#~G6Rar>gf}ju2t5yKo~oRcIt3InAI!>=bs2!C8-}h8)1G}phb1r zlG|>ie|jOT><8E6`ZZzstvlig%p@|a<<)l|8_Pgf@|UfY%Sm)DYwDII(Rmk6iWSs% zZYF+z9eU{DlzS*bj|AG10DU^7WQv??_Wv_5veEzmAOJ~3K~%oH7)ODgb}r?0F+GgJ zu@cjUCI-cH*`kjdXki1A){~U}wfU>Y$r4|UMJe{~fix3K%c+1i;-@h~YijO*xYQDG z@M44FiJOBz{O|)a13q^3{5z*jeFpp@(&+wMI{8H+Gj7!jj>(`qe4IV}K}Ovars}4> zDWMZXV2+vfut0xo5dX2NXVF*Yv6V}2r8ce$Eok0}k(orbgE{qGM+7jBMWAV63Ab0J z9G9$GyZ4ng_U+Mdk>0RAB(G^lOlg~Jaz(pRW=*HYNSMbO(A5O!3U1HAa;y|KR!if`xZmR}cX&bbyuh5sPdzj1XF4R;NEn8e zh)g*aGn-hJ8KQcu8Djxx38UE8XXr(~_WXx4gp@R{!p=jcw2_1lfjT9tjP`D$>34HG z-9d*fqO{I=B(P#*nQkd#MK8Yif{=>#4ccxtJHMLFVxwoSscVIBl4fHqu!EZ)>{d7D ziJwZGCV=^2fS#(ylH77V^D`a)(uE{KEq6<;Ul*L)v^~0*yEneP{Xkk($03rg9?os( zJ~0-7u59fgF!vrTZ>D9R3Z+<3(%7{-zoBbqetp;0?7Gg4S+yOjv9Khis{N-V{tWlR zsN$BdaM_AP=}+bw$ITHlh@UMsbj`%{#~#q{oeg^R&2Qy}u&3HS5~;CO5*7`mqo?ld zrImqojcs(I%+e`*P)gb8mW+%HGy6T-N=!%?zfJk-9XqdBnpR=K2=1lD-qX?K&BE@N zE}lUkrE10#*I~^P*JsUnSfIto*ltT;_A6Xy#;RK8l3cg;c2?82$ikN0?2@*9Bswdn zS9huB)O8*ii$GVl^r%*}k~F)e_W*%ep7>?ilE&`c1q9|iKFk|3YdhAa*YMY$F*>tK z_|ZAJs_n~nPQ-p9rpNvSui-SExG@j3gjVE#@E(yT>GvVs>$GbO)`HW@vM&BZA4`2h zSlQS_VUT?4e|GKK#dzw`5*CdFN9ArewGHKkbMm0JflDVoa8?rw`02(9w?LA1nGOD+ z?RQ*MpY!R%0xhD?nz8kI*5}%{3%)gps{F}5spc22%!Wd%G(qO&?*_# z9U5Z|Xacf2iOh#8n){SVL_UB!tq9C}3rS=az?{R6%xg)i{c{q(LTqVlDffr`hMt9! zk44WF)sOp>fcXiICk1Fpt;km=>fZj3#QNiJ?$NS@i&%=AUsluB@Vw?-vBW#am9_0hpfN&c*N~KZjCkns zmL9dTmL8ST=3b?e=5B@Jrfxa%{r40!c1aVMcL-okujyQezB!q|oKV*OQ(05*;t86O zpOFXIXQH~CCmQIv#<{OAIqte&M%@hTUHxc>Rcw9K(A2@NO=#()J;-r6OZ$>nR9|1; z3!{5?KV!m@PCR<$$T{~6druZGF{6YwoWnN<8xi306c!g)*?H40BGU{LrV3#GyFla3 z`m=fZ+yfqYUmJv!{9qPSwah-DX0>Npbtg+2hY|lgt@w7ZE8iwFG-c{D+usE zy`~oWxv)O_3-Y&r{!{>cB<_{>w_bYrfQD(`Zgt|PT?6UinozIr2= zmzrAs#&_R+H`=%PGp83%n|Sd8qBCf>NUR3x?C7BzFYwK}=@J0a8WscJ9rrydxC#F* z&?00kzMTB2j6?4HW4=Y-oe!^AYQ?Eu>6}!z&O5zvb6{@sj&S0iiN}~e7OX2V|1YaNx970d+LzaYn|cpC>FzaN3iBw7~`upc?lEd=7G9t|?o zN}75Ol{EIK6gBrKk*_~MzPCL2nX=?zf*|iA4;Lu{^Y+Y|&MleMBq~>Ru1l#TQMtT* zrAJ2n5>Xx2d@+62mjuSA6KI`?mnANyzP?M_C1w|HzjVX(X%3|2l+&%3{d9@5nfU8W zFgCw^_w9E-cx$xp^JhjI)^8CqvbYWYk?FK(1RL68>Vy?RK0)!cZOwKS)4|VlgSOyA z*uw(7+$`zSJtR77`V=la6@ zgM;ICDQGEKI!E%bE*FnT#pqnu)K1&LVri$f1K&GO(Mu2>c@zE}pfNgcuu1*=fJ@%j z$4R<oBXnywgu-l?~E*L-bJ9^6H`LHv_cXeYD~XX(lA9{U>t+Sktx z&?PUuJa64|Dw-y+L&XFfurxF{0kZO|_y+}c_s|U;cox~=Q_e8&i_b>;c7OV%rlvMd z^Nf3&vu_;TMMaN5?dhebGvcWXc5cC-Wq6afQ`5RhOgC0nT#q$JRFA)0^`JnDlJWh; z#80-~OrNLhmj8{;?V|6`g_SKups&Z({OpuiyY^OU{RZ#M#w`IkP1{2Ynx(=ETX!SW zIOEMJYm4iyr$4`tU557k^U@`eV1{E%RfXpZ9`NtIRd z>pPY6>N}P4>N*v3>pJ(7p+M4S`JCErx$N3*+3ea*narAw-Nd^~lb^AZ0K7f5vSUjc zNv)GA+cqSWbJxaKw*SH@X%+;Dgj98H;dXdBe=V`Mm!5B&iIZU@ z-FCheM0-!o)QvQd(2G4vQs=|uX44YajXgnb*jac({uR*T2JD$jt|WcB-8PE?jS>2E zXz3F4(APNCtL)-yR=cD$tn*51*yNkhv?Z889g^R?Gn_=~s6y`U*y6T5Yyx&dS=&A` z*p*h@B~8BHPV&8Wkc?nkN@d&TxJiEdg()ep1%|@s z08MUQO)K)+)tx}N%Txkk+DFu6P9IjJWw8nH9N)S5NI+;Dy}B3&sG)HXB{LTtBdN#%n{dN&7eS^ zjGKiKdYf(fJoL~wDW)G#yvR7LWT{C^)iO(V^~xIrYRBZ7HEtwQduKFm@X2c2kk;l5muD z$k0*VA(LF$u{))rV^=~&`>v#lb}2G;CRViXAYZo)M_gI^7V@Cj#6gHlx$D@a+_f>q z+%>GC)}L9$+?Cesnjb$n8u^2WUhEH&x-16h5kSvYvw3CjVVjcOYGz>P%CGUxDXO79 z8llF`JzgQna8UOqQ#tlHg-z7g?a>Xq?iw}7PAQ=$TcGc$ZD^-Q)8IM91{WM*pQd>~ zx#^BS5YT!thsft3)GA_huvLhMR$6dA;p-i?nV;-&&ihKuvtWU?Z_)QBgNqkk3aeOZ z5?i^)7EaH#o zBJNHWjuJYg2#7mL6yM2zqY|YS~Au|6>(Qb7q+g7$ZuJBJF{`wds>l8NVc&=STANV0eKMv^zVTdHuQdR?RL#X zX;rg9dsly2BAl94L5~5(z4K`0@KC}drZ>u8KV2hG+ay%4bRuB8q}2aHqV?Ka=@_vI+?kCV{c;*N`sXxl3eIiW9Gus@ zIjo>{OL$)ERs#4I`f*|F*2u!vEs+KM5nbG}nT{elHboV+Y>X^w*$`9MvOc1)bzMXO zcWp#L%j$^y)?b41npWl1cCOfZJ$>2K=bl5+Vzi%l4W{J2i1N5H(J=5^ki|cl1 z`ADmo^PD{b3D9gv%qXL$UeXO4)h!SZl?i$mZ!thWP9e}63D9;!K-2Suhk?!@K!*+i zZOMIKp_Yg+wk zkFf5i7-XI4cOK%gNujoPe@SQjhbKC>l#7WXSiBAz!y!LZ7|sV}n>}VO^HgJ4d3V z|9d!6N?12$+v3Z~o22ctHy!aUT6;RAY|Vv;vb9&DE7zP3Dp`Hlr+Cdy`|NdJ8YQfo zbR>H1>#E^vCmoGkBWV!3TEZ}9wS;c$FXV6dSxlF+iu{a~;ySSm(EkAF$?EPet&=*M zhCsXA3K~ke%V}{^-%y7eJm>6$u{#6w4?SXj|UieyDG3gNXRN zp$!>cprBz2!g}!!HYxUqfhJ$Si~L+^0)iCzxjP9gJ0$dCx0BD?PJr1)zJ4qDxmyTm zo5}avM80m5gdS%j0dfQR`t@SEvFpgsT`R5|vxa=`YV!LrKtJk9F;$yaWDi@H?HZaC z!`lDMyeisEvZt4L=<-JJ4Nn10Lq`Va$Eo3ED+@meW@STdZ3|72T4|4{657qvMX+pT zko3pPRt(V3G|+RkJzthTY}tpWZ(u8Dzlc;Qu4teo#GReJwCjzlUpyQ$c5fNoJN_Ba z#EBmW9XNiS9>!i=)<9dy(87|uO7JF6T365D`xcfkKr=wo!jfyO7hZVr#g_=oJgrkV z!O1fWf@6LyENP>KC8cTOpK+rnN8+JmUETcstXP99DE-tl zv;}D`t5$IaXa?xt04-{n_R5bJ6F=LdX~DbU>;rDT(X>~0Q*$TXPmi??cutm;Q^eh0 zwkoU~?fdHa2(B;u7pW5l%N}M1!@xH|*Cmg{k^+2N|Fl zphp7z(!6!gDIdn8X-)Z?GeQy|vj7`Q@(+NXjaw2gfVxJ9X^bxpTB{^=Ctlj*jExkJ^Bv7n`0_#l?bvKJ4Jg zgLCWT(Sy)Ez+{%7A{;k+PC?$B|#hCQ&)Z9 zc6b^Tl{Y{S@zUMo%_%Ic1OJE=uy+rFBWG-Bp^1n-M}qZ=Nc&uz{ zb_H}L zGCtH6Afm@sW`KUWfff>aUPw{>GCfWf4}Pa-M5mY1<79CUeKX16;!=yi&YcAZ4IHvu zT%4K4`eRN1dF`z!XH9Mo_=Ts^iLuV1Gol4)6&@?==;jA|)y-gsRVn1gm2cod7lgIRP*%STlMRx#FhGxOpr;uGy`iXW+l3Qf z*ByPxgE9KjGdP)UvuthS z@36sI-h$FPlA@)93rW>nJOV)KkQwaKv}_d7kKM-rJ;s1OmGk~DMqw&@wJZkJ4X%T& z3yI3)fgDX9ER2uZqcA{!ggTKp53E;+cNqinVFf5i{KRH5|Dd` zK`yDkTTzK1w-b;%2*|yI-QE4X-rhUBJ9h?%kLu^0J$ruN9!;yhYs5!|#OBcQKkRsd zOBs#L9dw-%Pf@@Ll^f)#zf0Ymx9XTnD7j$|FhGwk(4wc(-j`e|y#SY^q*YD9!7YF` zvj~b#hr*INx*s0j$Cg$SmB|AeOF7S5`VUIXp1C;S#J(gv4%~B{KwGW%CE3lFZ zXn!&Xw;(XJxdnSPEeC%(>h4WIQ(}PrcY&7BVNd*crNX>Dn&z-Y(F7db1Hi>Af~MD5 zc_hiNBdS~^dPdgw;xwh*3!q1$b!^*7-YC} z=Pm^qm#esKe30u1$W_%1P+DFCg~gSSo>c^jIyby7S_cgJgr-ohg=>_3ef*oFvZfUx zIeE0g2zPB=vGM?1-`u2iGgU;NvzGz-@d7>Vbo`X>&w5DVrivZPCg5@_5L~DP-mpK}tp*B&1|RN?LZWjHYFVsck5E>Sxfx{Wh%iCH@-I z@yeQJx_0do5>Ha`5U_K-4N|IRJY|h5cp%;u0+B2O^rHiM>Y4mkt8{xfLsJQn}D3o2brCa4$)lp`gf2NK7m1&nv9GQ&rt^x4F4znI1UY3GWWV4T@b-@c51&wQ@eG2n@c0frvmnkTn*biB;wf1b(9qCEB0>)> zOu_zBSg?Q_K5)6q(IW&L-TcXoXbStZEMVdB+m<4FaXT2G{~TzEvl-&Ej(X0N*EAj6 zqhStu=N)L%dslDbkHeE8KD`90>RM^(E=FWrjlfn@k@0!7m)vO+@4@YRRp*S-?aAmt z_3pdx3T@oD0o2q~`}K5n?-&~y-7zsSxodRp988$-?i-=eIYS`V2tXd_>gpTp>$^+* z?;YxY3yR8rjmR1K6l6|92E>d2**};CJ^=(|-!KX?&YIqI@&#)*a z@;0)#&2#aMqucC?D;nw6Od2W3J#XXI7UgYt0SHSV`{_V5R(Lna`rX%6d-Iz~@D z8NZqVnh!L>{QYt7y$b54bmPRavv%O%8UW5-;k4!&uW?CPJ+!p(OLcLg5_d)6HO9l^ ztevAk{K-TMR0zUxClGL$!qU((vs@bG|Jp0}XCe_$Bo zN(yonWapJopUg?jfJnST{k;GH5o1Y2K~z>Ugha&M8iX8&dKW$Ls1#aGh-;pB;5<&! zVC2RW5l>&hO(7AST(}*UMAu6lh$pmn^8+>g>)1Vor>J=qmL2tQ{YXD(;n;W9h5b*Ebp=d)st|4A9E591T*|{_-dEAbn#VeR@n&0#S z84U~GZZ&hBJW11~HLYrAYDaFJXqfbsgig!`0{5D+1T^`XUw(8dZt^sJ)|9P>ZQ1gg zCIfO>mV?_>On91xH|Z`mT;_B2ilCEP{*kE=n^FwLrS&v@9?ojW1F)&J6AH+`ByPDT%`FTebfzDi5){GCT0ipT@MMr1z7m}dVL zaUu&(+*T!Cm#akVf~=M$M%_WFgQlQ#+#0Ug`+$>&KmC1Oyd$X12q4injFUsN7M#Fp zZSAJu;@^%d1^93)uWq8&1Pef%Z*$=MHUGhl3K!|xF^|V%x`sRn`u5vz@#V#xJ9ki! zb#-+5e-E(q^bgF05QW&Z_GIC17{Q8BT9bho|z)>}dg7q5KX%%0_{Y3Kmv_MwB$ zzH#6moeAs|J`mU<33mnwfWTu-(OY74!%ZXzJErnjvz$VJXD1g!WPC0Jljx2G7ud-X zQ+e;;I1(w@G}_}?+1P&?8zj2jj-pjoZaz`e&m)*PE03S!6~qRg-~`$X08j4>h)Snx zzcGo0kd#qI%PWh^8|b7Tw(h|wi%0n4!w5IG;6zq?JO6=%pO=gQxlUkda(ujPCfNU&? z$fr($Apx0uf6zH`f`EJ!4r^(FhK2^H9y$cd%F1x!lqG19XuDa#2qYz^|KX*~1BLLwbTag6G?Ssy{VOQImAvUmg#?JrGxOm{PQM zEu93+PH4r?ArBFpj1shILOAhz-s$h7YwolntB3!++uF&4g?t~3#s$T-kd$5u5u7~Y zk<-B~AOS3$A_k2u{a~BYRXC(=Df{mKCXVmw>Ks3B-n_?lEg3y#&7VJ?zG6haAIJ~v zk%v-i%Mq#drJ;y?ZYUxPK;}neKFFFwARkmw0c9m6T9mSXzXHh1?}N`jpEq%oFVCL} zkM_Y=J$9_n4wb8(d(7dmKRAI8I3 zWE0yE9yXOfZ|OH^Y;k+=)MYQ;@pCSqdCD17^z68@N34q%u2v4+D66BsohJ}4${PmR*yzsHVUX`ltsj*~K29RC0Aw{)RZt#XiNzwj8alk{}AM%63qu+M<%KDqwvUbayeM|S+JM;?mEf7c`b9gx5K?z=DW_a5zQ$B5CG(fN5HxBNIdc* zT1WmPkGyp0lEF)tE>C*@{r5-v(lKH*b|fMqBD8z=?vE7@9QYOFbNuC}k+asLxsE(C zA}?C>19*9Py@AzTqkZidF&Z=4xN+mSAAa~@fs&FUowfcWkNjsKQ;$3XX%p+_3O^-}62->+~s79O-BSu)LkDJKl z<>hzF%kS$KtRov4of`r2NRRAwuSX^z|D{JZHh!cY`O7coA;_<Q3A~Ox)7%>{5-rnAE%a<=#S5!LCGqSSl zad~9D2lU7Y^8GyWf(74Dka4reXkR-*)rOf zjuE4=A@s=c@$uu=tXX42;OQOq$mh%J+kW`cw}?*$R;NDcx0MdpFH`y zzSbi>vWk*21sOf^$kcjdM4ml+Ca9^YF&!ZpF%k$pazH@9xb54wh3!|6{}tqOzfG+l zL9O*8^2p-iV&vm>qkZWZF&bM!k1Q*@H)8*O`L6p%EcM<%H?Z~AmegnzUz8zV+zOT_aE?cOb&rSLaA@?WhZn?GWYJOX5xGUY?qzJ14N zUp7XJMqgil{WX2{4N0pBi^+w!{>ID&*cw|9`kb9c%2|Tj0@}G7HL61Ch<_ug%9_>rVh|$;+iO9_a---X^GkhyK0(A10vb2md(bpuqAVP$3Y zNY;@@PIleTBhQ=n#obAhCXM!`V#Mglkb%MJx7*r!;I|-mb@dK`+y-?GEfnOkiW(>? zsf4_OGRVp)hOGQDxODOSAFd<+wn4qx12*5o)S7tYW?^CB(Y`#47(H3SGEP@l*Krye zS{r(M`|kyLC?c0t)IuQzxs-yOl93OIDLKGN%zzk93dF>xgTB5VoJ5a21oH8bAP-G; z{gp@l`R7&GSfF{$nl+<+Sr{>T@?~mjIt~C-2*`sJDE`1L~>=AIc*yTlQ1q^5x4%`w}o>^zC(~ulNd2#q^YSn{)VFu0onf^kTD`(wh(~q0Ow5|;M`SvIDLu0 zeBKuHjBdiwQ`h0tjxu<$52deV9rWaZY9N-E}*ZmQR{AiD_2P dh|y!#{{cg}%?++(*J}U(002ovPDHLkV1k5jh|vH5 literal 0 HcmV?d00001 diff --git a/iped-app/resources/root/htmlreport/fr-FR/res/main.css b/iped-app/resources/root/htmlreport/fr-FR/res/main.css new file mode 100644 index 0000000000..0d055c3836 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/res/main.css @@ -0,0 +1,21 @@ +div#conteudo { + margin-left: 20px; + margin-right: 10px; + margin-top: 10px; + width: 90%; + text-align: left; +} + +hr { + margin-top: 15px; + margin-bottom: 0px; +} + +.HeaderText { + font-size: 25px; + color: #034D86; + font-family: 'Arial Black'; + text-decoration: none; + border-bottom: 4px solid rgb(200,200,200); + width: 80%; +} diff --git a/iped-app/resources/root/htmlreport/fr-FR/res/navigation.css b/iped-app/resources/root/htmlreport/fr-FR/res/navigation.css new file mode 100644 index 0000000000..4ddcc3ea51 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/res/navigation.css @@ -0,0 +1,25 @@ +/* CSS Document */ + +/* This css contains definitions used excusively by + Table_of_Contents.html; These definitions provided the + behavior for the button style links as seen on the left + panel of the html report */ + +a.sectionLinks:link, a.sectionLinks:visited +{ + display: block; + border-top: 1px solid #ffffff; + border-bottom: 1px solid #cccccc; + background-image: url(bg_nav.jpg); + font-weight: bold; + padding: 3px 0px 3px 10px; + color: #21536A; +} +a.sectionLinks:hover +{ + border-top: 1px solid #cccccc; + background-color: #e2e4e1; + background-image: none; + font-weight: bold; + text-decoration: none; +} \ No newline at end of file diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html b/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html new file mode 100644 index 0000000000..1f7a7f6a81 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html @@ -0,0 +1,18 @@ + + + + +Bookmarks + +
+%PAGS% + +
%CATEGORY%
Comments: %COMMENTS%
+File Count: %TOTALCOUNT% +

Files
+%ITEMS% +%PAGS% +

+ diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/item.html b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html new file mode 100644 index 0000000000..2930015d46 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html @@ -0,0 +1,12 @@ + +
Name%NAME%
+
Path%PATH%
+
File Type%TYPE%
+
Logical Size%SIZE% Bytes
+
Created Date%CREATED%
+
Modified Date%MODIFIED%
+
Last Accessed Date%ACCESSED%
+
Deleted%DELETED%
+
Carved%CARVED%
+
Hash%HASH%
+
Exported as%EXPORTED%
diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html b/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html new file mode 100644 index 0000000000..acdb1c35b9 --- /dev/null +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html @@ -0,0 +1 @@ +%EXAMINER%
FORENSIC EXAMINER \ No newline at end of file From 1d912b2a09b248b5842e9adcdb66f643fa0f8b24 Mon Sep 17 00:00:00 2001 From: tc-wleite Date: Tue, 14 May 2024 18:59:43 -0300 Subject: [PATCH 066/126] '#2203: Check if the exported file exists to avoid broken links. --- .../src/main/java/iped/engine/task/HTMLReportTask.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/iped-engine/src/main/java/iped/engine/task/HTMLReportTask.java b/iped-engine/src/main/java/iped/engine/task/HTMLReportTask.java index ee13cbf024..bb565b8a26 100644 --- a/iped-engine/src/main/java/iped/engine/task/HTMLReportTask.java +++ b/iped-engine/src/main/java/iped/engine/task/HTMLReportTask.java @@ -351,6 +351,13 @@ protected void process(IItem evidence) throws Exception { ReportEntry reg = new ReportEntry(); reg.name = evidence.getName(); reg.export = evidence.getIdInDataSource(); + if (reg.export != null && output != null && output.getParentFile() != null) { + // Check if the exported file exists to avoid broken links (see issue #2203) + File expFile = new File(output.getParentFile(), reg.export); + if (!expFile.exists()) { + reg.export = null; + } + } reg.isImage = ImageThumbTask.isImageType(evidence.getMediaType()); reg.isVideo = VideoThumbTask.isVideoType(evidence.getMediaType()); reg.length = evidence.getLength(); From 6dd36d6a2590cea6adad3d1323550722c5a3288c Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Tue, 14 May 2024 19:55:45 -0300 Subject: [PATCH 067/126] '#1182: complement French report template translation --- .../root/htmlreport/fr-FR/caseinformation.htm | 6 +++--- .../root/htmlreport/fr-FR/contents.htm | 4 ++-- .../root/htmlreport/fr-FR/report.htm | 2 +- .../root/htmlreport/fr-FR/templates/arq.html | 8 ++++---- .../root/htmlreport/fr-FR/templates/item.html | 20 +++++++++---------- .../htmlreport/fr-FR/templates/perito.html | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm index 6c8da606e4..01eeff99b0 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm +++ b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm @@ -21,9 +21,9 @@ Références %INVESTIGATION%
- %REQUEST_DOC% at %REQUEST_DATE%
- Requested by %REQUESTER%
- Laboratory Case %RECORD% at %RECORD_DATE%
+ %REQUEST_DOC% - date %REQUEST_DATE%
+ Demandé par %REQUESTER%
+ Numéro de cas %RECORD% - date %RECORD_DATE%
diff --git a/iped-app/resources/root/htmlreport/fr-FR/contents.htm b/iped-app/resources/root/htmlreport/fr-FR/contents.htm index 125ed90f1c..c4cf2ac1d4 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/contents.htm +++ b/iped-app/resources/root/htmlreport/fr-FR/contents.htm @@ -1,7 +1,7 @@ - IPED Forensic Report + IPED Rapport @@ -14,7 +14,7 @@

-

IPED Forensic Report
+
IPED Rapport

diff --git a/iped-app/resources/root/htmlreport/fr-FR/report.htm b/iped-app/resources/root/htmlreport/fr-FR/report.htm index a49269859e..9fc6a4d632 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/report.htm +++ b/iped-app/resources/root/htmlreport/fr-FR/report.htm @@ -1,7 +1,7 @@ - IPED Forensic Report + IPED Rapport diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html b/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html index 1f7a7f6a81..4fc814a4c9 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/arq.html @@ -2,16 +2,16 @@ -Bookmarks +Favoris
%PAGS% -
%CATEGORY%
Comments: %COMMENTS%
-File Count: %TOTALCOUNT% -

Files
+Commentaires: %COMMENTS% +Nombre de fichiers: %TOTALCOUNT% +
Fichiers
%ITEMS% %PAGS%

diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/item.html b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html index 2930015d46..9d3b10cd27 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/templates/item.html +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html @@ -1,12 +1,12 @@ -
Name%NAME%
-
Path%PATH%
-
File Type%TYPE%
-
Logical Size%SIZE% Bytes
-
Created Date%CREATED%
-
Modified Date%MODIFIED%
-
Last Accessed Date%ACCESSED%
-
Deleted%DELETED%
-
Carved%CARVED%
+
Nom%NAME%
+
Emplacement%PATH%
+
Type de fichier%TYPE%
+
Taille%SIZE% Bytes
+
Créé%CREATED%
+
Modifié%MODIFIED%
+
Consulté%ACCESSED%
+
Supprimé%DELETED%
+
Carvé%CARVED%
Hash%HASH%
-
Exported as%EXPORTED%
+
Exporté comme%EXPORTED%
diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html b/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html index acdb1c35b9..c4e446178a 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/perito.html @@ -1 +1 @@ -%EXAMINER%
FORENSIC EXAMINER \ No newline at end of file +%EXAMINER%
ANALYSTE \ No newline at end of file From f3dbf36b4a4e5d8e57ad28602881a0b731e79e0a Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Wed, 15 May 2024 09:12:34 -0300 Subject: [PATCH 068/126] '#1182: translate English strings to French --- .../iped-categories_fr_FR.properties | 2 +- .../iped-desktop-messages_fr_FR.properties | 16 +++++++-------- .../iped-parsers-messages_fr_FR.properties | 20 +++++++++---------- .../iped-properties_fr_FR.properties | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index 2783bac195..ac23348b31 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -14,7 +14,7 @@ Link\ files=Liens URL\ links= Liens\ URL Other\ Documents=Autres\ Documents Emails\ and\ Mailboxes=Emails\ et\ Boîtes Mail -Emails=Emails +Emails=E-mails Mailboxes=Boites Mails Appointments=Calendriers GDrive\ Synced\ Files=Fichiers de\ synchronisation\ GDrive diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index 0e326d5dff..4379996edc 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -24,7 +24,7 @@ App.Update=Mise à jour App.Wait=Attendre... AppLazyInitializer.errorMsg.line1=Erreur d'ouverture du cas. Le traitement c'est-il terminé sans erreur?\n AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d'évènement\n -AppLazyInitializer.errorMsg.line3=\nResumed error:\n +AppLazyInitializer.errorMsg.line3=\nRésumé de erreur:\n AppLazyInitializer.errorTitle=Erreur d'initialisation AppListener.NoHits=Pas de résultat positif AppListener.UncheckAll=Confirmez-vous que tous les éléments sont décochés? @@ -50,7 +50,7 @@ BookmarksManager.AlertNoSelectedBookmarks=No selected bookmarks![TBT] BookmarksManager.Checked=Vérification des éléments BookmarksManager.ConfirmDelete=Voulez-vous vraiment supprimer les favoris sélectionnés? BookmarksManager.ConfirmDelTitle=Confirmer -BookmarksManager.Dataset=Dataset: +BookmarksManager.Dataset=Données: BookmarksManager.Delete=Supprimer BookmarksManager.Delete.Tip=Supprimer les favoris sélectionnés BookmarksManager.Edit=Edit[TBT] @@ -103,7 +103,7 @@ ColumnsManager.LoadingCols=Chargement des colonnes utilisées... ColumnsManager.Filter=[Type de filtre] ColumnsManager.WindowsEvt=Fenètre d'évènements CopyProperties.Copying=Copier -CopyProperties.CSVDateFormat=MM/dd/yyyy HH:mm:ss z +CopyProperties.CSVDateFormat=dd/MM/yyyy HH:mm:ss z CopyProperties.CSVDelimiter=, CopyProperties.from=\ de DuplicatesTableModel.Duplicates=\ Doublons @@ -116,7 +116,7 @@ ExportFileTree.ExportError=Erreur d'exportation de fichiers. Vérifier les droit ExportFileTree.from=\ de ExportIndexedTerms.Exported=Exporté ExportIndexedTerms.ofWords=\ des mots. -ExportToZIP.DefaultName=ExportedFiles.zip +ExportToZIP.DefaultName=Fichiers Exportés.zip ExportToZIP.DefaultPath=/home/caine/Dossiers d'exportation ExportToZIP.FileAlreadyExistsMessageText=Le nom du fichier existe déjà. Voulez-vous le remplacer? ExportToZIP.FileAlreadyExistsMessageTitle=Le fichier existe déjà @@ -144,7 +144,7 @@ GraphAnalysis.Expand.Links=Liens GraphAnalysis.Expand.Entities=Entités GraphAnalysis.Expand.MaxNodes=Afficher les liens entre les individus jusqu'à GraphAnalysis.FindConnectios=Communications entre les individus -GraphAnalysis.FindPaths=Find Paths +GraphAnalysis.FindPaths=Trouver des chemins GraphAnalysis.Remove=Supprimer GraphAnalysis.ShowEvidence=Afficher les résultats GraphAnalysis.SelectAll=Tout sélectionner @@ -186,9 +186,9 @@ GraphAnalysis.CreateMultiGraph=Graphique non créé pour ce cas multiple. Souhai GraphAnalysis.MultiGraphError=Impossible de créer le graphique du cas multiple, vérifier les logs! GraphAnalysis.MultiGraphOk=Graphique du cas multiple créé. GraphAnalysis.InitialGraphMsg=Graphique prêt. Il présente uniquement les individues ayant le plus de contacts. -KeywordListImporter.BookmarkPrefix=Results of search for: +KeywordListImporter.BookmarkPrefix=Résultats de recherche pour: KeywordListImporter.Msg.1=Importer -KeywordListImporter.Msg.2=\ keywords with hits of +KeywordListImporter.Msg.2= mots-clés avec des résultats sur\ KeywordListImporter.SyntaxError=Erreur de syntaxe dnas les expressions suivantes: HashDialog.MD5Title=Valeur MD5 Hash des ZIP exportés ImageSimilarity.ExternalError=Impossible d'ouvrir le fichier image sélectionné. @@ -219,7 +219,7 @@ MenuClass.ExportChecked=Exporter les éléments vérifiés MenuClass.ExportCheckedToZip=Exporter les résultats au format Zip MenuClass.ExportHighlighted=Exporter les éléments surlignés MenuClass.ExportIndexedWords=Exporter la liste des expressions indexées -MenuClass.ExportItens=Export items... +MenuClass.ExportItens=Exporter des éléments... MenuClass.ExportProps.Checked=Exporter les propriétés des éléments cochés MenuClass.ExportProps.Highlighed=Exporter les propriétés des éléments surlignés MenuClass.ExportTree=Exporter l'arborescence des fichiers diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 2d899232d1..1716e8538d 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -1,5 +1,5 @@ AbstractDBParser.ProbableDate=*Date possiblement décodée.\n -AbstractDBParser.Table=Table:\ +AbstractDBParser.Table=Tableau:\ AresParser.Album=Album AresParser.Artist=Artiste AresParser.Category=Categories @@ -95,14 +95,14 @@ LNKShortcutParser.LocationFlags=Indicateur de localisation LNKShortcutParser.MachineId=Identifiant de la machine LNKShortcutParser.Modified=Date de dernière modification LNKShortcutParser.NetComments=commentaires du Net -LNKShortcutParser.NetDescription=Net Description -LNKShortcutParser.NetDeviceName=Net Device Name -LNKShortcutParser.NetDevNameUnicode=Net Device Name - Unicode -LNKShortcutParser.NetItemName=Net - Item Name -LNKShortcutParser.NetItemType=Net - Item Type -LNKShortcutParser.NetProviderType=Net Provider Type -LNKShortcutParser.NetShare=Net Share Name -LNKShortcutParser.NetShareUnicode=Net Share Name - Unicode +LNKShortcutParser.NetDescription=Descriptif du réseau +LNKShortcutParser.NetDeviceName=Nom du périphérique réseau +LNKShortcutParser.NetDevNameUnicode=Nom du périphérique réseau - Unicode +LNKShortcutParser.NetItemName=Nom de l'élément de réseau +LNKShortcutParser.NetItemType=Type d'élément de réseau +LNKShortcutParser.NetProviderType=Type de fournisseur de réseau +LNKShortcutParser.NetShare=Nom du dossier réseau +LNKShortcutParser.NetShareUnicode=Nom du dossier réseau - Unicode LNKShortcutParser.NtfsRef=Référence NTFS LNKShortcutParser.PrimaryName=Nom principal LNKShortcutParser.RelativePath=Chemin relatif @@ -117,7 +117,7 @@ LNKShortcutParser.WindowAttr=Propriétés de la fenêtre LNKShortcutParser.WorkingDir=Dossier de travail MboxParser.NoSubject=[Sans sujet] MetadataUtil.NoSubject=[Sans sujet] -MSAccessParser.Table=Table:\ +MSAccessParser.Table=Tableau:\ OutlookPSTParser.Attachment=Pièces jointes- OutlookPSTParser.Attachments=Pièces jointes OutlookPSTParser.DateFormat=dd/MM/yyyy HH:mm:ss diff --git a/iped-app/resources/localization/iped-properties_fr_FR.properties b/iped-app/resources/localization/iped-properties_fr_FR.properties index 95c6ebd5bc..3456975abf 100644 --- a/iped-app/resources/localization/iped-properties_fr_FR.properties +++ b/iped-app/resources/localization/iped-properties_fr_FR.properties @@ -8,6 +8,6 @@ changed=méta changé name=nom path=emplacement size=taille -type=type[TBT] +type=type nudityScore=taux de nudité nudityClass=classement de nudité \ No newline at end of file From fef3474f9c5baa517c57a0f50afac1b5951ad2a8 Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Wed, 15 May 2024 11:39:22 -0300 Subject: [PATCH 069/126] '#1182: add tesseract lang dict for French, update config comment & test --- iped-app/pom.xml | 2 +- iped-app/resources/config/conf/OCRConfig.txt | 2 +- .../src/test/java/iped/parsers/ocr/OCRParserTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-app/pom.xml b/iped-app/pom.xml index 07d95c32e9..d9eeb19c3e 100644 --- a/iped-app/pom.xml +++ b/iped-app/pom.xml @@ -315,7 +315,7 @@ tesseract tesseract-zip - 5.3.2-24-g3922 + 5.3.2-24-g3922_1 zip false ${tools.dir} diff --git a/iped-app/resources/config/conf/OCRConfig.txt b/iped-app/resources/config/conf/OCRConfig.txt index 690c8d640b..6f4a714ca6 100644 --- a/iped-app/resources/config/conf/OCRConfig.txt +++ b/iped-app/resources/config/conf/OCRConfig.txt @@ -5,7 +5,7 @@ # You can use the parameter -ocr "bookmark_name" to restrict the OCR to a specific bookmark (just works when creating reports from cmd line). # Dictionary language to be used for OCR. You can specify multiple languages e.g. por+eng but you will pay an important processing cost. -# Languages supported: eng, por, ita, deu, spa +# Languages supported: eng, por, ita, deu, spa, fra OCRLanguage = por # Skip known files found in the hash lookup database. diff --git a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/ocr/OCRParserTest.java b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/ocr/OCRParserTest.java index efdb621c59..4e1a417629 100644 --- a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/ocr/OCRParserTest.java +++ b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/ocr/OCRParserTest.java @@ -43,7 +43,7 @@ public class OCRParserTest { @BeforeClass public static void setUpTool() throws IOException { if (osName.startsWith("windows")) { - String repoPath = "tesseract/tesseract-zip/5.3.2-24-g3922/tesseract-zip-5.3.2-24-g3922.zip"; + String repoPath = "tesseract/tesseract-zip/5.3.2-24-g3922_1/tesseract-zip-5.3.2-24-g3922_1.zip"; RepoToolDownloader.unzipFromUrl(repoPath, testRoot + "/tmp_tools/"); System.setProperty(OCRParser.TOOL_PATH_PROP, testRoot + "/tmp_tools/tesseract/"); } From 923a4d11b1a46fcf8102562c625801a1636ec8fb Mon Sep 17 00:00:00 2001 From: Luis Nassif Date: Wed, 15 May 2024 13:10:19 -0300 Subject: [PATCH 070/126] '#1182: French report template fix and adjustments --- .../iped-desktop-messages_fr_FR.properties | 2 +- .../localization/iped-engine-messages_fr_FR.properties | 6 +++--- .../root/htmlreport/fr-FR/caseinformation.htm | 10 ++++------ iped-app/resources/root/htmlreport/fr-FR/report.htm | 4 ++-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index 4379996edc..18f0a7ee62 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -272,7 +272,7 @@ MetadataPanel.Hits=Résultats MetadataPanel.Linear=Linéaire MetadataPanel.Log=Logarithmique MetadataPanel.NoRanges=Aucune plage -MetadataPanel.Property=propriété: +MetadataPanel.Property=Propriété: MetadataPanel.RangeSeparator=de MetadataPanel.Scale=Echelle: MetadataPanel.Sort=Trier: diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index dd2f54dec2..a52cfe887d 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -76,8 +76,8 @@ ProgressFrame.MaxMemory=Mémoire max ProgressFrame.MeanSpeed=Vitesse moyenne ProgressFrame.OpenApp=Prévisualisation du cas ProgressFrame.OutputFree=Espace libre -ProgressFrame.OutputTempFree=Température de/sortie -ProgressFrame.OutputTempVolume=Volume de températurede/sortie +ProgressFrame.OutputTempFree=Sortie/Temp libre +ProgressFrame.OutputTempVolume=Volume de sortie/temp ProgressFrame.OutputVolume=Volume de sortie ProgressFrame.ParserTimes=Durer d'analyse ProgressFrame.ParsingErrors=Erreurs d'analyse @@ -92,7 +92,7 @@ ProgressFrame.Starting=Début... ProgressFrame.Statistics=Statistiques ProgressFrame.SubitemsProcessed=Sous dossiers traités ProgressFrame.TaskTimes=Durée du traitement -ProgressFrame.TempFree=Temp Free +ProgressFrame.TempFree=Temp Libre ProgressFrame.TempVolume=Temp Volume ProgressFrame.Timeouts=Temps dépassé ProgressFrame.TotalMemory=Mémoire totale diff --git a/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm index 01eeff99b0..968e012a3e 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm +++ b/iped-app/resources/root/htmlreport/fr-FR/caseinformation.htm @@ -13,17 +13,15 @@ Rapport%REPORT% Date%REPORT_DATE% - Numéro de dossier%TITLE% - + Numéro de dossier%RECORD% Analyste/Expert(s) %EXAMINERS% Références - %INVESTIGATION%
- %REQUEST_DOC% - date %REQUEST_DATE%
- Demandé par %REQUESTER%
- Numéro de cas %RECORD% - date %RECORD_DATE%
+ Numéro du cas: %INVESTIGATION%
+ Formulaire de demande: %REQUEST_DOC% - date %REQUEST_DATE%
+ Requérant: %REQUESTER%
diff --git a/iped-app/resources/root/htmlreport/fr-FR/report.htm b/iped-app/resources/root/htmlreport/fr-FR/report.htm index 9fc6a4d632..d2b136b06e 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/report.htm +++ b/iped-app/resources/root/htmlreport/fr-FR/report.htm @@ -5,8 +5,8 @@ - - + + <body> </body> From b29706baeeb11661312e9afbaf5f2efb4ef921da Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Wed, 15 May 2024 15:49:49 -0300 Subject: [PATCH 071/126] '#2185: Add French property strings marked with [TBT]'s. --- .../iped-parsers-messages_fr_FR.properties | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 1716e8538d..bb0880efe1 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -345,7 +345,11 @@ BitTorrentResumeDatParser.Time=Date/Heure BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière consultation BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Durée (s) +BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] +BitTorrentResumeDatParser.Yes=Yes[TBT] +BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.FullPath=Chemin complet TorrentFileDatParser.FileSize=Taille du fichier (Bytes) TorrentFileDatParser.MD5=Hash MD5 @@ -362,12 +366,19 @@ TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] TorrentFileDatParser.Piece=Piece[TBT] TorrentFileDatParser.PieceLength=Piece length[TBT] TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] +TorrentFileDatParser.File=File[TBT] +TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] +TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] +TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] +TorrentFileDatParser.Yes=Yes[TBT] TelegramContact.ContactID=Identifiant du contact: TelegramContact.FirstName=Prénom: TelegramContact.LastName=Nom: TelegramContact.Username=Nom d'utilisateur: TelegramContact.Phone=Téléphone: +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] TelegramContact.Channel=Telegram Channel[TBT] +TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.Group=Telegram Group[TBT] TelegramReport.GroupCreate=Groupe/chat/canal créés TelegramReport.AddMember=Ajouter un membre @@ -504,4 +515,4 @@ OFXParser.BrokerId=Broker ID[TBT] OFXParser.Investment=Investment[TBT] OFXParser.BankTransactions=Bank Transactions[TBT] OFXParser.SubAccountFund=Sub Account Fund[TBT] -OFXParser.Investments=Investments[TBT] \ No newline at end of file +OFXParser.Investments=Investments[TBT] From b10a2a8596de7129f42ea83928f6537a222c557c Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Wed, 15 May 2024 15:52:54 -0300 Subject: [PATCH 072/126] '#2185: Only show torrent hit offset if it is not zero. --- .../java/iped/parsers/bittorrent/TorrentFileParser.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 61a25723ac..849814f119 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -294,8 +294,10 @@ private static void outputMatchInfo(XHTMLContentHandler xhtml, ItemPiecesMatchIn xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.startPiece + 1)); xhtml.characters("-"); xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.finalPiece + 1)); - xhtml.characters(" " + strAtOffset + " "); - xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.startOffset)); + if (itemPiecesMatchInfo.startOffset != 0) { + xhtml.characters(" " + strAtOffset + " "); + xhtml.characters(LocalizedFormat.format(itemPiecesMatchInfo.startOffset)); + } xhtml.characters(")"); xhtml.endElement("span"); } From 351f0b2d81a95d89f4287f47d01050ce26a1991d Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Wed, 15 May 2024 16:10:57 -0300 Subject: [PATCH 073/126] '#2185: Fix an off-by-one error in torrent final piece index shown. --- .../main/java/iped/parsers/bittorrent/TorrentFileParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java index 849814f119..88cc3d3c4d 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/bittorrent/TorrentFileParser.java @@ -520,7 +520,7 @@ private static ItemPiecesMatchInfo searchAndMatchFileInCase(IItemSearcher search } } } - itemPiecesMatchInfo.finalPiece = n + firstPiece; + itemPiecesMatchInfo.finalPiece = n + firstPiece - 1; itemPiecesMatchInfo.item = item; // Found an item that matches all pieces hashes From 4258d727066ea1bae75a7f17ac764924e91bce72 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Wed, 15 May 2024 17:08:13 -0300 Subject: [PATCH 074/126] '#2185: adjust b29706b so French strings are sorted like other langs --- .../localization/iped-parsers-messages_fr_FR.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index bb0880efe1..5dd2e31003 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -346,10 +346,10 @@ BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière consultation BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Durée (s) BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] -TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] BitTorrentResumeDatParser.Yes=Yes[TBT] BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] +TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Chemin complet TorrentFileDatParser.FileSize=Taille du fichier (Bytes) TorrentFileDatParser.MD5=Hash MD5 @@ -371,14 +371,14 @@ TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] TorrentFileDatParser.Yes=Yes[TBT] +TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] +TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=Identifiant du contact: TelegramContact.FirstName=Prénom: TelegramContact.LastName=Nom: TelegramContact.Username=Nom d'utilisateur: TelegramContact.Phone=Téléphone: -TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] TelegramContact.Channel=Telegram Channel[TBT] -TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.Group=Telegram Group[TBT] TelegramReport.GroupCreate=Groupe/chat/canal créés TelegramReport.AddMember=Ajouter un membre From 82bca9b380f155f23e829d984631899a63575001 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Thu, 16 May 2024 21:50:37 +0200 Subject: [PATCH 075/126] Update iped-categories_de_DE.properties Translation for Appointment --- .../resources/localization/iped-categories_de_DE.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-categories_de_DE.properties b/iped-app/resources/localization/iped-categories_de_DE.properties index 172c25754d..db666f425f 100644 --- a/iped-app/resources/localization/iped-categories_de_DE.properties +++ b/iped-app/resources/localization/iped-categories_de_DE.properties @@ -16,7 +16,7 @@ Other\ Documents=sonstige\ Dokumente Emails\ and\ Mailboxes=E-Mails\ und\ Postfächer Emails=E-Mails Mailboxes=Postfächer -Appointments=Appointments[TBT] +Appointments=Termine GDrive\ Synced\ Files=GDrive\ synchronisierte\ Dateien GDrive\ File\ Entries=GDrive\ Datei\ Einträge Databases=Datenbanken From 7134e083824d741ba53a3851299d90fd54cf06a6 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 00:45:38 +0200 Subject: [PATCH 076/126] Update iped-categories_fr_FR.properties Update and review of all properties --- .../iped-categories_fr_FR.properties | 180 +++++++++--------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index ac23348b31..34341116c1 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -1,100 +1,100 @@ -Categories=Categories +Categories=Catégories Documents=Documents -RTF\ Documents=Documents \ RTF +RTF\ Documents=Documents\ RTF PDF\ Documents=Documents\ PDF HTML\ Documents=Documents\ HTML XML\ Files=Fichiers\ XML -Georeferenced\ Files=Fichiers\ Géotagué +Georeferenced\ Files=Fichiers\ Géotagués Text\ Documents=Documents\ Texte Spreadsheets=Tableur Presentations=Présentations OLE\ files=Fichiers\ OLE Links=Liens -Link\ files=Liens -URL\ links= Liens\ URL +Link\ files=Liens\ vers\ Fichiers +URL\ links= Liens\ vers\ URL Other\ Documents=Autres\ Documents -Emails\ and\ Mailboxes=Emails\ et\ Boîtes Mail +Emails\ and\ Mailboxes=E-mails\ et\ Boîtes\ Mail Emails=E-mails -Mailboxes=Boites Mails -Appointments=Calendriers -GDrive\ Synced\ Files=Fichiers de\ synchronisation\ GDrive -GDrive\ File\ Entries=Fichier de \ l'application\ GDrive -Databases=Bases de données -Compressed\ Archives=Archives\ (Fichiers compressés) +Mailboxes=Boîtes\ Mails +Appointments=Entrées\ dans\ Calendrier +GDrive\ Synced\ Files=Fichiers\ de\ Synchronisation\ GDrive +GDrive\ File\ Entries=Enregistrements\ de\ Fichiers\ GDrive +Databases=Bases\ de\ Données +Compressed\ Archives=Fichiers\ Compressés Contacts=Contacts Chats=Chats Others\ Chats=Autres\ Chats Windows\ Artifacts=Artéfacts\ Windows -Event\ Files=Fichiers\ d'évènements -Event\ Records=Enregistrements\ d'évènements +Event\ Files=Fichiers\ d'Évènements +Event\ Records=Enregistrements\ d'Évènements Prefetch\ and\ Superfetch=Prefetch\ et\ Superfetch -User\ Activities=Activités de\ l'utilisateur -User\ Activities\ Entries=Utilisateurs\ Actibités\ Entrées -Windows\ Registry=Registre de\ Windows -Main\ Registry\ Files=Fichiers\Importants -Other\ Registry\ Files=Autres\ Fichiers -Registry\ Full\ Reports=Rapport\ Complet -Registry\ Custom\ Reports=Rapport\ Personnalisé -Registry\ OS\ Info=Information sur\ l'OS -Registry\ Installed\ Apps=Applications\ Installées -Registry\ Network\ Info=Informations\ Réseau -Registry\ Storage\ Info=Informations\ sur le Stockage -Registry\ Device\ Info=Informations\ sur l'Appareil -Registry\ Program\ Run=\ Liste des Programmes\ Exécutés -Registry\ Auto\ Run=Exécution \Automatique de programmes -Registry\ Log\ Info=Information sur les \ Logs -Registry\ Malware\ Info=Information sur \ les Malware -Registry\ Web\ Info=Informations\ Internet -Registry\ User\ Info=Informations\ sur l'Utilisateur -Registry\ User\ Accounts=Comptes\ Utilisateur -Registry\ User\ Activity=Activité\ de l'Utilisateur -Registry\ User\ Files=Fichiers\ Utilisateur\ -Registry\ User\ Network\ Activity=Activité\ Réseau\ Utilisateur -Registry\ User\ Config=Configuration\ Utilisateur -Registry\ User\ Virtualization=Virtualisation\ Utilisateur -Registry\ User\ Communication=Communications\ Utilisateur -Windows\ Recycle=Corbeille +User\ Activities=Activités\ Utilisateur +User\ Activities\ Entries=Entrées\ des\ Activités\ Utilisateur +Windows\ Registry=Registre\ de\ Windows +Main\ Registry\ Files=Fichiers\ Principaux\ du\ Registre +Other\ Registry\ Files=Autres\ Fichiers\ du\ Registre +Registry\ Full\ Reports=Rapports\ Complets\ du\ Registre +Registry\ Custom\ Reports=Rapports\ Personnalisés\ du\ Registre +Registry\ OS\ Info=Registre\ -\ Information\ sur\ l'OS +Registry\ Installed\ Apps=Registre\ -\ Applications\ Installées +Registry\ Network\ Info=Registre\ -\ Informations\ Réseau +Registry\ Storage\ Info=Registre\ -\ Informations\ Stockage +Registry\ Device\ Info=Registre\ -\ Informations\ Appareil +Registry\ Program\ Run=Registre\ -\ Liste\ des\ Programmes\ Exécutés +Registry\ Auto\ Run=Registre\ -\ Exécution \Automatique\ de\ Programmes +Registry\ Log\ Info=Registre\ -\ Informations\ sur\ les\ Logs +Registry\ Malware\ Info=Registre\ -\ Informations\ sur\ les\ Malware +Registry\ Web\ Info=Registre\ -\ Informations\ Internet +Registry\ User\ Info=Registre\ -\ Informations\ sur\ l'Utilisateur +Registry\ User\ Accounts=Registre\ -\ Comptes\ Utilisateur +Registry\ User\ Activity=Registre\ -\ Activités\ Utilisateur +Registry\ User\ Files=Registre\ -\ Fichiers\ Utilisateur +Registry\ User\ Network\ Activity=Registre\ -\ Activités\ Réseau\ de\ l'Utilisateur +Registry\ User\ Config=Registre\ -\ Configurations\ Utilisateur +Registry\ User\ Virtualization=Registre\ -\ Virtualisation\ Utilisateur +Registry\ User\ Communication=Registre\ -\ Communications\ Utilisateur +Windows\ Recycle=Corbeille\ de\ Windows USN\ Journal=Journal\ USN Programs\ and\ Libraries=Programmes\ et\ Librairies -Android\ Applications=Android\ Applications[TBT] -Unallocated=Non alloué +Android\ Applications=Applications\ Android +Unallocated=Non\ Alloué File\ Slacks=Fichiers\ Slacks Multimedia=Multimédia Audios=Audios Images=Images Temporary\ Internet\ Images=Images\ Temporaires\ Internet -Images\ in\ System\ Folders=Images\ du système +Images\ in\ System\ Folders=Images\ dans\ Dossiers\ Système Other\ Images=Autres\ Images Videos=Vidéos Video\ Thumbnails=Vignettes Vidéos Plain\ Texts=Textes\ Bruts -Temporary\ Internet\ Texts=\Fichiers textes\ Temporaires +Temporary\ Internet\ Texts=\Textes\ Temporaires\ Internet Texts\ in\ System\ Folders=Textes\ dans\ Dossiers\ Système Other\ Texts=Autres\ Textes -Other\ files=Autres\ fichiers +Other\ files=Autres\ Fichiers Empty\ Files=Fichiers\ Vides Peer-to-peer=Peer-to-peer Ares\ Galaxy=Ares\ Galaxy E-Mule=E-Mule Shareaza=Shareaza Torrent=Torrent -Other Peer-to-peer=Autres Peer-to-peer -Browser\ Artifacts=Artéfacts\ des Navigateurs +Other Peer-to-peer=Autres\ Peer-to-peer +Browser\ Artifacts=Artéfacts\ des\ Navigateurs Internet\ History=Historique\ Internet Internet\ History\ Entries=Entrées\ Historique\ Internet Web\ Bookmarks=Favoris\ Internet Image\ Disks=Image\ Disques ISO\ disks=ISO\ Disques -Virtual\ disks=Disque\ Virtuel -Other\ disks=Autre\ Disque -Mozilla\ Firefox\ Saved\ Session=Sauvegarde\ Session\ Mozilla\ Firefox +Virtual\ disks=Disques\ Virtuel +Other\ disks=Autre\ Disques +Mozilla\ Firefox\ Saved\ Session=Sauvegarde\ de\ Sessions\ Mozilla\ Firefox Folders=Dossiers Scanned\ Documents=Documents\ Scannés -Extraction\ Summary=Sommaire\ Extraction +Extraction\ Summary=Résumé\ de\ l'Extraction Calls=Appels SMS\ Messages=SMS MMS\ Messages=MMS -Instant\ Messages=Messages\ Instantannés +Instant\ Messages=Messages\ Instantanés Bluetooth\ Devices=Appareils\ Bluetooth SIM\ Data=Données\ SIM Calendar=Calendrier @@ -102,61 +102,61 @@ Logs=Logs User\ Accounts=Comptes\ Utilisateur Searches=Recherches Notes=Notes -Wireless\ Networks=Réseaux\ Sans fil +Wireless\ Networks=Réseaux\ Sans\ Fil Notifications=Notifications Locations=Géolocalisation Cookies=Cookies Configuration=Configuration -Passwords=Mot de passe -Autofill=Remplissage automatique -Cell\ Towers=Antenne\ relai -Power\ Events=Journal d'évènements\ (ON/OFF) +Passwords=Mot\ de\ passe +Autofill=Remplissage\ Automatique +Cell\ Towers=Antennes\ Relai +Power\ Events=Incidents\ Réseau\ Électrique User\ Dictionaries=Dictionnaire\ Utilisateur IP\ Connections=Connexions\ IP Recordings=Enregistrements Mobile\ Cards=Cartes\ Mobile -Applications\ Usage=Utilisation\ des Applications +Applications\ Usage=Utilisation\ des\ Applications Device\ Information=Informations\ Appareil iPhone\ Backup=Sauvegardes\ d'iPhone Torchat=Torchat Tor=Tor -TorTCFragment=Extraits de Communications Tor +TorTCFragment=Extraits\ de\ Communications\ Tor Cloud\ Drives=Cloud Google\ Drive=Google\ Drive Telegram=Telegram Brazilian\ Software=Logiciel\ Brésilien -Internal\ Revenue\ of\ Brazil=Recette\ Interne\ du\ Brésil -Social\ Security\ and\ CAIXA\ Bank=Banque\ Social\ Sécurité\ et\ CAIXA -Tax\ Returns\ and\ Receipts\ IRPF=Tax\ Returns\ and\ Receipts\ IRPF -Tax\ Returns\ and\ Receipts\ DIRF=Tax\ Returns\ and\ Receipts\ DIRF -Tax\ Returns\ and\ Receipts\ DIPJ=Tax\ Returns\ and\ Receipts\ DIPJ -Tax\ Returns\ and\ Receipts\ CNPJ=Tax\ Returns\ and\ Receipts\ CNPJ -Tax\ Returns\ and\ Receipts\ DSIMPLES=Tax\ Returns\ and\ Receipts\ DSIMPLES -Tax\ Returns\ and\ Receipts\ DCTF=Tax\ Returns\ and\ Receipts\ DCTF -Tax\ Returns\ and\ Receipts\ PER\ DCOMP=Tax\ Returns\ and\ Receipts\ PER\ DCOMP -Other\ Tax\ Returns\ and\ Receipts=Other\ Tax\ Returns\ and\ Receipts -PDF\ Bills\ of\ Exchange=PDF\ Bills\ of\ Exchange -SPED\ Program\ Files=SPED\ Program\ Files -Receitanet\ Program\ Files=Receitanet\ Program\ Files -RFB\ Program\ Files=RFB\ Program\ Fichiers -SEFIP_GEFIP\ Files=SEFIP_GEFIP\ Fichiers -SEFIP\ Databases=SEFIP\ Base de donnée -SEFIP\ Executables=SEFIP\ Executables -SEFIP\ Files=SEFIP\ Fichiers -Social\ Connectivity\ Program\ Executables=Sociale\ Connexion\ Program\ Executables -Social\ Connectivity\ Program\ Files=Sociale\ Connexion\ Program\ Files -GRRF\ Files=GRRF\ Fichiers +Internal\ Revenue\ of\ Brazil=Direction\ Générale\ des\ Finances\ Publiques\ du\ Brésil +Social\ Security\ and\ CAIXA\ Bank=Sécurité\ Sociale\ et\ Banque\ CAIXA +Tax\ Returns\ and\ Receipts\ IRPF=Déclarations\ de\ Revenus\ et\ Reçus\ IRPF +Tax\ Returns\ and\ Receipts\ DIRF=Déclarations\ de\ Revenus\ et\ Reçus\ DIRF +Tax\ Returns\ and\ Receipts\ DIPJ=Déclarations\ de\ Revenus\ et\ Reçus\ DIPJ +Tax\ Returns\ and\ Receipts\ CNPJ=Déclarations\ de\ Revenus\ et\ Reçus\ CNPJ +Tax\ Returns\ and\ Receipts\ DSIMPLES=Déclarations\ de\ Revenus\ et\ Reçus\ DSIMPLES +Tax\ Returns\ and\ Receipts\ DCTF=Déclarations\ de\ Revenus\ et\ Reçus\ DCTF +Tax\ Returns\ and\ Receipts\ PER\ DCOMP=Déclarations\ de\ Revenus\ et\ Reçus\ PER\ DCOMP +Other\ Tax\ Returns\ and\ Receipts=Autres\ Déclarations\ de\ Revenus\ et\ Reçus +PDF\ Bills\ of\ Exchange=Lettres\ de\ Change\ PDF +SPED\ Program\ Files=Fichiers\ Programme\ SPED +Receitanet\ Program\ Files=Fichiers\ Programme\ Receitanet +RFB\ Program\ Files=Fichiers\ Programme\ RFB +SEFIP_GEFIP\ Files=Fichiers\ Programme\ SEFIP_GEFIP +SEFIP\ Databases=Base\ de\ Données\ SEFIP +SEFIP\ Executables=Executables\ SEFIP +SEFIP\ Files=Fichiers\ SEFIP +Social\ Connectivity\ Program\ Executables=Executables\ Connectivité\ Sociale +Social\ Connectivity\ Program\ Files=Fichiers\ Connectivité\ Sociale +GRRF\ Files=Fichiers\ GRRF Activities\ Sensor=Capteur\ d'Activités -Chat\ Activities=Chats -Credit\ Cards=Cartes de Crédit -Device\ Connectivity=Connexions\ de l'Appareil -Device\ Events=Evènements +Chat\ Activities=Activités\ dans\ Chats +Credit\ Cards=Cartes\ de\ Crédit +Device\ Connectivity=Connectivité\ de\ l'Appareil +Device\ Events=Évènements\ de\ l'Appareil File\ Downloads=Téléchargements -File\ Uploads=Fichiers Uploadés +File\ Uploads=Fichiers\ Uploadés Fuzzy\ Data=Données\ Fuzzy -Financial\ Accounts=Comptes\ Financier -Transfers\ of\ Funds=Transfers\ of\ Funds[TBT] +Financial\ Accounts=Comptes\ Financiers +Transfers\ of\ Funds=Transferts\ de\ Fonds Journeys=Voyages -Networks\ Usage=Réseaux\ Utilisés -Recognized\ Devices=Appareil -Social\ Media\ Activities=Activités\ sur les Réseaux\ Sociaux +Networks\ Usage=Utilisation\ des\ Réseaux +Recognized\ Devices=Appareils\ Identifiés +Social\ Media\ Activities=Activités\ sur\ les\ Réseaux\ Sociaux From 5ae6b08d203da24b16dcee6142009b06a1f3a7d3 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 00:47:25 +0200 Subject: [PATCH 077/126] Update iped-categories_pt_BR.properties minor changes --- .../resources/localization/iped-categories_pt_BR.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_pt_BR.properties b/iped-app/resources/localization/iped-categories_pt_BR.properties index 6839af35ee..ec5159b3ec 100644 --- a/iped-app/resources/localization/iped-categories_pt_BR.properties +++ b/iped-app/resources/localization/iped-categories_pt_BR.properties @@ -37,7 +37,7 @@ Registry\ Full\ Reports=Relatórios\ Completos\ de\ Registro Registry\ Custom\ Reports=Relatórios\ Específicos\ de\ Registro Registry\ OS\ Info=Registro\ -\ Sistema\ Operacional Registry\ Installed\ Apps=Registro\ -\ Programas\ Instalados -Registry\ Network\ Info=Registro: Informações\ de\ Rede +Registry\ Network\ Info=Registro\ -\ Informações\ de\ Rede Registry\ Storage\ Info=Registro\ -\ Informações\ de\ Armazenamento Registry\ Device\ Info=Registro\ -\ Informações\ de\ Dispositivos Registry\ Program\ Run=Registro\ -\ Execução\ de\ Programas @@ -66,7 +66,7 @@ Temporary\ Internet\ Images=Imagens\ Temporárias\ de\ Internet Images\ in\ System\ Folders=Imagens\ em\ Pastas\ de\ Sistema Other\ Images=Outras\ Imagens Videos=Vídeos -Video\ Thumbnails=Miniaturas de Vídeos +Video\ Thumbnails=Miniaturas\ de\ Vídeos Plain\ Texts=Textos\ Simples Temporary\ Internet\ Texts=Textos\ Temporários\ de\ Internet Texts\ in\ System\ Folders=Textos\ em\ Pastas\ de\ Sistema @@ -154,7 +154,7 @@ Device\ Events=Eventos\ de\ Dispositivos File\ Downloads=Download\ de\ Arquivos File\ Uploads=Upload \ de\ Arquivos Fuzzy\ Data=Dados\ Indistintos -Financial\ Accounts=Contas Financeiras +Financial\ Accounts=Contas\ Financeiras Transfers\ of\ Funds=Transferências\ de\ Fundos Journeys=Jornadas Networks\ Usage=Uso\ de\ Redes From 036dff6fa474ac5bd22cbdc4b7680201d866f1dc Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 03:47:12 +0200 Subject: [PATCH 078/126] Update iped-desktop-messages_fr_FR.properties Review and translation in French --- .../iped-desktop-messages_fr_FR.properties | 382 +++++++++--------- 1 file changed, 191 insertions(+), 191 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index 18f0a7ee62..ebd1e403f8 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -1,5 +1,5 @@ App.Case=Cas -App.Checked=[Vérification] +App.Checked=[Éléments cochés] App.ExportZip=Export en fichier ZIP App.FilterTip=Filtres App.ClearFilter=Supprimer le Filtre @@ -16,50 +16,50 @@ App.NoFilter=[Non filtré] App.Options=Options App.RecursiveListing=Récursivité App.Search=Recherche -App.SearchBoxTip=[Type ou choix de la recherche] -App.SearchLabel=Recherche: +App.SearchBoxTip=[Type ou choix de la recherche. Touche [TAB] pour autocomplétion] +App.SearchLabel=Recherche : App.Table=Tableau App.ToggleTimelineView=Basculer la ligne de temps en tableau App.Update=Mise à jour App.Wait=Attendre... -AppLazyInitializer.errorMsg.line1=Erreur d'ouverture du cas. Le traitement c'est-il terminé sans erreur?\n -AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d'évènement\n +AppLazyInitializer.errorMsg.line1=Erreur d'ouverture du cas. Le traitement s'est-il terminé sans erreur ?\n +AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d'évènements\n AppLazyInitializer.errorMsg.line3=\nRésumé de erreur:\n AppLazyInitializer.errorTitle=Erreur d'initialisation -AppListener.NoHits=Pas de résultat positif -AppListener.UncheckAll=Confirmez-vous que tous les éléments sont décochés? +AppListener.NoHits=Aucun résultat positif +AppListener.UncheckAll=Confirmez-vous vouloir décocher tous les éléments ? AppListener.UncheckAll.Title=Confirmation -AppMain.NoCasesFile=Les fichiers du cas sont introuvables: +AppMain.NoCasesFile=Les fichiers du cas sont introuvables : AppMain.warn.Title=Initialisation BookmarksController.HistoryDelimiter=-----------------------Historique----------------------- -BookmarksController.LoadError=Erreur de chargement des favoris\! +BookmarksController.LoadError=Erreur de chargement des favoris \! BookmarksController.LoadError.Title=Erreur BookmarksController.LoadSuccess=Chargement des favoris avec succès BookmarksController.LoadSuccess.Title=Succès -BookmarksController.SaveError=Erreur de sauvegarde des favoris\! +BookmarksController.SaveError=Erreur de sauvegarde des favoris \! BookmarksController.SaveError.Title=Erreur BookmarksController.SaveSuccess=Sauvegarde des favoris avec succès BookmarksController.SaveSuccess.Title=Succès BookmarksManager.Add=Ajouter BookmarksManager.Add.Tip=Ajouter des éléments au favori sélectionné BookmarksManager.AddDuplicates=Ajouter les doublons (Hash) -BookmarksManager.AlertMultipleSelectedBookmarks=Select just one bookmark![TBT] -BookmarksManager.AlertNoCheckedtems=No checked items![TBT] -BookmarksManager.AlertNoHighlightedItems=No highlighted items![TBT] -BookmarksManager.AlertNoSelectedBookmarks=No selected bookmarks![TBT] -BookmarksManager.Checked=Vérification des éléments -BookmarksManager.ConfirmDelete=Voulez-vous vraiment supprimer les favoris sélectionnés? +BookmarksManager.AlertMultipleSelectedBookmarks=Selectionnez seulement un favori \! +BookmarksManager.AlertNoCheckedtems=Aucun élement coché \! +BookmarksManager.AlertNoHighlightedItems=Aucun élément surligné \! +BookmarksManager.AlertNoSelectedBookmarks=Aucun favori sélectionné \! +BookmarksManager.Checked=Éléments cochés +BookmarksManager.ConfirmDelete=Voulez-vous vraiment supprimer les favoris sélectionnés ? BookmarksManager.ConfirmDelTitle=Confirmer -BookmarksManager.Dataset=Données: +BookmarksManager.Dataset=Données : BookmarksManager.Delete=Supprimer BookmarksManager.Delete.Tip=Supprimer les favoris sélectionnés -BookmarksManager.Edit=Edit[TBT] -BookmarksManager.Edit.Color=Color[TBT] -BookmarksManager.Edit.Name=Name[TBT] -BookmarksManager.Edit.Tip=Edit selected bookmark name and color[TBT] -BookmarksManager.Edit.Title=Edit Bookmark[TBT] +BookmarksManager.Edit=Modifier +BookmarksManager.Edit.Color=Couleur] +BookmarksManager.Edit.Name=Nom +BookmarksManager.Edit.Tip=Modifier la couleur et le nom du favori sélectionné +BookmarksManager.Edit.Title=Modifier favori BookmarksManager.Highlighted=Surligner les éléments -BookmarksManager.KeyStrokeBookmark=<html>Type Définir la touche (ou combinaison de touche) pour 'Ajouter'.<br>Alt+touche définie 'Effacer'.</html> +BookmarksManager.KeyStrokeBookmark=<html>Taper la touche (ou combinaison de touches) pour définir un racourci clavier [Créer].<br>Alt+touche maintenue appuyée [Effacer].</html> BookmarksManager.KeyStrokeAlert1=Créer un raccourci pour sélectionner un favori. BookmarksManager.KeyStrokeAlert2=Maintenir Alt pour effacer une favori. BookmarksManager.KeyStrokeAlert3=Modifier le raccourci. @@ -71,29 +71,29 @@ BookmarksManager.Remove=Supprimer BookmarksManager.Remove.Tip=Supprimer le favori sélectionné BookmarksManager.SearchingDuplicates=Recherche des doublons... BookmarksManager.Title=Favoris -BookmarksManager.CommentsTooltip=Commentaires sur les favoris +BookmarksManager.CommentsTooltip=Commentaires du favori BookmarksManager.Update=Mise à jour BookmarksManager.UpdateTooltip=Mettre à jour les commentaires -BookmarksManager.AlreadyExists=Nom des favoris existants! -BookmarksTreeModel.NoBookmarks=[Pas de favori] +BookmarksManager.AlreadyExists=Nom du favori existe déjà \! +BookmarksTreeModel.NoBookmarks=[Aucun favori] BookmarksTreeModel.RootName=Favoris CategoryTreeModel.RootName=Catégories -ColumnsManager.Advanced=Avancer -ColumnsManager.All=Tout +ColumnsManager.Advanced=Avancées +ColumnsManager.All=Toutes ColumnsManager.Audio=Audio ColumnsManager.Basic=Basic ColumnsManager.Common=Commun -ColumnsManager.Communication=Communications -ColumnsManager.HashDB=Hash de la base de données +ColumnsManager.Communication=Communication +ColumnsManager.HashDB=Base de données des Hashes ColumnsManager.HTML=HTML ColumnsManager.Image=Image ColumnsManager.Language=Langue -ColumnsManager.NamedEntity=Nom des individus +ColumnsManager.NamedEntity=Nom des entités ColumnsManager.Office=Bureau ColumnsManager.Other=Autres ColumnsManager.PDF=PDF ColumnsManager.Regex=Regex -ColumnsManager.ShowCols=Afficher les Colonnes: +ColumnsManager.ShowCols=Afficher les Colonnes : ColumnsManager.Title=Colonnes visibles ColumnsManager.Video=Vidéo ColumnsManager.PeerToPeer=PeerToPeer @@ -101,10 +101,10 @@ ColumnsManager.UFED=UFED ColumnsManager.AutoManageCols=Gérer les colonnes automatiquement (Plus lent) ColumnsManager.LoadingCols=Chargement des colonnes utilisées... ColumnsManager.Filter=[Type de filtre] -ColumnsManager.WindowsEvt=Fenètre d'évènements -CopyProperties.Copying=Copier +ColumnsManager.WindowsEvt=Évènements Windows +CopyProperties.Copying=Copier CopyProperties.CSVDateFormat=dd/MM/yyyy HH:mm:ss z -CopyProperties.CSVDelimiter=, +CopyProperties.CSVDelimiter=; CopyProperties.from=\ de DuplicatesTableModel.Duplicates=\ Doublons ExportFiles.Copying=Copier @@ -114,36 +114,36 @@ ExportFilesToZip.from=\ de ExportFileTree.Copied=Copié ExportFileTree.ExportError=Erreur d'exportation de fichiers. Vérifier les droits et l'espace disponible.\n ExportFileTree.from=\ de -ExportIndexedTerms.Exported=Exporté +ExportIndexedTerms.Exported=Exportés ExportIndexedTerms.ofWords=\ des mots. -ExportToZIP.DefaultName=Fichiers Exportés.zip -ExportToZIP.DefaultPath=/home/caine/Dossiers d'exportation -ExportToZIP.FileAlreadyExistsMessageText=Le nom du fichier existe déjà. Voulez-vous le remplacer? +ExportToZIP.DefaultName=FichiersExportés.zip +ExportToZIP.DefaultPath=/home/caine/DADOS_EXPORTADOS +ExportToZIP.FileAlreadyExistsMessageText=Le nom du fichier existe déjà. Voulez-vous le remplacer ? ExportToZIP.FileAlreadyExistsMessageTitle=Le fichier existe déjà FileProcessor.OpeningEvidence=Ouvrir le fichier d'analyse... FilterManager.Del.Tip=Supprimer le filtre sélectionné FilterManager.Delete=Supprimer -FilterManager.Expresion=Expression: +FilterManager.Expresion=Expression : FilterManager.Expression.Tip=Règles du filtre FilterManager.Filters=Filtres: FilterManager.New=Nouveau FilterManager.New.Tip=Nouveau filtre -FilterManager.NewName=Nom du filtre -FilterManager.Save=Enregistrement +FilterManager.NewName=Nom du nouveau filtre +FilterManager.Save=Enregistrer FilterManager.Save.Tip=Enregistrer les modifications FilterManager.Title=Filtres Gallery.DecreaseThumbsSize=Reduire la taille des vignettes Gallery.IncreaseThumbsSize=Augmenter la taille des vignettes -Gallery.GalleryBlurFilter=Ativer/désactiver: Floutage de la galerie (utiliser Ctrl+Q pour tout sélectionner) -Gallery.GalleryGrayFilter=Ativer/désactiver: Griser la gallerie (utiliser Ctrl+W pour tout sélectionner) -Gallery.ToggleVideoFrames=Ativer/désactiver: la configuration des vignettes vidéo (Complète / Reduite) -GraphAnalysis.GraphvizError=Test d'erreur de graphviz tool {0}. Est-il installé? +Gallery.GalleryBlurFilter=Ativer/désactiver : Floutage de la galerie (utiliser Ctrl+Q pour tout sélectionner) +Gallery.GalleryGrayFilter=Ativer/désactiver : Griser la gallerie (utiliser Ctrl+W pour tout sélectionner) +Gallery.ToggleVideoFrames=Ativer/désactiver : la configuration des vignettes vidéo (Complète / Reduite) +GraphAnalysis.GraphvizError=Test d'erreur de graphviz tool {0}. Est-il installé ? GraphAnalysis.Expand=Développer GraphAnalysis.ExpandConfiguration=Développer (Filtre) GraphAnalysis.Expand.Links=Liens GraphAnalysis.Expand.Entities=Entités -GraphAnalysis.Expand.MaxNodes=Afficher les liens entre les individus jusqu'à -GraphAnalysis.FindConnectios=Communications entre les individus +GraphAnalysis.Expand.MaxNodes=Développer les entités les plus liées jusqu'à +GraphAnalysis.FindConnectios=Trouver des connexions GraphAnalysis.FindPaths=Trouver des chemins GraphAnalysis.Remove=Supprimer GraphAnalysis.ShowEvidence=Afficher les résultats @@ -153,16 +153,16 @@ GraphAnalysis.Done=Terminé. GraphAnalysis.Preparing=En cours de préparation... GraphAnalysis.Ready=Prêt. GraphAnalysis.ExportingImage=Création de l'image... -GraphAnalysis.Error=Une erreur est apparue lors de l'opération. +GraphAnalysis.Error=Une erreur s'est produite lors de l'opération. GraphAnalysis.UndoAction=Annuler l'opération en cours GraphAnalysis.RedoAction=Recommencer GraphAnalysis.SaveImage=Enregistrer l'Image -GraphAnalysis.SearchEntities=Recherche des liens entre individus +GraphAnalysis.SearchEntities=Recherche les liens entre entités GraphAnalysis.Search=Rechercher GraphAnalysis.Add=Ajouter GraphAnalysis.Cancel=Arrêter GraphAnalysis.Export=Exporter -GraphAnalysis.Id +GraphAnalysis.Id=Id. GraphAnalysis.Type=Type GraphAnalysis.Quantity=Quantité GraphAnalysis.Property=Propriété @@ -172,54 +172,54 @@ GraphAnalysis.ExportLinks=Exporter les liens GraphAnalysis.Origin=Origine GraphAnalysis.Destiny=Destination GraphAnalysis.Distance=Distance -GraphAnalysis.FileExistsConfirmation=Le fichier {0} existe déjà. Continuer? +GraphAnalysis.FileExistsConfirmation=Le fichier {0} existe déjà. Continuer ? GraphAnalysis.FileSaved=Le fichiers {0} a été enregistré avec succès. -GraphAnalysis.Results=Résultats {0} de la recherche dans {1}ms. -GraphAnalysis.AdvancedSearch=Recherches avancées +GraphAnalysis.Results=Trouvés {0} résultats en {1}ms. +GraphAnalysis.AdvancedSearch=Recherche avancée GraphAnalysis.AddToAnalysis=Ajouter à l'analyse GraphAnalysis.Execute=Executer GraphAnalysis.SearchLinks=Liens recherchés GraphAnalysis.Links=Liens -GraphAnalysis.Datasources=Bases de données +GraphAnalysis.Datasources=Source des données GraphAnalysis.LinksSearching=Liens recherchés... Trouvés {0}. -GraphAnalysis.CreateMultiGraph=Graphique non créé pour ce cas multiple. Souhaitez-vous le créer maintenant? -GraphAnalysis.MultiGraphError=Impossible de créer le graphique du cas multiple, vérifier les logs! -GraphAnalysis.MultiGraphOk=Graphique du cas multiple créé. -GraphAnalysis.InitialGraphMsg=Graphique prêt. Il présente uniquement les individues ayant le plus de contacts. -KeywordListImporter.BookmarkPrefix=Résultats de recherche pour: -KeywordListImporter.Msg.1=Importer +GraphAnalysis.CreateMultiGraph=Graphique non créé pour ce cas multiple. Souhaitez-vous le créer maintenant ? +GraphAnalysis.MultiGraphError=Impossible de créer le graphique du cas multiple, vérifier les logs ! +GraphAnalysis.MultiGraphOk=Graphique de cas multiple créé. +GraphAnalysis.InitialGraphMsg=Graphique prêt. Il présente uniquement les entités ayant le plus de contacts. +KeywordListImporter.BookmarkPrefix=Résultats de recherche pour : +KeywordListImporter.Msg.1=Importé(s) KeywordListImporter.Msg.2= mots-clés avec des résultats sur\ -KeywordListImporter.SyntaxError=Erreur de syntaxe dnas les expressions suivantes: -HashDialog.MD5Title=Valeur MD5 Hash des ZIP exportés +KeywordListImporter.SyntaxError=Erreur de syntaxe dans les expressions suivantes : +HashDialog.MD5Title=Valeur Hash MD5 du ZIP exporté ImageSimilarity.ExternalError=Impossible d'ouvrir le fichier image sélectionné. -ImageSimilarity.ExternalTitle=Image similaire -ImageSimilarity.FilterTipTitle=Filtre des Images Similaires +ImageSimilarity.ExternalTitle=Image exerne similaire +ImageSimilarity.FilterTipTitle=Filtre des images similaires ImageSimilarity.FilterTipExternal=Image de référence ImageSimilarity.FilterTipInternal=Image de référence ImageSimilarity.Image=Image -ImageSimilarity.RemoveFilter=Filtre de suppression d'image identique +ImageSimilarity.RemoveFilter=Suppression du filtre d'images identiques FaceSimilarity.ExternalTitle=Visage similaire FaceSimilarity.FilterTipTitle=Filtre de visage similaire -FaceSimilarity.FilterTipExternal=Visage de référence +FaceSimilarity.FilterTipExternal=Visage de référence externe FaceSimilarity.FilterTipInternal=Visage de référence -FaceSimilarity.RemoveFilter=Filtre de suppression de visage similaire +FaceSimilarity.RemoveFilter=Suppression du filtre de visage similaire FaceSimilarity.Image=Visage FaceSimilarity.MinScore=Définir la précision de ressemblance (1-100) -FaceSimilarity.LoadingFace=Cahrgement des visages... -FaceSimilarity.ExternalFaceNotFound=Pas de visage trouvé dans le fichier! -MenuClass.AddToGraph=Ajouter à link analysis +FaceSimilarity.LoadingFace=Chargement du visage... +FaceSimilarity.ExternalFaceNotFound=Pas de visage trouvé dans le fichier externe ! +MenuClass.AddToGraph=Ajouter à l'analyse de liens MenuClass.ChangeGalleryColCount=Modifier le nombre de colonnes de la galerie MenuClass.ChangeLayout=Changer la disposition Vertical/Horizontal MenuClass.CheckHighlighted=Vérifier les éléments en surbrillance MenuClass.CheckRecursivelyHighlighted=Vérifier les sous-éléments et éléments en surbrillance MenuClass.ClearSearches=Supprimer l'historique des recherches MenuClass.ColorTheme=Couleur du Thème -MenuClass.CopyViewerImage=Visionneuse de capture d'écran -MenuClass.ExportChecked=Exporter les éléments vérifiés -MenuClass.ExportCheckedToZip=Exporter les résultats au format Zip +MenuClass.CopyViewerImage=Faire une capture d'écran de la visionneuse +MenuClass.ExportChecked=Exporter les éléments cochés +MenuClass.ExportCheckedToZip=Exporter les résultats cochés au format Zip MenuClass.ExportHighlighted=Exporter les éléments surlignés MenuClass.ExportIndexedWords=Exporter la liste des expressions indexées -MenuClass.ExportItens=Exporter des éléments... +MenuClass.ExportItens=Exporter les éléments... MenuClass.ExportProps.Checked=Exporter les propriétés des éléments cochés MenuClass.ExportProps.Highlighed=Exporter les propriétés des éléments surlignés MenuClass.ExportTree=Exporter l'arborescence des fichiers @@ -227,144 +227,144 @@ MenuClass.ExportTree.Checked=Exporter l'arborescence des fichiers (éléments s MenuClass.ExportTreeToZip.Checked=Exporter l'arborescence des fichiers au format ZIP (éléments sélectionnés) MenuClass.FindSimilarDocs=Recherche des documents similaires MenuClass.FindSimilarImages=Recherche des images similaires -MenuClass.FindSimilarImages.Current=Eléments en surbrillance +MenuClass.FindSimilarImages.Current=Elément en surbrillance MenuClass.FindSimilarImages.External=Image externe... MenuClass.FindSimilarFaces=Recherche des images similaires -MenuClass.FindSimilarFaces.Current=Eléments en surbrillance +MenuClass.FindSimilarFaces.Current=Elément en surbrillance MenuClass.FindSimilarFaces.External=Visage externe... MenuClass.GenerateReport=Créer un rapport indexé MenuClass.GoToParent=Retour à la racine de l'arborescence de fichier MenuClass.GoToChat=Retour à la racine du chat -MenuClass.ImportKeywords=Importer une liste de mots clés +MenuClass.ImportKeywords=Importer une liste de mots-clés MenuClass.LayoutAppearance=Disposition / Apparence MenuClass.LoadBookmarks=Chargement des favoris MenuClass.ManageBookmarks=Gestion des favoris MenuClass.ManageColumns=Gestion des colonnes MenuClass.ManageVisibleCols=Gestion des colonnes visibles -MenuClass.PinFirstCols=Epingler la première colonne... +MenuClass.PinFirstCols=Epingler les premières colonnes... MenuClass.LoadLastColLayout=Charger la dernière mise en page enregistrée MenuClass.SaveColLayout=Sauvegarder la mise en forme des colonnes MenuClass.ResetColLayout=Réinitialiser la mise en forme des colonnes MenuClass.ManageFilters=Gestion des Filtres MenuClass.OpenViewFile = Ouvrir un aperçu/rapport externe -MenuClass.LoadPanelsLayout=Cahrger la dernière mise en page sauvegardée +MenuClass.LoadPanelsLayout=Charger la dernière mise en page sauvegardée MenuClass.SavePanelsLayout=Sauvegarder la mise en forme MenuClass.ResetLayout=Restaurer la mise en forme par défaut MenuClass.SaveBookmarks=Sauvegarder les favoris -MenuClass.UiZoom=Réglage du Zoom +MenuClass.UiZoom=Réglage du zoom MenuClass.IconSize=Taille des icones MenuClass.UnCheckHighlighted=Décocher les éléments en surbrillance MenuClass.UnCheckRecursivelyHighlighted=Décocher les éléments et sous-éléments en surbrillance MenuListener.ChatNotFound=Origine du chat non trouvé -MenuListener.Cols=Colonnes: -MenuListener.ExportTree.Warn=Surbrillance 01 (one) tree node as export reference\! +MenuListener.Cols=Colonnes : +MenuListener.ExportTree.Warn=Selectionner 01 (un) nœud de l'arborescence comme référence d'export \! MenuListener.Gallery=Galerie -MenuListener.PinFirstCols=Epingler la première colonne -MenuListener.SimilarityLabel=Taux de similitude (0 a 100) -MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark[TBT] -MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark[TBT] -MenuListener.TableAndOthers=Tableaux and autres -MenuListener.UiScaleDialog=Définir l'échelle de l'interface.\nUtilisez une valeur à virgule flottante (par exemple 1,5) ou « {} » pour ajuster automatiquement le zoom..\nVous devez redémarrer l'application pour que cette modification prenne effet. -MetadataPanel.AlphaNumeric=AlphaNumérique +MenuListener.PinFirstCols=Epingler les premières colonnes +MenuListener.SimilarityLabel=Taux de similitude (0 à 100) +MenuListener.CheckAddKeywordsAsSingleBookmark=Importer tous les resultat des mots-clés dans un favori unique +MenuListener.CheckAddKeywordsAsMultipleBookmarks=Importer les résutlatas de chaque mot-clé dans un favori séparé +MenuListener.TableAndOthers=Tableau et autres +MenuListener.UiScaleDialog=Définir l'échelle de l'interface.\nUtilisez une valeur à virgule flottante (par exemple 1.5) ou '{}' pour ajuster automatiquement le zoom.\nVous devez redémarrer l'application pour que cette modification prenne effet. +MetadataPanel.AlphaNumeric=Alphanumérique MetadataPanel.Clear=Supprimer le filtre de métadonnées -MetadataPanel.Group=Groupe: +MetadataPanel.Group=Groupe : MetadataPanel.Hits=Résultats MetadataPanel.Linear=Linéaire MetadataPanel.Log=Logarithmique MetadataPanel.NoRanges=Aucune plage -MetadataPanel.Property=Propriété: +MetadataPanel.Property=Propriété : MetadataPanel.RangeSeparator=de -MetadataPanel.Scale=Echelle: -MetadataPanel.Sort=Trier: +MetadataPanel.Scale=Echelle : +MetadataPanel.Sort=Trier : MetadataPanel.Update=Mise à jour -MetadataPanel.Filter=Filtre: +MetadataPanel.Filter=Filtre : MetadataPanel.FilterProps=Propriétés MetadataPanel.FilterValues=Valeurs -MetadataPanel.CopyClipboard=Copier dnas le presse papier +MetadataPanel.CopyClipboard=Copier dans le presse papier MetadataPanel.UpdateWarn=[Cliquer pour mettre à jour] -NoJavaFX.Error=Cette application à besoins de JavaFX pour être installée! +NoJavaFX.Error=Cette application a besoin que JavaFX soit installé ! ProcessingNotFinished.title=Le processus n'est pas terminé -ProcessingNotFinished.message=Le traitement ne c'est pas terminé correctement. De nombreux éléments du dossier peuvent être manquants, y compris ceux alloués.\nEssayez de le reprendre avec l'option --continuer. -ProcessingNotFinished.cases=\ Les cas suivants sont concernés :\n -ProcessingNotFinished.evidence=Affected evidence:[TBT] +ProcessingNotFinished.message=Le traitement ne s'est pas terminé correctement. De nombreux éléments du dossier peuvent être manquants, y compris ceux alloués.\nEssayez de le reprendre avec l'option --continuer. +ProcessingNotFinished.cases=\ Les cas suivants sont concernés : +ProcessingNotFinished.evidence=Preuve affectée : ReferencesTab.Title=Référencement -ReferencedByTab.Title=Référencé avec +ReferencedByTab.Title=Référencé par ResultTableModel.bookmark=favori -ResultTableModel.score=résultats -ReportDialog.AddToReport=Ajouter un rapport existant -ReportDialog.AppendWarning=Le rapport HTML existant n'est pas encore mis à jour, le cas est uniquement indexé ! -ReportDialog.CaseInfo=Compléter les informations sur le cas (numéro du cas, nom de l'analyste, numéro du rapport...) -ReportDialog.ChooseLabel=Sélectionner les favoris à insérer dans le rapport: +ResultTableModel.score=score +ParentTableModel.ParentCount=Dossier source +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z +ResultTableModel.Error=ERREUR +ResultTableModel.FATDateFormat=dd/MM/yyyy +ResultTableRowSorter.Sorting=Tri... +ReportDialog.AddToReport=Ajouter à un rapport existant +ReportDialog.AppendWarning=Le rapport HTML existant n'est pas encore mis à jour, le cas est seulement indexé ! +ReportDialog.CaseInfo=Compléter les informations du cas (numéro du cas, nom de l'analyste, numéro du rapport...) +ReportDialog.ChooseLabel=Sélectionner les favoris à insérer dans le rapport : ReportDialog.Create=Création ReportDialog.ErrorTitle=Erreur -ReportDialog.Evidences=Description de la preuve +ReportDialog.Evidences=Description des preuves ReportDialog.Examiner=Analyste ReportDialog.FillInfo=Informations sur le cas ReportDialog.Investigation=Numéro du cas -ReportDialog.KeywordsFile=Fichier de mots clés (optionnel): -ReportDialog.LoadButton=chargement +ReportDialog.KeywordsFile=Fichier de mots-clés (optionnel): +ReportDialog.LoadButton=Chargement ReportDialog.LoadInfo=Charger les informations du cas à partir du fichier .json ou .asap : ReportDialog.NoAttachments=Ne pas exporter automatiquement les pièces jointes des e-mails ReportDialog.noLinkedItems=Ne pas exporter automatiquement les pièces jointes du chat -ReportDialog.Output=Dossier d'enregistrement: -ReportDialog.OutputRequired=Dossier de sortie requis\! +ReportDialog.Output=Dossier d'enregistrement : +ReportDialog.OutputRequired=Dossier d'enregistrement requis \! ReportDialog.Record=Numéro de dossier ReportDialog.RecordDate=Date du dossier ReportDialog.ReportDate=Date du rapport -ReportDialog.ReportError=Erreur de création du rapport, vérifier le log d'erreurs\! -ReportDialog.ReportFinished=Rapport creé\! +ReportDialog.ReportError=Erreur de création du rapport, vérifier le log d'erreurs \! +ReportDialog.ReportFinished=Rapport créé \! ReportDialog.ReportNum=Numéro de rapport ReportDialog.ReportTitle=Titre du rapport ReportDialog.Request=Formulaire de demande ReportDialog.RequestDate=Date de la demande ReportDialog.Requester=Requérant -ReportDialog.TableHeader1=Favoris +ReportDialog.TableHeader1=Favori ReportDialog.TableHeader2=ThumbsOnly ReportDialog.Title=Créer un rapport -ParentTableModel.ParentCount=Dossier source -ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z -ResultTableModel.Error=ERREUR -ResultTableModel.FATDateFormat=dd/MM/yyyy -ResultTableRowSorter.Sorting=Tri... RowComparator.SortCanceled=Tri annulé. SearchStateFilter.BookmarksFile=Fichier des favoris SubitemTableModel.Subitens=\ Pièces jointes/sous éléments -TextParserListener.Found=Trouvé -TextParserListener.hits=\ requêtes +TextParserListener.Found=Trouvés +TextParserListener.hits=\ résultats TreeViewModel.RootName=Analyse -UISearcher.Canceled=Arrêter la recherche\! -UISearcher.Error.Msg=Erreur de syntaxe dans la requête: +UISearcher.Canceled=Arrêter la recherche \! +UISearcher.Error.Msg=Erreur de syntaxe dans la requête : UISearcher.Error.Title=Erreur UnsupportedIcon.Unavailable=Vignette non supportée ViewerController.OfficeViewerUnSupported=La visionneuse Office n'est plus prise en charge dans Java 32 bits ! Veuillez installer un Java 64 bits. ViewerController.FixViewer=Correction de la visionneuse -ViewerController.NextHit=Autres résultats -ViewerController.PrevHit=Résultats précédents +ViewerController.NextHit=Résultat suivant +ViewerController.PrevHit=Résultat précédent ViewerController.ShowToolBar=Afficher/Masquer la barre d'outils -HexSearcherImpl.hits=requêtes -HexSearcherImpl.hit=requête +HexSearcherImpl.hits=résultats +HexSearcherImpl.hit=résultat HexSearcherImpl.of=de HexSearcherImpl.timeLeft=Temps restant HexSearcherImpl.noHits=Aucun résultat trouvé Theme.Dark=Mode sombre Theme.Light=Mode clair (default) -TimeLineGraph.highlightEventItensOnPeriod=Mettre en surbrillance les éléments d'événement dans la plage -TimeLineGraph.highlightItensOnPeriod=Mettre en surbrillance les éléments dans la plage -TimeLineGraph.checkEventItensOnPeriod=Véfifier les évènements des éléments de la plage -TimeLineGraph.checkItensOnPeriod=Vérifier les éléments de la plage +TimeLineGraph.highlightEventItensOnPeriod=Mettre en surbrillance les éléments d'évènement dans la période +TimeLineGraph.highlightItensOnPeriod=Mettre en surbrillance les éléments dans la période +TimeLineGraph.checkEventItensOnPeriod=Cocher les éléments de l'évènement dans la période +TimeLineGraph.checkItensOnPeriod=Vérifier les éléments dans la plage TimeLineGraph.filterBefore=Filtrer avant TimeLineGraph.filterAfter=Filtrer après TimeLineGraph.selectBefore=Mettre en surbrillance avant TimeLineGraph.selectAfter=Mettre en surbrillance après -TimeLineGraph.filterAllDefinedIntervals=Filtrer les plages définies -TimeLineGraph.selectItensOnThisInterval=Mettre en surbrillance les éléments de la plage sélectionnée -TimeLineGraph.deleteInterval=Supprimer la plage -TimeLineGraph.continueIntervalSelection=Continuer à sélectionner des plages... +TimeLineGraph.filterAllDefinedIntervals=Filtrer les intervalles définies +TimeLineGraph.selectItensOnThisInterval=Mettre en surbrillance les éléments de l'intervalle sélectionné +TimeLineGraph.deleteInterval=Supprimer l'intervalle +TimeLineGraph.continueIntervalSelection=Continuer à sélectionner des intervalles... TimeLineGraph.hideSeriesOnChart=Masquer sur le graphique -TimeLineGraph.filterEventFromResultSet=Supprimer des résultats +TimeLineGraph.filterEventFromResultSet=Supprimer du jeu de résultats TimeLineGraph.unfilterEventFromResultSet=Réinclure dans le jeu de résultats TimeLineGraph.Year=Année -TimeLineGraph.Quarter=Quart +TimeLineGraph.Quarter=Trimestre TimeLineGraph.Month=Mois TimeLineGraph.Week=Semaine TimeLineGraph.Day=Jour @@ -376,8 +376,8 @@ TimeLineGraph.donotBreak=Ne pas diviser le graphique TimeLineGraph.breakByBookmark=Diviser le graphique par favoris TimeLineGraph.breakByMetadata=Diviser le graphique par métadonnées TimeLineGraph.breakByCategory=Diviser le graphique par categories -TimeLineGraph.checkingItemsProgressLabel=Vérification des éléments du diagramme temporel... -TimeLineGraph.highlightingItemsProgressLabel=Mise en surbrillance des éléments du diagramme temporel... +TimeLineGraph.checkingItemsProgressLabel=Selection des éléments du diagramme temporel... +TimeLineGraph.highlightingItemsProgressLabel=Mise en surbrillance les éléments du diagramme temporel... TimeLineGraph.PeriodGranularity=Échelle de temps TimeLineGraph.Timezone=Fuseau horaire TimeLineGraph.applyDefinedFilters=Appliquer les filtres définis @@ -385,60 +385,60 @@ TimeLineGraph.clearDefinedFilters=Effacer les filtres définis TimeLineGraph.openIntervalsDialogMenu=Ouvrir la boîte de dialogue de définition de plage horaire... TimeLineGraph.visibleRangeToGreat=La plage visible est trop grande pour l'échelle actuelle %s.\n Souhaitez-vous continuer et zoomer en centrant sur la date du milieu %s ? TimeLineGraph.visibleZoominForGranularity=Zoom avant maximum atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer à zoomer ? -TimeLineGraph.visibleZoomoutForGranularity=Le zoom arrière maximum a été atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer le zoom arrière ? +TimeLineGraph.visibleZoomoutForGranularity=Le zoom arrière maximum atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer le zoom arrière ? TimeLineGraph.syncTableSelectionInChartView=Afficher la table en surbrillance dans le diagramme temporel TimeLineGraph.resetZoom=Réinitialiser le zoom -TimeLineGraph.selectAllEventTypes=Select all event types[TBT] -TimeLineGraph.unselectAllEventTypes=Unselect all event types[TBT] -TimeLineGraph.checkEventItems=Check corresponding event type items[TBT] -TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items[TBT] -IntervalDefinitionDialog.Title=Plages définies dnas la ligne de temps +TimeLineGraph.selectAllEventTypes=Sélectionner tous les évènements +TimeLineGraph.unselectAllEventTypes=Désélectionner tous les évènements +TimeLineGraph.checkEventItems=Cocher les éléments des évènements sélectionnés +TimeLineGraph.uncheckEventItems=Décocher les éléments des évènements sélectionnés +IntervalDefinitionDialog.Title=Plages définies dans la ligne de temps IntervalDefinitionDialog.dateFormat=dd/MM/yyyy IntervalDefinitionDialog.hourFormat=HH:mm:ss IntervalDefinitionDialog.Exit=Sortie -App.appliedFilters=Filters[TBT] -iped.app.graph.FilterSelectedEdges.filtererName=Graph Edge Filter[TBT] -iped.app.timelinegraph.IpedChartsPanel.filtererName=Time Chart Filter[TBT] -iped.app.ui.App.DuplicatesFilterer.filtererName=Duplicates Filter[TBT] -iped.app.ui.App.SimilarDocumentFilterer.filtererName=Similar Documents Filter[TBT] -iped.app.ui.App.SimilarFacesSearchFilterer.filtererName=Similar Faces Filter[TBT] -iped.app.ui.App.SimilarImagesQueryFilterer.filtererName=Similar Images Filter[TBT] -iped.app.ui.App.SearchFilterer.filtererName=Keyword Search Filter[TBT] -iped.app.ui.BookmarksTreeListener.filtererName=Bookmarks Filter[TBT] -iped.app.ui.CategoryTreeListener.filtererName=Category Filter[TBT] -iped.app.ui.ComboFilterer.filtererName=Predefined Filter[TBT] -iped.app.ui.ComboFilterer.tooltip=Select a Predefined Filter[TBT] -iped.app.ui.MetadataPanel.filtererName=Metadata Filter[TBT] -iped.app.ui.TableHeaderFilterManager.filtererName=Table Header Filter[TBT] -iped.app.ui.TimelineListener.filtererName=Timeline Filter[TBT] -iped.app.ui.TreeListener.filtererName=Evidence Tree Filter[TBT] -iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Combined Filter[TBT] -iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Apply Combined Filter[TBT] -FilterValue.Duplicates=Duplicate Filter Result[TBT] -FilterValue.SimilarDocument=Similar Documents[TBT] -FilterValue.SimilarFace=Similar Faces:[TBT] -FilterValue.SimilarImage=Similar Images:[TBT] -FilterValue.TimelineView=Timeline View Result[TBT] -Operand.AND=AND[TBT] -Operand.OR=OR[TBT] -OperandMenu.invertFilter=Invert filter[TBT] -OperandMenu.changeOperand=Change to[TBT] -OperandMenu.addAnd=Add AND node[TBT] -OperandMenu.addOr=Add OR node[TBT] -OperandMenu.removeNode=Remove node[TBT] -FiltererMenu.clearFilters=Clear filters[TBT] -FiltererMenu.goToItem=Go to referenced item[TBT] -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.[TBT] -FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.[TBT] -FieldValuePopupMenu.NonEmpty=Non empty[TBT] -FieldValuePopupMenu.Empty=Empty[TBT] -FieldValuePopupMenu.Contains=Contains ...[TBT] -FieldValuePopupMenu.NotContains=Not Contains ...[TBT] -FieldValuePopupMenu.After=After ...[TBT] -FieldValuePopupMenu.Before=Before ...[TBT] -FieldValuePopupMenu.GreaterThan=Filter greater than...[TBT] -FieldValuePopupMenu.LessThan=Filter less than...[TBT] -FieldValuePopupMenu.Equals=Equals to...[TBT] -FieldValuePopupMenu.StartsWith=Starts with...[TBT] -FieldValuePopupMenu.Clear=Clear[TBT] -FieldValuePopupMenu.Filter=Filter[TBT] \ No newline at end of file +App.appliedFilters=Filtres +iped.app.graph.FilterSelectedEdges.filtererName=Filtre des Arêtes du Graphe +iped.app.timelinegraph.IpedChartsPanel.filtererName=Filte du Graphe de la Timeline +iped.app.ui.App.DuplicatesFilterer.filtererName=Filtre des Doublons +iped.app.ui.App.SimilarDocumentFilterer.filtererName=Filtre des Documents Similaires +iped.app.ui.App.SimilarFacesSearchFilterer.filtererName=Filtre des Visages Similaires +iped.app.ui.App.SimilarImagesQueryFilterer.filtererName=Filtre des Images Similaires +iped.app.ui.App.SearchFilterer.filtererName=Filtre Mots-Clés +iped.app.ui.BookmarksTreeListener.filtererName=Filtre Favoris +iped.app.ui.CategoryTreeListener.filtererName=Filtre de Catégories +iped.app.ui.ComboFilterer.filtererName=Filtre Prédéfini +iped.app.ui.ComboFilterer.tooltip=Selectionner un filtre Prédéfini +iped.app.ui.MetadataPanel.filtererName=Filtrer Metadata +iped.app.ui.TableHeaderFilterManager.filtererName=Filtre En-tête du Tableau +iped.app.ui.TimelineListener.filtererName=Filtre Timeline +iped.app.ui.TreeListener.filtererName=Filtre de l'arborescence des preuves +iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Filtre Combiné +iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Appliquer le Filtre Combiné +FilterValue.Duplicates=Résultat du Filtre des Doublons +FilterValue.SimilarDocument=Filtre des Doublons +FilterValue.SimilarFace=Visages Similaires +FilterValue.SimilarImage=Images Similaires +FilterValue.TimelineView=Résultat de la Vue en Timeline +Operand.AND=ET +Operand.OR=OU +OperandMenu.invertFilter=Inverser le filtre +OperandMenu.changeOperand=Changer pour +OperandMenu.addAnd=Ajouter le noeud ET +OperandMenu.addOr=Ajouter le noeud OU +OperandMenu.removeNode=Supprimer le noeud +FiltererMenu.clearFilters=Effacer les filtre +FiltererMenu.goToItem=Aller à l'élément référencé +FiltererMenu.ItemNotInRS=L'élément référencé n''existe pas dans les résultats actuels. +FiltersPanel.addQueryFilterError=Cela n''a pas été possible d'ajouter le filtre à cause d'une erreur interne. +FieldValuePopupMenu.NonEmpty=Pas vide +FieldValuePopupMenu.Empty=Vide +FieldValuePopupMenu.Contains=Contient ... +FieldValuePopupMenu.NotContains=Ne contient pas ... +FieldValuePopupMenu.After=Après ... +FieldValuePopupMenu.Before=Avant ... +FieldValuePopupMenu.GreaterThan=Plus que... +FieldValuePopupMenu.LessThan=Moins que... +FieldValuePopupMenu.Equals=Égal à... +FieldValuePopupMenu.StartsWith=Commençant par... +FieldValuePopupMenu.Clear=Efacer +FieldValuePopupMenu.Filter=Filtre From ec2368fee6c2a64360999d8b83e113b35f8d3da4 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 03:48:25 +0200 Subject: [PATCH 079/126] Update iped-desktop-messages_pt_BR.properties minor format changes --- .../localization/iped-desktop-messages_pt_BR.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties index 28561328a3..b12f9d8957 100644 --- a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties @@ -277,21 +277,21 @@ MetadataPanel.RangeSeparator=a MetadataPanel.Scale=Escala: MetadataPanel.Sort=Ordenação: MetadataPanel.Update=Atualizar -MetadataPanel.UpdateWarn=[Clique em Atualizar] MetadataPanel.Filter=Filtrar: MetadataPanel.FilterProps=Propriedades MetadataPanel.FilterValues=Valores MetadataPanel.CopyClipboard=Copiar para a área transf. +MetadataPanel.UpdateWarn=[Clique em Atualizar] NoJavaFX.Error=Esta aplicação precisa que o JavaFX esteja instalado! ProcessingNotFinished.title=Processamento não finalizado ProcessingNotFinished.message=Processamento não finalizou com sucesso. Muitos itens podem estar ausentes, incluindo alocados.\nTente retomá-lo com a opção --continue. ProcessingNotFinished.cases=\ Os seguintes casos são afetados: ProcessingNotFinished.evidence=Evidência afetada: +ReferencesTab.Title=Referências +ReferencedByTab.Title=Referenciado por ResultTableModel.bookmark=marcador ResultTableModel.score=score ParentTableModel.ParentCount=Item Pai -ReferencesTab.Title=Referências -ReferencedByTab.Title=Referenciado por ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z ResultTableModel.Error=ERRO ResultTableModel.FATDateFormat=dd/MM/yyyy @@ -441,4 +441,4 @@ FieldValuePopupMenu.LessThan=Menores que.. FieldValuePopupMenu.Equals=Igual a... FieldValuePopupMenu.StartsWith=Iniciam com... FieldValuePopupMenu.Clear=Limpar -FieldValuePopupMenu.Filter=Filtrar \ No newline at end of file +FieldValuePopupMenu.Filter=Filtrar From 3572fe1910ac6fca341ce84ea19b15f89e3d9a8e Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 11:02:28 +0200 Subject: [PATCH 080/126] Update iped-filters_fr_FR.properties review and change in French translation --- .../iped-filters_fr_FR.properties | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/iped-app/resources/localization/iped-filters_fr_FR.properties b/iped-app/resources/localization/iped-filters_fr_FR.properties index 86dcf2c85c..531b26ab1d 100644 --- a/iped-app/resources/localization/iped-filters_fr_FR.properties +++ b/iped-app/resources/localization/iped-filters_fr_FR.properties @@ -1,18 +1,18 @@ -Filter\ Known\ Hashes=Filtre\ connus\ Hashs +Filter\ Known\ Hashes=Filtre\ Hashs\ Connus Hash\ Alert=Alerte\ Hash Hash\ Alert\ (Child\ Porn)=Détection\ Hash\ (Pédopornographie) PhotoDNA\ Alert\ (Child\ Porn)=Détection\ PhotoDNA\ (Pédopornographie) -Encrypted\ Files=Fichiers\ Chiffés -Possibly\ encrypted\ (entropy)=Certainement\ chiffré\ (entropy) -Parsing\ Error=Erreur\ d'analyse -Read\ Error=Erreur\ de lecture -Timeout=Temps dépassé -Actual\ Files=Fichier\ actuel -Deleted\ Files=Fichiers\ supprimés -Carved\ Files=Fichiers\ Carvés -Geo-referenced\ Files=Fichiers\ géotagués -Container\ Subitems=Sous éléments\ du conteneur -Containers\ not\ Expanded=Conteneur\ non\ entendu -Explicit\ Images\ &\ Videos=Images\ &\ Vidéos\ Explicites +Encrypted\ Files=Fichiers\ Chiffrés +Possibly\ encrypted\ (entropy)=Probablement\ Chiffré\ (entropie) +Parsing\ Error=Erreur\ de\ Parsing +Read\ Error=Erreur\ de\ Lecture +Timeout=Temps\ dépassé +Actual\ Files=Fichiers\ Actifs +Deleted\ Files=Fichiers\ Supprimés +Carved\ Files=Fichiers\ Récupérés +Geo-referenced\ Files=Fichiers\ Géotagués +Container\ Subitems=Sous-éléments\ du\ Conteneur +Containers\ not\ Expanded=Conteneurs\ non\ Développés +Explicit\ Images\ &\ Videos=Images\ &\ Vidéos\ -\ Nudité\ Possible Images\ &\ Videos\ with\ Thumbs=Images\ &\ Vidéos\ avec\ Vignettes -Files\ with\ Thumbnails=Fichiers \ avec\ vignettes \ No newline at end of file +Files\ with\ Thumbnails=Fichiers \ avec\ Vignettes From ee60aae5c10a0228931fe685f6e1c1d1dfa8ec69 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 11:52:44 +0200 Subject: [PATCH 081/126] Update iped-geo-messages_fr_FR.properties review and minor changes --- .../localization/iped-geo-messages_fr_FR.properties | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties index 024ea940b6..62ed00722e 100644 --- a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties @@ -1,6 +1,6 @@ App.Map=Carte KMLResult.LoadingGPSData=Chargement des données GPS -KMLResult.NoGPSItem=Aucun éléments trouvé avec les données GPS! +KMLResult.NoGPSItem=Aucun élément trouvé avec les données GPS \! KMLResult.Results=Résultats KMLResult.Save=Enregistrement KMLResult.SearchResults=Recherche des résultats @@ -8,8 +8,8 @@ KMLResult.SearchResultsDescription=Résultats de recherche GPS. KMLResult.ShowInTree=Consulter dans l'arboresence. JMapOptionsPane.title=Sélectionner la source de la carte utilisée JMapOptionsPane.GoogleApiKeyLabel=Saisissez une clé API Google Maps valide -JMapOptionsPane.UseLeaflet=Utiliser la plateforme -JMapOptionsPane.UrlPatternLabel=Saisir l'URL source de la carte: +JMapOptionsPane.UseLeaflet=Utiliser Leaflet +JMapOptionsPane.UrlPatternLabel=Saisir l'URL source de la carte : JMapOptionsPane.AnotherURL=Autre URL JMapOptionsPane.UseGoogleMaps=Utiliser Google Maps toolbar.Radius=Rayon @@ -19,11 +19,11 @@ toolbar.Previous=Précédent toolbar.First=Premier toolbar.Last=Dernier toolbar.Area=Zone -toolbar.Selection=Sélectionner +toolbar.Selection=Sélection toolbar.Navigation=Navigation toolbar.Sorting=Tri toolbar.DisplayAll=Afficher tout toolbar.MappedItensCount=Eléments cartographiés toolbar.ChangeTileServer=Changer de serveur gpxXslt.dateTrailLabel=Sentier dans -gpxXslt.routeLabel=Itinéraire \ No newline at end of file +gpxXslt.routeLabel=Itinéraire From 96cc7d7f41f5572a3188bef56399e08733b76f7b Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 11:59:13 +0200 Subject: [PATCH 082/126] Update iped-utils-messages_fr_FR.properties review and minor changes --- .../localization/iped-utils-messages_fr_FR.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iped-app/resources/localization/iped-utils-messages_fr_FR.properties b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties index 61e044c366..f5676eee44 100644 --- a/iped-app/resources/localization/iped-utils-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-utils-messages_fr_FR.properties @@ -1,4 +1,4 @@ -IOUtil.ConfirmOpening=ètes-vous sur de vouloir ouvrir ou exécuter +IOUtil.ConfirmOpening=Êtes-vous sur de vouloir ouvrir ou exécuter IOUtil.ConfirmOpening.Unknown=inconnu -SelectImage.ImageNotFound=Preuve introuvable:\ -SelectImage.NewImgPath=Sélectionner un nouveau chemin pour \ No newline at end of file +SelectImage.ImageNotFound=Preuve introuvable :\ +SelectImage.NewImgPath=Sélectionner un nouveau chemin pour From a0697cd0eceac1e3b4ee8a05d72644655a62d3c4 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 19:27:10 +0200 Subject: [PATCH 083/126] Update iped-viewer-messages_fr_FR.properties Review and minor changes in French translation --- .../iped-viewer-messages_fr_FR.properties | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index 9c26d549fd..ebf7f343c5 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -1,6 +1,6 @@ ATextViewer.TabName=Texte MultiViewer.TabName=Prévisualisation -EmailViewer.AttachedEmail=Pièces jointes des Email.eml +EmailViewer.AttachedEmail=E-mail en pièce jointe.eml EmailViewer.Attachments=Pièces jointes EmailViewer.Bcc=Bcc EmailViewer.Cc=Cc @@ -10,45 +10,45 @@ EmailViewer.EmbeddedMessage=Message intégré EmailViewer.From=De EmailViewer.NotFound=(Non trouvé) EmailViewer.Subject=Sujet -EmailViewer.To=à -EmailViewer.UnNamed=[Inconnu] +EmailViewer.To=À +EmailViewer.UnNamed=[Anonyme] ExternalViewer.Open=Cliquer ici pour visualiser le fichier en surbrillance -HitsTableModel.ContentHits=Contenu des résultats -HtmlLinkViewer.AttachNotFound=Pièce jointe non trouvée\! +HitsTableModel.ContentHits=Résultats dans le contenu +HtmlLinkViewer.AttachNotFound=Pièce jointe non trouvée \! HtmlViewer.OpenExternally=Ouvert à l'extérieur -HtmlViewer.TooBigToOpen=Fichier trop volumineux pour être ouvert\! +HtmlViewer.TooBigToOpen=Fichier trop volumineux pour être ouvert en interne \! ImageViewer.Blur=Activer/Dasactiver le filtre "Flou" dans la visionneuse (utiliser Ctrl+Q pour tout flouter) ImageViewer.Copy=Copier l'image de la visionneuse -ImageViewer.GrayScale=Activer/Dasactiver le filtre "Griser" dans la visionneuse (utiliser Ctrl+W for pour tout griser) +ImageViewer.GrayScale=Activer/Dasactiver le filtre "Grisé" dans la visionneuse (utiliser Ctrl+W for pour tout griser) LibreOfficeViewer.RestartingViewer=Redémarrez la visionneuse... LOExtractor.DecompressingLO=Décompresser LibreOffice... MetadataViewer.AdvancedProps=Propriétés avancées MetadataViewer.BasicProps=Propriétés de base MetadataViewer.Metadata=Métadonnées MetadataViewer.TabTitle=Métadonnées -NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieur. -TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre supérieur à 1 and\ +NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieure. +TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre entre 1 et\ TiffViewer.Page=\ Page\ -PDFViewer.OpenError=ERREUR: Impossible d'ouvrir le fichier PDF! -MsgViewer.OpenError=ERROR: Impossible d'ouvrir le message! +PDFViewer.OpenError=ERREUR : Impossible d'ouvrir le fichier PDF ! +MsgViewer.OpenError=ERREUR: Impossible d'ouvrir le message ! HexViewerPlus.TabName=Hex HexViewerPlus.appName=Hex Viewer Plus -HexViewerPlus.HvpFileSettings=Paramères de Hex Viewer Plus +HexViewerPlus.HvpFileSettings=Paramètres de Hex Viewer Plus HexViewerPlus.position=Position HexViewerPlus.relative=Relative HexViewerPlus.charset=Jeu de caractères -HexViewerPlus.selection=Selectionner +HexViewerPlus.selection=Selection HexViewerPlus.to=à HexViewerPlus.settings=Paramètres -HexViewerPlus.hit=Elément trouvé +HexViewerPlus.hit=Élément trouvé HexViewerPlus.hits=Eléments trouvés HexViewerPlus.of=de -HexViewerPlus.search=Rechercher -HexViewerPlus.nextHit=Elément trouvé suivant -HexViewerPlus.preHit=Elément trouvé précédent -HexViewerPlus.goToHit=Aller aux éléments trouvés +HexViewerPlus.search=ÉRechercher +HexViewerPlus.nextHit=Élément trouvé suivant +HexViewerPlus.preHit=Élément trouvé précédent +HexViewerPlus.goToHit=Aller à l'élément trouvé HexViewerPlus.goToPosition=Aller à la position -HexViewerPlus.selectBlock=Selectionner le Bloque +HexViewerPlus.selectBlock=Selectionner le Bloc HexViewerPlus.selectAll=Tout sélectionner HexViewerPlus.copyHex=Copier l'Hexadecimal HexViewerPlus.copyText=Copier le Texte @@ -56,67 +56,67 @@ HexViewerPlus.options=Options HexViewerPlus.selectColor=Choisir une couleur HexViewerPlus.codeArea=Code de la zone HexViewerPlus.header=Entête -HexViewerPlus.layout=Mise page +HexViewerPlus.layout=Mise en page HexViewerPlus.cursor=Curseur HexViewerPlus.mode=Mode HexViewerPlus.font=Police de caractères HexViewerPlus.size=Taille HexViewerPlus.blink=Clignoter -HexViewerPlus.bytesPerLine=Bytes par ligne +HexViewerPlus.bytesPerLine=Octets par ligne HexViewerPlus.cursorColor=Couleur du curseur HexViewerPlus.fontColor=Couleur de la police de caractères HexViewerPlus.backGroundColor=Couleur du fond -HexViewerPlus.selectionCharactersMirror=Selectionner les personnes - identiques -HexViewerPlus.selectionCharactersMain=Selectionner personnes - Principales -HexViewerPlus.searchHitsFoundMatch=Rechercher les éléments trouvés - Correspondance trouvée -HexViewerPlus.searchHitsCurrentMatch=Rechercher les éléments trouvés - En cours +HexViewerPlus.selectionCharactersMirror=Selection de caractères - Miroir +HexViewerPlus.selectionCharactersMain=Selection de caractères - Principal +HexViewerPlus.searchHitsFoundMatch=Recherche dans les éléments trouvés - Correspondance trouvée +HexViewerPlus.searchHitsCurrentMatch=Recherche dans les éléments trouvés - En cours HexViewerPlus.loadDefault=Charger les paramètres par défaut HexViewerPlus.saveDefault=Enregistrer les paramètres par défaut HexViewerPlus.close=Cloturer HexViewerPlus.ok=OK -HexViewerPlus.cancel=Arrêter +HexViewerPlus.cancel=Annuler HexViewerPlus.hexLowerCase=Hexadecimal minuscule HexViewerPlus.showHeader=Afficher les entêtes HexViewerPlus.showLines=Afficher les Lignes -HexViewerPlus.lineBreak=Ligne Brisée -HexViewerPlus.showAllCharacters=Afficher toutes les personnes +HexViewerPlus.lineBreak=Fin de Ligne +HexViewerPlus.showAllCharacters=Afficher tous les caractères HexViewerPlus.loadFile=Charger le fichier HexViewerPlus.saveFile=Sauvegarder le fichier -HexViewerPlus.failOpenFile=Echec d'ouverture du fichier! -HexViewerPlus.failSaveFile=Erreur d'enregistrement du fichier! +HexViewerPlus.failOpenFile=Echec d'ouverture du fichier ! +HexViewerPlus.failSaveFile=Erreur d'enregistrement du fichie r! HexViewerPlus.yes=Oui HexViewerPlus.no=Non -HexViewerPlus.overWriteFile=Existe déjà. Voulez vous le remplacer? -HexViewerPlus.select=Selectionner +HexViewerPlus.overWriteFile=existe déjà. Voulez vous le remplacer ? +HexViewerPlus.select=Selection HexViewerPlus.type=Type HexViewerPlus.interval=Intervalle -HexViewerPlus.invalidPosition=IPosition non valide! +HexViewerPlus.invalidPosition=IPosition non valide ! HexViewerPlus.startPosition=Position de départ HexViewerPlus.endPosition=Position d'arrivée HexViewerPlus.format=Format HexViewerPlus.hexadecimal=Hexadécimal HexViewerPlus.decimal=Décimal -HexViewerPlus.octal=Octale -HexViewerPlus.invalidStartPosition=Position de départ non valide! -HexViewerPlus.invalidSize=Taille invalide! -HexViewerPlus.invalidEndPosition=Position d'arrivée non valide! +HexViewerPlus.octal=Octal +HexViewerPlus.invalidStartPosition=Position de départ non valide ! +HexViewerPlus.invalidSize=Taille invalide ! +HexViewerPlus.invalidEndPosition=Position d'arrivée non valide ! HexViewerPlus.start=Démarrer -HexViewerPlus.invalidHit=Eléments trouvés invalides! +HexViewerPlus.invalidHit=Elément trouvé invalide ! HexViewerPlus.text=Texte -HexViewerPlus.all=Tout +HexViewerPlus.all=Tous HexViewerPlus.max=Maximum HexViewerPlus.caseSensitive=Respecter la casse -HexViewerPlus.invalidSearchText=Texte de recherche invalide! -HexViewerPlus.invalidHexadecimalText=Recherche Hexadecimal invalide! -HexViewerPlus.invalidMax=Maximum invalide +HexViewerPlus.invalidSearchText=Texte de recherche invalide ! +HexViewerPlus.invalidHexadecimalText=Hexadecimal de recherche invalide ! +HexViewerPlus.invalidMax=Maximum invalide ! HexViewerPlus.invalidMaxLessThen=Maximum invalide. Inférieur ou égal à\ HexViewerPlus.invalid=invalide -HexViewerPlus.showPositionBar=Afficher la barre de position -HexViewerPlus.showSelectionBar=Afficher la barre de sélection +HexViewerPlus.showPositionBar=Afficher la barre de Position +HexViewerPlus.showSelectionBar=Afficher la barre de Sélection HexViewerPlus.showLineNumberBackground=Fusionner en-tête et ligne avec la mise en page -HexViewerPlus.headerLineBackground=En-tête de colonne et numéro de ligne +HexViewerPlus.headerLineBackground=En-tête et numéros de ligne ProgressDialog.Cancel=Abandonner ProgressDialog.Progress=En cours ProgressDialog.Searching=Recherche... -ReferenceViewer.FileNotFound=Fichier de référence introuvable:\ -ReferenceViewer.NotSupported=Type de fichier non supporté:\ +ReferenceViewer.FileNotFound=Fichier de référence introuvable :\ +ReferenceViewer.NotSupported=Type de fichier non supporté :\ From bb138b2c60fa2aea2e3e58c2e981d01db043d5a7 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Fri, 17 May 2024 19:41:56 +0200 Subject: [PATCH 084/126] Update item.html Review and minor changes --- .../resources/root/htmlreport/fr-FR/templates/item.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/root/htmlreport/fr-FR/templates/item.html b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html index 9d3b10cd27..8347f9d0f1 100644 --- a/iped-app/resources/root/htmlreport/fr-FR/templates/item.html +++ b/iped-app/resources/root/htmlreport/fr-FR/templates/item.html @@ -3,10 +3,10 @@ <div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Emplacement</span><span class="bkmkColRight bkmkValue">%PATH%</span></div> <div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Type de fichier</span><span class="bkmkColRight bkmkValue">%TYPE%</span></div> <div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Taille</span><span class="bkmkColRight bkmkValue">%SIZE% Bytes</span></div> -<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Créé</span><span class="bkmkColRight bkmkValue">%CREATED%</span></div> -<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Modifié</span><span class="bkmkColRight bkmkValue">%MODIFIED%</span></div> -<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Consulté</span><span class="bkmkColRight bkmkValue">%ACCESSED%</span></div> +<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Date de Crétion</span><span class="bkmkColRight bkmkValue">%CREATED%</span></div> +<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Date de Modification</span><span class="bkmkColRight bkmkValue">%MODIFIED%</span></div> +<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Date de Consultation</span><span class="bkmkColRight bkmkValue">%ACCESSED%</span></div> <div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Supprimé</span><span class="bkmkColRight bkmkValue">%DELETED%</span></div> -<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Carvé</span><span class="bkmkColRight bkmkValue">%CARVED%</span></div> +<div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Récupéré</span><span class="bkmkColRight bkmkValue">%CARVED%</span></div> <div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Hash</span><span class="bkmkColRight bkmkValue">%HASH%</span></div> <div class="row"><div class="row"><span class="bkmkColLeft bkmkValue labelBorderless clrBkgrnd" width="100%" border="1">Exporté comme</span><span class="bkmkColRight bkmkValue"><b>%EXPORTED%</b></span></div> From 21f9df3fabef832c14ddefbecb84409a87b977ae Mon Sep 17 00:00:00 2001 From: Luis Filipe Nassif <nassif.lfcn@pf.gov.br> Date: Fri, 17 May 2024 17:46:32 -0300 Subject: [PATCH 085/126] minor update in iped-viewer-messages_fr_FR.properties --- .../localization/iped-viewer-messages_fr_FR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index ebf7f343c5..7c4f3a5ad8 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -30,7 +30,7 @@ NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre entre 1 et\ TiffViewer.Page=\ Page\ PDFViewer.OpenError=ERREUR : Impossible d'ouvrir le fichier PDF ! -MsgViewer.OpenError=ERREUR: Impossible d'ouvrir le message ! +MsgViewer.OpenError=ERREUR : Impossible d'ouvrir le message ! HexViewerPlus.TabName=Hex HexViewerPlus.appName=Hex Viewer Plus HexViewerPlus.HvpFileSettings=Paramètres de Hex Viewer Plus From 56eaba1064eb151b372ad3213fc5a6e04e4d973e Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 17 May 2024 17:48:03 -0300 Subject: [PATCH 086/126] '#2205: Increase default icon size from 16 to 18. --- iped-app/src/main/java/iped/app/ui/IconManager.java | 2 +- .../src/main/java/iped/app/ui/utils/UiIconSize.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/iped-app/src/main/java/iped/app/ui/IconManager.java b/iped-app/src/main/java/iped/app/ui/IconManager.java index 16e8b01870..7a24107fa5 100644 --- a/iped-app/src/main/java/iped/app/ui/IconManager.java +++ b/iped-app/src/main/java/iped/app/ui/IconManager.java @@ -40,7 +40,7 @@ */ public class IconManager { - public static final int defaultSize = 16; + public static final int defaultSize = 18; public static final int defaultGallerySize = 24; public static final int defaultCategorySize = 20; diff --git a/iped-app/src/main/java/iped/app/ui/utils/UiIconSize.java b/iped-app/src/main/java/iped/app/ui/utils/UiIconSize.java index bf345544a5..d041bad475 100644 --- a/iped-app/src/main/java/iped/app/ui/utils/UiIconSize.java +++ b/iped-app/src/main/java/iped/app/ui/utils/UiIconSize.java @@ -4,6 +4,7 @@ import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.ArrayList; +import java.util.Date; import java.util.List; import iped.app.ui.IconManager; @@ -14,6 +15,7 @@ public class UiIconSize { private static final String[] keys = new String[] { "CatIconSize", "GalleryIconSize", "TableIconSize" }; private static final String[] comments = new String[] { "for categories", "in the gallery", "in tables and other UI elements" }; + private static final String lastSavedKey = "LastSaved"; private static final int[] defaultSizes = new int[] { IconManager.defaultCategorySize, IconManager.defaultGallerySize, IconManager.defaultSize }; @@ -26,7 +28,7 @@ public static int[] loadUserSetting() { UTF8Properties prop = new UTF8Properties(); prop.load(file); - boolean missing = false; + boolean missing = prop.getProperty(lastSavedKey) == null; for (int i = 0; i < keys.length; i++) { String value = prop.getProperty(keys[i]); if (value != null) { @@ -37,6 +39,11 @@ public static int[] loadUserSetting() { } if (missing) { + for (int i = 0; i < keys.length; i++) { + if (sizes[i] < defaultSizes[i]) { + sizes[i] = defaultSizes[i]; + } + } saveUserSetting(sizes); } } @@ -57,6 +64,7 @@ public static void saveUserSetting(int[] sizes) { l.add(keys[i] + " = " + sizes[i]); l.add(""); } + l.add(lastSavedKey + " = " + new Date()); Files.write(file.toPath(), l, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); } catch (Exception e) { e.printStackTrace(); From a9dfe5ec5056b3d20ef21d4f3c023147cfff06e4 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 17 May 2024 17:50:15 -0300 Subject: [PATCH 087/126] '#2205: Apply fix to the background of boolean columns after UI change. --- iped-app/src/main/java/iped/app/ui/App.java | 8 ++++++-- .../src/main/java/iped/viewers/components/HitsTable.java | 2 -- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/iped-app/src/main/java/iped/app/ui/App.java b/iped-app/src/main/java/iped/app/ui/App.java index d554d2161f..2e93746f9a 100644 --- a/iped-app/src/main/java/iped/app/ui/App.java +++ b/iped-app/src/main/java/iped/app/ui/App.java @@ -562,7 +562,6 @@ public void createGUI() { resultsTable.setDefaultRenderer(String.class, new TableCellRenderer()); resultsTable.setShowGrid(false); resultsTable.setAutoscrolls(false); - ((JComponent) resultsTable.getDefaultRenderer(Boolean.class)).setOpaque(true); FilterTableHeaderController.init(resultsTable.getTableHeader()); InputMap inputMap = resultsTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); @@ -1486,8 +1485,9 @@ public void updateIconContainersUI(int size, boolean updateUI) { } private void updateIconContainerUI(JComponent comp, int size, boolean updateUI) { + JTable table = null; if (comp instanceof JTable && comp != gallery) { - JTable table = (JTable) comp; + table = (JTable) comp; table.setRowHeight(size); // Set bookmark icons column width based on current icon size @@ -1500,6 +1500,10 @@ private void updateIconContainerUI(JComponent comp, int size, boolean updateUI) if (updateUI) { comp.updateUI(); } + if (table != null) { + // Fix the background of boolean columns (with a CheckBox) + ((JComponent) table.getDefaultRenderer(Boolean.class)).setOpaque(true); + } } @Override diff --git a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/components/HitsTable.java b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/components/HitsTable.java index 6f95cdab5c..41a8c10bce 100644 --- a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/components/HitsTable.java +++ b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/components/HitsTable.java @@ -20,7 +20,6 @@ import java.awt.Dimension; -import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.AbstractTableModel; @@ -36,7 +35,6 @@ public HitsTable(AbstractTableModel tableModel) { setAutoResizeMode(JTable.AUTO_RESIZE_OFF); getTableHeader().setPreferredSize(new Dimension(0, 0)); setShowGrid(false); - ((JComponent) getDefaultRenderer(Boolean.class)).setOpaque(true); } @Override From fc9c9295b65de8bddcbfb932cd7fc9eee6ee7c64 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 17 May 2024 18:53:59 -0300 Subject: [PATCH 088/126] '#2222: Format dates in the metadata viewer. --- .../iped-viewer-messages.properties | 1 + .../iped-viewer-messages_de_DE.properties | 1 + .../iped-viewer-messages_es_AR.properties | 1 + .../iped-viewer-messages_fr_FR.properties | 1 + .../iped-viewer-messages_it_IT.properties | 1 + .../iped-viewer-messages_pt_BR.properties | 1 + .../java/iped/viewers/MetadataViewer.java | 47 +++++++++++++++++-- 7 files changed, 48 insertions(+), 5 deletions(-) diff --git a/iped-app/resources/localization/iped-viewer-messages.properties b/iped-app/resources/localization/iped-viewer-messages.properties index 6e78c4aa65..290292322e 100644 --- a/iped-app/resources/localization/iped-viewer-messages.properties +++ b/iped-app/resources/localization/iped-viewer-messages.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Advanced Properties MetadataViewer.BasicProps=Basic Properties MetadataViewer.Metadata=Metadata MetadataViewer.TabTitle=Metadata +MetadataViewer.DateFormat=MM/dd/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Viewing not supported. Update Java to 7u06 or newer. TiffViewer.InvalidPage=is not a valid page number.\nPlease enter a number between 1 and\ TiffViewer.Page=\ Page\ diff --git a/iped-app/resources/localization/iped-viewer-messages_de_DE.properties b/iped-app/resources/localization/iped-viewer-messages_de_DE.properties index e22054c09b..437874efc9 100644 --- a/iped-app/resources/localization/iped-viewer-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-viewer-messages_de_DE.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Erweitert MetadataViewer.BasicProps=Allgemein MetadataViewer.Metadata=Metadaten MetadataViewer.TabTitle=Metadaten +MetadataViewer.DateFormat=MM/dd/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Vorschau nicht unterstützt. Java auf Version 7u06 oder neuer aktualisieren. TiffViewer.InvalidPage=ist keine gültige Seitennummer.\nBitte eine Zahl eingeben zwischen 1 und\ TiffViewer.Page=\ Seite\ diff --git a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties index 3d3e68519f..bf71f43afb 100644 --- a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Propiedades avanzadas MetadataViewer.BasicProps=Propiedades básicas MetadataViewer.Metadata=Metadatos MetadataViewer.TabTitle=Metadatos +MetadataViewer.DateFormat=MM/dd/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Visualización no compatible. Actualice Java a 7u06 o posterior. TiffViewer.InvalidPage=no es un número de página válido.\nPor favor ingrese un número entre 1 y\ TiffViewer.Page=\ Página\ diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index 7c4f3a5ad8..3dadcc84e3 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Propriétés avancées MetadataViewer.BasicProps=Propriétés de base MetadataViewer.Metadata=Métadonnées MetadataViewer.TabTitle=Métadonnées +MetadataViewer.DateFormat=dd/MM/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieure. TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre entre 1 et\ TiffViewer.Page=\ Page\ diff --git a/iped-app/resources/localization/iped-viewer-messages_it_IT.properties b/iped-app/resources/localization/iped-viewer-messages_it_IT.properties index 0dc7dceea4..03f411b6c3 100644 --- a/iped-app/resources/localization/iped-viewer-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-viewer-messages_it_IT.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Proprietà avanzate MetadataViewer.BasicProps=Proprietà base MetadataViewer.Metadata=Metadati MetadataViewer.TabTitle=Metadati +MetadataViewer.DateFormat=dd/MM/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Visualizzazione non supportata. Aggiorna Java alla versione 7u06 o successiva. TiffViewer.InvalidPage=non è un numero di pagina valido.\nInserisci un numero tra 1 e\ TiffViewer.Page=\ Pagina\ diff --git a/iped-app/resources/localization/iped-viewer-messages_pt_BR.properties b/iped-app/resources/localization/iped-viewer-messages_pt_BR.properties index eb5dd8201d..489d4d97e8 100644 --- a/iped-app/resources/localization/iped-viewer-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_pt_BR.properties @@ -26,6 +26,7 @@ MetadataViewer.AdvancedProps=Propriedades Avançadas MetadataViewer.BasicProps=Propriedades Básicas MetadataViewer.Metadata=Metadados MetadataViewer.TabTitle=Metadados +MetadataViewer.DateFormat=dd/MM/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Visualização não suportada. Atualize o Java para a versão 7u06 ou superior TiffViewer.InvalidPage=não é uma página válida. Insira um valor entre 1 e\ TiffViewer.Page=\ Página\ diff --git a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/MetadataViewer.java b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/MetadataViewer.java index 3fdd964172..6a83ea1fd1 100644 --- a/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/MetadataViewer.java +++ b/iped-viewers/iped-viewers-impl/src/main/java/iped/viewers/MetadataViewer.java @@ -6,13 +6,17 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardOpenOption; +import java.text.DateFormat; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.Set; +import java.util.TimeZone; import javax.swing.UIManager; @@ -27,6 +31,7 @@ import iped.properties.BasicProps; import iped.properties.ExtraProperties; import iped.properties.MediaTypes; +import iped.utils.DateUtil; import iped.utils.EmojiUtil; import iped.utils.LocalizedFormat; import iped.utils.SimpleHTMLEncoder; @@ -45,7 +50,8 @@ public abstract class MetadataViewer extends AbstractViewer { - private DecimalFormat df = LocalizedFormat.getDecimalInstance("#,###.############"); //$NON-NLS-1$ + private final DecimalFormat df = LocalizedFormat.getDecimalInstance("#,###.############"); //$NON-NLS-1$ + private final DateFormat dateFormat = new SimpleDateFormat(Messages.getString("MetadataViewer.DateFormat")); private TabPane tabPane; private JFXPanel jfxPanel; @@ -68,6 +74,8 @@ public int compare(String a, String b) { public MetadataViewer() { super(new GridLayout()); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + jfxPanel = new JFXPanel(); for (int i = 0; i < 3; i++) htmlViewers.add(new HtmlViewer()); @@ -252,6 +260,12 @@ private void fillMetadata(StringBuilder sb, Metadata metadata) { val = metadata.get(meta); if (isNumeric(meta)) { val = df.format(Double.valueOf(val)); + } else { + try { + Date date = DateUtil.stringToDate(val); + val = dateFormat.format(date); + } catch (Exception e) { + } } } else { String[] vals = metadata.getValues(meta); @@ -259,6 +273,25 @@ private void fillMetadata(StringBuilder sb, Metadata metadata) { for (int i = 0; i < vals.length; i++) { vals[i] = df.format(Double.valueOf(vals[i])); } + } else { + boolean isDate = true; + for (int i = 0; i < vals.length; i++) { + try { + DateUtil.stringToDate(vals[i]); + } catch (Exception e) { + isDate = false; + break; + } + } + if (isDate) { + for (int i = 0; i < vals.length; i++) { + try { + Date date = DateUtil.stringToDate(vals[i]); + vals[i] = dateFormat.format(date); + } catch (Exception e) { + } + } + } } val = Arrays.asList(vals).toString(); } @@ -277,10 +310,10 @@ private void fillBasicProps(StringBuilder sb, IItemReader item) { fillProp(sb, BasicProps.TYPE, item.getType()); fillProp(sb, BasicProps.DELETED, item.isDeleted()); fillProp(sb, BasicProps.CATEGORY, item.getCategorySet()); - fillProp(sb, BasicProps.CREATED, item.getCreationDate()); - fillProp(sb, BasicProps.MODIFIED, item.getModDate()); - fillProp(sb, BasicProps.ACCESSED, item.getAccessDate()); - fillProp(sb, BasicProps.CHANGED, item.getChangeDate()); + fillProp(sb, BasicProps.CREATED, formatDate(item.getCreationDate())); + fillProp(sb, BasicProps.MODIFIED, formatDate(item.getModDate())); + fillProp(sb, BasicProps.ACCESSED, formatDate(item.getAccessDate())); + fillProp(sb, BasicProps.CHANGED, formatDate(item.getChangeDate())); fillProp(sb, BasicProps.HASH, item.getHash()); fillProp(sb, BasicProps.PATH, item.getPath()); sb.append("</table>"); //$NON-NLS-1$ @@ -347,6 +380,10 @@ private void appendCollapsibleString(StringBuilder sb, String str) { } } + private String formatDate(Date date) { + return date == null ? null : dateFormat.format(date); + } + private String format(Object value) { if (value instanceof Number) { return df.format(Double.valueOf(((Number) value).doubleValue())); From 6c16534fbffb83cb853bd77a6293ab9f6d18e275 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 17 May 2024 18:56:50 -0300 Subject: [PATCH 089/126] '#2222: Fix some invalid/inconsistent date format for locale "es_AR". --- .../localization/iped-desktop-messages_es_AR.properties | 8 ++++---- .../localization/iped-engine-messages_es_AR.properties | 2 +- .../localization/iped-viewer-messages_es_AR.properties | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties index 7035a96eff..51ffee2b71 100644 --- a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties @@ -103,7 +103,7 @@ ColumnsManager.LoadingCols=Cargando columnas usadas... ColumnsManager.Filter=[Escribir para filtrar] ColumnsManager.WindowsEvt=Eventos de Windows CopyProperties.Copying=Copiando -CopyProperties.CSVDateFormat=MM/dd/aaaa HH:mm:ss z +CopyProperties.CSVDateFormat=dd/MM/yyyy HH:mm:ss z CopyProperties.CSVDelimiter=, CopyProperties.from=\ de DuplicatesTableModel.Duplicates=\ Duplicados @@ -322,9 +322,9 @@ ReportDialog.TableHeader1=Marcador ReportDialog.TableHeader2=Solo miniaturas ReportDialog.Title=Crear informe ParentTableModel.ParentCount=Elemento principal -ResultTableModel.DateFormat=MM/dd/aaaa HH:mm:ss z +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z ResultTableModel.Error=ERROR -ResultTableModel.FATDateFormat=MM/dd/aaaa +ResultTableModel.FATDateFormat=dd/MM/yyyy ResultTableRowSorter.Sorting=Ordenando... RowComparator.SortCanceled=Clasificación cancelada. SearchStateFilter.BookmarksFile=Archivo de marcadores @@ -393,7 +393,7 @@ TimeLineGraph.unselectAllEventTypes=Unselect all event types(TBT) TimeLineGraph.checkEventItems=Check corresponding event type items(TBT) TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items(TBT) IntervalDefinitionDialog.Title=Rangos definidos en el gráfico de tiempo -IntervalDefinitionDialog.dateFormat=MM/dd/yyyy +IntervalDefinitionDialog.dateFormat=dd/MM/yyyy IntervalDefinitionDialog.hourFormat=HH:mm:ss IntervalDefinitionDialog.Exit=Salir App.appliedFilters=Filters (TBT) diff --git a/iped-app/resources/localization/iped-engine-messages_es_AR.properties b/iped-app/resources/localization/iped-engine-messages_es_AR.properties index bfb7d783b9..1b71b6b7f6 100644 --- a/iped-app/resources/localization/iped-engine-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-engine-messages_es_AR.properties @@ -12,7 +12,7 @@ HTMLReportTask.Bookmark=Marcador HTMLReportTask.Bookmarks=Marcadores HTMLReportTask.Categories=Categorías HTMLReportTask.Category=Categoría -HTMLReportTask.Dateformat=MM/dd/aaaa HH:mm:ss +HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss HTMLReportTask.FileCount=Recuento de archivos HTMLReportTask.FirstPage=Primera página HTMLReportTask.GalleryLink=Galería de imágenes diff --git a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties index bf71f43afb..7fbda50fd7 100644 --- a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties @@ -5,7 +5,7 @@ EmailViewer.Attachments=Archivos adjuntos EmailViewer.Bcc=Bcc EmailViewer.Cc=Cc EmailViewer.Date=Fecha -EmailViewer.DateFormat=MM/dd/aaaa HH:mm:ss +EmailViewer.DateFormat=dd/MM/yyyy HH:mm:ss EmailViewer.EmbeddedMessage=Mensaje incrustado EmailViewer.From=Desde EmailViewer.NotFound=(No encontrado) From 61c80f12c00d2057895048008823278deb80f7a5 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 17 May 2024 19:02:04 -0300 Subject: [PATCH 090/126] '#2222: Fix some invalid/inconsistent date format for locale "de_DE". --- .../iped-desktop-messages_de_DE.properties | 8 ++++---- .../iped-engine-messages_de_DE.properties | 2 +- .../iped-parsers-messages_de_DE.properties | 18 +++++++++--------- .../iped-viewer-messages_de_DE.properties | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties index 5c0e3187ee..79a06db85b 100644 --- a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties @@ -103,7 +103,7 @@ ColumnsManager.LoadingCols=Lade verwendete Spalten... ColumnsManager.Filter=[Eingeben zum Filtern] ColumnsManager.WindowsEvt=Windows Ereignisse CopyProperties.Copying=Kopiere -CopyProperties.CSVDateFormat=MM/TT/JJJJ HH:mm:ss z +CopyProperties.CSVDateFormat=dd/MM/yyyy HH:mm:ss z CopyProperties.CSVDelimiter=; CopyProperties.from=\ von DuplicatesTableModel.Duplicates=\ Duplikate @@ -322,9 +322,9 @@ ReportDialog.TableHeader1=Lesezeichen ReportDialog.TableHeader2=nur Vorschau ReportDialog.Title=erstelle Bericht ParentTableModel.ParentCount=übergeordnetes Element -ResultTableModel.DateFormat=MM/dd/yyyy HH:mm:ss z +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z ResultTableModel.Error=FEHLER -ResultTableModel.FATDateFormat=MM/dd/yyyy +ResultTableModel.FATDateFormat=dd/MM/yyyy ResultTableRowSorter.Sorting=Sortiere... RowComparator.SortCanceled=Sortierung abgebrochen. SearchStateFilter.BookmarksFile=Lesezeichen-Datei @@ -393,7 +393,7 @@ TimeLineGraph.unselectAllEventTypes=Unselect all event types(TBT) TimeLineGraph.checkEventItems=Check corresponding event type items(TBT) TimeLineGraph.uncheckEventItems=Uncheck corresponding event type items(TBT) IntervalDefinitionDialog.Title=Zeitlininechart festgelegte Bereiche -IntervalDefinitionDialog.dateFormat=MM/dd/yyyy +IntervalDefinitionDialog.dateFormat=dd/MM/yyyy IntervalDefinitionDialog.hourFormat=HH:mm:ss IntervalDefinitionDialog.Exit=Beenden App.appliedFilters=Filters (TBT) diff --git a/iped-app/resources/localization/iped-engine-messages_de_DE.properties b/iped-app/resources/localization/iped-engine-messages_de_DE.properties index 5706690362..6d27eda5a3 100644 --- a/iped-app/resources/localization/iped-engine-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-engine-messages_de_DE.properties @@ -12,7 +12,7 @@ HTMLReportTask.Bookmark=Lesezeichen HTMLReportTask.Bookmarks=Lesezeichen HTMLReportTask.Categories=Kategorien HTMLReportTask.Category=Kategorie -HTMLReportTask.Dateformat=MM/dd/yyyy HH:mm:ss +HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss HTMLReportTask.FileCount=Anzahl Dateien HTMLReportTask.FirstPage=Erste Seite HTMLReportTask.GalleryLink=Bilder-Galerie diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 9a92066ad3..06d93740bf 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -5,7 +5,7 @@ AresParser.Artist=Künstler AresParser.Category=Kategorie AresParser.Comments=Kommentare AresParser.Corrupted=Beschädigt -AresParser.DateFormat=MM/dd/yyyy HH:mm:ss +AresParser.DateFormat=dd/MM/yyyy HH:mm:ss AresParser.FileDate=Dateidatum (Lokale Zeit) AresParser.FoundInCase=In Fall gefunden AresParser.FoundInPedoHashDB=in KiPo Hash-Datenbank gefunden @@ -18,7 +18,7 @@ AresParser.Size=Größe AresParser.Title=Titel AresParser.URL=URL AresParser.Yes=Ja -DateFormat=MM/dd/yyyy HH:mm:ss +DateFormat=dd/MM/yyyy HH:mm:ss DiscordParser.Attachments=Anhänge DiscordParser.Start=Start DiscordParser.End=Ende @@ -40,7 +40,7 @@ IncrediMailParser.NoSubject=[kein Betreff] StandardParser.MetadataTitle=METADATEN: KnownMetParser.AcceptedRequests=angenommene Anfragen KnownMetParser.BytesSent=Bytes gesendet -KnownMetParser.DataFormat=MM/dd/yyyy HH:mm:ss +KnownMetParser.DataFormat=dd/MM/yyyy HH:mm:ss KnownMetParser.Hash=Hashwert eDonkey KnownMetParser.FoundInCase=Gefunden im Fall KnownMetParser.FoundInPedoHashDB=Gefunden in KiPo Hash Database @@ -68,7 +68,7 @@ LNKShortcutParser.CommonPathUnicode=Gemeinsamer Pfad - Unicode LNKShortcutParser.Created=Erstelldatum LNKShortcutParser.DataNotDecoded=(Daten nicht dekodiert) LNKShortcutParser.DataStrings=Daten Zeichenfolgen ( -LNKShortcutParser.DateFormat=MM/dd/yyyy HH:mm:ss [z] +LNKShortcutParser.DateFormat=dd/MM/yyyy HH:mm:ss [z] LNKShortcutParser.Description=Beschreibung LNKShortcutParser.Directory=Verzeichnis LNKShortcutParser.DistributedLinkTrackProps=Eigenschaften Distributed Link Tracker @@ -120,7 +120,7 @@ MetadataUtil.NoSubject=[kein Betreff] MSAccessParser.Table=Tabelle:\ OutlookPSTParser.Attachment=Anhang- OutlookPSTParser.Attachments=Anhänge -OutlookPSTParser.DateFormat=MM/dd/yyyy HH:mm:ss +OutlookPSTParser.DateFormat=dd/MM/yyyy HH:mm:ss OutlookPSTParser.From=From OutlookPSTParser.NoSubject=[kein Betreff] OutlookPSTParser.Sent=gesendet @@ -142,7 +142,7 @@ SkypeConversation.SkypeChat=Skype Chat\ SkypeFileTransfer.Download=Download SkypeFileTransfer.FileOffer=Datei angeboten (*) SkypeFileTransfer.FileSend=Datei gesendet -SkypeParser.DateFormat=MM/dd/yyyy HH:mm:ss +SkypeParser.DateFormat=dd/MM/yyyy HH:mm:ss SkypeParser.SkypeTransfer=Skype Transfer SkypeReport.About=Über SkypeReport.AcceptDate=Datum akzeptiert @@ -197,7 +197,7 @@ SkypeReport.TransferCount=Transfer Zähler:\ SkypeReport.TypeDescr=Typ-Beschreibung SkypeReport.UserData=Benutzer-Daten: SkypeReport.Value=Wert -SQLite3TableReader.DateFormat=MM/dd/yyyy_HH:mm:ssz +SQLite3TableReader.DateFormat=dd/MM/yyyy_HH:mm:ssz WhatsAppReport.AccountID=Account ID:\ WhatsAppReport.ChatContinuation=[Chat-Fortsetzung...] WhatsAppReport.ChatContinues=[Chat wird fortgesetzt...] @@ -333,7 +333,7 @@ VCardParser.Telephone=Telefone VCardParser.Organization=Organisation VCardParser.Notes=Notizen VCardParser.Photo=Foto -BitTorrentResumeDatParser.DateFormat=MM/dd/yyyy HH:mm:ss +BitTorrentResumeDatParser.DateFormat=dd/MM/yyyy HH:mm:ss BitTorrentResumeDatParser.TorrentFile=Torrent-Datei BitTorrentResumeDatParser.RootDir=Wurzelverzeichnis BitTorrentResumeDatParser.Path=vollständiger Pfad @@ -349,7 +349,7 @@ BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] BitTorrentResumeDatParser.Yes=Yes[TBT] -TorrentFileDatParser.DateFormat=MM/dd/yyyy HH:mm:ss +TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=vollständiger Pfad TorrentFileDatParser.FileSize=Dateigröße (Bytes) TorrentFileDatParser.MD5=MD5 Hashwert diff --git a/iped-app/resources/localization/iped-viewer-messages_de_DE.properties b/iped-app/resources/localization/iped-viewer-messages_de_DE.properties index 437874efc9..a4972dd7a6 100644 --- a/iped-app/resources/localization/iped-viewer-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-viewer-messages_de_DE.properties @@ -5,7 +5,7 @@ EmailViewer.Attachments=Anhänge EmailViewer.Bcc=Bcc EmailViewer.Cc=Cc EmailViewer.Date=Datum -EmailViewer.DateFormat=MM/dd/yyyy HH:mm:ss +EmailViewer.DateFormat=dd/MM/yyyy HH:mm:ss EmailViewer.EmbeddedMessage=eingebundene Nachricht EmailViewer.From=From EmailViewer.NotFound=(Nicht gefunden) @@ -26,7 +26,7 @@ MetadataViewer.AdvancedProps=Erweitert MetadataViewer.BasicProps=Allgemein MetadataViewer.Metadata=Metadaten MetadataViewer.TabTitle=Metadaten -MetadataViewer.DateFormat=MM/dd/yyyy HH:mm:ss z +MetadataViewer.DateFormat=dd/MM/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Vorschau nicht unterstützt. Java auf Version 7u06 oder neuer aktualisieren. TiffViewer.InvalidPage=ist keine gültige Seitennummer.\nBitte eine Zahl eingeben zwischen 1 und\ TiffViewer.Page=\ Seite\ From c6dde4e213349bd2b5553758fad6e349c325279b Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Fri, 17 May 2024 23:04:59 -0300 Subject: [PATCH 091/126] '#1182: single quote must be repeated, remove trailing ], minor change --- .../iped-desktop-messages_fr_FR.properties | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index ebd1e403f8..5403c91d76 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -22,10 +22,10 @@ App.Table=Tableau App.ToggleTimelineView=Basculer la ligne de temps en tableau App.Update=Mise à jour App.Wait=Attendre... -AppLazyInitializer.errorMsg.line1=Erreur d'ouverture du cas. Le traitement s'est-il terminé sans erreur ?\n -AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d'évènements\n +AppLazyInitializer.errorMsg.line1=Erreur d''ouverture du cas. Le traitement s''est-il terminé sans erreur ?\n +AppLazyInitializer.errorMsg.line2=Si oui, contacter le support et communiquer le journal d''évènements\n AppLazyInitializer.errorMsg.line3=\nRésumé de erreur:\n -AppLazyInitializer.errorTitle=Erreur d'initialisation +AppLazyInitializer.errorTitle=Erreur d''initialisation AppListener.NoHits=Aucun résultat positif AppListener.UncheckAll=Confirmez-vous vouloir décocher tous les éléments ? AppListener.UncheckAll.Title=Confirmation @@ -54,7 +54,7 @@ BookmarksManager.Dataset=Données : BookmarksManager.Delete=Supprimer BookmarksManager.Delete.Tip=Supprimer les favoris sélectionnés BookmarksManager.Edit=Modifier -BookmarksManager.Edit.Color=Couleur] +BookmarksManager.Edit.Color=Couleur BookmarksManager.Edit.Name=Nom BookmarksManager.Edit.Tip=Modifier la couleur et le nom du favori sélectionné BookmarksManager.Edit.Title=Modifier favori @@ -112,15 +112,15 @@ ExportFiles.of=\ de ExportFilesToZip.Copying=Copier ExportFilesToZip.from=\ de ExportFileTree.Copied=Copié -ExportFileTree.ExportError=Erreur d'exportation de fichiers. Vérifier les droits et l'espace disponible.\n +ExportFileTree.ExportError=Erreur d''exportation de fichiers. Vérifier les droits et l''espace disponible.\n ExportFileTree.from=\ de ExportIndexedTerms.Exported=Exportés ExportIndexedTerms.ofWords=\ des mots. ExportToZIP.DefaultName=FichiersExportés.zip -ExportToZIP.DefaultPath=/home/caine/DADOS_EXPORTADOS +ExportToZIP.DefaultPath=/home/caine/Données_Exportés ExportToZIP.FileAlreadyExistsMessageText=Le nom du fichier existe déjà. Voulez-vous le remplacer ? ExportToZIP.FileAlreadyExistsMessageTitle=Le fichier existe déjà -FileProcessor.OpeningEvidence=Ouvrir le fichier d'analyse... +FileProcessor.OpeningEvidence=Ouvrir le fichier d''analyse... FilterManager.Del.Tip=Supprimer le filtre sélectionné FilterManager.Delete=Supprimer FilterManager.Expresion=Expression : @@ -137,12 +137,12 @@ Gallery.IncreaseThumbsSize=Augmenter la taille des vignettes Gallery.GalleryBlurFilter=Ativer/désactiver : Floutage de la galerie (utiliser Ctrl+Q pour tout sélectionner) Gallery.GalleryGrayFilter=Ativer/désactiver : Griser la gallerie (utiliser Ctrl+W pour tout sélectionner) Gallery.ToggleVideoFrames=Ativer/désactiver : la configuration des vignettes vidéo (Complète / Reduite) -GraphAnalysis.GraphvizError=Test d'erreur de graphviz tool {0}. Est-il installé ? +GraphAnalysis.GraphvizError=Test d''erreur de graphviz tool {0}. Est-il installé ? GraphAnalysis.Expand=Développer GraphAnalysis.ExpandConfiguration=Développer (Filtre) GraphAnalysis.Expand.Links=Liens GraphAnalysis.Expand.Entities=Entités -GraphAnalysis.Expand.MaxNodes=Développer les entités les plus liées jusqu'à +GraphAnalysis.Expand.MaxNodes=Développer les entités les plus liées jusqu''à GraphAnalysis.FindConnectios=Trouver des connexions GraphAnalysis.FindPaths=Trouver des chemins GraphAnalysis.Remove=Supprimer @@ -152,11 +152,11 @@ GraphAnalysis.Processing=En cours... GraphAnalysis.Done=Terminé. GraphAnalysis.Preparing=En cours de préparation... GraphAnalysis.Ready=Prêt. -GraphAnalysis.ExportingImage=Création de l'image... -GraphAnalysis.Error=Une erreur s'est produite lors de l'opération. -GraphAnalysis.UndoAction=Annuler l'opération en cours +GraphAnalysis.ExportingImage=Création de l''image... +GraphAnalysis.Error=Une erreur s''est produite lors de l''opération. +GraphAnalysis.UndoAction=Annuler l''opération en cours GraphAnalysis.RedoAction=Recommencer -GraphAnalysis.SaveImage=Enregistrer l'Image +GraphAnalysis.SaveImage=Enregistrer l''Image GraphAnalysis.SearchEntities=Recherche les liens entre entités GraphAnalysis.Search=Rechercher GraphAnalysis.Add=Ajouter @@ -167,7 +167,7 @@ GraphAnalysis.Type=Type GraphAnalysis.Quantity=Quantité GraphAnalysis.Property=Propriété GraphAnalysis.Value=Valeur -GraphAnalysis.FitToScreen=Adapter à l'écran +GraphAnalysis.FitToScreen=Adapter à l''écran GraphAnalysis.ExportLinks=Exporter les liens GraphAnalysis.Origin=Origine GraphAnalysis.Destiny=Destination @@ -176,7 +176,7 @@ GraphAnalysis.FileExistsConfirmation=Le fichier {0} existe déjà. Continuer ? GraphAnalysis.FileSaved=Le fichiers {0} a été enregistré avec succès. GraphAnalysis.Results=Trouvés {0} résultats en {1}ms. GraphAnalysis.AdvancedSearch=Recherche avancée -GraphAnalysis.AddToAnalysis=Ajouter à l'analyse +GraphAnalysis.AddToAnalysis=Ajouter à l''analyse GraphAnalysis.Execute=Executer GraphAnalysis.SearchLinks=Liens recherchés GraphAnalysis.Links=Liens @@ -191,13 +191,13 @@ KeywordListImporter.Msg.1=Importé(s) KeywordListImporter.Msg.2= mots-clés avec des résultats sur\ KeywordListImporter.SyntaxError=Erreur de syntaxe dans les expressions suivantes : HashDialog.MD5Title=Valeur Hash MD5 du ZIP exporté -ImageSimilarity.ExternalError=Impossible d'ouvrir le fichier image sélectionné. +ImageSimilarity.ExternalError=Impossible d''ouvrir le fichier image sélectionné. ImageSimilarity.ExternalTitle=Image exerne similaire ImageSimilarity.FilterTipTitle=Filtre des images similaires ImageSimilarity.FilterTipExternal=Image de référence ImageSimilarity.FilterTipInternal=Image de référence ImageSimilarity.Image=Image -ImageSimilarity.RemoveFilter=Suppression du filtre d'images identiques +ImageSimilarity.RemoveFilter=Suppression du filtre d''images identiques FaceSimilarity.ExternalTitle=Visage similaire FaceSimilarity.FilterTipTitle=Filtre de visage similaire FaceSimilarity.FilterTipExternal=Visage de référence externe @@ -207,14 +207,14 @@ FaceSimilarity.Image=Visage FaceSimilarity.MinScore=Définir la précision de ressemblance (1-100) FaceSimilarity.LoadingFace=Chargement du visage... FaceSimilarity.ExternalFaceNotFound=Pas de visage trouvé dans le fichier externe ! -MenuClass.AddToGraph=Ajouter à l'analyse de liens +MenuClass.AddToGraph=Ajouter à l''analyse de liens MenuClass.ChangeGalleryColCount=Modifier le nombre de colonnes de la galerie MenuClass.ChangeLayout=Changer la disposition Vertical/Horizontal MenuClass.CheckHighlighted=Vérifier les éléments en surbrillance MenuClass.CheckRecursivelyHighlighted=Vérifier les sous-éléments et éléments en surbrillance -MenuClass.ClearSearches=Supprimer l'historique des recherches +MenuClass.ClearSearches=Supprimer l''historique des recherches MenuClass.ColorTheme=Couleur du Thème -MenuClass.CopyViewerImage=Faire une capture d'écran de la visionneuse +MenuClass.CopyViewerImage=Faire une capture d''écran de la visionneuse MenuClass.ExportChecked=Exporter les éléments cochés MenuClass.ExportCheckedToZip=Exporter les résultats cochés au format Zip MenuClass.ExportHighlighted=Exporter les éléments surlignés @@ -222,9 +222,9 @@ MenuClass.ExportIndexedWords=Exporter la liste des expressions indexées MenuClass.ExportItens=Exporter les éléments... MenuClass.ExportProps.Checked=Exporter les propriétés des éléments cochés MenuClass.ExportProps.Highlighed=Exporter les propriétés des éléments surlignés -MenuClass.ExportTree=Exporter l'arborescence des fichiers -MenuClass.ExportTree.Checked=Exporter l'arborescence des fichiers (éléments sélectionnés) -MenuClass.ExportTreeToZip.Checked=Exporter l'arborescence des fichiers au format ZIP (éléments sélectionnés) +MenuClass.ExportTree=Exporter l''arborescence des fichiers +MenuClass.ExportTree.Checked=Exporter l''arborescence des fichiers (éléments sélectionnés) +MenuClass.ExportTreeToZip.Checked=Exporter l''arborescence des fichiers au format ZIP (éléments sélectionnés) MenuClass.FindSimilarDocs=Recherche des documents similaires MenuClass.FindSimilarImages=Recherche des images similaires MenuClass.FindSimilarImages.Current=Elément en surbrillance @@ -233,7 +233,7 @@ MenuClass.FindSimilarFaces=Recherche des images similaires MenuClass.FindSimilarFaces.Current=Elément en surbrillance MenuClass.FindSimilarFaces.External=Visage externe... MenuClass.GenerateReport=Créer un rapport indexé -MenuClass.GoToParent=Retour à la racine de l'arborescence de fichier +MenuClass.GoToParent=Retour à la racine de l''arborescence de fichier MenuClass.GoToChat=Retour à la racine du chat MenuClass.ImportKeywords=Importer une liste de mots-clés MenuClass.LayoutAppearance=Disposition / Apparence @@ -257,14 +257,14 @@ MenuClass.UnCheckHighlighted=Décocher les éléments en surbrillance MenuClass.UnCheckRecursivelyHighlighted=Décocher les éléments et sous-éléments en surbrillance MenuListener.ChatNotFound=Origine du chat non trouvé MenuListener.Cols=Colonnes : -MenuListener.ExportTree.Warn=Selectionner 01 (un) nœud de l'arborescence comme référence d'export \! +MenuListener.ExportTree.Warn=Selectionner 01 (un) nœud de l''arborescence comme référence d''export \! MenuListener.Gallery=Galerie MenuListener.PinFirstCols=Epingler les premières colonnes MenuListener.SimilarityLabel=Taux de similitude (0 à 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Importer tous les resultat des mots-clés dans un favori unique MenuListener.CheckAddKeywordsAsMultipleBookmarks=Importer les résutlatas de chaque mot-clé dans un favori séparé MenuListener.TableAndOthers=Tableau et autres -MenuListener.UiScaleDialog=Définir l'échelle de l'interface.\nUtilisez une valeur à virgule flottante (par exemple 1.5) ou '{}' pour ajuster automatiquement le zoom.\nVous devez redémarrer l'application pour que cette modification prenne effet. +MenuListener.UiScaleDialog=Définir l''échelle de l''interface.\nUtilisez une valeur à virgule flottante (par exemple 1.5) ou ''{}'' pour ajuster automatiquement le zoom.\nVous devez redémarrer l''application pour que cette modification prenne effet. MetadataPanel.AlphaNumeric=Alphanumérique MetadataPanel.Clear=Supprimer le filtre de métadonnées MetadataPanel.Group=Groupe : @@ -283,8 +283,8 @@ MetadataPanel.FilterValues=Valeurs MetadataPanel.CopyClipboard=Copier dans le presse papier MetadataPanel.UpdateWarn=[Cliquer pour mettre à jour] NoJavaFX.Error=Cette application a besoin que JavaFX soit installé ! -ProcessingNotFinished.title=Le processus n'est pas terminé -ProcessingNotFinished.message=Le traitement ne s'est pas terminé correctement. De nombreux éléments du dossier peuvent être manquants, y compris ceux alloués.\nEssayez de le reprendre avec l'option --continuer. +ProcessingNotFinished.title=Le processus n''est pas terminé +ProcessingNotFinished.message=Le traitement ne s''est pas terminé correctement. De nombreux éléments du dossier peuvent être manquants, y compris ceux alloués.\nEssayez de le reprendre avec l''option --continuer. ProcessingNotFinished.cases=\ Les cas suivants sont concernés : ProcessingNotFinished.evidence=Preuve affectée : ReferencesTab.Title=Référencement @@ -297,8 +297,8 @@ ResultTableModel.Error=ERREUR ResultTableModel.FATDateFormat=dd/MM/yyyy ResultTableRowSorter.Sorting=Tri... ReportDialog.AddToReport=Ajouter à un rapport existant -ReportDialog.AppendWarning=Le rapport HTML existant n'est pas encore mis à jour, le cas est seulement indexé ! -ReportDialog.CaseInfo=Compléter les informations du cas (numéro du cas, nom de l'analyste, numéro du rapport...) +ReportDialog.AppendWarning=Le rapport HTML existant n''est pas encore mis à jour, le cas est seulement indexé ! +ReportDialog.CaseInfo=Compléter les informations du cas (numéro du cas, nom de l''analyste, numéro du rapport...) ReportDialog.ChooseLabel=Sélectionner les favoris à insérer dans le rapport : ReportDialog.Create=Création ReportDialog.ErrorTitle=Erreur @@ -311,12 +311,12 @@ ReportDialog.LoadButton=Chargement ReportDialog.LoadInfo=Charger les informations du cas à partir du fichier .json ou .asap : ReportDialog.NoAttachments=Ne pas exporter automatiquement les pièces jointes des e-mails ReportDialog.noLinkedItems=Ne pas exporter automatiquement les pièces jointes du chat -ReportDialog.Output=Dossier d'enregistrement : -ReportDialog.OutputRequired=Dossier d'enregistrement requis \! +ReportDialog.Output=Dossier d''enregistrement : +ReportDialog.OutputRequired=Dossier d''enregistrement requis \! ReportDialog.Record=Numéro de dossier ReportDialog.RecordDate=Date du dossier ReportDialog.ReportDate=Date du rapport -ReportDialog.ReportError=Erreur de création du rapport, vérifier le log d'erreurs \! +ReportDialog.ReportError=Erreur de création du rapport, vérifier le log d''erreurs \! ReportDialog.ReportFinished=Rapport créé \! ReportDialog.ReportNum=Numéro de rapport ReportDialog.ReportTitle=Titre du rapport @@ -336,11 +336,11 @@ UISearcher.Canceled=Arrêter la recherche \! UISearcher.Error.Msg=Erreur de syntaxe dans la requête : UISearcher.Error.Title=Erreur UnsupportedIcon.Unavailable=Vignette non supportée -ViewerController.OfficeViewerUnSupported=La visionneuse Office n'est plus prise en charge dans Java 32 bits ! Veuillez installer un Java 64 bits. +ViewerController.OfficeViewerUnSupported=La visionneuse Office n''est plus prise en charge dans Java 32 bits ! Veuillez installer un Java 64 bits. ViewerController.FixViewer=Correction de la visionneuse ViewerController.NextHit=Résultat suivant ViewerController.PrevHit=Résultat précédent -ViewerController.ShowToolBar=Afficher/Masquer la barre d'outils +ViewerController.ShowToolBar=Afficher/Masquer la barre d''outils HexSearcherImpl.hits=résultats HexSearcherImpl.hit=résultat HexSearcherImpl.of=de @@ -348,17 +348,17 @@ HexSearcherImpl.timeLeft=Temps restant HexSearcherImpl.noHits=Aucun résultat trouvé Theme.Dark=Mode sombre Theme.Light=Mode clair (default) -TimeLineGraph.highlightEventItensOnPeriod=Mettre en surbrillance les éléments d'évènement dans la période +TimeLineGraph.highlightEventItensOnPeriod=Mettre en surbrillance les éléments d''évènement dans la période TimeLineGraph.highlightItensOnPeriod=Mettre en surbrillance les éléments dans la période -TimeLineGraph.checkEventItensOnPeriod=Cocher les éléments de l'évènement dans la période +TimeLineGraph.checkEventItensOnPeriod=Cocher les éléments de l''évènement dans la période TimeLineGraph.checkItensOnPeriod=Vérifier les éléments dans la plage TimeLineGraph.filterBefore=Filtrer avant TimeLineGraph.filterAfter=Filtrer après TimeLineGraph.selectBefore=Mettre en surbrillance avant TimeLineGraph.selectAfter=Mettre en surbrillance après TimeLineGraph.filterAllDefinedIntervals=Filtrer les intervalles définies -TimeLineGraph.selectItensOnThisInterval=Mettre en surbrillance les éléments de l'intervalle sélectionné -TimeLineGraph.deleteInterval=Supprimer l'intervalle +TimeLineGraph.selectItensOnThisInterval=Mettre en surbrillance les éléments de l''intervalle sélectionné +TimeLineGraph.deleteInterval=Supprimer l''intervalle TimeLineGraph.continueIntervalSelection=Continuer à sélectionner des intervalles... TimeLineGraph.hideSeriesOnChart=Masquer sur le graphique TimeLineGraph.filterEventFromResultSet=Supprimer du jeu de résultats @@ -383,9 +383,9 @@ TimeLineGraph.Timezone=Fuseau horaire TimeLineGraph.applyDefinedFilters=Appliquer les filtres définis TimeLineGraph.clearDefinedFilters=Effacer les filtres définis TimeLineGraph.openIntervalsDialogMenu=Ouvrir la boîte de dialogue de définition de plage horaire... -TimeLineGraph.visibleRangeToGreat=La plage visible est trop grande pour l'échelle actuelle %s.\n Souhaitez-vous continuer et zoomer en centrant sur la date du milieu %s ? -TimeLineGraph.visibleZoominForGranularity=Zoom avant maximum atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer à zoomer ? -TimeLineGraph.visibleZoomoutForGranularity=Le zoom arrière maximum atteint pour l'échelle %s.\n Souhaitez-vous changer l'échelle en %s et continuer le zoom arrière ? +TimeLineGraph.visibleRangeToGreat=La plage visible est trop grande pour l''échelle actuelle %s.\n Souhaitez-vous continuer et zoomer en centrant sur la date du milieu %s ? +TimeLineGraph.visibleZoominForGranularity=Zoom avant maximum atteint pour l''échelle %s.\n Souhaitez-vous changer l''échelle en %s et continuer à zoomer ? +TimeLineGraph.visibleZoomoutForGranularity=Le zoom arrière maximum atteint pour l''échelle %s.\n Souhaitez-vous changer l''échelle en %s et continuer le zoom arrière ? TimeLineGraph.syncTableSelectionInChartView=Afficher la table en surbrillance dans le diagramme temporel TimeLineGraph.resetZoom=Réinitialiser le zoom TimeLineGraph.selectAllEventTypes=Sélectionner tous les évènements @@ -411,7 +411,7 @@ iped.app.ui.ComboFilterer.tooltip=Selectionner un filtre Prédéfini iped.app.ui.MetadataPanel.filtererName=Filtrer Metadata iped.app.ui.TableHeaderFilterManager.filtererName=Filtre En-tête du Tableau iped.app.ui.TimelineListener.filtererName=Filtre Timeline -iped.app.ui.TreeListener.filtererName=Filtre de l'arborescence des preuves +iped.app.ui.TreeListener.filtererName=Filtre de l''arborescence des preuves iped.app.ui.filterdecisiontree.CombinedFilterer.filtererName=Filtre Combiné iped.app.ui.filterdecisiontree.CombinedFilterer.tooltip=Appliquer le Filtre Combiné FilterValue.Duplicates=Résultat du Filtre des Doublons @@ -427,9 +427,9 @@ OperandMenu.addAnd=Ajouter le noeud ET OperandMenu.addOr=Ajouter le noeud OU OperandMenu.removeNode=Supprimer le noeud FiltererMenu.clearFilters=Effacer les filtre -FiltererMenu.goToItem=Aller à l'élément référencé -FiltererMenu.ItemNotInRS=L'élément référencé n''existe pas dans les résultats actuels. -FiltersPanel.addQueryFilterError=Cela n''a pas été possible d'ajouter le filtre à cause d'une erreur interne. +FiltererMenu.goToItem=Aller à l''élément référencé +FiltererMenu.ItemNotInRS=L''élément référencé n''existe pas dans les résultats actuels. +FiltersPanel.addQueryFilterError=Cela n''a pas été possible d''ajouter le filtre à cause d''une erreur interne. FieldValuePopupMenu.NonEmpty=Pas vide FieldValuePopupMenu.Empty=Vide FieldValuePopupMenu.Contains=Contient ... From bba6bf8859f3112fdbaab8d8bed48413b820e32f Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Fri, 17 May 2024 23:14:54 -0300 Subject: [PATCH 092/126] escape single quote in all localization files --- .../iped-categories_fr_FR.properties | 24 +++---- .../iped-desktop-messages.properties | 4 +- .../iped-desktop-messages_de_DE.properties | 4 +- .../iped-desktop-messages_es_AR.properties | 4 +- .../iped-desktop-messages_it_IT.properties | 4 +- .../iped-desktop-messages_pt_BR.properties | 2 +- .../iped-engine-messages.properties | 8 +-- .../iped-engine-messages_de_DE.properties | 6 +- .../iped-engine-messages_es_AR.properties | 6 +- .../iped-engine-messages_fr_FR.properties | 26 +++---- .../iped-engine-messages_it_IT.properties | 16 ++--- .../iped-engine-messages_pt_BR.properties | 4 +- .../iped-filters_fr_FR.properties | 2 +- .../iped-geo-messages_fr_FR.properties | 4 +- .../iped-geo-messages_it_IT.properties | 2 +- .../iped-parsers-messages.properties | 16 ++--- .../iped-parsers-messages_de_DE.properties | 16 ++--- .../iped-parsers-messages_es_AR.properties | 14 ++-- .../iped-parsers-messages_fr_FR.properties | 68 +++++++++---------- .../iped-parsers-messages_it_IT.properties | 22 +++--- .../iped-viewer-messages_fr_FR.properties | 18 ++--- 21 files changed, 135 insertions(+), 135 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index ac23348b31..6412e06ac0 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -18,36 +18,36 @@ Emails=E-mails Mailboxes=Boites Mails Appointments=Calendriers GDrive\ Synced\ Files=Fichiers de\ synchronisation\ GDrive -GDrive\ File\ Entries=Fichier de \ l'application\ GDrive +GDrive\ File\ Entries=Fichier de \ l''application\ GDrive Databases=Bases de données Compressed\ Archives=Archives\ (Fichiers compressés) Contacts=Contacts Chats=Chats Others\ Chats=Autres\ Chats Windows\ Artifacts=Artéfacts\ Windows -Event\ Files=Fichiers\ d'évènements -Event\ Records=Enregistrements\ d'évènements +Event\ Files=Fichiers\ d''évènements +Event\ Records=Enregistrements\ d''évènements Prefetch\ and\ Superfetch=Prefetch\ et\ Superfetch -User\ Activities=Activités de\ l'utilisateur +User\ Activities=Activités de\ l''utilisateur User\ Activities\ Entries=Utilisateurs\ Actibités\ Entrées Windows\ Registry=Registre de\ Windows Main\ Registry\ Files=Fichiers\Importants Other\ Registry\ Files=Autres\ Fichiers Registry\ Full\ Reports=Rapport\ Complet Registry\ Custom\ Reports=Rapport\ Personnalisé -Registry\ OS\ Info=Information sur\ l'OS +Registry\ OS\ Info=Information sur\ l''OS Registry\ Installed\ Apps=Applications\ Installées Registry\ Network\ Info=Informations\ Réseau Registry\ Storage\ Info=Informations\ sur le Stockage -Registry\ Device\ Info=Informations\ sur l'Appareil +Registry\ Device\ Info=Informations\ sur l''Appareil Registry\ Program\ Run=\ Liste des Programmes\ Exécutés Registry\ Auto\ Run=Exécution \Automatique de programmes Registry\ Log\ Info=Information sur les \ Logs Registry\ Malware\ Info=Information sur \ les Malware Registry\ Web\ Info=Informations\ Internet -Registry\ User\ Info=Informations\ sur l'Utilisateur +Registry\ User\ Info=Informations\ sur l''Utilisateur Registry\ User\ Accounts=Comptes\ Utilisateur -Registry\ User\ Activity=Activité\ de l'Utilisateur +Registry\ User\ Activity=Activité\ de l''Utilisateur Registry\ User\ Files=Fichiers\ Utilisateur\ Registry\ User\ Network\ Activity=Activité\ Réseau\ Utilisateur Registry\ User\ Config=Configuration\ Utilisateur @@ -110,14 +110,14 @@ Configuration=Configuration Passwords=Mot de passe Autofill=Remplissage automatique Cell\ Towers=Antenne\ relai -Power\ Events=Journal d'évènements\ (ON/OFF) +Power\ Events=Journal d''évènements\ (ON/OFF) User\ Dictionaries=Dictionnaire\ Utilisateur IP\ Connections=Connexions\ IP Recordings=Enregistrements Mobile\ Cards=Cartes\ Mobile Applications\ Usage=Utilisation\ des Applications Device\ Information=Informations\ Appareil -iPhone\ Backup=Sauvegardes\ d'iPhone +iPhone\ Backup=Sauvegardes\ d''iPhone Torchat=Torchat Tor=Tor TorTCFragment=Extraits de Communications Tor @@ -146,10 +146,10 @@ SEFIP\ Files=SEFIP\ Fichiers Social\ Connectivity\ Program\ Executables=Sociale\ Connexion\ Program\ Executables Social\ Connectivity\ Program\ Files=Sociale\ Connexion\ Program\ Files GRRF\ Files=GRRF\ Fichiers -Activities\ Sensor=Capteur\ d'Activités +Activities\ Sensor=Capteur\ d''Activités Chat\ Activities=Chats Credit\ Cards=Cartes de Crédit -Device\ Connectivity=Connexions\ de l'Appareil +Device\ Connectivity=Connexions\ de l''Appareil Device\ Events=Evènements File\ Downloads=Téléchargements File\ Uploads=Fichiers Uploadés diff --git a/iped-app/resources/localization/iped-desktop-messages.properties b/iped-app/resources/localization/iped-desktop-messages.properties index 8a4504e69e..0816cf96e1 100644 --- a/iped-app/resources/localization/iped-desktop-messages.properties +++ b/iped-app/resources/localization/iped-desktop-messages.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Similarity Score (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark MenuListener.TableAndOthers=Table and Others -MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or '{}' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. +MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or ''{}'' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. MetadataPanel.AlphaNumeric=AlphaNumeric MetadataPanel.Clear=Clear metadata filter MetadataPanel.Group=Group: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node OperandMenu.removeNode=Remove node FiltererMenu.clearFilters=Clear filters FiltererMenu.goToItem=Go to referenced item -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set. +FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set. FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception. FieldValuePopupMenu.NonEmpty=Non empty FieldValuePopupMenu.Empty=Empty diff --git a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties index 5c0e3187ee..57e32895c3 100644 --- a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Ähnlichkeitswert (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Table and Others[TBT] -MenuListener.UiScaleDialog=Zoom-Faktor für das Benutzerinterface setzen.\nVerwende eine Fließkommazahl (e.g. 1.5) oder '{}' um den Zomm automatisch einzustellen.\nZur Aktivierung ist das Anwendung neu zu starten. +MenuListener.UiScaleDialog=Zoom-Faktor für das Benutzerinterface setzen.\nVerwende eine Fließkommazahl (e.g. 1.5) oder ''{}'' um den Zomm automatisch einzustellen.\nZur Aktivierung ist das Anwendung neu zu starten. MetadataPanel.AlphaNumeric=Alpha-Numerisch MetadataPanel.Clear=Metadaten Filter löschen MetadataPanel.Group=Gruppe: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties index 7035a96eff..5e138ca31f 100644 --- a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Puntuación de similitud (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Tabla y Otros -MenuListener.UiScaleDialog=Establezca el nuevo factor de escala de zoom de la interfaz.\nUse un valor de punto flotante (por ejemplo, 1,5) o '{}' para ajustar el zoom automáticamente.\nNecesita reiniciar la aplicación para que este cambio surta efecto. +MenuListener.UiScaleDialog=Establezca el nuevo factor de escala de zoom de la interfaz.\nUse un valor de punto flotante (por ejemplo, 1,5) o ''{}'' para ajustar el zoom automáticamente.\nNecesita reiniciar la aplicación para que este cambio surta efecto. MetadataPanel.AlphaNumeric=Alfanumérico MetadataPanel.Clear=Borrar filtro de metadatos MetadataPanel.Group=Grupo: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_it_IT.properties b/iped-app/resources/localization/iped-desktop-messages_it_IT.properties index a0747a92a6..8de7b02f9a 100644 --- a/iped-app/resources/localization/iped-desktop-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-desktop-messages_it_IT.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Percentuale di somiglianza (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Table and Others[TBT] -MenuListener.UiScaleDialog=Imposta il nuovo fattore di scala dello zoom dell''interfaccia.\nUsa un valore in virgola mobile (ad esempio 1,5) o '{}' per regolare lo zoom automaticamente.\nÈ necessario riavviare l''applicazione perché questa modifica abbia effetto. +MenuListener.UiScaleDialog=Imposta il nuovo fattore di scala dello zoom dell''interfaccia.\nUsa un valore in virgola mobile (ad esempio 1,5) o ''{}'' per regolare lo zoom automaticamente.\nÈ necessario riavviare l''applicazione perché questa modifica abbia effetto. MetadataPanel.AlphaNumeric=Alfanumerico MetadataPanel.Clear=Cancella filtro metadati MetadataPanel.Group=Gruppo: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties index 28561328a3..16d635b7fd 100644 --- a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Porcentual de similaridade (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Importar todos os resultados de palavras-chave num único marcador MenuListener.CheckAddKeywordsAsMultipleBookmarks=Importar os resultados de cada palavra-chave num marcador separado MenuListener.TableAndOthers=Tabela e Outros -MenuListener.UiScaleDialog=Defina o novo fator de zoom da interface.\nUse um valor decimal (ex: 1.5) ou '{}' para ajustar o zoom automaticamente.\nÉ necessário reiniciar a interface para esta configuração ter efeito. +MenuListener.UiScaleDialog=Defina o novo fator de zoom da interface.\nUse um valor decimal (ex: 1.5) ou ''{}'' para ajustar o zoom automaticamente.\nÉ necessário reiniciar a interface para esta configuração ter efeito. MetadataPanel.AlphaNumeric=Alfanumérica MetadataPanel.Clear=Limpar filtro de metadados MetadataPanel.Group=Grupo: diff --git a/iped-app/resources/localization/iped-engine-messages.properties b/iped-app/resources/localization/iped-engine-messages.properties index 2a9e8db475..f025646c95 100644 --- a/iped-app/resources/localization/iped-engine-messages.properties +++ b/iped-app/resources/localization/iped-engine-messages.properties @@ -33,11 +33,11 @@ HTMLReportTask.Yes=Yes Main.Finished=Finished IPEDSource.ImageNotFound=Image Not Found:\ IPEDSource.ImgFragNotFound=Image segment not found:\ -ItemProducer.Adding=Adding ' +ItemProducer.Adding=Adding '' JavaVersion.Error=Unsupported java version. Update to version {}. JavaVersion.Warn=Java version {} not tested, unexpected errors may occur! JavaVersion.Bug=Problematic Java version {1} detected! Update to the latest Java {2} or the program may crash. -JavaVersion.Arch=You are using a java 32bits, some features won't work properly. Please update to a java 64 bits! +JavaVersion.Arch=You are using a java 32bits, some features won''t work properly. Please update to a java 64 bits! Manager.Adding=Adding " Manager.ClosingIndex=Closing Index... Manager.CopyingIndex=Copying Index... @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Total Memory ProgressFrame.VolumeFound=Volume Found ProgressFrame.VolumeProcessed=Volume Processed ProgressFrame.WaitingItem=Waiting Item... -RegexTask.SeparatorNotFound.1=Separator '=' not found in\ +RegexTask.SeparatorNotFound.1=Separator ''='' not found in\ RegexTask.SeparatorNotFound.2=\ line:\ ReportInfo.EvidencePrefix=Evidence\ SleuthkitReader.Creating=Creating\ SleuthkitReader.WaitDecode=Wait, decoding image\ -Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease 'numthreads' in LocalConfig.txt. +Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease ''numthreads'' in LocalConfig.txt. Statistics.LowMemory.Title=Memory Alert UfedXmlReader.Attachments=Attachments UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_de_DE.properties b/iped-app/resources/localization/iped-engine-messages_de_DE.properties index 5706690362..e893516adf 100644 --- a/iped-app/resources/localization/iped-engine-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-engine-messages_de_DE.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Ja Main.Finished=beendet IPEDSource.ImageNotFound=Bild nicht gefunden:\ IPEDSource.ImgFragNotFound=Bildausschnit nicht gefunden:\ -ItemProducer.Adding=Füge hinzu ' +ItemProducer.Adding=Füge hinzu '' JavaVersion.Error=Nicht unterstützte Java-Version. Bitte aktualisiere auf Version {}. JavaVersion.Warn=Java Version {} nicht getested, unerwartete Fehler können auftreten! JavaVersion.Bug=Problematische Java Version {1} entdeckt! Bitte Update auf die letzte Java Version {2} durchführen oder unerwartete Fehler können auftreten! @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=gesamter Speicher ProgressFrame.VolumeFound=Volume gefunden ProgressFrame.VolumeProcessed=Volume verarbeitet ProgressFrame.WaitingItem=wartendes Element... -RegexTask.SeparatorNotFound.1=Separator '=' nicht gefunden in\ +RegexTask.SeparatorNotFound.1=Separator ''='' nicht gefunden in\ RegexTask.SeparatorNotFound.2=\ Zeile:\ ReportInfo.EvidencePrefix=Beweismittel\ SleuthkitReader.Creating=Erstelle\ SleuthkitReader.WaitDecode=Warte, dekodiere Abbild\ -Statistics.LowMemory.Msg=Nicht genügend Speicherplatz vorhanden: unterhalb {}MB je Verabeitungs-Thread.\n Es kann zur Verlangsamung oder zu Fehlern beim Parsen komplexer Dateien führen.\n Verwende eine x64 JVM (vorzugsweise),\n vergrößere den Heap-Speicher mit der Java-Option -Xmx\n oder veringere 'numthreads' in LocalConfig.txt. +Statistics.LowMemory.Msg=Nicht genügend Speicherplatz vorhanden: unterhalb {}MB je Verabeitungs-Thread.\n Es kann zur Verlangsamung oder zu Fehlern beim Parsen komplexer Dateien führen.\n Verwende eine x64 JVM (vorzugsweise),\n vergrößere den Heap-Speicher mit der Java-Option -Xmx\n oder veringere ''numthreads'' in LocalConfig.txt. Statistics.LowMemory.Title=Speicherwarnung UfedXmlReader.Attachments=Anhänge UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_es_AR.properties b/iped-app/resources/localization/iped-engine-messages_es_AR.properties index bfb7d783b9..cc93efab19 100644 --- a/iped-app/resources/localization/iped-engine-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-engine-messages_es_AR.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Sí Main.Finished=Finalizado IPEDSource.ImageNotFound=Imagen no encontrada:\ IPEDSource.ImgFragNotFound=Segmento de imagen no encontrado:\ -ItemProducer.Adding=Analizando ' +ItemProducer.Adding=Analizando '' JavaVersion.Error=Versión de Java no admitida. Actualizar a la versión {}. JavaVersion.Warn=Versión de Java {} no probada, ¡pueden ocurrir errores inesperados! JavaVersion.Bug=¡Versión de Java problemática {1} detectada! Actualice a la versión más reciente de Java {2} o el programa puede bloquearse. @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Memoria Total ProgressFrame.VolumeFound=Tamaño de la evidencia ProgressFrame.VolumeProcessed=Tamaño analizado ProgressFrame.WaitingItem=Elemento en espera... -RegexTask.SeparatorNotFound.1=Separador '=' no encontrado en\ +RegexTask.SeparatorNotFound.1=Separador ''='' no encontrado en\ RegexTask.SeparatorNotFound.2=\ línea:\ ReportInfo.EvidencePrefix=Evidencia\ SleuthkitReader.Creating=Creando\ SleuthkitReader.WaitDecode=Espera, decodificando imagen\ -Statistics.LowMemory.Msg=Memoria de montón disponible insuficiente: menos de {}MB por subproceso de procesamiento.\n Puede causar lentitud o errores de análisis en archivos complejos.\n Use una JVM x64 (preferiblemente), \n aumente el montón con java - Opción Xmx \n o disminuya 'numthreads' en LocalConfig.txt. +Statistics.LowMemory.Msg=Memoria de montón disponible insuficiente: menos de {}MB por subproceso de procesamiento.\n Puede causar lentitud o errores de análisis en archivos complejos.\n Use una JVM x64 (preferiblemente), \n aumente el montón con java - Opción Xmx \n o disminuya ''numthreads'' en LocalConfig.txt. Statistics.LowMemory.Title=Alerta de memoria UfedXmlReader.Attachments=Adjuntos UfedXmlReader.Bcc=CCO diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index a52cfe887d..6103c5f815 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -15,10 +15,10 @@ HTMLReportTask.Category=Catégorie HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss HTMLReportTask.FileCount=Compteur de fichier HTMLReportTask.FirstPage=Première page -HTMLReportTask.GalleryLink=Galerie d'images +HTMLReportTask.GalleryLink=Galerie d''images HTMLReportTask.GalleryTitle=Vignette HTMLReportTask.LastPage=Dernière page -HTMLReportTask.MakingHtmlReport=Création d'un rapport HTML... +HTMLReportTask.MakingHtmlReport=Création d''un rapport HTML... HTMLReportTask.NextPage=Page suivante HTMLReportTask.No=Non HTMLReportTask.NoBookmarks=[Pas de favori] @@ -32,19 +32,19 @@ HTMLReportTask.VideoThumbs=Vignette vidéo HTMLReportTask.Yes=Oui Main.Finished=Terminé IPEDSource.ImageNotFound=Image Non trouvée:\ -IPEDSource.ImgFragNotFound=Morceau d'image non trouvé:\ +IPEDSource.ImgFragNotFound=Morceau d''image non trouvé:\ ItemProducer.Adding=Ajouter JavaVersion.Error=Version de java non supportée. Mettre à jour la version {}. -JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c'est produite! +JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c''est produite! JavaVersion.Bug=Problème avec la version e Java {1} detecté! Installer la dernière version de Java {2} sinon le programme risque de ne pas fonctionner. JavaVersion.Arch=Vous utilisez ue version 32 bits de Java, certaines fonctionnalités peuvent ne pas fonctionner correctement. Merci de mettre jour vers une version 64 bits! Manager.Adding=Ajouter " Manager.ClosingIndex=Index de clotûre... Manager.CopyingIndex=Index de copie... -Manager.OpeningIndex=Index d'ouverture... -Manager.DeletingTreeNodes=Supprimer les noeuds vides de l'arborescence +Manager.OpeningIndex=Index d''ouverture... +Manager.DeletingTreeNodes=Supprimer les noeuds vides de l''arborescence Manager.FilteringKeywords=Filtrer les mots clés... -Manager.Optimizing=Optimisation de l'index... +Manager.Optimizing=Optimisation de l''index... Manager.CommitStarted=Commencer la validation... Manager.CommitFinished=Validation terminée. P2PBookmarker.P2PBookmarkPrefix=Probablement partagé avec\ @@ -54,7 +54,7 @@ ProgressConsole.Found=Trouvé\ ProgressConsole.Processing=En cours de traitement\ ProgressConsole.Starting=Début... ProgressFrame.ActiveProcessed=Eléments traités -ProgressFrame.AlreadyOpen=L'application d'analyse est déjà ouverte\! +ProgressFrame.AlreadyOpen=L''application d''analyse est déjà ouverte\! ProgressFrame.Carved=Eléments carvés ProgressFrame.CarvedDiscarded=Eléments carvés exclus ProgressFrame.Continue=Continuer @@ -79,8 +79,8 @@ ProgressFrame.OutputFree=Espace libre ProgressFrame.OutputTempFree=Sortie/Temp libre ProgressFrame.OutputTempVolume=Volume de sortie/temp ProgressFrame.OutputVolume=Volume de sortie -ProgressFrame.ParserTimes=Durer d'analyse -ProgressFrame.ParsingErrors=Erreurs d'analyse +ProgressFrame.ParserTimes=Durer d''analyse +ProgressFrame.ParsingErrors=Erreurs d''analyse ProgressFrame.Pause=Pause ProgressFrame.Paused=[En pause] ProgressFrame.Pausing=[Faire une pause...] @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Mémoire totale ProgressFrame.VolumeFound=Volume trouvé ProgressFrame.VolumeProcessed=Volume traité ProgressFrame.WaitingItem=En attente... -RegexTask.SeparatorNotFound.1=Separateur '=' non trouvé dans\ +RegexTask.SeparatorNotFound.1=Separateur ''='' non trouvé dans\ RegexTask.SeparatorNotFound.2=\ ligne:\ ReportInfo.EvidencePrefix=Extraction\ SleuthkitReader.Creating=Créer\ -SleuthkitReader.WaitDecode=Décodage de l'image en cours\ -Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l'analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l'option java -Xmx \n ou diminuez-le 'numthreads' dans me fichier LocalConfig.txt. +SleuthkitReader.WaitDecode=Décodage de l''image en cours\ +Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l''analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l''option java -Xmx \n ou diminuez-le ''numthreads'' dans me fichier LocalConfig.txt. Statistics.LowMemory.Title=Alerte/Mémoire UfedXmlReader.Attachments=Pièces jointes UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_it_IT.properties b/iped-app/resources/localization/iped-engine-messages_it_IT.properties index d14873ab81..43128139ff 100644 --- a/iped-app/resources/localization/iped-engine-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-engine-messages_it_IT.properties @@ -33,16 +33,16 @@ HTMLReportTask.Yes=Sì Main.Finished=Terminato IPEDSource.ImageNotFound=Immagine non trovata:\ IPEDSource.ImgFragNotFound=Segmento immagine non trovato:\ -ItemProducer.Adding=Aggiungo ' +ItemProducer.Adding=Aggiungo '' JavaVersion.Error=Versione java non supportata. Aggiorna alla versione {}. JavaVersion.Warn=Versione Java {} non testata, potrebbero verificarsi errori inaspettati! -JavaVersion.Bug=Rilevata versione Java {1} problematica! Aggiorna all'ultima Java {2} o il programma potrebbe bloccarsi. +JavaVersion.Bug=Rilevata versione Java {1} problematica! Aggiorna all''ultima Java {2} o il programma potrebbe bloccarsi. JavaVersion.Arch=Stai usando java a 32bit, alcune funzioni non funzioneranno correttamente. Per favore aggiorna a java a 64bit! Manager.Adding=Aggiungo " Manager.ClosingIndex=Chiudo Indice... Manager.CopyingIndex=Copio Indice... Manager.OpeningIndex=Apro Indice... -Manager.DeletingTreeNodes=Eliminazione dei nodi dell'albero vuoti +Manager.DeletingTreeNodes=Eliminazione dei nodi dell''albero vuoti Manager.FilteringKeywords=Filtro parole chiave... Manager.Optimizing=Ottimizzo Indice... Manager.CommitStarted=Avvio commit... @@ -54,7 +54,7 @@ ProgressConsole.Found=Trovato\ ProgressConsole.Processing=Elaborazione\ ProgressConsole.Starting=Avvio... ProgressFrame.ActiveProcessed=Elementi attualmente elaborati -ProgressFrame.AlreadyOpen=L'app di analisi è già aperta\! +ProgressFrame.AlreadyOpen=L''app di analisi è già aperta\! ProgressFrame.Carved=Elementi recuperati ProgressFrame.CarvedDiscarded=Elementi recuperati scartati ProgressFrame.Continue=Continua @@ -67,7 +67,7 @@ ProgressFrame.FinishIn=\ - Termina in\ ProgressFrame.Found=Trovato\ ProgressFrame.FreeMemory=Memoria libera ProgressFrame.Ignored=Elementi ignorati -ProgressFrame.IncompleteProcessing=Molti elementi del Caso potrebbero non essere disponibili fino al termine dell'elaborazione\! +ProgressFrame.IncompleteProcessing=Molti elementi del Caso potrebbero non essere disponibili fino al termine dell''elaborazione\! ProgressFrame.items=\ elementi ProgressFrame.ItemsFound=Elementi trovati ProgressFrame.ItemsProcessed=Elementi elaborati @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Memoria totale ProgressFrame.VolumeFound=Dati trovati ProgressFrame.VolumeProcessed=Dati elaborati ProgressFrame.WaitingItem=Elemento in attesa... -RegexTask.SeparatorNotFound.1=Separatore '=' non trovato in\ +RegexTask.SeparatorNotFound.1=Separatore ''='' non trovato in\ RegexTask.SeparatorNotFound.2=\ linea:\ ReportInfo.EvidencePrefix=Reperto\ SleuthkitReader.Creating=Creando\ -SleuthkitReader.WaitDecode=Attendi, decodifica dell'immagine\ -Statistics.LowMemory.Msg=Memoria heap disponibile insufficiente: meno di {}MB per thread di elaborazione.\n Può causare lentezza o errori di analisi su file complessi.\n Usa una JVM x64 (preferibilmente), \n aumenta la memoria heap con l'opzione java -Xmx \n o diminuisci 'numthreads' in LocalConfig.txt. +SleuthkitReader.WaitDecode=Attendi, decodifica dell''immagine\ +Statistics.LowMemory.Msg=Memoria heap disponibile insufficiente: meno di {}MB per thread di elaborazione.\n Può causare lentezza o errori di analisi su file complessi.\n Usa una JVM x64 (preferibilmente), \n aumenta la memoria heap con l''opzione java -Xmx \n o diminuisci ''numthreads'' in LocalConfig.txt. Statistics.LowMemory.Title=Avviso memoria UfedXmlReader.Attachments=Allegati UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_pt_BR.properties b/iped-app/resources/localization/iped-engine-messages_pt_BR.properties index 3213542ba4..c80888b537 100644 --- a/iped-app/resources/localization/iped-engine-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-engine-messages_pt_BR.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Sim Main.Finished=Finalizado IPEDSource.ImageNotFound=Arquivo de Imagem não encontrado:\ IPEDSource.ImgFragNotFound=Segmento de Imagem não encontrado:\ -ItemProducer.Adding=Adicionando ' +ItemProducer.Adding=Adicionando '' JavaVersion.Error=Versão do java não suportada. Atualize para a versão {}. JavaVersion.Warn=Java versão {} não testado, podem ocorrer erros inesperados! JavaVersion.Bug=Versão problemática do Java {1} detectada! Atualize para o último Java {2} ou o programa pode fechar abruptamente. @@ -99,7 +99,7 @@ ProgressFrame.TotalMemory=Memória Total ProgressFrame.VolumeFound=Volume Descoberto ProgressFrame.VolumeProcessed=Volume Processado ProgressFrame.WaitingItem=Aguardando item... -RegexTask.SeparatorNotFound.1=Caracter '=' não encontrado em\ +RegexTask.SeparatorNotFound.1=Caracter ''='' não encontrado em\ RegexTask.SeparatorNotFound.2=\ linha:\ ReportInfo.EvidencePrefix=Material\ SleuthkitReader.Creating=Criando\ diff --git a/iped-app/resources/localization/iped-filters_fr_FR.properties b/iped-app/resources/localization/iped-filters_fr_FR.properties index 86dcf2c85c..e018aad4b0 100644 --- a/iped-app/resources/localization/iped-filters_fr_FR.properties +++ b/iped-app/resources/localization/iped-filters_fr_FR.properties @@ -4,7 +4,7 @@ Hash\ Alert\ (Child\ Porn)=Détection\ Hash\ (Pédopornographie) PhotoDNA\ Alert\ (Child\ Porn)=Détection\ PhotoDNA\ (Pédopornographie) Encrypted\ Files=Fichiers\ Chiffés Possibly\ encrypted\ (entropy)=Certainement\ chiffré\ (entropy) -Parsing\ Error=Erreur\ d'analyse +Parsing\ Error=Erreur\ d''analyse Read\ Error=Erreur\ de lecture Timeout=Temps dépassé Actual\ Files=Fichier\ actuel diff --git a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties index 024ea940b6..f528a05b08 100644 --- a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties @@ -5,11 +5,11 @@ KMLResult.Results=Résultats KMLResult.Save=Enregistrement KMLResult.SearchResults=Recherche des résultats KMLResult.SearchResultsDescription=Résultats de recherche GPS. -KMLResult.ShowInTree=Consulter dans l'arboresence. +KMLResult.ShowInTree=Consulter dans l''arboresence. JMapOptionsPane.title=Sélectionner la source de la carte utilisée JMapOptionsPane.GoogleApiKeyLabel=Saisissez une clé API Google Maps valide JMapOptionsPane.UseLeaflet=Utiliser la plateforme -JMapOptionsPane.UrlPatternLabel=Saisir l'URL source de la carte: +JMapOptionsPane.UrlPatternLabel=Saisir l''URL source de la carte: JMapOptionsPane.AnotherURL=Autre URL JMapOptionsPane.UseGoogleMaps=Utiliser Google Maps toolbar.Radius=Rayon diff --git a/iped-app/resources/localization/iped-geo-messages_it_IT.properties b/iped-app/resources/localization/iped-geo-messages_it_IT.properties index cc630f5f45..859fd1c980 100644 --- a/iped-app/resources/localization/iped-geo-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-geo-messages_it_IT.properties @@ -5,7 +5,7 @@ KMLResult.Results=Risultati KMLResult.Save=Salva KMLResult.SearchResults=Risultati della ricerca KMLResult.SearchResultsDescription=Risultati della ricerca GPS. -KMLResult.ShowInTree=Mostra nell'albero. +KMLResult.ShowInTree=Mostra nell''albero. JMapOptionsPane.title=Seleziona la sorgente della mappa da usare JMapOptionsPane.GoogleApiKeyLabel=Inserisci una chiave API Google Maps valida JMapOptionsPane.UseLeaflet=Usa Leaflet diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index ee4e2615c4..7863a09f18 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Video Call WhatsAppReport.UserJoinedGroupCommunity=joined group from community WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation WhatsAppReport.UserJoinedGroupLink=joined group from shared link -WhatsAppReport.ResetGroupLink=reset this group's invite link +WhatsAppReport.ResetGroupLink=reset this group''s invite link WhatsAppReport.GroupDescriptionChanged=Group description changed WhatsAppReport.GroupDescriptionDeleted=deleted group description WhatsAppReport.GroupNameChanged=changed the group name to @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralOff=turned off disappearing messages. WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat. WhatsAppReport.Days=days WhatsAppReport.Hours=hours -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group. -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info. -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info. -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages. -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages. +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group. +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info. +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info. +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages. +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages. WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group. WhatsAppReport.ChangedDevice=changed device. WhatsAppReport.ChangedNumberTo=changed to -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number. +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number. WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number. WhatsAppReport.SenderInContacts=is in your contacts. WhatsAppReport.SenderAddedToContacts=was added to your contacts. @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group. WhatsAppReport.CommunityManagementAction=Community management action. -WhatsAppReport.CommunityRenamed=changed the community's name +WhatsAppReport.CommunityRenamed=changed the community''s name WhatsAppReport.CommunityWelcome=Welcome to the community. WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group. WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number. diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 9a92066ad3..6c9ba2ebf6 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Videoanruf WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=hat sich über geteilten Link der Gruppe angeschlossen -WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Gruppenbeschreibung geändert WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Any community member can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community's name[TBT] +WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index 98359140cc..3fb2a43c55 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Video Llamada WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=se unió al grupo desde un enlace compartido -WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Se ha modificado la descripción del grupo WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 5dd2e31003..cec5ee0afe 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -22,7 +22,7 @@ DateFormat=dd/MM/yyyy HH:mm:ss DiscordParser.Attachments=Pièces jointes DiscordParser.Start=Début DiscordParser.End=Fin -DiscordParser.EditTime=Modifier l'heure: +DiscordParser.EditTime=Modifier l''heure: DiscordParser.Participants=Participants DiscordParser.Reactions=Réactions: DiscordParser.DateFormat0=(hh:mm:ss dd/MM/yyyy) @@ -46,7 +46,7 @@ KnownMetParser.FoundInCase=Trouvé dans le cas KnownMetParser.FoundInPedoHashDB=Pédopornographie trouvée dans la base de Hash KnownMetParser.LastModDate=Dernière date de modification (UTC) KnownMetParser.LastPubDate=Dernière date de publication (UTC) -KnownMetParser.LastShareDate=Dernière date d'échange +KnownMetParser.LastShareDate=Dernière date d''échange KnownMetParser.Name=Nom du fichier KnownMetParser.Requests=Total des demandes KnownMetParser.Seq=Séquence @@ -76,7 +76,7 @@ LNKShortcutParser.DriveSerial=Numéro de série du lecteur LNKShortcutParser.DriveType=Type de lecteur LNKShortcutParser.DroidFileId=Identifiant du fichier du Droid LNKShortcutParser.DroidVolId=Identifiant du volume du Droid -LNKShortcutParser.EntryType=Type d'entrée +LNKShortcutParser.EntryType=Type d''entrée LNKShortcutParser.Extensions=Extensions LNKShortcutParser.File=Fichier LNKShortcutParser.FileAttr=Attributs du fichier @@ -86,7 +86,7 @@ LNKShortcutParser.IconIndex=Index des icones LNKShortcutParser.IconLocation=Emplacement des icones LNKShortcutParser.LastMod=Dernière modification LNKShortcutParser.LinkAttr=Attributs des liens (Data Flags) -LNKShortcutParser.LinkLocationInfo=Information sur l'emplacement des liens (HasLinkInfo) +LNKShortcutParser.LinkLocationInfo=Information sur l''emplacement des liens (HasLinkInfo) LNKShortcutParser.LinkTargetID=Identification de la cible du lien (HasTargetIDList) LNKShortcutParser.LocalizedNames=Nom local du Shell LNKShortcutParser.LocalPath=Chemin local @@ -98,8 +98,8 @@ LNKShortcutParser.NetComments=commentaires du Net LNKShortcutParser.NetDescription=Descriptif du réseau LNKShortcutParser.NetDeviceName=Nom du périphérique réseau LNKShortcutParser.NetDevNameUnicode=Nom du périphérique réseau - Unicode -LNKShortcutParser.NetItemName=Nom de l'élément de réseau -LNKShortcutParser.NetItemType=Type d'élément de réseau +LNKShortcutParser.NetItemName=Nom de l''élément de réseau +LNKShortcutParser.NetItemType=Type d''élément de réseau LNKShortcutParser.NetProviderType=Type de fournisseur de réseau LNKShortcutParser.NetShare=Nom du dossier réseau LNKShortcutParser.NetShareUnicode=Nom du dossier réseau - Unicode @@ -138,7 +138,7 @@ ReportGenerator.Unknown=Inconnu ReportGenerator.UnknownDate=Horodatage inconnu RFC822Parser.AttachedEmail=PiècesjointesEmail.eml RFC822Parser.UnNamed=[Inconnu] -SkypeConversation.SkypeChat=Chat de l'application Skype\ +SkypeConversation.SkypeChat=Chat de l''application Skype\ SkypeFileTransfer.Download=Télécharhement SkypeFileTransfer.FileOffer=Proposition de fichier (*) SkypeFileTransfer.FileSend=Envoi de fichier @@ -149,7 +149,7 @@ SkypeReport.AcceptDate=Accepter la date SkypeReport.Attribute=Propriété SkypeReport.Author=Auteur SkypeReport.Avatar=Avatar: -SkypeReport.AvatarDate=Date de l'avatar +SkypeReport.AvatarDate=Date de l''avatar SkypeReport.BirthDate=Date de naissance SkypeReport.Chat=Chat SkypeReport.ChatID=Identifiant du chat @@ -188,7 +188,7 @@ SkypeReport.ProfileDate=Date du profil SkypeReport.Province=Province SkypeReport.PstnNum=Numéro PSTN SkypeReport.Recipient=Correspondant -SkypeReport.RemoteID=Identifiant d'envoi +SkypeReport.RemoteID=Identifiant d''envoi SkypeReport.SentBytes=Bytes envoyés SkypeReport.SkypeID=Identifiant Skype SkypeReport.StartDate=Date de début @@ -214,24 +214,24 @@ WhatsAppReport.WAName=Quel nom:\ WhatsAppReport.UnknownMessage=Message inconnu. WhatsAppReport.UnknownMediaMessage=Message Média inconnu WhatsAppReport.Forwarded=Transféré -WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d'informations. +WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d''informations. WhatsAppReport.BlockedContact=Vous avez bloqué ce contact. Appuyer pour débloquer. WhatsAppReport.UnblockedContact=Vous avez débloqué ce contact. WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info.[TBT] -WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. -WhatsAppReport.ChatBusiness=Ce chat s'effectue avec un compte professionnel. Appuyer pour plus d'informations. +WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d''informations. +WhatsAppReport.ChatBusiness=Ce chat s''effectue avec un compte professionnel. Appuyer pour plus d''informations. WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp,. Appuyer pour en savoir plus. -WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. +WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d''informations. WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info.[TBT] -WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. +WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d''informations. WhatsAppReport.MissedVideoCall=Appel vidéo manqué WhatsAppReport.MissedVoiceCall=Appel vocal manqué WhatsAppReport.RefusedVoiceCall=Appel vocal rejeté WhatsAppReport.RefusedVideoCall=Appel vidéo rejeté WhatsAppReport.UnavailableVoiceCall=Appel vocal indisponible WhatsAppReport.UnavailableVideoCall=Appel vidéo indisponible -WhatsAppReport.UnknownVoiceCall=Type d'appel vocal inconnu -WhatsAppReport.UnknownVideoCall=Type d'appel vidéo inconnu +WhatsAppReport.UnknownVoiceCall=Type d''appel vocal inconnu +WhatsAppReport.UnknownVideoCall=Type d''appel vidéo inconnu WhatsAppReport.GroupCreated=Groupe créé par WhatsAppReport.UserAddedToCommunity=added user to community[TBT] WhatsAppReport.UserAddedToGroup=added user to group[TBT] @@ -242,11 +242,11 @@ WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe:\ WhatsAppReport.AddedToCommunity=added to community[TBT] WhatsAppReport.AddedToGroup=added to group[TBT] WhatsAppReport.RemovedGroup=removed from group[TBT] -WhatsAppReport.GroupIconChanged=l'icône du groupe a changé -WhatsAppReport.GroupIconDeleted=l'icône du groupe a été supprimé +WhatsAppReport.GroupIconChanged=l''icône du groupe a changé +WhatsAppReport.GroupIconDeleted=l''icône du groupe a été supprimé WhatsAppReport.MessageDeleted=Message supprimé -WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l'administrateur -WhatsAppReport.MessageDeletedBySender=Message supprimé par l'expéditeur +WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l''administrateur +WhatsAppReport.MessageDeletedBySender=Message supprimé par l''expéditeur WhatsAppReport.MessageDeletedRecovered=Message supprimé récupéré WhatsAppReport.LocationMessage=Emplacement: WhatsAppReport.SharedLocationMessage=Emplacement partagé: @@ -257,8 +257,8 @@ WhatsAppReport.VoiceCall=Appel vocal WhatsAppReport.VideoCall=Appel vidéo WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] -WhatsAppReport.UserJoinedGroupLink=L'utilisateur a rejoint le groupe à partir d'un lien partagé -WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.UserJoinedGroupLink=L''utilisateur a rejoint le groupe à partir d''un lien partagé +WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Description du groupe modifiée WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat.[TBT] WhatsAppReport.Days=days[TBT] WhatsAppReport.Hours=hours[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community's name[TBT] +WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] @@ -376,7 +376,7 @@ TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=Identifiant du contact: TelegramContact.FirstName=Prénom: TelegramContact.LastName=Nom: -TelegramContact.Username=Nom d'utilisateur: +TelegramContact.Username=Nom d''utilisateur: TelegramContact.Phone=Téléphone: TelegramContact.Channel=Telegram Channel[TBT] TelegramContact.Group=Telegram Group[TBT] @@ -389,7 +389,7 @@ TelegramReport.pinnMessage=Message épinglé mis à jour TelegramReport.UserJoinLink=Utilisateur ayant rejoint via un lien TelegramReport.ChangeToChannel=Changer le canal du groupe TelegramReport.HistoryCleared=historique effacé -TelegramReport.HistoryScreenshot=Capture d'écran de l'historique +TelegramReport.HistoryScreenshot=Capture d''écran de l''historique TelegramReport.MessageAutoRemove=Définir le délai de suppression automatique des messages TelegramReport.GameScore=score du jeu TelegramReport.PhoneCall=Appel téléphonique @@ -403,9 +403,9 @@ TelegramReport.ContactSignUp=Contact inscrivez-vous TelegramReport.ChatDeletePhoto=Supprimer la photo du chat TelegramReport.UnknownMessage=Type de message inconnu:\ TelegramReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs -TelegramReport.geoProximityReached=L'alerte de géoproximité a été atteinte\ +TelegramReport.geoProximityReached=L''alerte de géoproximité a été atteinte\ TelegramReport.groupPhoneCall=Appel téléphonique de groupe -TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d'appel téléphonique +TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d''appel téléphonique TelegramReport.ChangeChatTheme=Changement du thème du chat TelegramReport.joinedByRequest=Utilisateur rejoint par requête TelegramReport.ChannelMigratedFromGroup=Cette chaîne a migré depuis un groupe @@ -447,7 +447,7 @@ ThreemaReport.AudioMessageTitle=Audio Message File[TBT] ThreemaReport.VideoMessageTitle=Video Message File[TBT] ThreemaReport.Video=Video[TBT] ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database[TBT] -P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d'alertes en matière de pédopornographie. +P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d''alertes en matière de pédopornographie. Win10Mail.NotFound=Non trouvé APKParser.Permissions=Permissions Required[TBT] APKParser.Manifest=Manifest XML[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index abfee09355..01c7f77889 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -245,7 +245,7 @@ WhatsAppReport.RemovedGroup=removed from group[TBT] WhatsAppReport.GroupIconChanged=Icona del gruppo cambiata WhatsAppReport.GroupIconDeleted=Icona del gruppo eliminata WhatsAppReport.MessageDeleted=Messaggio cancellato -WhatsAppReport.MessageDeletedByAdmin=Messaggio cancellato dall'amministratore +WhatsAppReport.MessageDeletedByAdmin=Messaggio cancellato dall''amministratore WhatsAppReport.MessageDeletedBySender=Messaggio cancellato dal mittente WhatsAppReport.MessageDeletedRecovered=Messaggio cancellato recuperato WhatsAppReport.LocationMessage=Posizione @@ -258,13 +258,13 @@ WhatsAppReport.VideoCall=Videochiamata WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=si è unito al gruppo tramite link condiviso -WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Descrizione gruppo modificata WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] WhatsAppReport.SubjectChanged=Oggetto modificato WhatsAppReport.UserAdmin=is now admin of this group[TBT] -WhatsAppReport.YouAdmin=Ora sei l'amministratore di questo gruppo +WhatsAppReport.YouAdmin=Ora sei l''amministratore di questo gruppo WhatsAppReport.YouNotAdmin=You are no longer an admin of this group[TBT] WhatsAppReport.WaitingMessage=In attesa di messaggio WhatsAppReport.Duration=Durata @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Any community member can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community's name[TBT] +WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] @@ -407,7 +407,7 @@ TelegramReport.geoProximityReached=allarme di prossimità raggiunto\ TelegramReport.groupPhoneCall=Telefonata di gruppo TelegramReport.inviteToGroupPhoneCall=Invito il gruppo a una telefonata TelegramReport.ChangeChatTheme=Tema della chat modificato -TelegramReport.joinedByRequest=L'utente si è unito tramite richiesta +TelegramReport.joinedByRequest=L''utente si è unito tramite richiesta TelegramReport.ChannelMigratedFromGroup=Questo canale è migrato da un gruppo TelegramReport.RecoveredChannel=Recovered deleted channel[TBT] TelegramReport.RecoveredGroup=Gruppo cancellato recuperato diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index 9c26d549fd..74492b104f 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -15,10 +15,10 @@ EmailViewer.UnNamed=[Inconnu] ExternalViewer.Open=Cliquer ici pour visualiser le fichier en surbrillance HitsTableModel.ContentHits=Contenu des résultats HtmlLinkViewer.AttachNotFound=Pièce jointe non trouvée\! -HtmlViewer.OpenExternally=Ouvert à l'extérieur +HtmlViewer.OpenExternally=Ouvert à l''extérieur HtmlViewer.TooBigToOpen=Fichier trop volumineux pour être ouvert\! ImageViewer.Blur=Activer/Dasactiver le filtre "Flou" dans la visionneuse (utiliser Ctrl+Q pour tout flouter) -ImageViewer.Copy=Copier l'image de la visionneuse +ImageViewer.Copy=Copier l''image de la visionneuse ImageViewer.GrayScale=Activer/Dasactiver le filtre "Griser" dans la visionneuse (utiliser Ctrl+W for pour tout griser) LibreOfficeViewer.RestartingViewer=Redémarrez la visionneuse... LOExtractor.DecompressingLO=Décompresser LibreOffice... @@ -29,8 +29,8 @@ MetadataViewer.TabTitle=Métadonnées NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieur. TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre supérieur à 1 and\ TiffViewer.Page=\ Page\ -PDFViewer.OpenError=ERREUR: Impossible d'ouvrir le fichier PDF! -MsgViewer.OpenError=ERROR: Impossible d'ouvrir le message! +PDFViewer.OpenError=ERREUR: Impossible d''ouvrir le fichier PDF! +MsgViewer.OpenError=ERROR: Impossible d''ouvrir le message! HexViewerPlus.TabName=Hex HexViewerPlus.appName=Hex Viewer Plus HexViewerPlus.HvpFileSettings=Paramères de Hex Viewer Plus @@ -50,7 +50,7 @@ HexViewerPlus.goToHit=Aller aux éléments trouvés HexViewerPlus.goToPosition=Aller à la position HexViewerPlus.selectBlock=Selectionner le Bloque HexViewerPlus.selectAll=Tout sélectionner -HexViewerPlus.copyHex=Copier l'Hexadecimal +HexViewerPlus.copyHex=Copier l''Hexadecimal HexViewerPlus.copyText=Copier le Texte HexViewerPlus.options=Options HexViewerPlus.selectColor=Choisir une couleur @@ -82,8 +82,8 @@ HexViewerPlus.lineBreak=Ligne Brisée HexViewerPlus.showAllCharacters=Afficher toutes les personnes HexViewerPlus.loadFile=Charger le fichier HexViewerPlus.saveFile=Sauvegarder le fichier -HexViewerPlus.failOpenFile=Echec d'ouverture du fichier! -HexViewerPlus.failSaveFile=Erreur d'enregistrement du fichier! +HexViewerPlus.failOpenFile=Echec d''ouverture du fichier! +HexViewerPlus.failSaveFile=Erreur d''enregistrement du fichier! HexViewerPlus.yes=Oui HexViewerPlus.no=Non HexViewerPlus.overWriteFile=Existe déjà. Voulez vous le remplacer? @@ -92,14 +92,14 @@ HexViewerPlus.type=Type HexViewerPlus.interval=Intervalle HexViewerPlus.invalidPosition=IPosition non valide! HexViewerPlus.startPosition=Position de départ -HexViewerPlus.endPosition=Position d'arrivée +HexViewerPlus.endPosition=Position d''arrivée HexViewerPlus.format=Format HexViewerPlus.hexadecimal=Hexadécimal HexViewerPlus.decimal=Décimal HexViewerPlus.octal=Octale HexViewerPlus.invalidStartPosition=Position de départ non valide! HexViewerPlus.invalidSize=Taille invalide! -HexViewerPlus.invalidEndPosition=Position d'arrivée non valide! +HexViewerPlus.invalidEndPosition=Position d''arrivée non valide! HexViewerPlus.start=Démarrer HexViewerPlus.invalidHit=Eléments trouvés invalides! HexViewerPlus.text=Texte From f716f0e83a08c062bcd089335072520067c7df56 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Fri, 17 May 2024 23:19:27 -0300 Subject: [PATCH 093/126] Revert previous commit, will be committed later to avoid merge conflicts This reverts commit bba6bf8859f3112fdbaab8d8bed48413b820e32f. --- .../iped-categories_fr_FR.properties | 24 +++---- .../iped-desktop-messages.properties | 4 +- .../iped-desktop-messages_de_DE.properties | 4 +- .../iped-desktop-messages_es_AR.properties | 4 +- .../iped-desktop-messages_it_IT.properties | 4 +- .../iped-desktop-messages_pt_BR.properties | 2 +- .../iped-engine-messages.properties | 8 +-- .../iped-engine-messages_de_DE.properties | 6 +- .../iped-engine-messages_es_AR.properties | 6 +- .../iped-engine-messages_fr_FR.properties | 26 +++---- .../iped-engine-messages_it_IT.properties | 16 ++--- .../iped-engine-messages_pt_BR.properties | 4 +- .../iped-filters_fr_FR.properties | 2 +- .../iped-geo-messages_fr_FR.properties | 4 +- .../iped-geo-messages_it_IT.properties | 2 +- .../iped-parsers-messages.properties | 16 ++--- .../iped-parsers-messages_de_DE.properties | 16 ++--- .../iped-parsers-messages_es_AR.properties | 14 ++-- .../iped-parsers-messages_fr_FR.properties | 68 +++++++++---------- .../iped-parsers-messages_it_IT.properties | 22 +++--- .../iped-viewer-messages_fr_FR.properties | 18 ++--- 21 files changed, 135 insertions(+), 135 deletions(-) diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index 6412e06ac0..ac23348b31 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -18,36 +18,36 @@ Emails=E-mails Mailboxes=Boites Mails Appointments=Calendriers GDrive\ Synced\ Files=Fichiers de\ synchronisation\ GDrive -GDrive\ File\ Entries=Fichier de \ l''application\ GDrive +GDrive\ File\ Entries=Fichier de \ l'application\ GDrive Databases=Bases de données Compressed\ Archives=Archives\ (Fichiers compressés) Contacts=Contacts Chats=Chats Others\ Chats=Autres\ Chats Windows\ Artifacts=Artéfacts\ Windows -Event\ Files=Fichiers\ d''évènements -Event\ Records=Enregistrements\ d''évènements +Event\ Files=Fichiers\ d'évènements +Event\ Records=Enregistrements\ d'évènements Prefetch\ and\ Superfetch=Prefetch\ et\ Superfetch -User\ Activities=Activités de\ l''utilisateur +User\ Activities=Activités de\ l'utilisateur User\ Activities\ Entries=Utilisateurs\ Actibités\ Entrées Windows\ Registry=Registre de\ Windows Main\ Registry\ Files=Fichiers\Importants Other\ Registry\ Files=Autres\ Fichiers Registry\ Full\ Reports=Rapport\ Complet Registry\ Custom\ Reports=Rapport\ Personnalisé -Registry\ OS\ Info=Information sur\ l''OS +Registry\ OS\ Info=Information sur\ l'OS Registry\ Installed\ Apps=Applications\ Installées Registry\ Network\ Info=Informations\ Réseau Registry\ Storage\ Info=Informations\ sur le Stockage -Registry\ Device\ Info=Informations\ sur l''Appareil +Registry\ Device\ Info=Informations\ sur l'Appareil Registry\ Program\ Run=\ Liste des Programmes\ Exécutés Registry\ Auto\ Run=Exécution \Automatique de programmes Registry\ Log\ Info=Information sur les \ Logs Registry\ Malware\ Info=Information sur \ les Malware Registry\ Web\ Info=Informations\ Internet -Registry\ User\ Info=Informations\ sur l''Utilisateur +Registry\ User\ Info=Informations\ sur l'Utilisateur Registry\ User\ Accounts=Comptes\ Utilisateur -Registry\ User\ Activity=Activité\ de l''Utilisateur +Registry\ User\ Activity=Activité\ de l'Utilisateur Registry\ User\ Files=Fichiers\ Utilisateur\ Registry\ User\ Network\ Activity=Activité\ Réseau\ Utilisateur Registry\ User\ Config=Configuration\ Utilisateur @@ -110,14 +110,14 @@ Configuration=Configuration Passwords=Mot de passe Autofill=Remplissage automatique Cell\ Towers=Antenne\ relai -Power\ Events=Journal d''évènements\ (ON/OFF) +Power\ Events=Journal d'évènements\ (ON/OFF) User\ Dictionaries=Dictionnaire\ Utilisateur IP\ Connections=Connexions\ IP Recordings=Enregistrements Mobile\ Cards=Cartes\ Mobile Applications\ Usage=Utilisation\ des Applications Device\ Information=Informations\ Appareil -iPhone\ Backup=Sauvegardes\ d''iPhone +iPhone\ Backup=Sauvegardes\ d'iPhone Torchat=Torchat Tor=Tor TorTCFragment=Extraits de Communications Tor @@ -146,10 +146,10 @@ SEFIP\ Files=SEFIP\ Fichiers Social\ Connectivity\ Program\ Executables=Sociale\ Connexion\ Program\ Executables Social\ Connectivity\ Program\ Files=Sociale\ Connexion\ Program\ Files GRRF\ Files=GRRF\ Fichiers -Activities\ Sensor=Capteur\ d''Activités +Activities\ Sensor=Capteur\ d'Activités Chat\ Activities=Chats Credit\ Cards=Cartes de Crédit -Device\ Connectivity=Connexions\ de l''Appareil +Device\ Connectivity=Connexions\ de l'Appareil Device\ Events=Evènements File\ Downloads=Téléchargements File\ Uploads=Fichiers Uploadés diff --git a/iped-app/resources/localization/iped-desktop-messages.properties b/iped-app/resources/localization/iped-desktop-messages.properties index 0816cf96e1..8a4504e69e 100644 --- a/iped-app/resources/localization/iped-desktop-messages.properties +++ b/iped-app/resources/localization/iped-desktop-messages.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Similarity Score (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark MenuListener.TableAndOthers=Table and Others -MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or ''{}'' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. +MenuListener.UiScaleDialog=Set the new interface zoom scaling factor.\nUse a floating point value (e.g. 1.5) or '{}' to adjust the zoom automatically.\nYou need to restart the application for this change to take effect. MetadataPanel.AlphaNumeric=AlphaNumeric MetadataPanel.Clear=Clear metadata filter MetadataPanel.Group=Group: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node OperandMenu.removeNode=Remove node FiltererMenu.clearFilters=Clear filters FiltererMenu.goToItem=Go to referenced item -FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set. +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set. FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception. FieldValuePopupMenu.NonEmpty=Non empty FieldValuePopupMenu.Empty=Empty diff --git a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties index 57e32895c3..5c0e3187ee 100644 --- a/iped-app/resources/localization/iped-desktop-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-desktop-messages_de_DE.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Ähnlichkeitswert (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Table and Others[TBT] -MenuListener.UiScaleDialog=Zoom-Faktor für das Benutzerinterface setzen.\nVerwende eine Fließkommazahl (e.g. 1.5) oder ''{}'' um den Zomm automatisch einzustellen.\nZur Aktivierung ist das Anwendung neu zu starten. +MenuListener.UiScaleDialog=Zoom-Faktor für das Benutzerinterface setzen.\nVerwende eine Fließkommazahl (e.g. 1.5) oder '{}' um den Zomm automatisch einzustellen.\nZur Aktivierung ist das Anwendung neu zu starten. MetadataPanel.AlphaNumeric=Alpha-Numerisch MetadataPanel.Clear=Metadaten Filter löschen MetadataPanel.Group=Gruppe: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties index 5e138ca31f..7035a96eff 100644 --- a/iped-app/resources/localization/iped-desktop-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_es_AR.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Puntuación de similitud (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Tabla y Otros -MenuListener.UiScaleDialog=Establezca el nuevo factor de escala de zoom de la interfaz.\nUse un valor de punto flotante (por ejemplo, 1,5) o ''{}'' para ajustar el zoom automáticamente.\nNecesita reiniciar la aplicación para que este cambio surta efecto. +MenuListener.UiScaleDialog=Establezca el nuevo factor de escala de zoom de la interfaz.\nUse un valor de punto flotante (por ejemplo, 1,5) o '{}' para ajustar el zoom automáticamente.\nNecesita reiniciar la aplicación para que este cambio surta efecto. MetadataPanel.AlphaNumeric=Alfanumérico MetadataPanel.Clear=Borrar filtro de metadatos MetadataPanel.Group=Grupo: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_it_IT.properties b/iped-app/resources/localization/iped-desktop-messages_it_IT.properties index 8de7b02f9a..a0747a92a6 100644 --- a/iped-app/resources/localization/iped-desktop-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-desktop-messages_it_IT.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Percentuale di somiglianza (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Import all keyword results as single bookmark [TBT] MenuListener.CheckAddKeywordsAsMultipleBookmarks=Import each keyword result as separate bookmark [TBT] MenuListener.TableAndOthers=Table and Others[TBT] -MenuListener.UiScaleDialog=Imposta il nuovo fattore di scala dello zoom dell''interfaccia.\nUsa un valore in virgola mobile (ad esempio 1,5) o ''{}'' per regolare lo zoom automaticamente.\nÈ necessario riavviare l''applicazione perché questa modifica abbia effetto. +MenuListener.UiScaleDialog=Imposta il nuovo fattore di scala dello zoom dell''interfaccia.\nUsa un valore in virgola mobile (ad esempio 1,5) o '{}' per regolare lo zoom automaticamente.\nÈ necessario riavviare l''applicazione perché questa modifica abbia effetto. MetadataPanel.AlphaNumeric=Alfanumerico MetadataPanel.Clear=Cancella filtro metadati MetadataPanel.Group=Gruppo: @@ -428,7 +428,7 @@ OperandMenu.addOr=Add OR node(TBT) OperandMenu.removeNode=Remove node(TBT) FiltererMenu.clearFilters=Clear filters(TBT) FiltererMenu.goToItem=Go to referenced item(TBT) -FiltererMenu.ItemNotInRS=The referenced item doesn''t exist in current result set.(TBT) +FiltererMenu.ItemNotInRS=The referenced item doesn't exist in current result set.(TBT) FiltersPanel.addQueryFilterError=It was not possible to add the query due to a parsing exception.(TBT) FieldValuePopupMenu.NonEmpty=Non empty(TBT) FieldValuePopupMenu.Empty=Empty(TBT) diff --git a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties index 16d635b7fd..28561328a3 100644 --- a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties @@ -264,7 +264,7 @@ MenuListener.SimilarityLabel=Porcentual de similaridade (0 a 100) MenuListener.CheckAddKeywordsAsSingleBookmark=Importar todos os resultados de palavras-chave num único marcador MenuListener.CheckAddKeywordsAsMultipleBookmarks=Importar os resultados de cada palavra-chave num marcador separado MenuListener.TableAndOthers=Tabela e Outros -MenuListener.UiScaleDialog=Defina o novo fator de zoom da interface.\nUse um valor decimal (ex: 1.5) ou ''{}'' para ajustar o zoom automaticamente.\nÉ necessário reiniciar a interface para esta configuração ter efeito. +MenuListener.UiScaleDialog=Defina o novo fator de zoom da interface.\nUse um valor decimal (ex: 1.5) ou '{}' para ajustar o zoom automaticamente.\nÉ necessário reiniciar a interface para esta configuração ter efeito. MetadataPanel.AlphaNumeric=Alfanumérica MetadataPanel.Clear=Limpar filtro de metadados MetadataPanel.Group=Grupo: diff --git a/iped-app/resources/localization/iped-engine-messages.properties b/iped-app/resources/localization/iped-engine-messages.properties index f025646c95..2a9e8db475 100644 --- a/iped-app/resources/localization/iped-engine-messages.properties +++ b/iped-app/resources/localization/iped-engine-messages.properties @@ -33,11 +33,11 @@ HTMLReportTask.Yes=Yes Main.Finished=Finished IPEDSource.ImageNotFound=Image Not Found:\ IPEDSource.ImgFragNotFound=Image segment not found:\ -ItemProducer.Adding=Adding '' +ItemProducer.Adding=Adding ' JavaVersion.Error=Unsupported java version. Update to version {}. JavaVersion.Warn=Java version {} not tested, unexpected errors may occur! JavaVersion.Bug=Problematic Java version {1} detected! Update to the latest Java {2} or the program may crash. -JavaVersion.Arch=You are using a java 32bits, some features won''t work properly. Please update to a java 64 bits! +JavaVersion.Arch=You are using a java 32bits, some features won't work properly. Please update to a java 64 bits! Manager.Adding=Adding " Manager.ClosingIndex=Closing Index... Manager.CopyingIndex=Copying Index... @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Total Memory ProgressFrame.VolumeFound=Volume Found ProgressFrame.VolumeProcessed=Volume Processed ProgressFrame.WaitingItem=Waiting Item... -RegexTask.SeparatorNotFound.1=Separator ''='' not found in\ +RegexTask.SeparatorNotFound.1=Separator '=' not found in\ RegexTask.SeparatorNotFound.2=\ line:\ ReportInfo.EvidencePrefix=Evidence\ SleuthkitReader.Creating=Creating\ SleuthkitReader.WaitDecode=Wait, decoding image\ -Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease ''numthreads'' in LocalConfig.txt. +Statistics.LowMemory.Msg=Insufficient heap memory available: less than {}MB per processing thread.\n It can cause slowness or parsing errors on complex files.\n Use a x64 JVM (preferably), \n increase heap with java -Xmx option \n or decrease 'numthreads' in LocalConfig.txt. Statistics.LowMemory.Title=Memory Alert UfedXmlReader.Attachments=Attachments UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_de_DE.properties b/iped-app/resources/localization/iped-engine-messages_de_DE.properties index e893516adf..5706690362 100644 --- a/iped-app/resources/localization/iped-engine-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-engine-messages_de_DE.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Ja Main.Finished=beendet IPEDSource.ImageNotFound=Bild nicht gefunden:\ IPEDSource.ImgFragNotFound=Bildausschnit nicht gefunden:\ -ItemProducer.Adding=Füge hinzu '' +ItemProducer.Adding=Füge hinzu ' JavaVersion.Error=Nicht unterstützte Java-Version. Bitte aktualisiere auf Version {}. JavaVersion.Warn=Java Version {} nicht getested, unerwartete Fehler können auftreten! JavaVersion.Bug=Problematische Java Version {1} entdeckt! Bitte Update auf die letzte Java Version {2} durchführen oder unerwartete Fehler können auftreten! @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=gesamter Speicher ProgressFrame.VolumeFound=Volume gefunden ProgressFrame.VolumeProcessed=Volume verarbeitet ProgressFrame.WaitingItem=wartendes Element... -RegexTask.SeparatorNotFound.1=Separator ''='' nicht gefunden in\ +RegexTask.SeparatorNotFound.1=Separator '=' nicht gefunden in\ RegexTask.SeparatorNotFound.2=\ Zeile:\ ReportInfo.EvidencePrefix=Beweismittel\ SleuthkitReader.Creating=Erstelle\ SleuthkitReader.WaitDecode=Warte, dekodiere Abbild\ -Statistics.LowMemory.Msg=Nicht genügend Speicherplatz vorhanden: unterhalb {}MB je Verabeitungs-Thread.\n Es kann zur Verlangsamung oder zu Fehlern beim Parsen komplexer Dateien führen.\n Verwende eine x64 JVM (vorzugsweise),\n vergrößere den Heap-Speicher mit der Java-Option -Xmx\n oder veringere ''numthreads'' in LocalConfig.txt. +Statistics.LowMemory.Msg=Nicht genügend Speicherplatz vorhanden: unterhalb {}MB je Verabeitungs-Thread.\n Es kann zur Verlangsamung oder zu Fehlern beim Parsen komplexer Dateien führen.\n Verwende eine x64 JVM (vorzugsweise),\n vergrößere den Heap-Speicher mit der Java-Option -Xmx\n oder veringere 'numthreads' in LocalConfig.txt. Statistics.LowMemory.Title=Speicherwarnung UfedXmlReader.Attachments=Anhänge UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_es_AR.properties b/iped-app/resources/localization/iped-engine-messages_es_AR.properties index cc93efab19..bfb7d783b9 100644 --- a/iped-app/resources/localization/iped-engine-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-engine-messages_es_AR.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Sí Main.Finished=Finalizado IPEDSource.ImageNotFound=Imagen no encontrada:\ IPEDSource.ImgFragNotFound=Segmento de imagen no encontrado:\ -ItemProducer.Adding=Analizando '' +ItemProducer.Adding=Analizando ' JavaVersion.Error=Versión de Java no admitida. Actualizar a la versión {}. JavaVersion.Warn=Versión de Java {} no probada, ¡pueden ocurrir errores inesperados! JavaVersion.Bug=¡Versión de Java problemática {1} detectada! Actualice a la versión más reciente de Java {2} o el programa puede bloquearse. @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Memoria Total ProgressFrame.VolumeFound=Tamaño de la evidencia ProgressFrame.VolumeProcessed=Tamaño analizado ProgressFrame.WaitingItem=Elemento en espera... -RegexTask.SeparatorNotFound.1=Separador ''='' no encontrado en\ +RegexTask.SeparatorNotFound.1=Separador '=' no encontrado en\ RegexTask.SeparatorNotFound.2=\ línea:\ ReportInfo.EvidencePrefix=Evidencia\ SleuthkitReader.Creating=Creando\ SleuthkitReader.WaitDecode=Espera, decodificando imagen\ -Statistics.LowMemory.Msg=Memoria de montón disponible insuficiente: menos de {}MB por subproceso de procesamiento.\n Puede causar lentitud o errores de análisis en archivos complejos.\n Use una JVM x64 (preferiblemente), \n aumente el montón con java - Opción Xmx \n o disminuya ''numthreads'' en LocalConfig.txt. +Statistics.LowMemory.Msg=Memoria de montón disponible insuficiente: menos de {}MB por subproceso de procesamiento.\n Puede causar lentitud o errores de análisis en archivos complejos.\n Use una JVM x64 (preferiblemente), \n aumente el montón con java - Opción Xmx \n o disminuya 'numthreads' en LocalConfig.txt. Statistics.LowMemory.Title=Alerta de memoria UfedXmlReader.Attachments=Adjuntos UfedXmlReader.Bcc=CCO diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index 6103c5f815..a52cfe887d 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -15,10 +15,10 @@ HTMLReportTask.Category=Catégorie HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss HTMLReportTask.FileCount=Compteur de fichier HTMLReportTask.FirstPage=Première page -HTMLReportTask.GalleryLink=Galerie d''images +HTMLReportTask.GalleryLink=Galerie d'images HTMLReportTask.GalleryTitle=Vignette HTMLReportTask.LastPage=Dernière page -HTMLReportTask.MakingHtmlReport=Création d''un rapport HTML... +HTMLReportTask.MakingHtmlReport=Création d'un rapport HTML... HTMLReportTask.NextPage=Page suivante HTMLReportTask.No=Non HTMLReportTask.NoBookmarks=[Pas de favori] @@ -32,19 +32,19 @@ HTMLReportTask.VideoThumbs=Vignette vidéo HTMLReportTask.Yes=Oui Main.Finished=Terminé IPEDSource.ImageNotFound=Image Non trouvée:\ -IPEDSource.ImgFragNotFound=Morceau d''image non trouvé:\ +IPEDSource.ImgFragNotFound=Morceau d'image non trouvé:\ ItemProducer.Adding=Ajouter JavaVersion.Error=Version de java non supportée. Mettre à jour la version {}. -JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c''est produite! +JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c'est produite! JavaVersion.Bug=Problème avec la version e Java {1} detecté! Installer la dernière version de Java {2} sinon le programme risque de ne pas fonctionner. JavaVersion.Arch=Vous utilisez ue version 32 bits de Java, certaines fonctionnalités peuvent ne pas fonctionner correctement. Merci de mettre jour vers une version 64 bits! Manager.Adding=Ajouter " Manager.ClosingIndex=Index de clotûre... Manager.CopyingIndex=Index de copie... -Manager.OpeningIndex=Index d''ouverture... -Manager.DeletingTreeNodes=Supprimer les noeuds vides de l''arborescence +Manager.OpeningIndex=Index d'ouverture... +Manager.DeletingTreeNodes=Supprimer les noeuds vides de l'arborescence Manager.FilteringKeywords=Filtrer les mots clés... -Manager.Optimizing=Optimisation de l''index... +Manager.Optimizing=Optimisation de l'index... Manager.CommitStarted=Commencer la validation... Manager.CommitFinished=Validation terminée. P2PBookmarker.P2PBookmarkPrefix=Probablement partagé avec\ @@ -54,7 +54,7 @@ ProgressConsole.Found=Trouvé\ ProgressConsole.Processing=En cours de traitement\ ProgressConsole.Starting=Début... ProgressFrame.ActiveProcessed=Eléments traités -ProgressFrame.AlreadyOpen=L''application d''analyse est déjà ouverte\! +ProgressFrame.AlreadyOpen=L'application d'analyse est déjà ouverte\! ProgressFrame.Carved=Eléments carvés ProgressFrame.CarvedDiscarded=Eléments carvés exclus ProgressFrame.Continue=Continuer @@ -79,8 +79,8 @@ ProgressFrame.OutputFree=Espace libre ProgressFrame.OutputTempFree=Sortie/Temp libre ProgressFrame.OutputTempVolume=Volume de sortie/temp ProgressFrame.OutputVolume=Volume de sortie -ProgressFrame.ParserTimes=Durer d''analyse -ProgressFrame.ParsingErrors=Erreurs d''analyse +ProgressFrame.ParserTimes=Durer d'analyse +ProgressFrame.ParsingErrors=Erreurs d'analyse ProgressFrame.Pause=Pause ProgressFrame.Paused=[En pause] ProgressFrame.Pausing=[Faire une pause...] @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Mémoire totale ProgressFrame.VolumeFound=Volume trouvé ProgressFrame.VolumeProcessed=Volume traité ProgressFrame.WaitingItem=En attente... -RegexTask.SeparatorNotFound.1=Separateur ''='' non trouvé dans\ +RegexTask.SeparatorNotFound.1=Separateur '=' non trouvé dans\ RegexTask.SeparatorNotFound.2=\ ligne:\ ReportInfo.EvidencePrefix=Extraction\ SleuthkitReader.Creating=Créer\ -SleuthkitReader.WaitDecode=Décodage de l''image en cours\ -Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l''analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l''option java -Xmx \n ou diminuez-le ''numthreads'' dans me fichier LocalConfig.txt. +SleuthkitReader.WaitDecode=Décodage de l'image en cours\ +Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l'analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l'option java -Xmx \n ou diminuez-le 'numthreads' dans me fichier LocalConfig.txt. Statistics.LowMemory.Title=Alerte/Mémoire UfedXmlReader.Attachments=Pièces jointes UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_it_IT.properties b/iped-app/resources/localization/iped-engine-messages_it_IT.properties index 43128139ff..d14873ab81 100644 --- a/iped-app/resources/localization/iped-engine-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-engine-messages_it_IT.properties @@ -33,16 +33,16 @@ HTMLReportTask.Yes=Sì Main.Finished=Terminato IPEDSource.ImageNotFound=Immagine non trovata:\ IPEDSource.ImgFragNotFound=Segmento immagine non trovato:\ -ItemProducer.Adding=Aggiungo '' +ItemProducer.Adding=Aggiungo ' JavaVersion.Error=Versione java non supportata. Aggiorna alla versione {}. JavaVersion.Warn=Versione Java {} non testata, potrebbero verificarsi errori inaspettati! -JavaVersion.Bug=Rilevata versione Java {1} problematica! Aggiorna all''ultima Java {2} o il programma potrebbe bloccarsi. +JavaVersion.Bug=Rilevata versione Java {1} problematica! Aggiorna all'ultima Java {2} o il programma potrebbe bloccarsi. JavaVersion.Arch=Stai usando java a 32bit, alcune funzioni non funzioneranno correttamente. Per favore aggiorna a java a 64bit! Manager.Adding=Aggiungo " Manager.ClosingIndex=Chiudo Indice... Manager.CopyingIndex=Copio Indice... Manager.OpeningIndex=Apro Indice... -Manager.DeletingTreeNodes=Eliminazione dei nodi dell''albero vuoti +Manager.DeletingTreeNodes=Eliminazione dei nodi dell'albero vuoti Manager.FilteringKeywords=Filtro parole chiave... Manager.Optimizing=Ottimizzo Indice... Manager.CommitStarted=Avvio commit... @@ -54,7 +54,7 @@ ProgressConsole.Found=Trovato\ ProgressConsole.Processing=Elaborazione\ ProgressConsole.Starting=Avvio... ProgressFrame.ActiveProcessed=Elementi attualmente elaborati -ProgressFrame.AlreadyOpen=L''app di analisi è già aperta\! +ProgressFrame.AlreadyOpen=L'app di analisi è già aperta\! ProgressFrame.Carved=Elementi recuperati ProgressFrame.CarvedDiscarded=Elementi recuperati scartati ProgressFrame.Continue=Continua @@ -67,7 +67,7 @@ ProgressFrame.FinishIn=\ - Termina in\ ProgressFrame.Found=Trovato\ ProgressFrame.FreeMemory=Memoria libera ProgressFrame.Ignored=Elementi ignorati -ProgressFrame.IncompleteProcessing=Molti elementi del Caso potrebbero non essere disponibili fino al termine dell''elaborazione\! +ProgressFrame.IncompleteProcessing=Molti elementi del Caso potrebbero non essere disponibili fino al termine dell'elaborazione\! ProgressFrame.items=\ elementi ProgressFrame.ItemsFound=Elementi trovati ProgressFrame.ItemsProcessed=Elementi elaborati @@ -99,12 +99,12 @@ ProgressFrame.TotalMemory=Memoria totale ProgressFrame.VolumeFound=Dati trovati ProgressFrame.VolumeProcessed=Dati elaborati ProgressFrame.WaitingItem=Elemento in attesa... -RegexTask.SeparatorNotFound.1=Separatore ''='' non trovato in\ +RegexTask.SeparatorNotFound.1=Separatore '=' non trovato in\ RegexTask.SeparatorNotFound.2=\ linea:\ ReportInfo.EvidencePrefix=Reperto\ SleuthkitReader.Creating=Creando\ -SleuthkitReader.WaitDecode=Attendi, decodifica dell''immagine\ -Statistics.LowMemory.Msg=Memoria heap disponibile insufficiente: meno di {}MB per thread di elaborazione.\n Può causare lentezza o errori di analisi su file complessi.\n Usa una JVM x64 (preferibilmente), \n aumenta la memoria heap con l''opzione java -Xmx \n o diminuisci ''numthreads'' in LocalConfig.txt. +SleuthkitReader.WaitDecode=Attendi, decodifica dell'immagine\ +Statistics.LowMemory.Msg=Memoria heap disponibile insufficiente: meno di {}MB per thread di elaborazione.\n Può causare lentezza o errori di analisi su file complessi.\n Usa una JVM x64 (preferibilmente), \n aumenta la memoria heap con l'opzione java -Xmx \n o diminuisci 'numthreads' in LocalConfig.txt. Statistics.LowMemory.Title=Avviso memoria UfedXmlReader.Attachments=Allegati UfedXmlReader.Bcc=Bcc diff --git a/iped-app/resources/localization/iped-engine-messages_pt_BR.properties b/iped-app/resources/localization/iped-engine-messages_pt_BR.properties index c80888b537..3213542ba4 100644 --- a/iped-app/resources/localization/iped-engine-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-engine-messages_pt_BR.properties @@ -33,7 +33,7 @@ HTMLReportTask.Yes=Sim Main.Finished=Finalizado IPEDSource.ImageNotFound=Arquivo de Imagem não encontrado:\ IPEDSource.ImgFragNotFound=Segmento de Imagem não encontrado:\ -ItemProducer.Adding=Adicionando '' +ItemProducer.Adding=Adicionando ' JavaVersion.Error=Versão do java não suportada. Atualize para a versão {}. JavaVersion.Warn=Java versão {} não testado, podem ocorrer erros inesperados! JavaVersion.Bug=Versão problemática do Java {1} detectada! Atualize para o último Java {2} ou o programa pode fechar abruptamente. @@ -99,7 +99,7 @@ ProgressFrame.TotalMemory=Memória Total ProgressFrame.VolumeFound=Volume Descoberto ProgressFrame.VolumeProcessed=Volume Processado ProgressFrame.WaitingItem=Aguardando item... -RegexTask.SeparatorNotFound.1=Caracter ''='' não encontrado em\ +RegexTask.SeparatorNotFound.1=Caracter '=' não encontrado em\ RegexTask.SeparatorNotFound.2=\ linha:\ ReportInfo.EvidencePrefix=Material\ SleuthkitReader.Creating=Criando\ diff --git a/iped-app/resources/localization/iped-filters_fr_FR.properties b/iped-app/resources/localization/iped-filters_fr_FR.properties index e018aad4b0..86dcf2c85c 100644 --- a/iped-app/resources/localization/iped-filters_fr_FR.properties +++ b/iped-app/resources/localization/iped-filters_fr_FR.properties @@ -4,7 +4,7 @@ Hash\ Alert\ (Child\ Porn)=Détection\ Hash\ (Pédopornographie) PhotoDNA\ Alert\ (Child\ Porn)=Détection\ PhotoDNA\ (Pédopornographie) Encrypted\ Files=Fichiers\ Chiffés Possibly\ encrypted\ (entropy)=Certainement\ chiffré\ (entropy) -Parsing\ Error=Erreur\ d''analyse +Parsing\ Error=Erreur\ d'analyse Read\ Error=Erreur\ de lecture Timeout=Temps dépassé Actual\ Files=Fichier\ actuel diff --git a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties index f528a05b08..024ea940b6 100644 --- a/iped-app/resources/localization/iped-geo-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-geo-messages_fr_FR.properties @@ -5,11 +5,11 @@ KMLResult.Results=Résultats KMLResult.Save=Enregistrement KMLResult.SearchResults=Recherche des résultats KMLResult.SearchResultsDescription=Résultats de recherche GPS. -KMLResult.ShowInTree=Consulter dans l''arboresence. +KMLResult.ShowInTree=Consulter dans l'arboresence. JMapOptionsPane.title=Sélectionner la source de la carte utilisée JMapOptionsPane.GoogleApiKeyLabel=Saisissez une clé API Google Maps valide JMapOptionsPane.UseLeaflet=Utiliser la plateforme -JMapOptionsPane.UrlPatternLabel=Saisir l''URL source de la carte: +JMapOptionsPane.UrlPatternLabel=Saisir l'URL source de la carte: JMapOptionsPane.AnotherURL=Autre URL JMapOptionsPane.UseGoogleMaps=Utiliser Google Maps toolbar.Radius=Rayon diff --git a/iped-app/resources/localization/iped-geo-messages_it_IT.properties b/iped-app/resources/localization/iped-geo-messages_it_IT.properties index 859fd1c980..cc630f5f45 100644 --- a/iped-app/resources/localization/iped-geo-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-geo-messages_it_IT.properties @@ -5,7 +5,7 @@ KMLResult.Results=Risultati KMLResult.Save=Salva KMLResult.SearchResults=Risultati della ricerca KMLResult.SearchResultsDescription=Risultati della ricerca GPS. -KMLResult.ShowInTree=Mostra nell''albero. +KMLResult.ShowInTree=Mostra nell'albero. JMapOptionsPane.title=Seleziona la sorgente della mappa da usare JMapOptionsPane.GoogleApiKeyLabel=Inserisci una chiave API Google Maps valida JMapOptionsPane.UseLeaflet=Usa Leaflet diff --git a/iped-app/resources/localization/iped-parsers-messages.properties b/iped-app/resources/localization/iped-parsers-messages.properties index 7863a09f18..ee4e2615c4 100644 --- a/iped-app/resources/localization/iped-parsers-messages.properties +++ b/iped-app/resources/localization/iped-parsers-messages.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Video Call WhatsAppReport.UserJoinedGroupCommunity=joined group from community WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation WhatsAppReport.UserJoinedGroupLink=joined group from shared link -WhatsAppReport.ResetGroupLink=reset this group''s invite link +WhatsAppReport.ResetGroupLink=reset this group's invite link WhatsAppReport.GroupDescriptionChanged=Group description changed WhatsAppReport.GroupDescriptionDeleted=deleted group description WhatsAppReport.GroupNameChanged=changed the group name to @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralOff=turned off disappearing messages. WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat. WhatsAppReport.Days=days WhatsAppReport.Hours=hours -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group. -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info. -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info. -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages. -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages. +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group. +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info. +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info. +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages. +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages. WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group. WhatsAppReport.ChangedDevice=changed device. WhatsAppReport.ChangedNumberTo=changed to -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number. +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number. WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number. WhatsAppReport.SenderInContacts=is in your contacts. WhatsAppReport.SenderAddedToContacts=was added to your contacts. @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group. WhatsAppReport.CommunityManagementAction=Community management action. -WhatsAppReport.CommunityRenamed=changed the community''s name +WhatsAppReport.CommunityRenamed=changed the community's name WhatsAppReport.CommunityWelcome=Welcome to the community. WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group. WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number. diff --git a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties index 6c9ba2ebf6..9a92066ad3 100644 --- a/iped-app/resources/localization/iped-parsers-messages_de_DE.properties +++ b/iped-app/resources/localization/iped-parsers-messages_de_DE.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Videoanruf WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=hat sich über geteilten Link der Gruppe angeschlossen -WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Gruppenbeschreibung geändert WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Any community member can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] +WhatsAppReport.CommunityRenamed=changed the community's name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties index 3fb2a43c55..98359140cc 100644 --- a/iped-app/resources/localization/iped-parsers-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_es_AR.properties @@ -258,7 +258,7 @@ WhatsAppReport.VideoCall=Video Llamada WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=se unió al grupo desde un enlace compartido -WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Se ha modificado la descripción del grupo WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index cec5ee0afe..5dd2e31003 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -22,7 +22,7 @@ DateFormat=dd/MM/yyyy HH:mm:ss DiscordParser.Attachments=Pièces jointes DiscordParser.Start=Début DiscordParser.End=Fin -DiscordParser.EditTime=Modifier l''heure: +DiscordParser.EditTime=Modifier l'heure: DiscordParser.Participants=Participants DiscordParser.Reactions=Réactions: DiscordParser.DateFormat0=(hh:mm:ss dd/MM/yyyy) @@ -46,7 +46,7 @@ KnownMetParser.FoundInCase=Trouvé dans le cas KnownMetParser.FoundInPedoHashDB=Pédopornographie trouvée dans la base de Hash KnownMetParser.LastModDate=Dernière date de modification (UTC) KnownMetParser.LastPubDate=Dernière date de publication (UTC) -KnownMetParser.LastShareDate=Dernière date d''échange +KnownMetParser.LastShareDate=Dernière date d'échange KnownMetParser.Name=Nom du fichier KnownMetParser.Requests=Total des demandes KnownMetParser.Seq=Séquence @@ -76,7 +76,7 @@ LNKShortcutParser.DriveSerial=Numéro de série du lecteur LNKShortcutParser.DriveType=Type de lecteur LNKShortcutParser.DroidFileId=Identifiant du fichier du Droid LNKShortcutParser.DroidVolId=Identifiant du volume du Droid -LNKShortcutParser.EntryType=Type d''entrée +LNKShortcutParser.EntryType=Type d'entrée LNKShortcutParser.Extensions=Extensions LNKShortcutParser.File=Fichier LNKShortcutParser.FileAttr=Attributs du fichier @@ -86,7 +86,7 @@ LNKShortcutParser.IconIndex=Index des icones LNKShortcutParser.IconLocation=Emplacement des icones LNKShortcutParser.LastMod=Dernière modification LNKShortcutParser.LinkAttr=Attributs des liens (Data Flags) -LNKShortcutParser.LinkLocationInfo=Information sur l''emplacement des liens (HasLinkInfo) +LNKShortcutParser.LinkLocationInfo=Information sur l'emplacement des liens (HasLinkInfo) LNKShortcutParser.LinkTargetID=Identification de la cible du lien (HasTargetIDList) LNKShortcutParser.LocalizedNames=Nom local du Shell LNKShortcutParser.LocalPath=Chemin local @@ -98,8 +98,8 @@ LNKShortcutParser.NetComments=commentaires du Net LNKShortcutParser.NetDescription=Descriptif du réseau LNKShortcutParser.NetDeviceName=Nom du périphérique réseau LNKShortcutParser.NetDevNameUnicode=Nom du périphérique réseau - Unicode -LNKShortcutParser.NetItemName=Nom de l''élément de réseau -LNKShortcutParser.NetItemType=Type d''élément de réseau +LNKShortcutParser.NetItemName=Nom de l'élément de réseau +LNKShortcutParser.NetItemType=Type d'élément de réseau LNKShortcutParser.NetProviderType=Type de fournisseur de réseau LNKShortcutParser.NetShare=Nom du dossier réseau LNKShortcutParser.NetShareUnicode=Nom du dossier réseau - Unicode @@ -138,7 +138,7 @@ ReportGenerator.Unknown=Inconnu ReportGenerator.UnknownDate=Horodatage inconnu RFC822Parser.AttachedEmail=PiècesjointesEmail.eml RFC822Parser.UnNamed=[Inconnu] -SkypeConversation.SkypeChat=Chat de l''application Skype\ +SkypeConversation.SkypeChat=Chat de l'application Skype\ SkypeFileTransfer.Download=Télécharhement SkypeFileTransfer.FileOffer=Proposition de fichier (*) SkypeFileTransfer.FileSend=Envoi de fichier @@ -149,7 +149,7 @@ SkypeReport.AcceptDate=Accepter la date SkypeReport.Attribute=Propriété SkypeReport.Author=Auteur SkypeReport.Avatar=Avatar: -SkypeReport.AvatarDate=Date de l''avatar +SkypeReport.AvatarDate=Date de l'avatar SkypeReport.BirthDate=Date de naissance SkypeReport.Chat=Chat SkypeReport.ChatID=Identifiant du chat @@ -188,7 +188,7 @@ SkypeReport.ProfileDate=Date du profil SkypeReport.Province=Province SkypeReport.PstnNum=Numéro PSTN SkypeReport.Recipient=Correspondant -SkypeReport.RemoteID=Identifiant d''envoi +SkypeReport.RemoteID=Identifiant d'envoi SkypeReport.SentBytes=Bytes envoyés SkypeReport.SkypeID=Identifiant Skype SkypeReport.StartDate=Date de début @@ -214,24 +214,24 @@ WhatsAppReport.WAName=Quel nom:\ WhatsAppReport.UnknownMessage=Message inconnu. WhatsAppReport.UnknownMediaMessage=Message Média inconnu WhatsAppReport.Forwarded=Transféré -WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d''informations. +WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d'informations. WhatsAppReport.BlockedContact=Vous avez bloqué ce contact. Appuyer pour débloquer. WhatsAppReport.UnblockedContact=Vous avez débloqué ce contact. WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info.[TBT] -WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d''informations. -WhatsAppReport.ChatBusiness=Ce chat s''effectue avec un compte professionnel. Appuyer pour plus d''informations. +WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. +WhatsAppReport.ChatBusiness=Ce chat s'effectue avec un compte professionnel. Appuyer pour plus d'informations. WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp,. Appuyer pour en savoir plus. -WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d''informations. +WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info.[TBT] -WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d''informations. +WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. WhatsAppReport.MissedVideoCall=Appel vidéo manqué WhatsAppReport.MissedVoiceCall=Appel vocal manqué WhatsAppReport.RefusedVoiceCall=Appel vocal rejeté WhatsAppReport.RefusedVideoCall=Appel vidéo rejeté WhatsAppReport.UnavailableVoiceCall=Appel vocal indisponible WhatsAppReport.UnavailableVideoCall=Appel vidéo indisponible -WhatsAppReport.UnknownVoiceCall=Type d''appel vocal inconnu -WhatsAppReport.UnknownVideoCall=Type d''appel vidéo inconnu +WhatsAppReport.UnknownVoiceCall=Type d'appel vocal inconnu +WhatsAppReport.UnknownVideoCall=Type d'appel vidéo inconnu WhatsAppReport.GroupCreated=Groupe créé par WhatsAppReport.UserAddedToCommunity=added user to community[TBT] WhatsAppReport.UserAddedToGroup=added user to group[TBT] @@ -242,11 +242,11 @@ WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe:\ WhatsAppReport.AddedToCommunity=added to community[TBT] WhatsAppReport.AddedToGroup=added to group[TBT] WhatsAppReport.RemovedGroup=removed from group[TBT] -WhatsAppReport.GroupIconChanged=l''icône du groupe a changé -WhatsAppReport.GroupIconDeleted=l''icône du groupe a été supprimé +WhatsAppReport.GroupIconChanged=l'icône du groupe a changé +WhatsAppReport.GroupIconDeleted=l'icône du groupe a été supprimé WhatsAppReport.MessageDeleted=Message supprimé -WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l''administrateur -WhatsAppReport.MessageDeletedBySender=Message supprimé par l''expéditeur +WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l'administrateur +WhatsAppReport.MessageDeletedBySender=Message supprimé par l'expéditeur WhatsAppReport.MessageDeletedRecovered=Message supprimé récupéré WhatsAppReport.LocationMessage=Emplacement: WhatsAppReport.SharedLocationMessage=Emplacement partagé: @@ -257,8 +257,8 @@ WhatsAppReport.VoiceCall=Appel vocal WhatsAppReport.VideoCall=Appel vidéo WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] -WhatsAppReport.UserJoinedGroupLink=L''utilisateur a rejoint le groupe à partir d''un lien partagé -WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] +WhatsAppReport.UserJoinedGroupLink=L'utilisateur a rejoint le groupe à partir d'un lien partagé +WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Description du groupe modifiée WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat.[TBT] WhatsAppReport.Days=days[TBT] WhatsAppReport.Hours=hours[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] +WhatsAppReport.CommunityRenamed=changed the community's name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] @@ -376,7 +376,7 @@ TorrentFileDatParser.AtOffset=at offset[TBT] TelegramContact.ContactID=Identifiant du contact: TelegramContact.FirstName=Prénom: TelegramContact.LastName=Nom: -TelegramContact.Username=Nom d''utilisateur: +TelegramContact.Username=Nom d'utilisateur: TelegramContact.Phone=Téléphone: TelegramContact.Channel=Telegram Channel[TBT] TelegramContact.Group=Telegram Group[TBT] @@ -389,7 +389,7 @@ TelegramReport.pinnMessage=Message épinglé mis à jour TelegramReport.UserJoinLink=Utilisateur ayant rejoint via un lien TelegramReport.ChangeToChannel=Changer le canal du groupe TelegramReport.HistoryCleared=historique effacé -TelegramReport.HistoryScreenshot=Capture d''écran de l''historique +TelegramReport.HistoryScreenshot=Capture d'écran de l'historique TelegramReport.MessageAutoRemove=Définir le délai de suppression automatique des messages TelegramReport.GameScore=score du jeu TelegramReport.PhoneCall=Appel téléphonique @@ -403,9 +403,9 @@ TelegramReport.ContactSignUp=Contact inscrivez-vous TelegramReport.ChatDeletePhoto=Supprimer la photo du chat TelegramReport.UnknownMessage=Type de message inconnu:\ TelegramReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs -TelegramReport.geoProximityReached=L''alerte de géoproximité a été atteinte\ +TelegramReport.geoProximityReached=L'alerte de géoproximité a été atteinte\ TelegramReport.groupPhoneCall=Appel téléphonique de groupe -TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d''appel téléphonique +TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d'appel téléphonique TelegramReport.ChangeChatTheme=Changement du thème du chat TelegramReport.joinedByRequest=Utilisateur rejoint par requête TelegramReport.ChannelMigratedFromGroup=Cette chaîne a migré depuis un groupe @@ -447,7 +447,7 @@ ThreemaReport.AudioMessageTitle=Audio Message File[TBT] ThreemaReport.VideoMessageTitle=Video Message File[TBT] ThreemaReport.Video=Video[TBT] ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database[TBT] -P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d''alertes en matière de pédopornographie. +P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d'alertes en matière de pédopornographie. Win10Mail.NotFound=Non trouvé APKParser.Permissions=Permissions Required[TBT] APKParser.Manifest=Manifest XML[TBT] diff --git a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties index 01c7f77889..abfee09355 100644 --- a/iped-app/resources/localization/iped-parsers-messages_it_IT.properties +++ b/iped-app/resources/localization/iped-parsers-messages_it_IT.properties @@ -245,7 +245,7 @@ WhatsAppReport.RemovedGroup=removed from group[TBT] WhatsAppReport.GroupIconChanged=Icona del gruppo cambiata WhatsAppReport.GroupIconDeleted=Icona del gruppo eliminata WhatsAppReport.MessageDeleted=Messaggio cancellato -WhatsAppReport.MessageDeletedByAdmin=Messaggio cancellato dall''amministratore +WhatsAppReport.MessageDeletedByAdmin=Messaggio cancellato dall'amministratore WhatsAppReport.MessageDeletedBySender=Messaggio cancellato dal mittente WhatsAppReport.MessageDeletedRecovered=Messaggio cancellato recuperato WhatsAppReport.LocationMessage=Posizione @@ -258,13 +258,13 @@ WhatsAppReport.VideoCall=Videochiamata WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] WhatsAppReport.UserJoinedGroupLink=si è unito al gruppo tramite link condiviso -WhatsAppReport.ResetGroupLink=reset this group''s invite link[TBT] +WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] WhatsAppReport.GroupDescriptionChanged=Descrizione gruppo modificata WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] WhatsAppReport.GroupNameChanged=changed the group name to [TBT] WhatsAppReport.SubjectChanged=Oggetto modificato WhatsAppReport.UserAdmin=is now admin of this group[TBT] -WhatsAppReport.YouAdmin=Ora sei l''amministratore di questo gruppo +WhatsAppReport.YouAdmin=Ora sei l'amministratore di questo gruppo WhatsAppReport.YouNotAdmin=You are no longer an admin of this group[TBT] WhatsAppReport.WaitingMessage=In attesa di messaggio WhatsAppReport.Duration=Durata @@ -293,15 +293,15 @@ WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] WhatsAppReport.Hours=hours[TBT] WhatsAppReport.Days=days[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group''s settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group''s settings to allow all participants to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group''s settings to allow only admins to edit this group''s info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group''s settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group''s settings to allow only admins to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] +WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] +WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] +WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] WhatsAppReport.ChangedDevice=changed device.[TBT] WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You''re currently chatting with their new number.[TBT] +WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] WhatsAppReport.SenderInContacts=is in your contacts.[TBT] WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] @@ -311,7 +311,7 @@ WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Any community member can join this group.[TBT] WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community''s name[TBT] +WhatsAppReport.CommunityRenamed=changed the community's name[TBT] WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] @@ -407,7 +407,7 @@ TelegramReport.geoProximityReached=allarme di prossimità raggiunto\ TelegramReport.groupPhoneCall=Telefonata di gruppo TelegramReport.inviteToGroupPhoneCall=Invito il gruppo a una telefonata TelegramReport.ChangeChatTheme=Tema della chat modificato -TelegramReport.joinedByRequest=L''utente si è unito tramite richiesta +TelegramReport.joinedByRequest=L'utente si è unito tramite richiesta TelegramReport.ChannelMigratedFromGroup=Questo canale è migrato da un gruppo TelegramReport.RecoveredChannel=Recovered deleted channel[TBT] TelegramReport.RecoveredGroup=Gruppo cancellato recuperato diff --git a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties index 74492b104f..9c26d549fd 100644 --- a/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_fr_FR.properties @@ -15,10 +15,10 @@ EmailViewer.UnNamed=[Inconnu] ExternalViewer.Open=Cliquer ici pour visualiser le fichier en surbrillance HitsTableModel.ContentHits=Contenu des résultats HtmlLinkViewer.AttachNotFound=Pièce jointe non trouvée\! -HtmlViewer.OpenExternally=Ouvert à l''extérieur +HtmlViewer.OpenExternally=Ouvert à l'extérieur HtmlViewer.TooBigToOpen=Fichier trop volumineux pour être ouvert\! ImageViewer.Blur=Activer/Dasactiver le filtre "Flou" dans la visionneuse (utiliser Ctrl+Q pour tout flouter) -ImageViewer.Copy=Copier l''image de la visionneuse +ImageViewer.Copy=Copier l'image de la visionneuse ImageViewer.GrayScale=Activer/Dasactiver le filtre "Griser" dans la visionneuse (utiliser Ctrl+W for pour tout griser) LibreOfficeViewer.RestartingViewer=Redémarrez la visionneuse... LOExtractor.DecompressingLO=Décompresser LibreOffice... @@ -29,8 +29,8 @@ MetadataViewer.TabTitle=Métadonnées NoJavaFXViewer.Warn=Affichage non pris en charge. Mettre à jour Java en version 7u06 ou supérieur. TiffViewer.InvalidPage=Numéro de page non valide.\nMerci de saisir un nombre supérieur à 1 and\ TiffViewer.Page=\ Page\ -PDFViewer.OpenError=ERREUR: Impossible d''ouvrir le fichier PDF! -MsgViewer.OpenError=ERROR: Impossible d''ouvrir le message! +PDFViewer.OpenError=ERREUR: Impossible d'ouvrir le fichier PDF! +MsgViewer.OpenError=ERROR: Impossible d'ouvrir le message! HexViewerPlus.TabName=Hex HexViewerPlus.appName=Hex Viewer Plus HexViewerPlus.HvpFileSettings=Paramères de Hex Viewer Plus @@ -50,7 +50,7 @@ HexViewerPlus.goToHit=Aller aux éléments trouvés HexViewerPlus.goToPosition=Aller à la position HexViewerPlus.selectBlock=Selectionner le Bloque HexViewerPlus.selectAll=Tout sélectionner -HexViewerPlus.copyHex=Copier l''Hexadecimal +HexViewerPlus.copyHex=Copier l'Hexadecimal HexViewerPlus.copyText=Copier le Texte HexViewerPlus.options=Options HexViewerPlus.selectColor=Choisir une couleur @@ -82,8 +82,8 @@ HexViewerPlus.lineBreak=Ligne Brisée HexViewerPlus.showAllCharacters=Afficher toutes les personnes HexViewerPlus.loadFile=Charger le fichier HexViewerPlus.saveFile=Sauvegarder le fichier -HexViewerPlus.failOpenFile=Echec d''ouverture du fichier! -HexViewerPlus.failSaveFile=Erreur d''enregistrement du fichier! +HexViewerPlus.failOpenFile=Echec d'ouverture du fichier! +HexViewerPlus.failSaveFile=Erreur d'enregistrement du fichier! HexViewerPlus.yes=Oui HexViewerPlus.no=Non HexViewerPlus.overWriteFile=Existe déjà. Voulez vous le remplacer? @@ -92,14 +92,14 @@ HexViewerPlus.type=Type HexViewerPlus.interval=Intervalle HexViewerPlus.invalidPosition=IPosition non valide! HexViewerPlus.startPosition=Position de départ -HexViewerPlus.endPosition=Position d''arrivée +HexViewerPlus.endPosition=Position d'arrivée HexViewerPlus.format=Format HexViewerPlus.hexadecimal=Hexadécimal HexViewerPlus.decimal=Décimal HexViewerPlus.octal=Octale HexViewerPlus.invalidStartPosition=Position de départ non valide! HexViewerPlus.invalidSize=Taille invalide! -HexViewerPlus.invalidEndPosition=Position d''arrivée non valide! +HexViewerPlus.invalidEndPosition=Position d'arrivée non valide! HexViewerPlus.start=Démarrer HexViewerPlus.invalidHit=Eléments trouvés invalides! HexViewerPlus.text=Texte From dd6d83383e0d3bd1b8c3fb83cf93a8a8d7c8b373 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Sun, 19 May 2024 15:39:23 -0300 Subject: [PATCH 094/126] put localization strings in the same order across all language files --- .../iped-desktop-messages_fr_FR.properties | 10 +++++----- .../iped-desktop-messages_pt_BR.properties | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties index 5403c91d76..7ed824bdc6 100644 --- a/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_fr_FR.properties @@ -291,11 +291,6 @@ ReferencesTab.Title=Référencement ReferencedByTab.Title=Référencé par ResultTableModel.bookmark=favori ResultTableModel.score=score -ParentTableModel.ParentCount=Dossier source -ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z -ResultTableModel.Error=ERREUR -ResultTableModel.FATDateFormat=dd/MM/yyyy -ResultTableRowSorter.Sorting=Tri... ReportDialog.AddToReport=Ajouter à un rapport existant ReportDialog.AppendWarning=Le rapport HTML existant n''est pas encore mis à jour, le cas est seulement indexé ! ReportDialog.CaseInfo=Compléter les informations du cas (numéro du cas, nom de l''analyste, numéro du rapport...) @@ -326,6 +321,11 @@ ReportDialog.Requester=Requérant ReportDialog.TableHeader1=Favori ReportDialog.TableHeader2=ThumbsOnly ReportDialog.Title=Créer un rapport +ParentTableModel.ParentCount=Dossier source +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z +ResultTableModel.Error=ERREUR +ResultTableModel.FATDateFormat=dd/MM/yyyy +ResultTableRowSorter.Sorting=Tri... RowComparator.SortCanceled=Tri annulé. SearchStateFilter.BookmarksFile=Fichier des favoris SubitemTableModel.Subitens=\ Pièces jointes/sous éléments diff --git a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties index 28561328a3..7d45a59263 100644 --- a/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties +++ b/iped-app/resources/localization/iped-desktop-messages_pt_BR.properties @@ -289,13 +289,8 @@ ProcessingNotFinished.cases=\ Os seguintes casos são afetados: ProcessingNotFinished.evidence=Evidência afetada: ResultTableModel.bookmark=marcador ResultTableModel.score=score -ParentTableModel.ParentCount=Item Pai ReferencesTab.Title=Referências ReferencedByTab.Title=Referenciado por -ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z -ResultTableModel.Error=ERRO -ResultTableModel.FATDateFormat=dd/MM/yyyy -ResultTableRowSorter.Sorting=Ordenando... ReportDialog.AddToReport=Adicionar ao relatório já existente ReportDialog.AppendWarning=O relatório html existente ainda não é atualizado, apenas o caso indexado! ReportDialog.CaseInfo=Preencher informações do caso (investigação, examinador, laudo...) @@ -326,6 +321,11 @@ ReportDialog.Requester=Requisitante ReportDialog.TableHeader1=Marcador ReportDialog.TableHeader2=ThumbsOnly ReportDialog.Title=Gerar Relatório +ParentTableModel.ParentCount=Item Pai +ResultTableModel.DateFormat=dd/MM/yyyy HH:mm:ss z +ResultTableModel.Error=ERRO +ResultTableModel.FATDateFormat=dd/MM/yyyy +ResultTableRowSorter.Sorting=Ordenando... RowComparator.SortCanceled=Ordenação cancelada. SearchStateFilter.BookmarksFile=Arquivo de Marcadores SubitemTableModel.Subitens=\ Anexos/Subitens From 94ff0efa990edaff757de183792f780f782c549d Mon Sep 17 00:00:00 2001 From: Luis Filipe Nassif <lfcnassif@gmail.com> Date: Sun, 19 May 2024 22:21:47 -0300 Subject: [PATCH 095/126] #2222: fix date format localization in MetadataViewer for Spanish --- .../localization/iped-viewer-messages_es_AR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties index 7fbda50fd7..215b3fe405 100644 --- a/iped-app/resources/localization/iped-viewer-messages_es_AR.properties +++ b/iped-app/resources/localization/iped-viewer-messages_es_AR.properties @@ -26,7 +26,7 @@ MetadataViewer.AdvancedProps=Propiedades avanzadas MetadataViewer.BasicProps=Propiedades básicas MetadataViewer.Metadata=Metadatos MetadataViewer.TabTitle=Metadatos -MetadataViewer.DateFormat=MM/dd/yyyy HH:mm:ss z +MetadataViewer.DateFormat=dd/MM/yyyy HH:mm:ss z NoJavaFXViewer.Warn=Visualización no compatible. Actualice Java a 7u06 o posterior. TiffViewer.InvalidPage=no es un número de página válido.\nPor favor ingrese un número entre 1 y\ TiffViewer.Page=\ Página\ From bef1025c834c8c2ec6958b82d8081090913fe124 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Tue, 21 May 2024 14:01:16 -0300 Subject: [PATCH 096/126] '#1182: update French translation by Didier MEZIAT-BURDIN --- .../iped-parsers-messages_fr_FR.properties | 398 +++++++++--------- 1 file changed, 199 insertions(+), 199 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 5dd2e31003..597a1c729c 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -2,7 +2,7 @@ AbstractDBParser.ProbableDate=*Date possiblement décodée.\n AbstractDBParser.Table=Tableau:\ AresParser.Album=Album AresParser.Artist=Artiste -AresParser.Category=Categories +AresParser.Category=Catégories AresParser.Comments=Commentaires AresParser.Corrupted=Corrompu AresParser.DateFormat=dd/MM/yyyy HH:mm:ss @@ -16,7 +16,7 @@ AresParser.Seq=Séquence AresParser.Shared=Partagé AresParser.Size=Taille AresParser.Title=Titre -AresParser.URL=URL +AresParser.URL=Adresse AresParser.Yes=oui DateFormat=dd/MM/yyyy HH:mm:ss DiscordParser.Attachments=Pièces jointes @@ -217,7 +217,7 @@ WhatsAppReport.Forwarded=Transféré WhatsAppReport.SecurityChanged=Le code de sécurité a changé. Appuyer pour plus d'informations. WhatsAppReport.BlockedContact=Vous avez bloqué ce contact. Appuyer pour débloquer. WhatsAppReport.UnblockedContact=Vous avez débloqué ce contact. -WhatsAppReport.BusinessSecureService=This business use a secure service from Meta to manage this chat. Tap for more info.[TBT] +WhatsAppReport.BusinessSecureService=Cette entreprise utilise un service sécurisé de Meta pour gérer ce chat. Cliquer pour plus d'information. WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. WhatsAppReport.ChatBusiness=Ce chat s'effectue avec un compte professionnel. Appuyer pour plus d'informations. WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp,. Appuyer pour en savoir plus. @@ -233,15 +233,15 @@ WhatsAppReport.UnavailableVideoCall=Appel vidéo indisponible WhatsAppReport.UnknownVoiceCall=Type d'appel vocal inconnu WhatsAppReport.UnknownVideoCall=Type d'appel vidéo inconnu WhatsAppReport.GroupCreated=Groupe créé par -WhatsAppReport.UserAddedToCommunity=added user to community[TBT] -WhatsAppReport.UserAddedToGroup=added user to group[TBT] -WhatsAppReport.UserCommunityAdmin=set user as community admin[TBT] -WhatsAppReport.CommunityAdmin=is now community admin[TBT] +WhatsAppReport.UserAddedToCommunity=Utilisateur ajouté à la communauté +WhatsAppReport.UserAddedToGroup=Utilisateur ajouté au groupe +WhatsAppReport.UserCommunityAdmin=Définir l'utilisateur en tant qu'administrateur +WhatsAppReport.CommunityAdmin=Est à présent administrateur WhatsAppReport.UserLeftGroup=Utilisateur ayant quitté le groupe:\ WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe:\ -WhatsAppReport.AddedToCommunity=added to community[TBT] -WhatsAppReport.AddedToGroup=added to group[TBT] -WhatsAppReport.RemovedGroup=removed from group[TBT] +WhatsAppReport.AddedToCommunity=Ajouté à la communauté +WhatsAppReport.AddedToGroup=Ajouté au groupe +WhatsAppReport.RemovedGroup=Supprimé du groupe WhatsAppReport.GroupIconChanged=l'icône du groupe a changé WhatsAppReport.GroupIconDeleted=l'icône du groupe a été supprimé WhatsAppReport.MessageDeleted=Message supprimé @@ -250,22 +250,22 @@ WhatsAppReport.MessageDeletedBySender=Message supprimé par l'expéditeur WhatsAppReport.MessageDeletedRecovered=Message supprimé récupéré WhatsAppReport.LocationMessage=Emplacement: WhatsAppReport.SharedLocationMessage=Emplacement partagé: -WhatsAppReport.Latitude=Latitude[TBT] -WhatsAppReport.Longitude=Longitude[TBT] -WhatsAppReport.Attachment=Attachment[TBT] +WhatsAppReport.Latitude=Latitude +WhatsAppReport.Longitude=Longitude +WhatsAppReport.Attachment=Pièce jointe WhatsAppReport.VoiceCall=Appel vocal WhatsAppReport.VideoCall=Appel vidéo -WhatsAppReport.UserJoinedGroupCommunity=joined group from community[TBT] -WhatsAppReport.UserJoinedGroupInvitation=joined group from invitation[TBT] +WhatsAppReport.UserJoinedGroupCommunity=A rejoint la communauté +WhatsAppReport.UserJoinedGroupInvitation=A rejoint le groupe sur invitation WhatsAppReport.UserJoinedGroupLink=L'utilisateur a rejoint le groupe à partir d'un lien partagé -WhatsAppReport.ResetGroupLink=reset this group's invite link[TBT] +WhatsAppReport.ResetGroupLink=Réinitialiser le lien d'invitation WhatsAppReport.GroupDescriptionChanged=Description du groupe modifiée -WhatsAppReport.GroupDescriptionDeleted=deleted group description[TBT] -WhatsAppReport.GroupNameChanged=changed the group name to [TBT] +WhatsAppReport.GroupDescriptionDeleted=Description du groupe supprimé +WhatsAppReport.GroupNameChanged=a changé le nom du groupe WhatsAppReport.SubjectChanged=Sujet modifié -WhatsAppReport.UserAdmin=is now admin of this group[TBT] +WhatsAppReport.UserAdmin=est à préseant administrateur du groupe WhatsAppReport.YouAdmin=Vous ètes à présent administrateur du groupe -WhatsAppReport.YouNotAdmin=You are no longer an admin of this group[TBT] +WhatsAppReport.YouNotAdmin=Vous n'êtes plus administrateur de ce groupe WhatsAppReport.WaitingMessage=En attente de message WhatsAppReport.Duration=Durée WhatsAppReport.AudioMessageTitle=Fichier de message audio @@ -274,57 +274,57 @@ WhatsAppReport.Contact=Contact[TBT] WhatsAppReport.RecoveredFrom=Récupéré de WhatsAppReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs WhatsAppReport.Owner=Propriétaire -WhatsAppReport.Recovered=Recovered[TBT] -WhatsAppReport.QuoteNotFound=Quoted message not found[TBT] -WhatsAppReport.Document=Document[TBT] -WhatsAppReport.Photo=Photo[TBT] -WhatsAppReport.Audio=Audio[TBT] -WhatsAppReport.ChatFragment=This quoted message is located on chat fragment[TBT] -WhatsAppReport.ReferenceId=Quoted message reference ID[TBT] -WhatsAppReport.Close=Close[TBT] -WhatsAppReport.GroupInvite=WhatsApp Group Invite[TBT] -WhatsAppReport.Poll=Poll[TBT] -WhatsAppReport.Vote=vote[TBT] -WhatsAppReport.Votes=votes[TBT] -WhatsAppReport.EphemeralDurationChanged=changed the duration of disappearing messages to[TBT] -WhatsAppReport.EphemeralDefault=uses a default timer for disappearing messages messages in new chats. All new messages will disappear from this chat after[TBT] -WhatsAppReport.EphemeralOn=turned on disappearing messages. All new messages will disappear from this chat after[TBT] -WhatsAppReport.EphemeralOff=turned off disappearing messages.[TBT] -WhatsAppReport.EphemeralSave=Now it is possible to save disappearing message in the chat.[TBT] -WhatsAppReport.Days=days[TBT] -WhatsAppReport.Hours=hours[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=changed this group's settings to allow only admins to add other users to this group.[TBT] -WhatsAppReport.GroupChangedAllMembersCanEdit=changed this group's settings to allow all participants to edit this group's info.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=changed this group's settings to allow only admins to edit this group's info.[TBT] -WhatsAppReport.GroupChangedAllMembersCanSend=changed this group's settings to allow all participants to send messages.[TBT] -WhatsAppReport.GroupChangedOnlyAdminsCanSend=changed this group's settings to allow only admins to send messages.[TBT] -WhatsAppReport.GroupOnlyAdminsCanSend=Only admins can send messages to this group.[TBT] -WhatsAppReport.ChangedDevice=changed device.[TBT] -WhatsAppReport.ChangedNumberTo=changed to[TBT] -WhatsAppReport.ChangedNumberChattingWithNew=changed their phone number. You're currently chatting with their new number.[TBT] -WhatsAppReport.ChangedNumberChattingWithOld=changed their phone number to a new number. Tap to message the new number.[TBT] -WhatsAppReport.SenderInContacts=is in your contacts.[TBT] -WhatsAppReport.SenderAddedToContacts=was added to your contacts.[TBT] -WhatsAppReport.BusinessChangedName=This business account changed its name.[TBT] -WhatsAppReport.ChatBusinessOfficial=This chat is with an official business account.[TBT] -WhatsAppReport.GroupAddedToCommunity=Group was added to the community[TBT] -WhatsAppReport.GroupRemovedFromCommunity=Group was removed from the community[TBT] -WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=Anyone in the community can join this group.[TBT] -WhatsAppReport.CommunityManagementAction=Community management action.[TBT] -WhatsAppReport.CommunityRenamed=changed the community's name[TBT] -WhatsAppReport.CommunityWelcome=Welcome to the community.[TBT] -WhatsAppReport.NewParticipantsNeedAdminApproval=New participants need admin approval to join this group.[TBT] -WhatsAppReport.ChatAddedPrivacy=This chat has added privacy for your profile and phone number.[TBT] -WhatsAppReport.ChannelAddedPrivacy=This channel has added privacy for your profile and phone number.[TBT] -WhatsAppReport.ChannelCreated=Channel was created.[TBT] -WhatsAppReport.ProductTitle=Product[TBT] -WhatsAppReport.ProductSeller=Seller[TBT] -WhatsAppReport.ProductAmount=Amount[TBT] -WhatsAppReport.OrderCount=Item Count[TBT] -WhatsAppReport.EditedOn=Edited on[TBT] -WhatsAppReport.UserJoinedWhatsApp=joined WhatsApp[TBT] -WhatsAppReport.PinnedMessage=pinned a message[TBT] -WhatsAppReport.AIThirdParty=This AI is from a third-party developer. Meta receives your AI chats to improve AI quality.[TBT] +WhatsAppReport.Recovered=Rétablie +WhatsAppReport.QuoteNotFound=Message cité est introuvable +WhatsAppReport.Document=Document +WhatsAppReport.Photo=Photo +WhatsAppReport.Audio=Audio +WhatsAppReport.ChatFragment=Ce message cité se trouve sur l'extrait de la discussion +WhatsAppReport.ReferenceId=Identifiant du message cité +WhatsAppReport.Close=Fermer +WhatsAppReport.GroupInvite=Invitation au groupe WhatsApp +WhatsAppReport.Poll=Sondage +WhatsAppReport.Vote=Vote +WhatsAppReport.Votes=voix +WhatsAppReport.EphemeralDurationChanged=Modifier la durée avant effacement des messages en +WhatsAppReport.EphemeralDefault=Utiliser la durée de conservation par défaut des messages dnas les nouvelles discussions. Tous les messages de ce tchat disparaitront après +WhatsAppReport.EphemeralOn=Activé l'effacement des messages. Tous les messages seront supprimés de ce chat. +WhatsAppReport.EphemeralOff=Désactiver l'effacement des messages. +WhatsAppReport.EphemeralSave=Il est désormais possible de sauvegarder les messages supprimés du chat. +WhatsAppReport.Days=Jours +WhatsAppReport.Hours=heures +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=Modifier les paramètres de ce groupe pour permettre uniquement aux administrateurs d'ajouter d'autres utilisateurs. +WhatsAppReport.GroupChangedAllMembersCanEdit=Modifier les paramètres de ce groupe pour permettre à tous les participants d'en modifier les informations. +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=Modifier les paramètres de ce groupe pour permettre uniquement aux administrateurs d'effectuer des modifications. +WhatsAppReport.GroupChangedAllMembersCanSend=Modifier les paramètres de ce groupe pour permettre à tous les participants d'envoyer des messages. +WhatsAppReport.GroupChangedOnlyAdminsCanSend=Modifier les paramètres de ce groupe pour autoriser uniquement les administrateurs à envoyer des messages. +WhatsAppReport.GroupOnlyAdminsCanSend=Seuls les administrateurs peuvent envoyer des messages à ce groupe. +WhatsAppReport.ChangedDevice=Changer d'appareil. +WhatsAppReport.ChangedNumberTo=changé en +WhatsAppReport.ChangedNumberChattingWithNew=Changer de numéro de téléphone. Vous discutez actuellement avec leur nouveau numéro. +WhatsAppReport.ChangedNumberChattingWithOld=A changé son numéro de téléphone. Appuyez pour envoyer un message au nouveau numéro. +WhatsAppReport.SenderInContacts=est dans vos contacts. +WhatsAppReport.SenderAddedToContacts=A été ajouté à vos contacts. +WhatsAppReport.BusinessChangedName=Ce compte professionnel a changé de nom. +WhatsAppReport.ChatBusinessOfficial=Ce chat à été réalisé avec un compte professionnel officiel. +WhatsAppReport.GroupAddedToCommunity=Le groupe a été ajouté à la communauté. +WhatsAppReport.GroupRemovedFromCommunity=Le groups a été supprimé dela communauté. +WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=N'importe qui dans la communauté peut rejoindre ce groupe. +WhatsAppReport.CommunityManagementAction=Gestion de la communauté. +WhatsAppReport.CommunityRenamed=Changer le nom de la communauté +WhatsAppReport.CommunityWelcome=Bienvenue dans la communauté. +WhatsAppReport.NewParticipantsNeedAdminApproval=Les nouveaux participants ont besoin de l'approbation de l'administrateur pour rejoindre ce groupe. +WhatsAppReport.ChatAddedPrivacy=Ce chat assure la confidentialité de votre profil et de votre numéro de téléphone. +WhatsAppReport.ChannelAddedPrivacy=Cette chaîne assure la confidentialité de votre profil et de votre numéro de téléphone. +WhatsAppReport.ChannelCreated=La chaîne a été créée.[TBT] +WhatsAppReport.ProductTitle=Produit. +WhatsAppReport.ProductSeller=Vendeur. +WhatsAppReport.ProductAmount=Monter. +WhatsAppReport.OrderCount=Nombre d'élément. +WhatsAppReport.EditedOn=Modifier. +WhatsAppReport.UserJoinedWhatsApp=Rejoindre WhatsApp +WhatsAppReport.PinnedMessage=Epingler un message +WhatsAppReport.AIThirdParty=Cette IA provient d'un développeur tiers. Meta reçoit vos discussions IA pour améliorer la qualité de l'IA. VCardParser.FormattedName=Nom formaté VCardParser.Name=Nom VCardParser.Nickname=Surnom @@ -345,41 +345,41 @@ BitTorrentResumeDatParser.Time=Date/Heure BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière consultation BitTorrentResumeDatParser.SeedTime=Seed time (s) BitTorrentResumeDatParser.RunTime=Durée (s) -BitTorrentResumeDatParser.InfoHash=InfoHash[TBT] -BitTorrentResumeDatParser.TorrentFoundInCase=Torrent Found in the Case[TBT] -BitTorrentResumeDatParser.Yes=Yes[TBT] -BitTorrentResumeDatParser.FilesFoundInCase=Files Found in the Case[TBT] +BitTorrentResumeDatParser.InfoHash=Information sur le Hash +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent trouvé dans l'affaire +BitTorrentResumeDatParser.Yes=Oui +BitTorrentResumeDatParser.FilesFoundInCase=Fichiers trouvés dans le dossier TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Chemin complet TorrentFileDatParser.FileSize=Taille du fichier (Bytes) TorrentFileDatParser.MD5=Hash MD5 TorrentFileDatParser.SHA1=Hash SHA1 TorrentFileDatParser.ED2K=Hash ED2K -TorrentFileDatParser.Announce=Tracker URL[TBT] -TorrentFileDatParser.Comment=Comment[TBT] -TorrentFileDatParser.CreatedBy=Created by[TBT] -TorrentFileDatParser.CreationDate=Creation date[TBT] -TorrentFileDatParser.InfoHash=InfoHash[TBT] -TorrentFileDatParser.Name=Name[TBT] -TorrentFileDatParser.NumberOfFiles=Number of files[TBT] -TorrentFileDatParser.NumberOfPieces=Number of pieces[TBT] -TorrentFileDatParser.Piece=Piece[TBT] -TorrentFileDatParser.PieceLength=Piece length[TBT] -TorrentFileDatParser.IncompleteWarning=Incomplete file. Some of the parse information may be wrong. Please verify.[TBT] -TorrentFileDatParser.File=File[TBT] -TorrentFileDatParser.FileFoundInCase=File Found in the Case[TBT] -TorrentFileDatParser.FilesFoundInCase=Files Found in the Case[TBT] -TorrentFileDatParser.PathInCase=Path of Item Found in the Case[TBT] -TorrentFileDatParser.Yes=Yes[TBT] -TorrentFileDatParser.ConfirmedPieces=Confirmed pieces[TBT] -TorrentFileDatParser.AtOffset=at offset[TBT] +TorrentFileDatParser.Announce=URL du suivi +TorrentFileDatParser.Comment=Commentaire +TorrentFileDatParser.CreatedBy=Créé par +TorrentFileDatParser.CreationDate=Date de création. +TorrentFileDatParser.InfoHash=Informations sur le Hash +TorrentFileDatParser.Name=Nom +TorrentFileDatParser.NumberOfFiles=Nombre de fichier +TorrentFileDatParser.NumberOfPieces=Nombre de pièces +TorrentFileDatParser.Piece=Morceau +TorrentFileDatParser.PieceLength=taille de la pièce +TorrentFileDatParser.IncompleteWarning=Dossier incomplet. Certaines informations analysées peuvent être erronées. Veuillez vérifier. +TorrentFileDatParser.File=Fichier +TorrentFileDatParser.FileFoundInCase=Fichier trouvé dans le dossier +TorrentFileDatParser.FilesFoundInCase=Fichiers trouvés dans le dossier +TorrentFileDatParser.PathInCase=Emplacement de l'élément trouvé dans le dossier +TorrentFileDatParser.Yes=Oui +TorrentFileDatParser.ConfirmedPieces=Pièces confirmées +TorrentFileDatParser.AtOffset=à l'offset TelegramContact.ContactID=Identifiant du contact: TelegramContact.FirstName=Prénom: TelegramContact.LastName=Nom: TelegramContact.Username=Nom d'utilisateur: TelegramContact.Phone=Téléphone: -TelegramContact.Channel=Telegram Channel[TBT] -TelegramContact.Group=Telegram Group[TBT] +TelegramContact.Channel=Chaine de telegram +TelegramContact.Group=Groupe de Telegram TelegramReport.GroupCreate=Groupe/chat/canal créés TelegramReport.AddMember=Ajouter un membre TelegramReport.RemoveMember=Supprimer un membre @@ -409,110 +409,110 @@ TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d'appel TelegramReport.ChangeChatTheme=Changement du thème du chat TelegramReport.joinedByRequest=Utilisateur rejoint par requête TelegramReport.ChannelMigratedFromGroup=Cette chaîne a migré depuis un groupe -TelegramReport.RecoveredChannel=Recovered deleted channel[TBT] +TelegramReport.RecoveredChannel=Chaine supprimée récupérée TelegramReport.RecoveredGroup=Groupe supprimé récupéré -TelegramReport.Link=Link[TBT] -TelegramReport.LinkTitle=Title[TBT] -TelegramReport.LinkURL=URL[TBT] -TelegramReport.Pool=Pool[TBT] -ThreemaReport.ChatContinuation=[Chat continuation][TBT] -ThreemaReport.ChatContinues=[Chat continues...][TBT] -ThreemaReport.UnknownMessage=Unknown Message[TBT] -ThreemaReport.GroupRenamed=Group renamed[TBT] -ThreemaReport.GroupNoteStart=*You are alone in here* Use this chat as a secure notebook for text, media, and documents.[TBT] -ThreemaReport.GroupNoteEnd=*You are no longer alone in this chat* New messages will be sent to all group members.[TBT] -ThreemaReport.GroupCreatorLeft=*This group is orphaned* The group creator has left the group, and it can no longer be maintained. One of the remaining members should clone the group (via group details) to become the new admin.[TBT] -ThreemaReport.GroupIconChanged=Group picture changed[TBT] -ThreemaReport.GroupCallStarted=Group call started[TBT] -ThreemaReport.GroupCallEnded=Group call ended[TBT] -ThreemaReport.UserLeftGroup=User left this group[TBT] -ThreemaReport.UserJoinedGroup=User joined this group[TBT] -ThreemaReport.UserRemovedFromGroup=User removed from this group[TBT] -ThreemaReport.SelfAddedToGroup=You were added to this group[TBT] -ThreemaReport.SelfRemovedToGroup=You were removed from this group[TBT] -ThreemaReport.SelfLeftGroup=You have left the group[TBT] -ThreemaReport.MissedCall=Missed call[TBT] -ThreemaReport.RejectedCall=Call Rejected[TBT] -ThreemaReport.RejectedCallBusy=Call Rejected (Busy)[TBT] -ThreemaReport.RejectedCallTimeout=Call recipient is unavailable[TBT] -ThreemaReport.RejectedCallDisabled=Threema calls disabled by recipient[TBT] -ThreemaReport.RejectedCallUnknown=Call Rejected (Unknown)[TBT] -ThreemaReport.RejectedCallOffHours=Call Rejected (OffHours)[TBT] -ThreemaReport.WorkConsumerInfo=This contact uses different version (Work/Private) from Threema App[TBT] -ThreemaReport.ThreemaCall=Threema Call[TBT] -ThreemaReport.Duration=Duration[TBT] -ThreemaReport.UnknownMediaMessage=Unknown Media message[TBT] -ThreemaReport.LocationMessage=Location:[TBT] -ThreemaReport.AudioMessageTitle=Audio Message File[TBT] -ThreemaReport.VideoMessageTitle=Video Message File[TBT] -ThreemaReport.Video=Video[TBT] -ThreemaReport.FoundInPedoHashDB=Found in Child Porn Alert Hash Database[TBT] +TelegramReport.Link=Lien +TelegramReport.LinkTitle=Titre +TelegramReport.LinkURL=Adresse +TelegramReport.Pool=Ensemble +ThreemaReport.ChatContinuation=[Suite du chat] +ThreemaReport.ChatContinues=[Le chat continue...] +ThreemaReport.UnknownMessage=Message inconnu +ThreemaReport.GroupRenamed=Groupe renommé +ThreemaReport.GroupNoteStart=*En privé* Utilisez ce chat comme bloc-notes sécurisé pour le texte, les médias et les documents. +ThreemaReport.GroupNoteEnd=*Publique* Les nouveaux messages seront lisibles par tous les membres du groupe. +ThreemaReport.GroupCreatorLeft=*Ce groupe est orphelin* Le créateur du groupe a quitté le groupe et celui-ci ne peut plus être maintenu. L'un des membres restants doit cloner le groupe (via les détails du groupe) pour devenir le nouvel administrateur. +ThreemaReport.GroupIconChanged=Photo du groupe modifiée +ThreemaReport.GroupCallStarted=Appel de groupe lancé +ThreemaReport.GroupCallEnded=Appel de groupe terminé +ThreemaReport.UserLeftGroup=L'utilisateur a quitté ce groupe +ThreemaReport.UserJoinedGroup=L'utilisateur a rejoint ce groupe +ThreemaReport.UserRemovedFromGroup=Utilisateur supprimé du groupe +ThreemaReport.SelfAddedToGroup=Vous avez été ajouté à ce groupe +ThreemaReport.SelfRemovedToGroup=Vous avez été supprimé de ce groupe +ThreemaReport.SelfLeftGroup=Vous avez quitté le groupe +ThreemaReport.MissedCall=Appel manqué +ThreemaReport.RejectedCall=Appel rejeté +ThreemaReport.RejectedCallBusy=Appel rejeté (occupé) +ThreemaReport.RejectedCallTimeout=Le destinataire de l'appel n'est pas disponible +ThreemaReport.RejectedCallDisabled=Appels Threema désactivés par le destinataire +ThreemaReport.RejectedCallUnknown=Appel rejeté (Inconnu) +ThreemaReport.RejectedCallOffHours=Appel rejeté (heures creuses) +ThreemaReport.WorkConsumerInfo=Ce contact utilise une version différente (Travail/Privé) depuis l'application Threema +ThreemaReport.ThreemaCall=Appel Threema +ThreemaReport.Duration=Duréé +ThreemaReport.UnknownMediaMessage=Message multimédia inconnu +ThreemaReport.LocationMessage=Emplacement: +ThreemaReport.AudioMessageTitle=Fichier de messages audio +ThreemaReport.VideoMessageTitle=Fichier de messages vidéo +ThreemaReport.Video=Vidéo +ThreemaReport.FoundInPedoHashDB=Trouvé dans la base de hash de pédopornographie. P2P.FoundInPedoHashDB=* Les lignes rouges signifient que les hachages ont été trouvés dans les bases de données de hachage d'alertes en matière de pédopornographie. Win10Mail.NotFound=Non trouvé -APKParser.Permissions=Permissions Required[TBT] -APKParser.Manifest=Manifest XML[TBT] -APKParser.Package=Package[TBT] -APKParser.Version=Version[TBT] -APKParser.SDKVersion=SDK Version[TBT] -APKParser.Features=Features[TBT] -APKParser.Signers=Signers[TBT] -APKParser.SignersV2=Signers(V2)[TBT] -APKParser.Path=Path[TBT] -APKParser.Certificate=Certificate[TBT] -APKParser.Algorithm=Algorithm[TBT] -APKParser.MD5=MD5[TBT] -APKParser.OID=OID[TBT] -APKParser.StartDate=Start Date[TBT] -APKParser.EndDate=End Date[TBT] -OFXParser.AccessKey=Access Key[TBT] -OFXParser.AccountKey=Account Key[TBT] -OFXParser.AccountLastUpdate=Account Last Update[TBT] -OFXParser.AccountNumber=Account Number[TBT] -OFXParser.AccountType=Account Type[TBT] -OFXParser.Amount=Amount[TBT] -OFXParser.AvailableBalanceAmount=Available Balance Amount[TBT] -OFXParser.AvailableBalanceDate=Available Balance Date[TBT] -OFXParser.Bank=Bank[TBT] -OFXParser.BankId=Bank Id[TBT] -OFXParser.BranchId=Branch Id[TBT] -OFXParser.CheckNumber=Check Number[TBT] -OFXParser.CorrectionId=Correction Id[TBT] -OFXParser.CreditCard=CreditCard[TBT] -OFXParser.CurrencyCode=Currency Code[TBT] -OFXParser.CurrencyExchangeRate=Currency Exchange Rate[TBT] -OFXParser.DateAvailable=Date Available[TBT] -OFXParser.DateInitiated=Date Initiated[TBT] -OFXParser.DatePosted=Date Posted[TBT] -OFXParser.ExpirationUserKey=Expiration User Key[TBT] -OFXParser.FinancialInstitutionId=Financial Institution ID[TBT] -OFXParser.FinancialInstitutionOrganization=Financial Institution Organization[TBT] -OFXParser.Id=Id[TBT] -OFXParser.Language=Language[TBT] -OFXParser.LedgerBalanceAmount=Ledger Balance Amount[TBT] -OFXParser.LedgerBalanceDate=Ledger Balance Date[TBT] -OFXParser.Memo=Memo[TBT] -OFXParser.Name=Name[TBT] -OFXParser.OriginalCurrencyCode=Original Currency Code[TBT] -OFXParser.OriginalCurrencyExchangeRate=Original Currency Exchange Rate[TBT] -OFXParser.Payee=Payee[TBT] -OFXParser.PayeeId=Payee Id[TBT] -OFXParser.ProfileLastUpdate=Profile Last Update[TBT] -OFXParser.ReferenceNumber=Reference Number[TBT] -OFXParser.ServerAssignedTemporaryId=Server-Assigned Temporary Id[TBT] -OFXParser.SessionId=Session Id[TBT] -OFXParser.Signon=Signon[TBT] -OFXParser.StandardIndustrialCode=Standard Industrial Code[TBT] -OFXParser.StatusCode=Status Code[TBT] -OFXParser.StatusSeverity=Status Serverity[TBT] -OFXParser.TimestampResponse=Timestamp Response[TBT] -OFXParser.Transactions=Transactions[TBT] -OFXParser.TransactionStartDate=Transaction Start Date[TBT] -OFXParser.TransactionEndDate=Transaction End Date[TBT] -OFXParser.Type=Type[TBT] -OFXParser.UserKey=User Key[TBT] -OFXParser.DateOfStatement=Date of Statement[TBT] -OFXParser.BrokerId=Broker ID[TBT] -OFXParser.Investment=Investment[TBT] -OFXParser.BankTransactions=Bank Transactions[TBT] -OFXParser.SubAccountFund=Sub Account Fund[TBT] -OFXParser.Investments=Investments[TBT] +APKParser.Permissions=Autorisations requises +APKParser.Manifest=Manifest XML +APKParser.Package=Package +APKParser.Version=Version +APKParser.SDKVersion=Version du SDK +APKParser.Features=Fonstionnalités +APKParser.Signers=signataires +APKParser.SignersV2=signataires(V2) +APKParser.Path=Chemin +APKParser.Certificate=Certificat +APKParser.Algorithm=Algorithme +APKParser.MD5=MD5 +APKParser.OID=OID +APKParser.StartDate=Date de début +APKParser.EndDate=Date de fin +OFXParser.AccessKey=Clef d'accès +OFXParser.AccountKey=Clé de compte +OFXParser.AccountLastUpdate=Dernière mise à jour du compte +OFXParser.AccountNumber=Numéro de compte +OFXParser.AccountType=Type de compte +OFXParser.Amount=Monter +OFXParser.AvailableBalanceAmount=Montant du solde disponible +OFXParser.AvailableBalanceDate=Date du solde disponible +OFXParser.Bank=Banque +OFXParser.BankId=Identifiant bancaire +OFXParser.BranchId=identifiant de succursale +OFXParser.CheckNumber=Numéro de chèque +OFXParser.CorrectionId=Numéro de correction +OFXParser.CreditCard=Carte de crédit +OFXParser.CurrencyCode=Code de devise +OFXParser.CurrencyExchangeRate=Taux de change +OFXParser.DateAvailable=Date de disponibilité +OFXParser.DateInitiated=Date de lancement +OFXParser.DatePosted=Date d'envoi +OFXParser.ExpirationUserKey=Clé utilisateur expirée +OFXParser.FinancialInstitutionId=Identifiant de l'institution financière +OFXParser.FinancialInstitutionOrganization=Organisation de l’institution financière +OFXParser.Id=Identifiant +OFXParser.Language=Langage +OFXParser.LedgerBalanceAmount=Montant du solde du grand livre +OFXParser.LedgerBalanceDate=Date du solde du grand livre +OFXParser.Memo=Mémo +OFXParser.Name=Nom +OFXParser.OriginalCurrencyCode=Code de devise d'origine +OFXParser.OriginalCurrencyExchangeRate=Taux de change d'origine +OFXParser.Payee=Bénéficiaire +OFXParser.PayeeId=Identifiant du Bénéficiaire +OFXParser.ProfileLastUpdate=Dernière mise à jour du profil +OFXParser.ReferenceNumber=Réference +OFXParser.ServerAssignedTemporaryId=Identifiant temporaire attribué par le serveur +OFXParser.SessionId=Identifiant de la session +OFXParser.Signon=Se connecter +OFXParser.StandardIndustrialCode=Code industriel standard +OFXParser.StatusCode=Code d'état +OFXParser.StatusSeverity=Statut de serveur +OFXParser.TimestampResponse=Horodatage de la réponse +OFXParser.Transactions=Transactions +OFXParser.TransactionStartDate=Date de début de la transaction +OFXParser.TransactionEndDate=Date de fin de transaction +OFXParser.Type=Type +OFXParser.UserKey=Clé utilisateur +OFXParser.DateOfStatement=Date du relevé +OFXParser.BrokerId=Identifiant du courtier +OFXParser.Investment=Investissement +OFXParser.BankTransactions=Opérations bancaires +OFXParser.SubAccountFund=Fonds de sous-compte +OFXParser.Investments=Investissements From c49c010ec4d3b0c2bb7e2df8d922465fd85b90fb Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Tue, 21 May 2024 14:13:45 -0300 Subject: [PATCH 097/126] '#1182: removes [TBT] suffixes left behind --- .../localization/iped-parsers-messages_fr_FR.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 597a1c729c..f7d573f87a 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -270,7 +270,7 @@ WhatsAppReport.WaitingMessage=En attente de message WhatsAppReport.Duration=Durée WhatsAppReport.AudioMessageTitle=Fichier de message audio WhatsAppReport.VideoMessageTitle=Fichier de message vidéo -WhatsAppReport.Contact=Contact[TBT] +WhatsAppReport.Contact=Contact WhatsAppReport.RecoveredFrom=Récupéré de WhatsAppReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs WhatsAppReport.Owner=Propriétaire @@ -316,7 +316,7 @@ WhatsAppReport.CommunityWelcome=Bienvenue dans la communauté. WhatsAppReport.NewParticipantsNeedAdminApproval=Les nouveaux participants ont besoin de l'approbation de l'administrateur pour rejoindre ce groupe. WhatsAppReport.ChatAddedPrivacy=Ce chat assure la confidentialité de votre profil et de votre numéro de téléphone. WhatsAppReport.ChannelAddedPrivacy=Cette chaîne assure la confidentialité de votre profil et de votre numéro de téléphone. -WhatsAppReport.ChannelCreated=La chaîne a été créée.[TBT] +WhatsAppReport.ChannelCreated=La chaîne a été créée. WhatsAppReport.ProductTitle=Produit. WhatsAppReport.ProductSeller=Vendeur. WhatsAppReport.ProductAmount=Monter. From b4f6b1ac4512d7b6f796f8f457c16dbd98e4b1ce Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Tue, 21 May 2024 21:41:24 +0200 Subject: [PATCH 098/126] Update iped-parsers-messages_fr_FR.properties REview and update trenslation --- .../iped-parsers-messages_fr_FR.properties | 256 +++++++++--------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index f7d573f87a..36fc3f0b3a 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -1,5 +1,5 @@ AbstractDBParser.ProbableDate=*Date possiblement décodée.\n -AbstractDBParser.Table=Tableau:\ +AbstractDBParser.Table=Tableau :\ AresParser.Album=Album AresParser.Artist=Artiste AresParser.Category=Catégories @@ -16,15 +16,15 @@ AresParser.Seq=Séquence AresParser.Shared=Partagé AresParser.Size=Taille AresParser.Title=Titre -AresParser.URL=Adresse -AresParser.Yes=oui +AresParser.URL=Adresse web +AresParser.Yes=Oui DateFormat=dd/MM/yyyy HH:mm:ss DiscordParser.Attachments=Pièces jointes DiscordParser.Start=Début DiscordParser.End=Fin DiscordParser.EditTime=Modifier l'heure: DiscordParser.Participants=Participants -DiscordParser.Reactions=Réactions: +DiscordParser.Reactions=Réactions : DiscordParser.DateFormat0=(hh:mm:ss dd/MM/yyyy) DiscordParser.DateFormat2=dd/MM/yy EmbeddedDocumentParser.UnNamed=[Inconnu]- @@ -37,7 +37,7 @@ FirefoxSessions.CookiesPath=Chemin FirefoxSessions.CookiesName=Nom FirefoxSessions.CookiesCookie=Cookie IncrediMailParser.NoSubject=[Sans sujet] -StandardParser.MetadataTitle=Métadonnées: +StandardParser.MetadataTitle=Métadonnées : KnownMetParser.AcceptedRequests=Demandes acceptées KnownMetParser.BytesSent=Bytes envoyés KnownMetParser.DataFormat=dd/MM/yyyy HH:mm:ss @@ -52,7 +52,7 @@ KnownMetParser.Requests=Total des demandes KnownMetParser.Seq=Séquence KnownMetParser.Size=Taille du fichier KnownMetParser.TempFile=Fichier temporaire -KnownMetParser.Totals=Total +KnownMetParser.Totals=TOTAUX KnownMetParser.Yes=Oui PreferencesDat.Version=Version PreferencesDat.UserHash=Hash utilisateur @@ -73,7 +73,7 @@ LNKShortcutParser.Description=Description LNKShortcutParser.Directory=Dossier LNKShortcutParser.DistributedLinkTrackProps=Propriété du tacker de liens distribués LNKShortcutParser.DriveSerial=Numéro de série du lecteur -LNKShortcutParser.DriveType=Type de lecteur +LNKShortcutParser.DriveType=Type de disque dur LNKShortcutParser.DroidFileId=Identifiant du fichier du Droid LNKShortcutParser.DroidVolId=Identifiant du volume du Droid LNKShortcutParser.EntryType=Type d'entrée @@ -82,8 +82,8 @@ LNKShortcutParser.File=Fichier LNKShortcutParser.FileAttr=Attributs du fichier LNKShortcutParser.FileHeader=En-tête du fichier (LNK) LNKShortcutParser.HotKey=Touche de raccourci -LNKShortcutParser.IconIndex=Index des icones -LNKShortcutParser.IconLocation=Emplacement des icones +LNKShortcutParser.IconIndex=Index de l'icône +LNKShortcutParser.IconLocation=Emplacement de l'icône LNKShortcutParser.LastMod=Dernière modification LNKShortcutParser.LinkAttr=Attributs des liens (Data Flags) LNKShortcutParser.LinkLocationInfo=Information sur l'emplacement des liens (HasLinkInfo) @@ -94,7 +94,7 @@ LNKShortcutParser.LocalPathUnicode=Chemin local - Unicode LNKShortcutParser.LocationFlags=Indicateur de localisation LNKShortcutParser.MachineId=Identifiant de la machine LNKShortcutParser.Modified=Date de dernière modification -LNKShortcutParser.NetComments=commentaires du Net +LNKShortcutParser.NetComments=Réseau - commentaires LNKShortcutParser.NetDescription=Descriptif du réseau LNKShortcutParser.NetDeviceName=Nom du périphérique réseau LNKShortcutParser.NetDevNameUnicode=Nom du périphérique réseau - Unicode @@ -117,18 +117,18 @@ LNKShortcutParser.WindowAttr=Propriétés de la fenêtre LNKShortcutParser.WorkingDir=Dossier de travail MboxParser.NoSubject=[Sans sujet] MetadataUtil.NoSubject=[Sans sujet] -MSAccessParser.Table=Tableau:\ +MSAccessParser.Table=Tableau :\ OutlookPSTParser.Attachment=Pièces jointes- OutlookPSTParser.Attachments=Pièces jointes OutlookPSTParser.DateFormat=dd/MM/yyyy HH:mm:ss OutlookPSTParser.From=de OutlookPSTParser.NoSubject=[Sans sujet] -OutlookPSTParser.Sent=Envoyer +OutlookPSTParser.Sent=Envoyé OutlookPSTParser.Subject=Sujet -OutlookPSTParser.To=à: +OutlookPSTParser.To=à : OutlookPSTParser.ImportanceHigh=Haute OutlookPSTParser.ImportanceNormal=Normal -OutlookPSTParser.ImportanceLow=faible +OutlookPSTParser.ImportanceLow=Faible PythonModule.JepNotFound=JEP non trouvé, tous les modules python sont désactivés.\ PythonModule.ModuleDisabled=\ module désactivé.\ PythonModule.SeeManual=Consulter https://github.com/sepinf-inc/IPED/wiki/User-Manual#python-modules @@ -136,33 +136,33 @@ ReportGenerator.DownloadedFile=[Fichier téléchargé] ReportGenerator.TranscriptionTitle=Transcription automatique ReportGenerator.Unknown=Inconnu ReportGenerator.UnknownDate=Horodatage inconnu -RFC822Parser.AttachedEmail=PiècesjointesEmail.eml -RFC822Parser.UnNamed=[Inconnu] +RFC822Parser.AttachedEmail=Email en pièce jointe.eml +RFC822Parser.UnNamed=[Sans nom] SkypeConversation.SkypeChat=Chat de l'application Skype\ -SkypeFileTransfer.Download=Télécharhement +SkypeFileTransfer.Download=Téléchargement SkypeFileTransfer.FileOffer=Proposition de fichier (*) SkypeFileTransfer.FileSend=Envoi de fichier SkypeParser.DateFormat=dd/MM/yyyy HH:mm:ss SkypeParser.SkypeTransfer=Transfert Skype -SkypeReport.About=A propos -SkypeReport.AcceptDate=Accepter la date +SkypeReport.About=À propos +SkypeReport.AcceptDate=Date d'acceptation SkypeReport.Attribute=Propriété SkypeReport.Author=Auteur -SkypeReport.Avatar=Avatar: +SkypeReport.Avatar=Avatar : SkypeReport.AvatarDate=Date de l'avatar SkypeReport.BirthDate=Date de naissance SkypeReport.Chat=Chat SkypeReport.ChatID=Identifiant du chat SkypeReport.ChatName=Nom du chat SkypeReport.City=Ville -SkypeReport.ContactCount=Nombre de contacts:\ +SkypeReport.ContactCount=Nombre de contacts :\ SkypeReport.Content=Contenu SkypeReport.Country=Pays SkypeReport.Date=Date -SkypeReport.DisplayName=Afficher le Nom +SkypeReport.DisplayName=Nom d'affichage SkypeReport.EditedBy=Modifié par SkypeReport.EditedDate=Date de modification -SkypeReport.Email=Email +SkypeReport.Email=E-mail SkypeReport.Empty=[Vide] SkypeReport.FileName=Nom du fichier SkypeReport.FileSize=Taille du fichier @@ -175,42 +175,42 @@ SkypeReport.ID=Identifiant SkypeReport.ImageCacheMsg=Image du cache multimédia SkypeReport.LastContactedDate=Date du dernier contact SkypeReport.LastOnlineDate=Dernière date de connexion -SkypeReport.LikelyFile=Fichier probable: -SkypeReport.MessageCount=Nombre de messages:\ +SkypeReport.LikelyFile=Fichier probable : +SkypeReport.MessageCount=Nombre de messages :\ SkypeReport.Messages=Messages SkypeReport.MobilePhone=Téléphone mobile SkypeReport.Mood=Mood SkypeReport.MoodDate=Mood Date -SkypeReport.OfficePhone=Téléphone du domicile -SkypeReport.Participants=Participants: +SkypeReport.OfficePhone=Téléphone du travail +SkypeReport.Participants=Participants : SkypeReport.Phone=Téléphone SkypeReport.ProfileDate=Date du profil SkypeReport.Province=Province SkypeReport.PstnNum=Numéro PSTN -SkypeReport.Recipient=Correspondant +SkypeReport.Recipient=Destinataire SkypeReport.RemoteID=Identifiant d'envoi SkypeReport.SentBytes=Bytes envoyés SkypeReport.SkypeID=Identifiant Skype SkypeReport.StartDate=Date de début -SkypeReport.TotalCount=Compteur Total -SkypeReport.TransferCount=Compteur de transfert:\ +SkypeReport.TotalCount=Nombre Total +SkypeReport.TransferCount=Nombre de transferts :\ SkypeReport.TypeDescr=Description -SkypeReport.UserData=Donnée utilisateur: +SkypeReport.UserData=Donnée utilisateur : SkypeReport.Value=Valeur SQLite3TableReader.DateFormat=dd/MM/yyyy_HH:mm:ssz -WhatsAppReport.AccountID=Identifiant du compte:\ +WhatsAppReport.AccountID=Identifiant du compte :\ WhatsAppReport.ChatContinuation=[Suite du chat...] -WhatsAppReport.ChatContinues=[le chat continu...] +WhatsAppReport.ChatContinues=[le chat continue...] WhatsAppReport.ContactDeleted=Contacts supprimés récupérés WhatsAppReport.RecoveredChat=Chat supprimés récupérés -WhatsAppReport.ContactID=Identifiant de contact:\ -WhatsAppReport.DisplayName=Nom:\ -WhatsAppReport.GivenName=Prénom:\ -WhatsAppReport.NickName=Surnom:\ -WhatsAppReport.SortName=Trier le nom:\ -WhatsAppReport.Status=Statut:\ +WhatsAppReport.ContactID=Identifiant de contactv:\ +WhatsAppReport.DisplayName=Nomv:\ +WhatsAppReport.GivenName=Prénomv:\ +WhatsAppReport.NickName=Surnom :\ +WhatsAppReport.SortName=Nom du tri :\ +WhatsAppReport.Status=Statut :\ WhatsAppReport.Video=Vidéo -WhatsAppReport.WAName=Quel nom:\ +WhatsAppReport.WAName=Nom WA :\ WhatsAppReport.UnknownMessage=Message inconnu. WhatsAppReport.UnknownMediaMessage=Message Média inconnu WhatsAppReport.Forwarded=Transféré @@ -220,9 +220,9 @@ WhatsAppReport.UnblockedContact=Vous avez débloqué ce contact. WhatsAppReport.BusinessSecureService=Cette entreprise utilise un service sécurisé de Meta pour gérer ce chat. Cliquer pour plus d'information. WhatsAppReport.BusinessToStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. WhatsAppReport.ChatBusiness=Ce chat s'effectue avec un compte professionnel. Appuyer pour plus d'informations. -WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp,. Appuyer pour en savoir plus. +WhatsAppReport.ChatEncrypted=Les messages et les appels sont cryptés de bout en bout. Personne en dehors de ce chat ne peut les lire ou les écouter, pas même WhatsApp. Appuyer pour en savoir plus. WhatsAppReport.ChatNowEncrypted=Les messages de ce chat et les appels sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. -WhatsAppReport.ChatStandard=This business account has now registered as a standard account. Tap for more info.[TBT] +WhatsAppReport.ChatStandard=Ce compte professionnel est désormais enregistré en tant que compte standard. Appuyer pour plus d'informations. WhatsAppReport.GroupNowEncrypted=Les messages adressés à ce groupe sont désormais sécurisés avec un cryptage de bout en bout. Appuyer pour plus d'informations. WhatsAppReport.MissedVideoCall=Appel vidéo manqué WhatsAppReport.MissedVoiceCall=Appel vocal manqué @@ -236,9 +236,9 @@ WhatsAppReport.GroupCreated=Groupe créé par WhatsAppReport.UserAddedToCommunity=Utilisateur ajouté à la communauté WhatsAppReport.UserAddedToGroup=Utilisateur ajouté au groupe WhatsAppReport.UserCommunityAdmin=Définir l'utilisateur en tant qu'administrateur -WhatsAppReport.CommunityAdmin=Est à présent administrateur -WhatsAppReport.UserLeftGroup=Utilisateur ayant quitté le groupe:\ -WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe:\ +WhatsAppReport.CommunityAdmin=est à présent administrateur +WhatsAppReport.UserLeftGroup=Utilisateur ayant quitté le groupe :\ +WhatsAppReport.UserRemovedGroup=Utilisateur supprimé du groupe :\ WhatsAppReport.AddedToCommunity=Ajouté à la communauté WhatsAppReport.AddedToGroup=Ajouté au groupe WhatsAppReport.RemovedGroup=Supprimé du groupe @@ -248,23 +248,23 @@ WhatsAppReport.MessageDeleted=Message supprimé WhatsAppReport.MessageDeletedByAdmin=Message supprimé par l'administrateur WhatsAppReport.MessageDeletedBySender=Message supprimé par l'expéditeur WhatsAppReport.MessageDeletedRecovered=Message supprimé récupéré -WhatsAppReport.LocationMessage=Emplacement: -WhatsAppReport.SharedLocationMessage=Emplacement partagé: +WhatsAppReport.LocationMessage=Emplacement : +WhatsAppReport.SharedLocationMessage=Emplacement partagé : WhatsAppReport.Latitude=Latitude WhatsAppReport.Longitude=Longitude WhatsAppReport.Attachment=Pièce jointe WhatsAppReport.VoiceCall=Appel vocal WhatsAppReport.VideoCall=Appel vidéo -WhatsAppReport.UserJoinedGroupCommunity=A rejoint la communauté -WhatsAppReport.UserJoinedGroupInvitation=A rejoint le groupe sur invitation -WhatsAppReport.UserJoinedGroupLink=L'utilisateur a rejoint le groupe à partir d'un lien partagé -WhatsAppReport.ResetGroupLink=Réinitialiser le lien d'invitation +WhatsAppReport.UserJoinedGroupCommunity=a rejoint le groupe par la communauté +WhatsAppReport.UserJoinedGroupInvitation=a rejoint le groupe sur invitation +WhatsAppReport.UserJoinedGroupLink=a rejoint le groupe à partir d'un lien partagé +WhatsAppReport.ResetGroupLink=a réinitialisé le lien d'invitation WhatsAppReport.GroupDescriptionChanged=Description du groupe modifiée -WhatsAppReport.GroupDescriptionDeleted=Description du groupe supprimé +WhatsAppReport.GroupDescriptionDeleted=Description du groupe supprimée WhatsAppReport.GroupNameChanged=a changé le nom du groupe WhatsAppReport.SubjectChanged=Sujet modifié WhatsAppReport.UserAdmin=est à préseant administrateur du groupe -WhatsAppReport.YouAdmin=Vous ètes à présent administrateur du groupe +WhatsAppReport.YouAdmin=Vous êtes à présent administrateur du groupe WhatsAppReport.YouNotAdmin=Vous n'êtes plus administrateur de ce groupe WhatsAppReport.WaitingMessage=En attente de message WhatsAppReport.Duration=Durée @@ -272,43 +272,43 @@ WhatsAppReport.AudioMessageTitle=Fichier de message audio WhatsAppReport.VideoMessageTitle=Fichier de message vidéo WhatsAppReport.Contact=Contact WhatsAppReport.RecoveredFrom=Récupéré de -WhatsAppReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs +WhatsAppReport.FoundInPedoHashDB=Contenu pédopornographique détecté via la base de Hashs WhatsAppReport.Owner=Propriétaire -WhatsAppReport.Recovered=Rétablie +WhatsAppReport.Recovered=Récupéré WhatsAppReport.QuoteNotFound=Message cité est introuvable WhatsAppReport.Document=Document WhatsAppReport.Photo=Photo WhatsAppReport.Audio=Audio -WhatsAppReport.ChatFragment=Ce message cité se trouve sur l'extrait de la discussion +WhatsAppReport.ChatFragment=Ce message cité se trouve dans l'extrait de la discussion WhatsAppReport.ReferenceId=Identifiant du message cité WhatsAppReport.Close=Fermer WhatsAppReport.GroupInvite=Invitation au groupe WhatsApp WhatsAppReport.Poll=Sondage -WhatsAppReport.Vote=Vote -WhatsAppReport.Votes=voix -WhatsAppReport.EphemeralDurationChanged=Modifier la durée avant effacement des messages en -WhatsAppReport.EphemeralDefault=Utiliser la durée de conservation par défaut des messages dnas les nouvelles discussions. Tous les messages de ce tchat disparaitront après -WhatsAppReport.EphemeralOn=Activé l'effacement des messages. Tous les messages seront supprimés de ce chat. -WhatsAppReport.EphemeralOff=Désactiver l'effacement des messages. -WhatsAppReport.EphemeralSave=Il est désormais possible de sauvegarder les messages supprimés du chat. -WhatsAppReport.Days=Jours +WhatsAppReport.Vote=vote +WhatsAppReport.Votes=votes +WhatsAppReport.EphemeralDurationChanged=a changé la durée avant effacement des messages pour +WhatsAppReport.EphemeralDefault=utilise une durée de conservation par défaut des messages dans les nouvelles conversations. Tous les messages de ce chat disparaitront après +WhatsAppReport.EphemeralOn=a activé l'effacement des messages. Tous les messages ce chat disparaitront après. +WhatsAppReport.EphemeralOff=a désactivé l'effacement des messages. +WhatsAppReport.EphemeralSave=Il est désormais possible de sauvegarder les messages temporaires du chat. +WhatsAppReport.Days=jours WhatsAppReport.Hours=heures -WhatsAppReport.GroupChangedOnlyAdminsCanAdd=Modifier les paramètres de ce groupe pour permettre uniquement aux administrateurs d'ajouter d'autres utilisateurs. -WhatsAppReport.GroupChangedAllMembersCanEdit=Modifier les paramètres de ce groupe pour permettre à tous les participants d'en modifier les informations. -WhatsAppReport.GroupChangedOnlyAdminsCanEdit=Modifier les paramètres de ce groupe pour permettre uniquement aux administrateurs d'effectuer des modifications. -WhatsAppReport.GroupChangedAllMembersCanSend=Modifier les paramètres de ce groupe pour permettre à tous les participants d'envoyer des messages. -WhatsAppReport.GroupChangedOnlyAdminsCanSend=Modifier les paramètres de ce groupe pour autoriser uniquement les administrateurs à envoyer des messages. +WhatsAppReport.GroupChangedOnlyAdminsCanAdd=a modifié les paramètres de ce groupe pour permettre uniquement aux administrateurs d'ajouter d'autres utilisateurs. +WhatsAppReport.GroupChangedAllMembersCanEdit=a modifié les paramètres de ce groupe pour permettre à tous les participants d'en modifier les informations. +WhatsAppReport.GroupChangedOnlyAdminsCanEdit=a modifié les paramètres de ce groupe pour permettre uniquement aux administrateurs d'effectuer des modifications. +WhatsAppReport.GroupChangedAllMembersCanSend=a modifié les paramètres de ce groupe pour permettre à tous les participants d'envoyer des messages. +WhatsAppReport.GroupChangedOnlyAdminsCanSend=a modifié les paramètres de ce groupe pour autoriser uniquement les administrateurs à envoyer des messages. WhatsAppReport.GroupOnlyAdminsCanSend=Seuls les administrateurs peuvent envoyer des messages à ce groupe. -WhatsAppReport.ChangedDevice=Changer d'appareil. +WhatsAppReport.ChangedDevice=a changer d'appareil. WhatsAppReport.ChangedNumberTo=changé en -WhatsAppReport.ChangedNumberChattingWithNew=Changer de numéro de téléphone. Vous discutez actuellement avec leur nouveau numéro. -WhatsAppReport.ChangedNumberChattingWithOld=A changé son numéro de téléphone. Appuyez pour envoyer un message au nouveau numéro. +WhatsAppReport.ChangedNumberChattingWithNew=a changé de numéro de téléphone. Vous discutez actuellement avec leur nouveau numéro. +WhatsAppReport.ChangedNumberChattingWithOld=a changé son numéro de téléphone. Appuyez pour envoyer un message au nouveau numéro. WhatsAppReport.SenderInContacts=est dans vos contacts. -WhatsAppReport.SenderAddedToContacts=A été ajouté à vos contacts. +WhatsAppReport.SenderAddedToContacts=a été ajouté à vos contacts. WhatsAppReport.BusinessChangedName=Ce compte professionnel a changé de nom. -WhatsAppReport.ChatBusinessOfficial=Ce chat à été réalisé avec un compte professionnel officiel. +WhatsAppReport.ChatBusinessOfficial=Ce chat est avec un compte professionnel officiel. WhatsAppReport.GroupAddedToCommunity=Le groupe a été ajouté à la communauté. -WhatsAppReport.GroupRemovedFromCommunity=Le groups a été supprimé dela communauté. +WhatsAppReport.GroupRemovedFromCommunity=Le groupe a été supprimé de la communauté. WhatsAppReport.AnyCommunityMemberCanJoinThisGroup=N'importe qui dans la communauté peut rejoindre ce groupe. WhatsAppReport.CommunityManagementAction=Gestion de la communauté. WhatsAppReport.CommunityRenamed=Changer le nom de la communauté @@ -317,18 +317,18 @@ WhatsAppReport.NewParticipantsNeedAdminApproval=Les nouveaux participants ont be WhatsAppReport.ChatAddedPrivacy=Ce chat assure la confidentialité de votre profil et de votre numéro de téléphone. WhatsAppReport.ChannelAddedPrivacy=Cette chaîne assure la confidentialité de votre profil et de votre numéro de téléphone. WhatsAppReport.ChannelCreated=La chaîne a été créée. -WhatsAppReport.ProductTitle=Produit. -WhatsAppReport.ProductSeller=Vendeur. -WhatsAppReport.ProductAmount=Monter. -WhatsAppReport.OrderCount=Nombre d'élément. -WhatsAppReport.EditedOn=Modifier. -WhatsAppReport.UserJoinedWhatsApp=Rejoindre WhatsApp -WhatsAppReport.PinnedMessage=Epingler un message +WhatsAppReport.ProductTitle=Produit +WhatsAppReport.ProductSeller=Vendeur +WhatsAppReport.ProductAmount=Montant +WhatsAppReport.OrderCount=Quantité +WhatsAppReport.EditedOn=Modifié en +WhatsAppReport.UserJoinedWhatsApp=a rejoint WhatsApp +WhatsAppReport.PinnedMessage=a epinglé un message WhatsAppReport.AIThirdParty=Cette IA provient d'un développeur tiers. Meta reçoit vos discussions IA pour améliorer la qualité de l'IA. VCardParser.FormattedName=Nom formaté VCardParser.Name=Nom VCardParser.Nickname=Surnom -VCardParser.Email=Email +VCardParser.Email=E-mail VCardParser.Telephone=Téléphone VCardParser.Organization=Organisation VCardParser.Notes=Notes @@ -337,90 +337,90 @@ BitTorrentResumeDatParser.DateFormat=dd/MM/yyyy HH:mm:ss BitTorrentResumeDatParser.TorrentFile=Fichier Torrent BitTorrentResumeDatParser.RootDir=Dossier racine BitTorrentResumeDatParser.Path=Chemin complet -BitTorrentResumeDatParser.Downloaded=Téléchargements (bytes) -BitTorrentResumeDatParser.Uploaded=Upload (bytes) -BitTorrentResumeDatParser.AddedDate=Date/Heure ajoutées -BitTorrentResumeDatParser.CompletedDate=Date/Heure complètes +BitTorrentResumeDatParser.Downloaded=Téléchargés (bytes) +BitTorrentResumeDatParser.Uploaded=Uploadés (bytes) +BitTorrentResumeDatParser.AddedDate=Date/Heure ajouté +BitTorrentResumeDatParser.CompletedDate=Date/Heure complété BitTorrentResumeDatParser.Time=Date/Heure -BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière consultation +BitTorrentResumeDatParser.LastSeenCompleteDate=Dernière fois vu complet BitTorrentResumeDatParser.SeedTime=Seed time (s) -BitTorrentResumeDatParser.RunTime=Durée (s) +BitTorrentResumeDatParser.RunTime=Durée d'execution (s) BitTorrentResumeDatParser.InfoHash=Information sur le Hash -BitTorrentResumeDatParser.TorrentFoundInCase=Torrent trouvé dans l'affaire +BitTorrentResumeDatParser.TorrentFoundInCase=Torrent trouvé dans le cas BitTorrentResumeDatParser.Yes=Oui -BitTorrentResumeDatParser.FilesFoundInCase=Fichiers trouvés dans le dossier +BitTorrentResumeDatParser.FilesFoundInCase=Fichiers trouvés dans le cas TorrentFileDatParser.DateFormat=dd/MM/yyyy HH:mm:ss TorrentFileDatParser.FullPath=Chemin complet TorrentFileDatParser.FileSize=Taille du fichier (Bytes) TorrentFileDatParser.MD5=Hash MD5 TorrentFileDatParser.SHA1=Hash SHA1 TorrentFileDatParser.ED2K=Hash ED2K -TorrentFileDatParser.Announce=URL du suivi +TorrentFileDatParser.Announce=URL du tracker TorrentFileDatParser.Comment=Commentaire TorrentFileDatParser.CreatedBy=Créé par -TorrentFileDatParser.CreationDate=Date de création. +TorrentFileDatParser.CreationDate=Date de création TorrentFileDatParser.InfoHash=Informations sur le Hash TorrentFileDatParser.Name=Nom TorrentFileDatParser.NumberOfFiles=Nombre de fichier TorrentFileDatParser.NumberOfPieces=Nombre de pièces -TorrentFileDatParser.Piece=Morceau +TorrentFileDatParser.Piece=Pièce TorrentFileDatParser.PieceLength=taille de la pièce -TorrentFileDatParser.IncompleteWarning=Dossier incomplet. Certaines informations analysées peuvent être erronées. Veuillez vérifier. +TorrentFileDatParser.IncompleteWarning=Fichier incomplet. Certaines informations analysées peuvent être erronées. Veuillez vérifier. TorrentFileDatParser.File=Fichier -TorrentFileDatParser.FileFoundInCase=Fichier trouvé dans le dossier -TorrentFileDatParser.FilesFoundInCase=Fichiers trouvés dans le dossier -TorrentFileDatParser.PathInCase=Emplacement de l'élément trouvé dans le dossier +TorrentFileDatParser.FileFoundInCase=Fichier trouvé dans le cas +TorrentFileDatParser.FilesFoundInCase=Fichiers trouvés dans le cas +TorrentFileDatParser.PathInCase=Emplacement de l'élément trouvé dans le cas TorrentFileDatParser.Yes=Oui TorrentFileDatParser.ConfirmedPieces=Pièces confirmées TorrentFileDatParser.AtOffset=à l'offset -TelegramContact.ContactID=Identifiant du contact: -TelegramContact.FirstName=Prénom: -TelegramContact.LastName=Nom: -TelegramContact.Username=Nom d'utilisateur: -TelegramContact.Phone=Téléphone: -TelegramContact.Channel=Chaine de telegram +TelegramContact.ContactID=Identifiant du contact : +TelegramContact.FirstName=Prénom : +TelegramContact.LastName=Nom : +TelegramContact.Username=Nom d'utilisateur : +TelegramContact.Phone=Téléphone : +TelegramContact.Channel=Chaine de Telegram TelegramContact.Group=Groupe de Telegram -TelegramReport.GroupCreate=Groupe/chat/canal créés +TelegramReport.GroupCreate=Groupe/chat/canal créé TelegramReport.AddMember=Ajouter un membre TelegramReport.RemoveMember=Supprimer un membre TelegramReport.PhotoUpdated=Mise à jour de la Photo TelegramReport.TitleUpdated=Mise à jour du titre TelegramReport.pinnMessage=Message épinglé mis à jour TelegramReport.UserJoinLink=Utilisateur ayant rejoint via un lien -TelegramReport.ChangeToChannel=Changer le canal du groupe -TelegramReport.HistoryCleared=historique effacé +TelegramReport.ChangeToChannel=Changement de groupe à canal +TelegramReport.HistoryCleared=Historique effacé TelegramReport.HistoryScreenshot=Capture d'écran de l'historique TelegramReport.MessageAutoRemove=Définir le délai de suppression automatique des messages -TelegramReport.GameScore=score du jeu +TelegramReport.GameScore=Score du jeu TelegramReport.PhoneCall=Appel téléphonique -TelegramReport.PaymentSent=paiement envoyé +TelegramReport.PaymentSent=Paiement envoyé TelegramReport.CustomText=Texte personnalisé -TelegramReport.BotAcess=Accès au domaine bot accordé -TelegramReport.BotSent=valeurs du bot SentSecure -TelegramReport.PeerJoin=pair Rejoint +TelegramReport.BotAcess=Accès accordé au domaine bot +TelegramReport.BotSent=Valeurs du bot SentSecure +TelegramReport.PeerJoin=Utilisateur a rejoint TelegramReport.PhoneNumberRequest=Demande de numéro de téléphone -TelegramReport.ContactSignUp=Contact inscrivez-vous +TelegramReport.ContactSignUp=Contact inscription TelegramReport.ChatDeletePhoto=Supprimer la photo du chat -TelegramReport.UnknownMessage=Type de message inconnu:\ -TelegramReport.FoundInPedoHashDB=Contenue pédopornographique détecté via la base de Hashs +TelegramReport.UnknownMessage=Type de message inconnu :\ +TelegramReport.FoundInPedoHashDB=Contenu pédopornographique détecté via la base de Hashs TelegramReport.geoProximityReached=L'alerte de géoproximité a été atteinte\ TelegramReport.groupPhoneCall=Appel téléphonique de groupe TelegramReport.inviteToGroupPhoneCall=Invitation à rejoindre le groupe d'appel téléphonique TelegramReport.ChangeChatTheme=Changement du thème du chat -TelegramReport.joinedByRequest=Utilisateur rejoint par requête +TelegramReport.joinedByRequest=Utilisateur a joint par requête TelegramReport.ChannelMigratedFromGroup=Cette chaîne a migré depuis un groupe TelegramReport.RecoveredChannel=Chaine supprimée récupérée TelegramReport.RecoveredGroup=Groupe supprimé récupéré TelegramReport.Link=Lien TelegramReport.LinkTitle=Titre -TelegramReport.LinkURL=Adresse +TelegramReport.LinkURL=Adresse web TelegramReport.Pool=Ensemble ThreemaReport.ChatContinuation=[Suite du chat] ThreemaReport.ChatContinues=[Le chat continue...] ThreemaReport.UnknownMessage=Message inconnu ThreemaReport.GroupRenamed=Groupe renommé -ThreemaReport.GroupNoteStart=*En privé* Utilisez ce chat comme bloc-notes sécurisé pour le texte, les médias et les documents. -ThreemaReport.GroupNoteEnd=*Publique* Les nouveaux messages seront lisibles par tous les membres du groupe. +ThreemaReport.GroupNoteStart=*Vous êtes seul ici* Utilisez ce chat comme bloc-notes sécurisé pour le texte, les médias et les documents. +ThreemaReport.GroupNoteEnd=*Vous n'êtes plus seul dans ce chat* Les nouveaux messages seront lisibles par tous les membres du groupe. ThreemaReport.GroupCreatorLeft=*Ce groupe est orphelin* Le créateur du groupe a quitté le groupe et celui-ci ne peut plus être maintenu. L'un des membres restants doit cloner le groupe (via les détails du groupe) pour devenir le nouvel administrateur. ThreemaReport.GroupIconChanged=Photo du groupe modifiée ThreemaReport.GroupCallStarted=Appel de groupe lancé @@ -440,9 +440,9 @@ ThreemaReport.RejectedCallUnknown=Appel rejeté (Inconnu) ThreemaReport.RejectedCallOffHours=Appel rejeté (heures creuses) ThreemaReport.WorkConsumerInfo=Ce contact utilise une version différente (Travail/Privé) depuis l'application Threema ThreemaReport.ThreemaCall=Appel Threema -ThreemaReport.Duration=Duréé +ThreemaReport.Duration=Durée ThreemaReport.UnknownMediaMessage=Message multimédia inconnu -ThreemaReport.LocationMessage=Emplacement: +ThreemaReport.LocationMessage=Emplacement : ThreemaReport.AudioMessageTitle=Fichier de messages audio ThreemaReport.VideoMessageTitle=Fichier de messages vidéo ThreemaReport.Video=Vidéo @@ -455,8 +455,8 @@ APKParser.Package=Package APKParser.Version=Version APKParser.SDKVersion=Version du SDK APKParser.Features=Fonstionnalités -APKParser.Signers=signataires -APKParser.SignersV2=signataires(V2) +APKParser.Signers=Signataires +APKParser.SignersV2=Signataires(V2) APKParser.Path=Chemin APKParser.Certificate=Certificat APKParser.Algorithm=Algorithme @@ -464,18 +464,18 @@ APKParser.MD5=MD5 APKParser.OID=OID APKParser.StartDate=Date de début APKParser.EndDate=Date de fin -OFXParser.AccessKey=Clef d'accès +OFXParser.AccessKey=Clé d'accès OFXParser.AccountKey=Clé de compte OFXParser.AccountLastUpdate=Dernière mise à jour du compte OFXParser.AccountNumber=Numéro de compte OFXParser.AccountType=Type de compte -OFXParser.Amount=Monter +OFXParser.Amount=Montant OFXParser.AvailableBalanceAmount=Montant du solde disponible OFXParser.AvailableBalanceDate=Date du solde disponible OFXParser.Bank=Banque OFXParser.BankId=Identifiant bancaire OFXParser.BranchId=identifiant de succursale -OFXParser.CheckNumber=Numéro de chèque +OFXParser.CheckNumber=Numéro du chèque OFXParser.CorrectionId=Numéro de correction OFXParser.CreditCard=Carte de crédit OFXParser.CurrencyCode=Code de devise @@ -487,7 +487,7 @@ OFXParser.ExpirationUserKey=Clé utilisateur expirée OFXParser.FinancialInstitutionId=Identifiant de l'institution financière OFXParser.FinancialInstitutionOrganization=Organisation de l’institution financière OFXParser.Id=Identifiant -OFXParser.Language=Langage +OFXParser.Language=Langue OFXParser.LedgerBalanceAmount=Montant du solde du grand livre OFXParser.LedgerBalanceDate=Date du solde du grand livre OFXParser.Memo=Mémo @@ -497,7 +497,7 @@ OFXParser.OriginalCurrencyExchangeRate=Taux de change d'origine OFXParser.Payee=Bénéficiaire OFXParser.PayeeId=Identifiant du Bénéficiaire OFXParser.ProfileLastUpdate=Dernière mise à jour du profil -OFXParser.ReferenceNumber=Réference +OFXParser.ReferenceNumber=Référence OFXParser.ServerAssignedTemporaryId=Identifiant temporaire attribué par le serveur OFXParser.SessionId=Identifiant de la session OFXParser.Signon=Se connecter From 217ed9cca35843c786199eca2acd6a0f13fa8002 Mon Sep 17 00:00:00 2001 From: jelallt <j.lallement@interpol.int> Date: Wed, 22 May 2024 08:54:14 +0200 Subject: [PATCH 099/126] Update iped-engine-messages_fr_FR.properties Review and minor changes --- .../iped-engine-messages_fr_FR.properties | 118 +++++++++--------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index a52cfe887d..940f02a248 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -1,47 +1,47 @@ -ExportCSVTask.CsvColNames="Nom","Liens","Taille","Extension","Favoris","Catégorie","MD5","SHA1","Supprimé","Carvé","Accès","Modifié","Créé","Emplacement","TrackId"\r\n +ExportCSVTask.CsvColNames="Nom","Lien","Taille","Extension","Favori","Catégorie","MD5","SHA1","Supprimé","Récupéré","Accès","Modifié","Créé","Emplacement","TrackId"\r\n ExportCSVTask.CsvSeparator=, ExportCSVTask.CsvName=Liste de fichiers.csv ExportCSVTask.LinkFunction=Lien hyper texte -ExportCSVTask.LinkName=Ouvert +ExportCSVTask.LinkName=Ouvrir ExportFileTask.DeletingData1=Suppression des données supprimées de FS... ExportFileTask.DeletingData2=Suppression des données supprimées des supports... -ExportFileTask.DeletedData1=Supprimer les données de FS: {} -ExportFileTask.DeletedData2=Supprimer les données des supports: {} -ExportFileTask.ExportFolder=Exporter/les fichiers +ExportFileTask.DeletedData1=Données supprimées de FS : {} +ExportFileTask.DeletedData2=Données supprimées des supports: {} +ExportFileTask.ExportFolder=Exportés/Fichiers HTMLReportTask.Bookmark=Favori HTMLReportTask.Bookmarks=Favoris -HTMLReportTask.Categories=Catégories -HTMLReportTask.Category=Catégorie +HTMLReportTask.Categories=Cat&eacute;gories +HTMLReportTask.Category=Cat&eacute;orie HTMLReportTask.Dateformat=dd/MM/yyyy HH:mm:ss -HTMLReportTask.FileCount=Compteur de fichier -HTMLReportTask.FirstPage=Première page -HTMLReportTask.GalleryLink=Galerie d'images +HTMLReportTask.FileCount=Nombre de fichier +HTMLReportTask.FirstPage=Premi&egrave;re page +HTMLReportTask.GalleryLink=Galerie d&apos;images HTMLReportTask.GalleryTitle=Vignette -HTMLReportTask.LastPage=Dernière page -HTMLReportTask.MakingHtmlReport=Création d'un rapport HTML... +HTMLReportTask.LastPage=Derni&egrave;re page +HTMLReportTask.MakingHtmlReport=Cr&eacute;ation d'un rapport HTML... HTMLReportTask.NextPage=Page suivante HTMLReportTask.No=Non HTMLReportTask.NoBookmarks=[Pas de favori] -HTMLReportTask.of=\ de +HTMLReportTask.of=\ de\ HTMLReportTask.Page=Page -HTMLReportTask.PreviewReport=Aperçu du rapport -HTMLReportTask.PrevPage=Aperçu de la page +HTMLReportTask.PreviewReport=Aper&cedil;u du rapport +HTMLReportTask.PrevPage=Aper&cedil;u de la page HTMLReportTask.ReportFileName=rapport.htm HTMLReportTask.ReportSubFolder=rapport -HTMLReportTask.VideoThumbs=Vignette vidéo +HTMLReportTask.VideoThumbs=Vignette vid&eacute;o HTMLReportTask.Yes=Oui Main.Finished=Terminé -IPEDSource.ImageNotFound=Image Non trouvée:\ -IPEDSource.ImgFragNotFound=Morceau d'image non trouvé:\ -ItemProducer.Adding=Ajouter -JavaVersion.Error=Version de java non supportée. Mettre à jour la version {}. -JavaVersion.Warn=Version de Java {} non testé, une erreur inattendu c'est produite! -JavaVersion.Bug=Problème avec la version e Java {1} detecté! Installer la dernière version de Java {2} sinon le programme risque de ne pas fonctionner. -JavaVersion.Arch=Vous utilisez ue version 32 bits de Java, certaines fonctionnalités peuvent ne pas fonctionner correctement. Merci de mettre jour vers une version 64 bits! +IPEDSource.ImageNotFound=Image Non trouvée :\ +IPEDSource.ImgFragNotFound=Morceau d'image non trouvé :\ +ItemProducer.Adding=Ajouter ' +JavaVersion.Error=Version de java non supportée. Mettre à jour pour la version {}. +JavaVersion.Warn=Version de Java {} non testée, des erreurs inattendues peuvent se produire ! +JavaVersion.Bug=Une version problématique de Java {1} a été detectée ! Installer la dernière version de Java {2} sinon le programme paut se fermer sans prévenir. +JavaVersion.Arch=Vous utilisez une version 32 bits de Java, certaines fonctionnalités peuvent ne pas fonctionner correctement. Merci de mettre à jour vers une version 64 bits ! Manager.Adding=Ajouter " -Manager.ClosingIndex=Index de clotûre... -Manager.CopyingIndex=Index de copie... -Manager.OpeningIndex=Index d'ouverture... +Manager.ClosingIndex=Clotûre de l'Index... +Manager.CopyingIndex=Copie de l'Index de... +Manager.OpeningIndex=Ouverture de l'Index... Manager.DeletingTreeNodes=Supprimer les noeuds vides de l'arborescence Manager.FilteringKeywords=Filtrer les mots clés... Manager.Optimizing=Optimisation de l'index... @@ -49,62 +49,62 @@ Manager.CommitStarted=Commencer la validation... Manager.CommitFinished=Validation terminée. P2PBookmarker.P2PBookmarkPrefix=Probablement partagé avec\ ProgressConsole.files=\ fichiers -ProgressConsole.FinishIn=\ Terminé dans\ -ProgressConsole.Found=Trouvé\ +ProgressConsole.FinishIn=\ Terminé en\ +ProgressConsole.Found=Trouvés\ ProgressConsole.Processing=En cours de traitement\ ProgressConsole.Starting=Début... -ProgressFrame.ActiveProcessed=Eléments traités -ProgressFrame.AlreadyOpen=L'application d'analyse est déjà ouverte\! -ProgressFrame.Carved=Eléments carvés -ProgressFrame.CarvedDiscarded=Eléments carvés exclus +ProgressFrame.ActiveProcessed=Éléments actifs traités +ProgressFrame.AlreadyOpen=L'application d'analyse est déjà ouverte \! +ProgressFrame.Carved=Eléments récupérés +ProgressFrame.CarvedDiscarded=Eléments récupérés exclus ProgressFrame.Continue=Continuer -ProgressFrame.CurrentItems=Eléments en cours -ProgressFrame.CurrentSpeed=Vitesse actuel -ProgressFrame.Environment=Environement +ProgressFrame.CurrentItems=Éléments en cours de traitement +ProgressFrame.CurrentSpeed=Vitesse actuelle +ProgressFrame.Environment=Environnement ProgressFrame.EstimatedEnd=Temps estimé -ProgressFrame.Exported=Eléments exportés -ProgressFrame.FinishIn=\ - Terminé\ -ProgressFrame.Found=Trouvé\ +ProgressFrame.Exported=Éléments exportés +ProgressFrame.FinishIn=\ - Terminé en\ +ProgressFrame.Found=Trouvée\ ProgressFrame.FreeMemory=Mémoire libre -ProgressFrame.Ignored=Elément ignoré -ProgressFrame.IncompleteProcessing=De nombreux éléments du dossier peuvent être indisponible en cours de traitement\! -ProgressFrame.items=\ Eléments -ProgressFrame.ItemsFound=Eléments trouvés -ProgressFrame.ItemsProcessed=Eléments traités +ProgressFrame.Ignored=Eléments ignorés +ProgressFrame.IncompleteProcessing=De nombreux éléments du dossier peuvent être indisponible avant la fin du traitement \! +ProgressFrame.items=\ Éléments +ProgressFrame.ItemsFound=Éléments trouvés +ProgressFrame.ItemsProcessed=Éléments traités ProgressFrame.JavaVersion=Version de Java -ProgressFrame.MaxMemory=Mémoire max +ProgressFrame.MaxMemory=Mémoire Maximale ProgressFrame.MeanSpeed=Vitesse moyenne -ProgressFrame.OpenApp=Prévisualisation du cas +ProgressFrame.OpenApp=Prévisualiser le cas ProgressFrame.OutputFree=Espace libre -ProgressFrame.OutputTempFree=Sortie/Temp libre -ProgressFrame.OutputTempVolume=Volume de sortie/temp +ProgressFrame.OutputTempFree=Espace/Temp libre +ProgressFrame.OutputTempVolume=Volume de sortie/Temp ProgressFrame.OutputVolume=Volume de sortie -ProgressFrame.ParserTimes=Durer d'analyse +ProgressFrame.ParserTimes=Durées d'analyse ProgressFrame.ParsingErrors=Erreurs d'analyse ProgressFrame.Pause=Pause ProgressFrame.Paused=[En pause] -ProgressFrame.Pausing=[Faire une pause...] +ProgressFrame.Pausing=[Mise en pause...] ProgressFrame.PhysicalMemory=Mémoire physique ProgressFrame.Processing=Traitement en cours\ ProgressFrame.ProcessingTime=Durée du traitement ProgressFrame.ReadErrors=Erreurs de lecture ProgressFrame.Starting=Début... ProgressFrame.Statistics=Statistiques -ProgressFrame.SubitemsProcessed=Sous dossiers traités -ProgressFrame.TaskTimes=Durée du traitement -ProgressFrame.TempFree=Temp Libre -ProgressFrame.TempVolume=Temp Volume +ProgressFrame.SubitemsProcessed=Sous éléments traités +ProgressFrame.TaskTimes=Durées par traitement +ProgressFrame.TempFree=Espace Temp Libre +ProgressFrame.TempVolume=Volume Temp ProgressFrame.Timeouts=Temps dépassé ProgressFrame.TotalMemory=Mémoire totale ProgressFrame.VolumeFound=Volume trouvé ProgressFrame.VolumeProcessed=Volume traité ProgressFrame.WaitingItem=En attente... -RegexTask.SeparatorNotFound.1=Separateur '=' non trouvé dans\ -RegexTask.SeparatorNotFound.2=\ ligne:\ +RegexTask.SeparatorNotFound.1=Séparateur '=' non trouvé dans\ +RegexTask.SeparatorNotFound.2=\ ligne :\ ReportInfo.EvidencePrefix=Extraction\ SleuthkitReader.Creating=Créer\ SleuthkitReader.WaitDecode=Décodage de l'image en cours\ -Statistics.LowMemory.Msg=Mémoire insuffisante: moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou erreurs pour l'analyse de fichiers complexes.\n Utiliser x64 JVM (de préférence), \n augmenter la mémoire avec l'option java -Xmx \n ou diminuez-le 'numthreads' dans me fichier LocalConfig.txt. +Statistics.LowMemory.Msg=Mémoire insuffisante : moins de {}MB par thread de traitement.\n Cela peut entrainer des lenteurs ou des erreurs pour l'analyse de fichiers complexes.\n Utiliser une JVM x64 (de préférence), \n augmenter la mémoire JVM avec l'option java -Xmx\n ou diminuez-le 'numthreads' dans le fichier LocalConfig.txt. Statistics.LowMemory.Title=Alerte/Mémoire UfedXmlReader.Attachments=Pièces jointes UfedXmlReader.Bcc=Bcc @@ -112,8 +112,8 @@ UfedXmlReader.Cc=Cc UfedXmlReader.Date=Date UfedXmlReader.From=De UfedXmlReader.Subject=Sujet -UfedXmlReader.To=à -UfedXmlReader.LowConfidence=\ [Confiance faible] +UfedXmlReader.To=À +UfedXmlReader.LowConfidence=\ [confiance faible] UfedXmlReader.DeviceInfo=Information sur le support UfedXmlReader.Extraction=Extraction Worker.Starting=Début\ @@ -122,4 +122,4 @@ GraphAnalysis.LinksContacts=Contacts GraphAnalysis.LinksEmails=E-mails GraphAnalysis.LinksInstantMessages=Messages instantannés GraphAnalysis.LinksWireless=Réseaux sans fils -GraphAnalysis.LinksDocuments=Documents \ No newline at end of file +GraphAnalysis.LinksDocuments=Documents From 63ba4a4d98cf5fbd6b08232a4932505b42780ddd Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Wed, 22 May 2024 13:49:56 -0300 Subject: [PATCH 100/126] '#1182: put back a removed trailing space char --- .../localization/iped-engine-messages_fr_FR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties index 940f02a248..901b91c370 100644 --- a/iped-app/resources/localization/iped-engine-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-engine-messages_fr_FR.properties @@ -22,7 +22,7 @@ HTMLReportTask.MakingHtmlReport=Cr&eacute;ation d'un rapport HTML... HTMLReportTask.NextPage=Page suivante HTMLReportTask.No=Non HTMLReportTask.NoBookmarks=[Pas de favori] -HTMLReportTask.of=\ de\ +HTMLReportTask.of=\ de\ HTMLReportTask.Page=Page HTMLReportTask.PreviewReport=Aper&cedil;u du rapport HTMLReportTask.PrevPage=Aper&cedil;u de la page From 2d3bcf8b3c13bc1a4ac0e4d122b19545d5215f8b Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Wed, 22 May 2024 14:01:48 -0300 Subject: [PATCH 101/126] '#1182: minor change, convert char to uppercase --- .../localization/iped-parsers-messages_fr_FR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties index 36fc3f0b3a..a1b81febd7 100644 --- a/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties +++ b/iped-app/resources/localization/iped-parsers-messages_fr_FR.properties @@ -125,7 +125,7 @@ OutlookPSTParser.From=de OutlookPSTParser.NoSubject=[Sans sujet] OutlookPSTParser.Sent=Envoyé OutlookPSTParser.Subject=Sujet -OutlookPSTParser.To=à : +OutlookPSTParser.To=À : OutlookPSTParser.ImportanceHigh=Haute OutlookPSTParser.ImportanceNormal=Normal OutlookPSTParser.ImportanceLow=Faible From e0883e94425a183d210452fd6b1401672fd552dc Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Wed, 22 May 2024 14:28:07 -0400 Subject: [PATCH 102/126] '#1503 Sets one timestamp metadata field for each reason --- .../src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java index 16484523c5..2881e85171 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java @@ -55,6 +55,8 @@ public enum ReportType { public static final MediaType USNJRNL_REPORT_CSV = MediaType.parse("application/x-usnjournal-report-csv"); public static final MediaType USNJRNL_REGISTRY = MediaType.parse("application/x-usnjournal-registry"); + private static final String USN_REASON_PREFIX = "ntfs_usn_reason"; + private static Set<MediaType> SUPPORTED_TYPES = MediaType.set(USNJRNL_$J); @Override @@ -179,12 +181,12 @@ private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext c String[] props = ReportGenerator.cols; - metadataItem.set(TikaCoreProperties.CREATED, rg.timeFormat.format(entry.getFileTime())); metadataItem.set(ReportGenerator.cols[0], String.format("0x%016X", entry.getOffset())); metadataItem.set(props[1], entry.getFileName()); metadataItem.set(props[2], entry.getFullPath()); metadataItem.set(props[3], Long.toString(entry.getUSN())); for (String value : entry.getReasons()) { + metadataItem.set(USN_REASON_PREFIX + ":" + value, rg.timeFormat.format(entry.getFileTime())); metadataItem.add(props[5], value); } metadataItem.set(props[6], "0x" + Util.byteArrayToHex(entry.getMftRef())); From b1dcda02b63d18fcd9bf923359967fbe21b4c69e Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Fri, 24 May 2024 13:07:12 -0400 Subject: [PATCH 103/126] '#1503 Make timestamp fields as date fields and handle exception, avoiding lost of already extracted entries. --- .../iped/parsers/usnjrnl/ReportGenerator.java | 7 ++- .../iped/parsers/usnjrnl/UsnJrnlParser.java | 55 +++++++++++-------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/ReportGenerator.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/ReportGenerator.java index ff1b501576..c8bfde02aa 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/ReportGenerator.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/ReportGenerator.java @@ -59,7 +59,7 @@ public void endHTMLDocument(PrintWriter out) { out.println("</BODY></HTML>"); //$NON-NLS-1$ } - public InputStream createHTMLReport(List<UsnJrnlEntry> entries) { + public InputStream createHTMLReport(List<UsnJrnlEntry> entries, Exception entriesReadError) { ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(new OutputStreamWriter(bout, StandardCharsets.UTF_8)); // $NON-NLS-1$ @@ -90,6 +90,8 @@ public InputStream createHTMLReport(List<UsnJrnlEntry> entries) { out.print("</table>"); + out.print("<b>Error during additional entries read:</b>" + entriesReadError.getMessage()); + endHTMLDocument(out); out.close(); @@ -97,7 +99,8 @@ public InputStream createHTMLReport(List<UsnJrnlEntry> entries) { } - public InputStream createCSVReport(List<UsnJrnlEntry> entries, TemporaryResources tmp) throws IOException { + public InputStream createCSVReport(List<UsnJrnlEntry> entries, TemporaryResources tmp, Exception entriesReadError) + throws IOException { Path path = tmp.createTempFile(); try (OutputStream os = Files.newOutputStream(path); Writer writer = new OutputStreamWriter(os, StandardCharsets.UTF_8); diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java index 2881e85171..0d751a3b46 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -25,6 +26,7 @@ import iped.data.IItemReader; import iped.io.SeekableInputStream; import iped.parsers.standard.StandardParser; +import iped.parsers.util.MetadataUtil; import iped.properties.BasicProps; import iped.properties.ExtraProperties; import iped.search.IItemSearcher; @@ -138,7 +140,8 @@ public UsnJrnlEntry readEntry(SeekableInputStream in) throws IOException { return null; } - private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext context, ContentHandler handler) + private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext context, ContentHandler handler, + Exception entriesReadError) throws SAXException, IOException { ReportGenerator rg = new ReportGenerator(); EmbeddedDocumentExtractor extractor = context.get(EmbeddedDocumentExtractor.class, @@ -151,11 +154,11 @@ private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext c try (TemporaryResources tmp = new TemporaryResources()) { if (reportType == ReportType.CSV) { cMetadata.set(StandardParser.INDEXER_CONTENT_TYPE, USNJRNL_REPORT_CSV.toString()); - is = rg.createCSVReport(entries, tmp); + is = rg.createCSVReport(entries, tmp, entriesReadError); } else if (reportType == ReportType.HTML) { cMetadata.set(StandardParser.INDEXER_CONTENT_TYPE, USNJRNL_REPORT_HTML.toString()); - is = rg.createHTMLReport(entries); + is = rg.createHTMLReport(entries, entriesReadError); name += " " + n; } @@ -186,6 +189,7 @@ private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext c metadataItem.set(props[2], entry.getFullPath()); metadataItem.set(props[3], Long.toString(entry.getUSN())); for (String value : entry.getReasons()) { + MetadataUtil.setMetadataType(USN_REASON_PREFIX + ":" + value, Date.class); metadataItem.set(USN_REASON_PREFIX + ":" + value, rg.timeFormat.format(entry.getFileTime())); metadataItem.add(props[5], value); } @@ -233,28 +237,33 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, int n = 1; IItemSearcher searcher = context.get(IItemSearcher.class); IItemReader item = context.get(IItemReader.class); + Exception entriesReadError = null; try (SeekableInputStream sis = item.getSeekableInputStream()) { jumpZeros(sis, 0, sis.size()); - while (findNextEntry(sis)) { - UsnJrnlEntry u = readEntry(sis); - // do not insert empty registries in the list - if (u == null) { - continue; - } - - entries.add(u); - - if (entries.size() % MAX_ENTRIES == 0) { - int baseIndex = ((entries.size() / MAX_ENTRIES) - 1) * MAX_ENTRIES; - rebuildFullPaths(entries.subList(baseIndex, baseIndex + MAX_ENTRIES), searcher, item); - } - - // limits the html table size - if (entries.size() == MAX_ENTRIES && reportType == ReportType.HTML) { - createReport(entries, n, context, handler); - entries.clear(); - n++; + try { + while (findNextEntry(sis)) { + UsnJrnlEntry u = readEntry(sis); + // do not insert empty registries in the list + if (u == null) { + continue; + } + + entries.add(u); + + if (entries.size() % MAX_ENTRIES == 0) { + int baseIndex = ((entries.size() / MAX_ENTRIES) - 1) * MAX_ENTRIES; + rebuildFullPaths(entries.subList(baseIndex, baseIndex + MAX_ENTRIES), searcher, item); + } + + // limits the html table size + if (entries.size() == MAX_ENTRIES && reportType == ReportType.HTML) { + createReport(entries, n, context, handler, entriesReadError); + entries.clear(); + n++; + } } + } catch (Exception e) { + entriesReadError = e; } } @@ -263,7 +272,7 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, int baseIndex = (entries.size() / MAX_ENTRIES) * MAX_ENTRIES; rebuildFullPaths(entries.subList(baseIndex, entries.size()), searcher, item); } - createReport(entries, n, context, handler); + createReport(entries, n, context, handler, entriesReadError); } } From e6392a0510a2bdf55fa968657f8cef128b75e97c Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Fri, 24 May 2024 15:58:24 -0400 Subject: [PATCH 104/126] '#2231 Avoid repetitive string parsing and exposes class field to test unit. --- .../src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java index 0d751a3b46..13ddb9b2d1 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java @@ -57,7 +57,7 @@ public enum ReportType { public static final MediaType USNJRNL_REPORT_CSV = MediaType.parse("application/x-usnjournal-report-csv"); public static final MediaType USNJRNL_REGISTRY = MediaType.parse("application/x-usnjournal-registry"); - private static final String USN_REASON_PREFIX = "ntfs_usn_reason"; + static final String USN_REASON_PREFIX = "ntfs_usn_reason"; private static Set<MediaType> SUPPORTED_TYPES = MediaType.set(USNJRNL_$J); @@ -188,9 +188,10 @@ private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext c metadataItem.set(props[1], entry.getFileName()); metadataItem.set(props[2], entry.getFullPath()); metadataItem.set(props[3], Long.toString(entry.getUSN())); + String formatedDate = rg.timeFormat.format(entry.getFileTime()); for (String value : entry.getReasons()) { MetadataUtil.setMetadataType(USN_REASON_PREFIX + ":" + value, Date.class); - metadataItem.set(USN_REASON_PREFIX + ":" + value, rg.timeFormat.format(entry.getFileTime())); + metadataItem.set(USN_REASON_PREFIX + ":" + value, formatedDate); metadataItem.add(props[5], value); } metadataItem.set(props[6], "0x" + Util.byteArrayToHex(entry.getMftRef())); From cddea26134b40c3728be01cf6a3705c851f6e5de Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Fri, 24 May 2024 15:59:10 -0400 Subject: [PATCH 105/126] '#2231 Adapts JUnit tests to test modifications. --- .../parsers/usnjrnl/UsnJrnlParserTest.java | 162 +++++++----------- 1 file changed, 66 insertions(+), 96 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java index 919a17d147..82c6aea46e 100644 --- a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java +++ b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java @@ -50,56 +50,44 @@ public void testUsnJrnlParsingHTML() throws IOException, SAXException, TikaExcep assertEquals(3, usntracker.contenttype.size()); assertEquals(3085, usntracker.title.size()); - assertEquals(3084, usntracker.created.size()); + // assertEquals(3084, usntracker.created.size()); assertEquals("application/x-usnjournal-report-csv", usntracker.contenttype.get(0)); assertEquals("application/x-usnjournal-registry", usntracker.contenttype.get(2)); - Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(0)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(1)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(2)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3082)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:55:03", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:55:03", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3083)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:55:03", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:55:03", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); + Date date; + Metadata metadata; + String[] reasons; + + for (int i = 1; i <= 4; i++) { + metadata = usntracker.metadata.get(i); + reasons = metadata.getValues("Reasons"); + for (String reason : reasons) { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + if (getVersion() < 9) + assertEquals("20/05/2021 14:52:07", df.format(date)); + if (getVersion() >= 9 && getVersion() < 12) + assertEquals("20 de mai de 2021 14:52:07", df.format(date)); + if (getVersion() >= 12) + assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); + } + } + + for (int i = 3082; i <= 3083; i++) { + metadata = usntracker.metadata.get(i); + reasons = metadata.getValues("Reasons"); + for (String reason : reasons) { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + if (getVersion() < 9) + assertEquals("20/05/2021 14:55:03", df.format(date)); + if (getVersion() >= 9 && getVersion() < 12) + assertEquals("20 de mai de 2021 14:55:03", df.format(date)); + if (getVersion() >= 12) + assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); + } + } assertEquals("USN Journal Report", usntracker.title.get(0)); assertEquals("USN journal Entry 6098518016", usntracker.title.get(1)); @@ -131,58 +119,40 @@ public void testUsnJrnlParsingCSV() throws IOException, SAXException, TikaExcept assertEquals(3, usntracker.contenttype.size()); assertEquals(3085, usntracker.title.size()); - assertEquals(3084, usntracker.created.size()); - assertEquals("application/x-usnjournal-report-csv", usntracker.contenttype.get(0)); - assertEquals("application/x-usnjournal-registry", usntracker.contenttype.get(2)); + Date date; + Metadata metadata; + String[] reasons; + + for (int i = 1; i <= 4; i++) { + metadata = usntracker.metadata.get(i); + reasons = metadata.getValues("Reasons"); + for (String reason : reasons) { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + if (getVersion() < 9) + assertEquals("20/05/2021 14:52:07", df.format(date)); + if (getVersion() >= 9 && getVersion() < 12) + assertEquals("20 de mai de 2021 14:52:07", df.format(date)); + if (getVersion() >= 12) + assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); + } + } - Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(0)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(1)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(2)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:52:07", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:52:07", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:52:07", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3082)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:55:03", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:55:03", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); - - date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(usntracker.created.get(3083)); - if (getVersion() < 9) - assertEquals("20/05/2021 14:55:03", df.format(date)); - if (getVersion() >= 9 && getVersion() < 12) - assertEquals("20 de mai de 2021 14:55:03", df.format(date)); - if (getVersion() >= 12) - assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); + for (int i = 3082; i <= 3083; i++) { + metadata = usntracker.metadata.get(i); + reasons = metadata.getValues("Reasons"); + for (String reason : reasons) { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + if (getVersion() < 9) + assertEquals("20/05/2021 14:55:03", df.format(date)); + if (getVersion() >= 9 && getVersion() < 12) + assertEquals("20 de mai de 2021 14:55:03", df.format(date)); + if (getVersion() >= 12) + assertEquals("20 de mai. de 2021 14:55:03", df.format(date)); + } + } assertEquals("USN Journal Report", usntracker.title.get(0)); assertEquals("USN journal Entry 6098518016", usntracker.title.get(1)); From 0c7567ccdbbc80757e055df3e43ac04a46643ed4 Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Fri, 24 May 2024 17:05:19 -0400 Subject: [PATCH 106/126] '#2231 Missing code form last commit. --- .../src/test/java/iped/parsers/usnjrnl/AbstractPkgTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/AbstractPkgTest.java b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/AbstractPkgTest.java index d8b29dca33..7919b1827d 100644 --- a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/AbstractPkgTest.java +++ b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/AbstractPkgTest.java @@ -38,6 +38,7 @@ protected static class EmbeddedUsnParser extends AbstractParser { protected List<String> contenttype = new ArrayList<String>(); protected List<String> title = new ArrayList<String>(); protected List<String> created = new ArrayList<String>(); + protected List<Metadata> metadata = new ArrayList<Metadata>(); public Set<MediaType> getSupportedTypes(ParseContext context) { return (new AutoDetectParser()).getSupportedTypes(context); @@ -55,6 +56,8 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, if (metadata.get(TikaCoreProperties.CREATED) != null) created.add(metadata.get(TikaCoreProperties.CREATED)); + + this.metadata.add(metadata); } } From 25654b87f4261bcdb2f8ae59daf338a5d48b83fe Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Sat, 25 May 2024 18:15:40 -0300 Subject: [PATCH 107/126] '#1823: support both whisperx and faster_whisper, try whisperx first --- .../resources/scripts/tasks/WhisperProcess.py | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index e8d5752979..240c8a9bee 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -21,7 +21,12 @@ def main(): if language == 'detect': language = None - import whisperx + try: + import whisperx + whisperx_found = True + except: + import faster_whisper + whisperx_found = False print(library_loaded, file=stdout, flush=True) @@ -37,16 +42,22 @@ def main(): deviceNum = 0 try: - model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) - + if whisperx_found: + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) + else: + model = faster_whisper.WhisperModel(modelName, device=deviceId, device_index=deviceNum, cpu_threads=threads, compute_type=compute_type) + except Exception as e: if deviceId != 'cpu': # loading on GPU failed (OOM?), try on CPU - print('FAILED to load model on GPU, fallbacking to CPU!', file=sys.stderr) + print('FAILED to load model on GPU, OOM? Fallbacking to CPU...', file=sys.stderr) deviceId = 'cpu' if compute_type == 'float16': # not supported on CPU compute_type = 'int8' - model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) + if whisperx_found: + model = whisperx.load_model(modelName, device=deviceId, device_index=deviceNum, threads=threads, compute_type=compute_type, language=language) + else: + model = faster_whisper.WhisperModel(modelName, device=deviceId, cpu_threads=threads, compute_type=compute_type) else: raise e @@ -66,12 +77,18 @@ def main(): transcription = '' logprobs = [] try: - audio = whisperx.load_audio(line) - result = model.transcribe(audio, batch_size=batch_size, language=language) - for segment in result['segments']: - transcription += segment['text'] - if 'avg_logprob' in segment: - logprobs.append(segment['avg_logprob']) + if whisperx_found: + audio = whisperx.load_audio(line) + result = model.transcribe(audio, batch_size=batch_size, language=language) + for segment in result['segments']: + transcription += segment['text'] + if 'avg_logprob' in segment: + logprobs.append(segment['avg_logprob']) + else: + segments, info = model.transcribe(audio=line, language=language, beam_size=5, vad_filter=True) + for segment in segments: + transcription += segment.text + logprobs.append(segment.avg_logprob) except Exception as e: msg = repr(e).replace('\n', ' ').replace('\r', ' ') From a60330a12a9ce2350cfa44375e6b074b6dfecbd6 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Sat, 25 May 2024 18:16:15 -0300 Subject: [PATCH 108/126] '#1823: update error message about missing libraries --- .../java/iped/engine/task/transcript/WhisperTranscriptTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index dbb416c5c1..278a0ef203 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -80,7 +80,7 @@ protected Server startServer0(int device) throws IOException { String line = reader.readLine(); if (!LIBRARY_LOADED.equals(line)) { - throw new StartupException("'whisperx' python lib not loaded correctly. Have you installed it?"); + throw new StartupException("Neither 'faster_whisper' nor 'whisperx' python libraries were loaded correctly. Have you installed one of them?"); } int cudaCount = Integer.valueOf(reader.readLine()); From 067fc8fbe5fac18fccfdd6a27686b4a4dd872d0f Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Sat, 25 May 2024 18:21:21 -0300 Subject: [PATCH 109/126] '#1823: update config files comments --- iped-app/resources/config/IPEDConfig.txt | 10 ++++++---- .../resources/config/conf/AudioTranscriptConfig.txt | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/iped-app/resources/config/IPEDConfig.txt b/iped-app/resources/config/IPEDConfig.txt index 98d7e024c6..5962493875 100644 --- a/iped-app/resources/config/IPEDConfig.txt +++ b/iped-app/resources/config/IPEDConfig.txt @@ -97,10 +97,12 @@ enableMinIO = false enableOCR = false # Enable audio transcription. -# Default implementation uses VOSK transcription on local CPU (slow and not good accuracy). -# You can change it to a local Facebook Wav2Vec2 implementation (slower on CPU, faster on GPU and good accuracy) -# or remote Microsoft Azure or Google Cloud services (faster and good accuracy). -# Configure it in conf/AudioTranscriptConfig.txt +# Default implementation uses VOSK transcription on local CPU (faster but bad accuracy). +# You can change the algorithm into conf/AudioTranscriptConfig.txt: +# - Wav2Vec2 algorithm (slower and good accuracy) +# - Whisper algorithm (much slower but better accuracy) +# - Google Cloud (about $1.00 per hour cost) +# - Microsoft Azure (about $1.00 per hour cost) enableAudioTranscription = false # Enables carving. "addUnallocated" must be enabled to scan unallocated space. diff --git a/iped-app/resources/config/conf/AudioTranscriptConfig.txt b/iped-app/resources/config/conf/AudioTranscriptConfig.txt index 86a1e02252..7814aa1331 100644 --- a/iped-app/resources/config/conf/AudioTranscriptConfig.txt +++ b/iped-app/resources/config/conf/AudioTranscriptConfig.txt @@ -117,6 +117,7 @@ precision = int8 # Batch size (number of parallel transcriptions). If you have a GPU with enough memory, # increasing this value to e.g. 16 can speed up transcribing long audios up to 10x. # Test what is the better value for your GPU before hitting OOM. +# This works just if you are using whisperx library instead of faster_whisper batchSize = 1 ######################################### From f8b3f5f55c31b6685b086d8ffd36b794e7843231 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Sat, 25 May 2024 18:25:38 -0300 Subject: [PATCH 110/126] '#1823: log warning instead of aborting if FFmpeg in not on PATH --- .../iped/engine/task/transcript/WhisperTranscriptTask.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index 278a0ef203..077380d83d 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -17,7 +17,6 @@ import iped.engine.config.AudioTranscriptConfig; import iped.engine.config.Configuration; import iped.engine.config.ConfigurationManager; -import iped.exception.IPEDException; public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { @@ -35,7 +34,7 @@ public void init(ConfigurationManager configurationManager) throws Exception { try { Runtime.getRuntime().exec("ffmpeg"); } catch (IOException e) { - throw new IPEDException("Error checking FFmpeg presence, is it on PATH?"); + logger.warn("FFmpeg not found on PATH, transcription won't work if you switched to WhisperX library."); } } super.init(configurationManager); From 548215b3cfff773221766a323e392c3d6095dec0 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 10:44:13 -0300 Subject: [PATCH 111/126] '#1823: abort with error message if whisperx found and ffmpeg not found --- iped-app/resources/scripts/tasks/WhisperProcess.py | 1 + .../task/transcript/WhisperTranscriptTask.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/scripts/tasks/WhisperProcess.py b/iped-app/resources/scripts/tasks/WhisperProcess.py index 240c8a9bee..a53203bc47 100644 --- a/iped-app/resources/scripts/tasks/WhisperProcess.py +++ b/iped-app/resources/scripts/tasks/WhisperProcess.py @@ -29,6 +29,7 @@ def main(): whisperx_found = False print(library_loaded, file=stdout, flush=True) + print('whisperx' if whisperx_found else 'faster_whisper', file=stdout, flush=True) import GPUtil cudaCount = len(GPUtil.getGPUs()) diff --git a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java index 077380d83d..697273efb2 100644 --- a/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java +++ b/iped-engine/src/main/java/iped/engine/task/transcript/WhisperTranscriptTask.java @@ -17,6 +17,7 @@ import iped.engine.config.AudioTranscriptConfig; import iped.engine.config.Configuration; import iped.engine.config.ConfigurationManager; +import iped.exception.IPEDException; public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { @@ -27,14 +28,16 @@ public class WhisperTranscriptTask extends Wav2Vec2TranscriptTask { private static final String MODEL_LOADED = "model_loaded"; private static final AtomicBoolean ffmpegTested = new AtomicBoolean(); + private static volatile boolean ffmpegFound; @Override public void init(ConfigurationManager configurationManager) throws Exception { if (!ffmpegTested.getAndSet(true)) { try { Runtime.getRuntime().exec("ffmpeg"); + ffmpegFound = true; } catch (IOException e) { - logger.warn("FFmpeg not found on PATH, transcription won't work if you switched to WhisperX library."); + ffmpegFound = false; } } super.init(configurationManager); @@ -79,7 +82,14 @@ protected Server startServer0(int device) throws IOException { String line = reader.readLine(); if (!LIBRARY_LOADED.equals(line)) { - throw new StartupException("Neither 'faster_whisper' nor 'whisperx' python libraries were loaded correctly. Have you installed one of them?"); + throw new StartupException("Neither 'faster_whisper' nor 'whisperx' python libraries were loaded correctly. You need to install one of them!"); + } + + line = reader.readLine(); + logger.info("Transcription library loaded: {}", line); + + if ("whisperx".equals(line) && !ffmpegFound) { + throw new IPEDException("FFmpeg not found on PATH, it is needed by WhisperX python library."); } int cudaCount = Integer.valueOf(reader.readLine()); From 1bd42f7d5927e1a93caf02571400f7481b9891ce Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Mon, 27 May 2024 11:11:20 -0400 Subject: [PATCH 112/126] '#2231 Creates merging code for parsers configuration from profiles. --- .../profiles/forensic/conf/ParserConfig.xml | 10 ++ .../iped/engine/config/ParsersConfig.java | 102 +++++++++++++++++- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml diff --git a/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml b/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml new file mode 100644 index 0000000000..65b25de005 --- /dev/null +++ b/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- this config is merged with default config XML --> +<properties> + + <parsers> + <parser class="org.apache.tika.parser.journal.JournalParser"></parser> + </parsers> + +</properties> \ No newline at end of file diff --git a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java index b3f14e8ebf..cfa13fe87e 100644 --- a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java @@ -2,11 +2,34 @@ import java.io.File; import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.nio.file.DirectoryStream.Filter; import java.nio.file.Files; import java.nio.file.Path; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + import iped.configuration.Configurable; public class ParsersConfig implements Configurable<String> { @@ -18,6 +41,8 @@ public class ParsersConfig implements Configurable<String> { private static final String PARSER_CONFIG = "ParserConfig.xml"; //$NON-NLS-1$ + public static final String PARSER_DISABLED_ATTR = "iped:disabled"; + private String parserConfigXml; private transient Path tmp; @@ -33,7 +58,57 @@ public boolean accept(Path entry) throws IOException { @Override public void processConfig(Path resource) throws IOException { - parserConfigXml = new String(Files.readAllBytes(resource), StandardCharsets.UTF_8); + if (parserConfigXml == null) { + parserConfigXml = new String(Files.readAllBytes(resource), StandardCharsets.UTF_8); + parserConfigXml = parserConfigXml.trim().replaceFirst("^([\\W]+)<", "<"); + } else { + String changedParserConfigXml = new String(Files.readAllBytes(resource), StandardCharsets.UTF_8); + DocumentBuilderFactory dbf = DocumentBuilderFactory.newDefaultInstance(); + dbf.setNamespaceAware(false); + DocumentBuilder db; + try { + db = dbf.newDocumentBuilder(); + Document doc = db.parse(new InputSource(new StringReader(parserConfigXml))); + Document changedDoc = db.parse(resource.toFile()); + + Element root = changedDoc.getDocumentElement(); + NodeList rootNl = root.getElementsByTagName("parsers").item(0).getChildNodes(); + for (int i = 0; i < rootNl.getLength(); i++) { + Node child = rootNl.item(i); + if (child instanceof Element) { + Element element = (Element) child; + if (element.getTagName().equals("parser")) { + String className = element.getAttribute("class"); + XPath xPath = XPathFactory.newInstance().newXPath(); + String expression = "/properties/parsers/parser[@class='" + className + "']"; + NodeList nlParser = (NodeList) xPath.compile(expression).evaluate(doc, + XPathConstants.NODESET); + + expression = "/properties/parsers"; + NodeList nlParsers = (NodeList) xPath.compile(expression).evaluate(doc, + XPathConstants.NODESET); + Node newnode = doc.importNode(element, true); + for (int j = 0; j < nlParsers.getLength(); j++) { + for (int k = 0; k < nlParser.getLength(); k++) { + nlParsers.item(j).removeChild(nlParser.item(k)); + } + nlParsers.item(j).appendChild(newnode); + } + } + } + } + + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + StringWriter writer = new StringWriter(); + transformer.transform(new DOMSource(doc), new StreamResult(writer)); + parserConfigXml = writer.getBuffer().toString(); + } catch (ParserConfigurationException | SAXException | XPathExpressionException | TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } @Override @@ -45,12 +120,35 @@ public String getConfiguration() { public void setConfiguration(String config) { parserConfigXml = config; } + + public String removeDisabledParsers(String parserConfigXml) { + String[] slices = parserConfigXml.split(PARSER_DISABLED_ATTR+"=\"true\""); + StringBuffer result=new StringBuffer(); + for (int i = 0; i < slices.length; i++) { + String part = slices[i]; + if(i>0) { + int disabledParserEndIndex = part.indexOf(">"); + if(disabledParserEndIndex==0 || part.charAt(disabledParserEndIndex-1)!='/') { + disabledParserEndIndex = part.indexOf("</parser>"); + } + part=part.substring(disabledParserEndIndex+1); + } + if(i<slices.length-1) { + int disabledParserIndex = part.lastIndexOf("<parser"); + result.append(part.substring(0, disabledParserIndex)); + }else { + result.append(part); + } + } + return result.toString(); + } public synchronized File getTmpConfigFile() { if (tmp == null) { try { tmp = Files.createTempFile("parser-config", ".xml"); - Files.write(tmp, parserConfigXml.getBytes(StandardCharsets.UTF_8)); + + Files.write(tmp, removeDisabledParsers(parserConfigXml).getBytes(StandardCharsets.UTF_8)); tmp.toFile().deleteOnExit(); } catch (IOException e) { From b75ce7a85f37be2712eed881adc0ede013cfcfbc Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Mon, 27 May 2024 11:12:17 -0400 Subject: [PATCH 113/126] '#2231 Puts Journal parser on PEDO profile. --- .../config/profiles/pedo/conf/ParserConfig.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml diff --git a/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml b/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml new file mode 100644 index 0000000000..65b25de005 --- /dev/null +++ b/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- this config is merged with default config XML --> +<properties> + + <parsers> + <parser class="org.apache.tika.parser.journal.JournalParser"></parser> + </parsers> + +</properties> \ No newline at end of file From 691497c9057864efcdf2936c4b25f29687bc34d6 Mon Sep 17 00:00:00 2001 From: "patrick.pdb" <patrick.dalla@gmail.com> Date: Mon, 27 May 2024 12:10:34 -0400 Subject: [PATCH 114/126] '#2231 Enabling the correct Journal Parser on forensics and pedo. --- .../config/profiles/forensic/conf/ParserConfig.xml | 6 +++++- .../resources/config/profiles/pedo/conf/ParserConfig.xml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml b/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml index 65b25de005..584a4cbc23 100644 --- a/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml +++ b/iped-app/resources/config/profiles/forensic/conf/ParserConfig.xml @@ -4,7 +4,11 @@ <properties> <parsers> - <parser class="org.apache.tika.parser.journal.JournalParser"></parser> + <parser class="iped.parsers.usnjrnl.UsnJrnlParser"> + <params> + <param name="extractEntries" type="bool">true</param> + </params> + </parser> </parsers> </properties> \ No newline at end of file diff --git a/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml b/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml index 65b25de005..584a4cbc23 100644 --- a/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml +++ b/iped-app/resources/config/profiles/pedo/conf/ParserConfig.xml @@ -4,7 +4,11 @@ <properties> <parsers> - <parser class="org.apache.tika.parser.journal.JournalParser"></parser> + <parser class="iped.parsers.usnjrnl.UsnJrnlParser"> + <params> + <param name="extractEntries" type="bool">true</param> + </params> + </parser> </parsers> </properties> \ No newline at end of file From 6f3239fcad4ed8b6ecb4b6b6f8c15d34d63b017c Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 16:30:46 -0300 Subject: [PATCH 115/126] '#1503: adjust code formatting --- .../iped/engine/config/ParsersConfig.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java index cfa13fe87e..9f573b0e9d 100644 --- a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java @@ -81,12 +81,10 @@ public void processConfig(Path resource) throws IOException { String className = element.getAttribute("class"); XPath xPath = XPathFactory.newInstance().newXPath(); String expression = "/properties/parsers/parser[@class='" + className + "']"; - NodeList nlParser = (NodeList) xPath.compile(expression).evaluate(doc, - XPathConstants.NODESET); + NodeList nlParser = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET); expression = "/properties/parsers"; - NodeList nlParsers = (NodeList) xPath.compile(expression).evaluate(doc, - XPathConstants.NODESET); + NodeList nlParsers = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET); Node newnode = doc.importNode(element, true); for (int j = 0; j < nlParsers.getLength(); j++) { for (int k = 0; k < nlParser.getLength(); k++) { @@ -120,23 +118,23 @@ public String getConfiguration() { public void setConfiguration(String config) { parserConfigXml = config; } - + public String removeDisabledParsers(String parserConfigXml) { - String[] slices = parserConfigXml.split(PARSER_DISABLED_ATTR+"=\"true\""); - StringBuffer result=new StringBuffer(); + String[] slices = parserConfigXml.split(PARSER_DISABLED_ATTR + "=\"true\""); + StringBuffer result = new StringBuffer(); for (int i = 0; i < slices.length; i++) { String part = slices[i]; - if(i>0) { + if (i > 0) { int disabledParserEndIndex = part.indexOf(">"); - if(disabledParserEndIndex==0 || part.charAt(disabledParserEndIndex-1)!='/') { + if (disabledParserEndIndex == 0 || part.charAt(disabledParserEndIndex - 1) != '/') { disabledParserEndIndex = part.indexOf("</parser>"); } - part=part.substring(disabledParserEndIndex+1); + part = part.substring(disabledParserEndIndex + 1); } - if(i<slices.length-1) { + if (i < slices.length - 1) { int disabledParserIndex = part.lastIndexOf("<parser"); result.append(part.substring(0, disabledParserIndex)); - }else { + } else { result.append(part); } } @@ -147,7 +145,7 @@ public synchronized File getTmpConfigFile() { if (tmp == null) { try { tmp = Files.createTempFile("parser-config", ".xml"); - + Files.write(tmp, removeDisabledParsers(parserConfigXml).getBytes(StandardCharsets.UTF_8)); tmp.toFile().deleteOnExit(); From c2855bc6b221757bb818da9e09dd87ea995870a6 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 16:35:52 -0300 Subject: [PATCH 116/126] '#1503: propagate unexpected exception instead of catching --- .../src/main/java/iped/engine/config/ParsersConfig.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java index 9f573b0e9d..7c5b34b333 100644 --- a/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java +++ b/iped-engine/src/main/java/iped/engine/config/ParsersConfig.java @@ -62,7 +62,6 @@ public void processConfig(Path resource) throws IOException { parserConfigXml = new String(Files.readAllBytes(resource), StandardCharsets.UTF_8); parserConfigXml = parserConfigXml.trim().replaceFirst("^([\\W]+)<", "<"); } else { - String changedParserConfigXml = new String(Files.readAllBytes(resource), StandardCharsets.UTF_8); DocumentBuilderFactory dbf = DocumentBuilderFactory.newDefaultInstance(); dbf.setNamespaceAware(false); DocumentBuilder db; @@ -103,8 +102,7 @@ public void processConfig(Path resource) throws IOException { transformer.transform(new DOMSource(doc), new StreamResult(writer)); parserConfigXml = writer.getBuffer().toString(); } catch (ParserConfigurationException | SAXException | XPathExpressionException | TransformerException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + throw new RuntimeException(e); } } } From 59f94d9503f646dac53e6cf25f794232af576475 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 16:43:49 -0300 Subject: [PATCH 117/126] '#1503: propagate parsing exception so parsing exception filter works --- .../main/java/iped/parsers/usnjrnl/UsnJrnlParser.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java index 13ddb9b2d1..010abd268d 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java @@ -275,6 +275,17 @@ public void parse(InputStream stream, ContentHandler handler, Metadata metadata, } createReport(entries, n, context, handler, entriesReadError); } + if (entriesReadError instanceof TikaException) { + throw (TikaException) entriesReadError; + } else if (entriesReadError instanceof IOException) { + throw (IOException) entriesReadError; + } else if (entriesReadError instanceof SAXException) { + throw (SAXException) entriesReadError; + } else if (entriesReadError instanceof RuntimeException) { + throw (RuntimeException) entriesReadError; + } else if (entriesReadError != null) { + throw new RuntimeException(entriesReadError); + } } From 96ab3fd2e25448e6d4eb65b286d41fd057814c55 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 17:24:23 -0300 Subject: [PATCH 118/126] '#1503: use a shorter property prefix --- .../src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java index 010abd268d..86018594e3 100644 --- a/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java +++ b/iped-parsers/iped-parsers-impl/src/main/java/iped/parsers/usnjrnl/UsnJrnlParser.java @@ -57,7 +57,7 @@ public enum ReportType { public static final MediaType USNJRNL_REPORT_CSV = MediaType.parse("application/x-usnjournal-report-csv"); public static final MediaType USNJRNL_REGISTRY = MediaType.parse("application/x-usnjournal-registry"); - static final String USN_REASON_PREFIX = "ntfs_usn_reason"; + static final String USN_REASON_PREFIX = "usnJrnl:"; private static Set<MediaType> SUPPORTED_TYPES = MediaType.set(USNJRNL_$J); @@ -190,8 +190,9 @@ private void createReport(ArrayList<UsnJrnlEntry> entries, int n, ParseContext c metadataItem.set(props[3], Long.toString(entry.getUSN())); String formatedDate = rg.timeFormat.format(entry.getFileTime()); for (String value : entry.getReasons()) { - MetadataUtil.setMetadataType(USN_REASON_PREFIX + ":" + value, Date.class); - metadataItem.set(USN_REASON_PREFIX + ":" + value, formatedDate); + value = value.toLowerCase(); + MetadataUtil.setMetadataType(USN_REASON_PREFIX + value, Date.class); + metadataItem.set(USN_REASON_PREFIX + value, formatedDate); metadataItem.add(props[5], value); } metadataItem.set(props[6], "0x" + Util.byteArrayToHex(entry.getMftRef())); From b33d5dc924564d7d659f4d75f004ce5a50126512 Mon Sep 17 00:00:00 2001 From: Luis Nassif <lfcnassif@gmail.com> Date: Mon, 27 May 2024 17:40:24 -0300 Subject: [PATCH 119/126] '#1503: update unit tests --- .../test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java index 82c6aea46e..5bfa86d603 100644 --- a/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java +++ b/iped-parsers/iped-parsers-impl/src/test/java/iped/parsers/usnjrnl/UsnJrnlParserTest.java @@ -64,7 +64,7 @@ public void testUsnJrnlParsingHTML() throws IOException, SAXException, TikaExcep reasons = metadata.getValues("Reasons"); for (String reason : reasons) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + reason)); if (getVersion() < 9) assertEquals("20/05/2021 14:52:07", df.format(date)); if (getVersion() >= 9 && getVersion() < 12) @@ -79,7 +79,7 @@ public void testUsnJrnlParsingHTML() throws IOException, SAXException, TikaExcep reasons = metadata.getValues("Reasons"); for (String reason : reasons) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + reason)); if (getVersion() < 9) assertEquals("20/05/2021 14:55:03", df.format(date)); if (getVersion() >= 9 && getVersion() < 12) @@ -129,7 +129,7 @@ public void testUsnJrnlParsingCSV() throws IOException, SAXException, TikaExcept reasons = metadata.getValues("Reasons"); for (String reason : reasons) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + reason)); if (getVersion() < 9) assertEquals("20/05/2021 14:52:07", df.format(date)); if (getVersion() >= 9 && getVersion() < 12) @@ -144,7 +144,7 @@ public void testUsnJrnlParsingCSV() throws IOException, SAXException, TikaExcept reasons = metadata.getValues("Reasons"); for (String reason : reasons) { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + ":" + reason)); + .parse(metadata.get(UsnJrnlParser.USN_REASON_PREFIX + reason)); if (getVersion() < 9) assertEquals("20/05/2021 14:55:03", df.format(date)); if (getVersion() >= 9 && getVersion() < 12) From 5593b6cd712a70237ff72a4458dadf1d06612f51 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Tue, 28 May 2024 21:41:38 -0300 Subject: [PATCH 120/126] '#2170: Set category for telegram calls. --- iped-app/resources/scripts/tasks/RefineCategoryTask.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iped-app/resources/scripts/tasks/RefineCategoryTask.js b/iped-app/resources/scripts/tasks/RefineCategoryTask.js index ef47da421d..faf7f69a20 100644 --- a/iped-app/resources/scripts/tasks/RefineCategoryTask.js +++ b/iped-app/resources/scripts/tasks/RefineCategoryTask.js @@ -163,6 +163,8 @@ function process(e){ e.setCategory("Discord Calls"); } else if (source.contains("threema")) { e.setCategory("Threema Calls"); + } else if (source.contains("telegram")) { + e.setCategory("Telegram Calls"); } else { // New sub-categories may be created from other phone call apps handled by UFED e.setCategory("Other Calls"); From 9929e8c094934f38aacdfb5c7c8364274726b916 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Tue, 28 May 2024 21:42:18 -0300 Subject: [PATCH 121/126] '#2170: Fix discord calls subcategory mime type. --- iped-app/resources/config/conf/CategoriesConfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iped-app/resources/config/conf/CategoriesConfig.json b/iped-app/resources/config/conf/CategoriesConfig.json index 11e92b3053..049c1ad631 100644 --- a/iped-app/resources/config/conf/CategoriesConfig.json +++ b/iped-app/resources/config/conf/CategoriesConfig.json @@ -152,8 +152,9 @@ ]}, {"name": "Extraction Summary", "mimes": ["application/x-ufed-html-summary"]}, {"name": "Calls", "categories":[ + {"name": "Discord Calls", "mimes":["call/x-discord-call"]}, {"name": "Facebook Calls", "mimes":[]}, - {"name": "Phone Calls", "mimes":["call/x-discord-call"]}, + {"name": "Phone Calls", "mimes":[]}, {"name": "Telegram Calls", "mimes":["call/x-telegram-call"]}, {"name": "Threema Calls", "mimes":["call/x-threema-call"]}, {"name": "WhatsApp Calls", "mimes":["call/x-whatsapp-call"]}, From d88e42b46799dff458bc8daf8d1f6dea8237a5f4 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Tue, 28 May 2024 21:43:39 -0300 Subject: [PATCH 122/126] '#2170: Add missing discord calls localized entry and fr_FR. --- .../resources/localization/iped-categories.properties | 1 + .../localization/iped-categories_de_DE.properties | 1 + .../localization/iped-categories_es_AR.properties | 1 + .../localization/iped-categories_fr_FR.properties | 7 +++++++ .../localization/iped-categories_it_IT.properties | 1 + .../localization/iped-categories_pt_BR.properties | 11 ++++++----- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/iped-app/resources/localization/iped-categories.properties b/iped-app/resources/localization/iped-categories.properties index 988a670cb0..6ae72a55da 100644 --- a/iped-app/resources/localization/iped-categories.properties +++ b/iped-app/resources/localization/iped-categories.properties @@ -92,6 +92,7 @@ Folders=Folders Scanned\ Documents=Scanned\ Documents Extraction\ Summary=Extraction\ Summary Calls=Calls +Discord\ Calls=Discord\ Calls Facebook\ Calls=Facebook\ Calls Other\ Calls=Other\ Calls Phone\ Calls=Phone\ Calls diff --git a/iped-app/resources/localization/iped-categories_de_DE.properties b/iped-app/resources/localization/iped-categories_de_DE.properties index 84a8cdadd3..6c346d015e 100644 --- a/iped-app/resources/localization/iped-categories_de_DE.properties +++ b/iped-app/resources/localization/iped-categories_de_DE.properties @@ -92,6 +92,7 @@ Folders=Verzeichnisse Scanned\ Documents=gescannte\ Dokumente Extraction\ Summary=Extraktions-Zusammenfassung Calls=Anrufe +Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_es_AR.properties b/iped-app/resources/localization/iped-categories_es_AR.properties index 5243549a48..54a92799fe 100644 --- a/iped-app/resources/localization/iped-categories_es_AR.properties +++ b/iped-app/resources/localization/iped-categories_es_AR.properties @@ -92,6 +92,7 @@ Folders=Carpetas Scanned\ Documents=Documentos\ Escaneados Extraction\ Summary=Resumen\ Extracción Calls=Reg.\ Llamadas +Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index 34341116c1..c9415b9690 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -92,6 +92,13 @@ Folders=Dossiers Scanned\ Documents=Documents\ Scannés Extraction\ Summary=Résumé\ de\ l'Extraction Calls=Appels +Discord\ Calls=Discord\ Calls[TBT] +Facebook\ Calls=Facebook\ Calls[TBT] +Other\ Calls=Other\ Calls[TBT] +Phone\ Calls=Phone\ Calls[TBT] +Telegram\ Calls=Telegram\ Calls[TBT] +Threema\ Calls=Threema\ Calls[TBT] +WhatsApp\ Calls=WhatsApp\ Calls[TBT] SMS\ Messages=SMS MMS\ Messages=MMS Instant\ Messages=Messages\ Instantanés diff --git a/iped-app/resources/localization/iped-categories_it_IT.properties b/iped-app/resources/localization/iped-categories_it_IT.properties index 599e54884a..8f283cfbec 100644 --- a/iped-app/resources/localization/iped-categories_it_IT.properties +++ b/iped-app/resources/localization/iped-categories_it_IT.properties @@ -92,6 +92,7 @@ Folders=Cartelle Scanned\ Documents=Documenti\ scansionati Extraction\ Summary=Sommario\ estrazione Calls=Chiamate +Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_pt_BR.properties b/iped-app/resources/localization/iped-categories_pt_BR.properties index 5b208f6c13..60920268be 100644 --- a/iped-app/resources/localization/iped-categories_pt_BR.properties +++ b/iped-app/resources/localization/iped-categories_pt_BR.properties @@ -92,12 +92,13 @@ Folders=Pastas Scanned\ Documents=Possíveis\ Digitalizações Extraction\ Summary=Resumo\ da\ Extração Calls=Chamadas -Facebook\ Calls=Chamadas Facebook +Discord\ Calls=Chamadas\ Discord +Facebook\ Calls=Chamadas\ Facebook Other\ Calls=Outras\ Chamadas -Phone\ Calls=Chamadas Telefônicas -Telegram\ Calls=Chamadas Telegram -Threema\ Calls=Chamadas Threema -WhatsApp\ Calls=Chamadas WhatsApp +Phone\ Calls=Chamadas\ Telefônicas +Telegram\ Calls=Chamadas\ Telegram +Threema\ Calls=Chamadas\ Threema +WhatsApp\ Calls=Chamadas\ WhatsApp SMS\ Messages=Mensagens\ SMS MMS\ Messages=Mensagens\ MMS Instant\ Messages=Mensagens\ Instantâneas From 4c2510fe2ebfc263ab0d80a54d02e378aa2352f3 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Tue, 28 May 2024 21:55:23 -0300 Subject: [PATCH 123/126] '#2170: Add an icon for Telegram Calls category. --- .../resources/iped/app/ui/cat/Telegram Calls.png | Bin 0 -> 887 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Telegram Calls.png diff --git a/iped-app/src/main/resources/iped/app/ui/cat/Telegram Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/Telegram Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6ab9fb2c1b3ef9f8b70a280137180c147644f2 GIT binary patch literal 887 zcmV--1Bm>IP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80009%Nkl<ZcwX(6 z%TE(g7{&Pqi3(D5p@|Acc5dC^gT$C<BH>L$k*EtrNg4|zx&V<!)!I@Xr64Vof-PyG z1>5P&wA17LZk=`>1zJFG;Ym)~+&eSpH{bp4Z7b^D{KRRx!Z>i!{<i=E+j7~CBr*_W z1sNraOgfFUEF&R^eB5}g>U{yqRW_T2%z_sq5<YDJ1IxfD`&^93kk~lQYjvyuX%?`& zt>EhWBzK*yV0CP1E5j?J>ev7jMZwSyNf)}8tzIz?Q5HZlndIXwUfnP+t1qUQf{bn$ zPU6N;?mJb2?kgD}5D4flZ2D3F5Jd^siUiWwWor_B(*kyqGGs}@oq<`l6bZf@lAJCL zz~}SnE>iu#nFFAP)2=y%-WwAz7ZQ<@WVlx&m|EI|!~m*WCQ;q?6<4ggyfI4xFa~R# z__d3P5b`A+TuLFdBO;rYcx4*<T^RL**qY0TCj?Zr+ELa14d=U@7zwh<Msv%0Xn^%# z0Pp?a<$mehfj78?tdhnDcM#_uk78yu3R#x;+lRLksA^;3o!?Q@J&o=WKh~nc(E#lB zDNKfQ6(FDKaN%a39hW*jBN*A`!DN{oNW<>XpKuo}PiFDjz6Ss1?!f@{{UK8@c_@?X zfhAoJ2sqp6M)R--N`{?`J4s#vT7p~e7Esfb3$N*!$JoqDX+02+$4%j6Ric<O?EvS7 zfZGFesBE6XTrkEVD%+hry!NRFmS<i>qFbc_kc{D40NT&~SVp%M>jwqaXfD3y)g2Br zyqeF4*Rt>l&pJE2a=#BH0XQ5E6TtPi;ru+EgdhE~={&IX%<+a(!!PtM;>Gw1tD4B~ zD;a=f1Ryti3iAX(m7rklxp1-93k$tD3!hwAM=F)d-%}O<$p}DhYHG^Q({fM%H74y2 z+M;w$*cXC`vNb12t;z<l*=!~N^7BGV<VCyW?j+FdH_jAPHUO!0v3MnDyQ;FL^w&Ie zYaXD{p#VsY<HaHN^L>Z$DMtVxJ(?*WqSL2;#*qL>R;$$%a*(w;GJq;$$X=#DHCi1T z0Lkrkn*y~ChYJUns$&IE6^q48;eLPdz4%uE%F%%UC*eH-PQ(8JegjM9Q^niPd4m7| N002ovPDHLkV1gK}nU4Sf literal 0 HcmV?d00001 From 09a9adaafb6d9e561dccf6f7bf8ea92d5da69ab1 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Wed, 29 May 2024 15:24:38 -0300 Subject: [PATCH 124/126] '#2170: Add a sub-category for signal calls. --- .../localization/iped-categories.properties | 1 + .../localization/iped-categories_de_DE.properties | 1 + .../localization/iped-categories_es_AR.properties | 1 + .../localization/iped-categories_fr_FR.properties | 1 + .../localization/iped-categories_it_IT.properties | 1 + .../localization/iped-categories_pt_BR.properties | 1 + .../resources/scripts/tasks/RefineCategoryTask.js | 2 ++ .../resources/iped/app/ui/cat/Signal Calls.png | Bin 0 -> 777 bytes 8 files changed, 8 insertions(+) create mode 100644 iped-app/src/main/resources/iped/app/ui/cat/Signal Calls.png diff --git a/iped-app/resources/localization/iped-categories.properties b/iped-app/resources/localization/iped-categories.properties index 6ae72a55da..e7a22ba5d6 100644 --- a/iped-app/resources/localization/iped-categories.properties +++ b/iped-app/resources/localization/iped-categories.properties @@ -96,6 +96,7 @@ Discord\ Calls=Discord\ Calls Facebook\ Calls=Facebook\ Calls Other\ Calls=Other\ Calls Phone\ Calls=Phone\ Calls +Signal\ Calls=Signal\ Calls Telegram\ Calls=Telegram\ Calls Threema\ Calls=Threema\ Calls WhatsApp\ Calls=WhatsApp\ Calls diff --git a/iped-app/resources/localization/iped-categories_de_DE.properties b/iped-app/resources/localization/iped-categories_de_DE.properties index 6c346d015e..82dbf2b8aa 100644 --- a/iped-app/resources/localization/iped-categories_de_DE.properties +++ b/iped-app/resources/localization/iped-categories_de_DE.properties @@ -96,6 +96,7 @@ Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] +Signal\ Calls=Signal\ Calls[TBT] Telegram\ Calls=Telegram\ Calls[TBT] Threema\ Calls=Threema\ Calls[TBT] WhatsApp\ Calls=WhatsApp\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_es_AR.properties b/iped-app/resources/localization/iped-categories_es_AR.properties index 54a92799fe..a53f253c4d 100644 --- a/iped-app/resources/localization/iped-categories_es_AR.properties +++ b/iped-app/resources/localization/iped-categories_es_AR.properties @@ -96,6 +96,7 @@ Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] +Signal\ Calls=Signal\ Calls[TBT] Telegram\ Calls=Telegram\ Calls[TBT] Threema\ Calls=Threema\ Calls[TBT] WhatsApp\ Calls=WhatsApp\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_fr_FR.properties b/iped-app/resources/localization/iped-categories_fr_FR.properties index c9415b9690..1641d5f3a1 100644 --- a/iped-app/resources/localization/iped-categories_fr_FR.properties +++ b/iped-app/resources/localization/iped-categories_fr_FR.properties @@ -96,6 +96,7 @@ Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] +Signal\ Calls=Signal\ Calls[TBT] Telegram\ Calls=Telegram\ Calls[TBT] Threema\ Calls=Threema\ Calls[TBT] WhatsApp\ Calls=WhatsApp\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_it_IT.properties b/iped-app/resources/localization/iped-categories_it_IT.properties index 8f283cfbec..9cad62d11b 100644 --- a/iped-app/resources/localization/iped-categories_it_IT.properties +++ b/iped-app/resources/localization/iped-categories_it_IT.properties @@ -96,6 +96,7 @@ Discord\ Calls=Discord\ Calls[TBT] Facebook\ Calls=Facebook\ Calls[TBT] Other\ Calls=Other\ Calls[TBT] Phone\ Calls=Phone\ Calls[TBT] +Signal\ Calls=Signal\ Calls[TBT] Telegram\ Calls=Telegram\ Calls[TBT] Threema\ Calls=Threema\ Calls[TBT] WhatsApp\ Calls=WhatsApp\ Calls[TBT] diff --git a/iped-app/resources/localization/iped-categories_pt_BR.properties b/iped-app/resources/localization/iped-categories_pt_BR.properties index 60920268be..4907213556 100644 --- a/iped-app/resources/localization/iped-categories_pt_BR.properties +++ b/iped-app/resources/localization/iped-categories_pt_BR.properties @@ -96,6 +96,7 @@ Discord\ Calls=Chamadas\ Discord Facebook\ Calls=Chamadas\ Facebook Other\ Calls=Outras\ Chamadas Phone\ Calls=Chamadas\ Telefônicas +Signal\ Calls=Chamadas\ Signal Telegram\ Calls=Chamadas\ Telegram Threema\ Calls=Chamadas\ Threema WhatsApp\ Calls=Chamadas\ WhatsApp diff --git a/iped-app/resources/scripts/tasks/RefineCategoryTask.js b/iped-app/resources/scripts/tasks/RefineCategoryTask.js index faf7f69a20..35d07da9fb 100644 --- a/iped-app/resources/scripts/tasks/RefineCategoryTask.js +++ b/iped-app/resources/scripts/tasks/RefineCategoryTask.js @@ -165,6 +165,8 @@ function process(e){ e.setCategory("Threema Calls"); } else if (source.contains("telegram")) { e.setCategory("Telegram Calls"); + } else if (source.contains("signal")) { + e.setCategory("Signal Calls"); } else { // New sub-categories may be created from other phone call apps handled by UFED e.setCategory("Other Calls"); diff --git a/iped-app/src/main/resources/iped/app/ui/cat/Signal Calls.png b/iped-app/src/main/resources/iped/app/ui/cat/Signal Calls.png new file mode 100644 index 0000000000000000000000000000000000000000..6f46a7705af7c31bcd2b9943fcbbb37dae564431 GIT binary patch literal 777 zcmV+k1NQuhP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80008eNkl<ZcwX(6 z+iMd+6vq39sSjRXe6T+F(1M6olok;Lp%&Yyfff~m6pLCfY1O7m!5WN;5*5*cl!!#3 z>O)dfFHNJ(WwV=2ve`Y(naw7%vuU%N#MTEt_((Ey_MBg4&P>v_p*Icd={9~~t^IES zeECso$n#4oBt;Dh3V^EV#`idebA0@&0FA0h3ZA(q!R{de27D5<4+?Plt^~1!YKm() zfJ*Xv{5g2=wg7MDitsb37mTM=m?mSNzn5U-u}tGoEe9BRB*U>AB4l$K_+I5<|8N$z z4P@vmeimho&Lbqs5r8B~biCVV8m?&Jm%hJP{K%+iN^BU%1u~B-q>%L36Se?iv6v~a z^D<MpEZ3w&6HkzD$`@vh^E00m+7sBAbpaxgh$RVn-*qzpHXQDC*QKl_mNm{}Tsw&` zC^i821gsC=sRDfat%635+*Y#Zd>rfTt_*F$vFCYuMA<pV0BA$F0*mCEbzBfEF|2U~ z5*ZcF-On`-a4}S=4}()V7=Mw6o5A`$fW3k}V`~dGo~XT~p4n<~)Z9V|K7K7h|Ac;8 zY8g)fF8{5UdH6tLZ8c#!ZB2w`g-h9UMFek91{b;cg5e@9(&-UkOTYOZIPMkUeN>^( z**=DRaUS5wy8`TVXW;5nnO?U$PG#WybPf_}{mNS+ugii42g&~9C4|5z+ZRzN6tVzp z>JuvS;duqR$qHP1Cc|=8gGF)$BTO`2g3Tw>u#5Z_Je(~+GFz@(mTdqO4}fNmVIy(` zfZ_qrZnv8cvn|H}fk40lfbI?OkpM%lb>Ks{`I)L51E6{)Yp(<zS3_rK%rOVN)#q6? z1c2HzTpMCF?;Yi{Gy#C>8gmYDbjqBgDFBq;@3$1GXI4!E7~+epWc*XZs$~GEa5!u! z$T}X6^N+L^z)&icvJ{U-qkI_EUjcBUx&Uk86#>@6{{j90B~iGNs8@ru00000NkvXX Hu0mjfFoRg> literal 0 HcmV?d00001 From d6e8b80486112c63509949ef46ed4bd072e2b9d6 Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Wed, 29 May 2024 16:58:01 -0300 Subject: [PATCH 125/126] '#2170: Complement last commit, adding "Signal Calls" category to JSON. --- iped-app/resources/config/conf/CategoriesConfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/iped-app/resources/config/conf/CategoriesConfig.json b/iped-app/resources/config/conf/CategoriesConfig.json index 049c1ad631..962c9e640e 100644 --- a/iped-app/resources/config/conf/CategoriesConfig.json +++ b/iped-app/resources/config/conf/CategoriesConfig.json @@ -155,6 +155,7 @@ {"name": "Discord Calls", "mimes":["call/x-discord-call"]}, {"name": "Facebook Calls", "mimes":[]}, {"name": "Phone Calls", "mimes":[]}, + {"name": "Signal Calls", "mimes":[]}, {"name": "Telegram Calls", "mimes":["call/x-telegram-call"]}, {"name": "Threema Calls", "mimes":["call/x-threema-call"]}, {"name": "WhatsApp Calls", "mimes":["call/x-whatsapp-call"]}, From 4e7b82bef3f1fc86b4830f3de377b442f7411e7a Mon Sep 17 00:00:00 2001 From: tc-wleite <wladimir.leite@gmail.com> Date: Fri, 31 May 2024 11:16:38 -0300 Subject: [PATCH 126/126] Minor UI fix: adjust row height based on icon size in report dialog. --- iped-app/src/main/java/iped/app/ui/ReportDialog.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iped-app/src/main/java/iped/app/ui/ReportDialog.java b/iped-app/src/main/java/iped/app/ui/ReportDialog.java index 5a286609b0..f325003531 100644 --- a/iped-app/src/main/java/iped/app/ui/ReportDialog.java +++ b/iped-app/src/main/java/iped/app/ui/ReportDialog.java @@ -148,6 +148,8 @@ public void updateList() { table = new JTable(tableModel); table.getColumnModel().getColumn(0).setMaxWidth(20); table.getColumnModel().getColumn(2).setMaxWidth(150); + table.setRowHeight(IconManager.getIconSize()); + tableModel.addTableModelListener(this); scrollPane = new JScrollPane(table);