mirror of https://github.com/qarmin/czkawka
Compare commits
No commits in common. 'master' and '6.1.0' have entirely different histories.
@ -1,58 +0,0 @@
|
||||
name: 🐧 Linux CLI Eyra
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: '0 0 * * 2'
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
linux-cli:
|
||||
strategy:
|
||||
matrix:
|
||||
toolchain: [ nightly ]
|
||||
type: [ release ]
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install basic libraries
|
||||
run: sudo apt update || true; sudo apt install -y ffmpeg
|
||||
|
||||
# New versions of nightly rust may call new unimplemented in eyra functions, so use const version
|
||||
- name: Setup rust version
|
||||
run: rustup default nightly-2024-02-06
|
||||
|
||||
- name: Add eyra
|
||||
run: |
|
||||
cd czkawka_cli
|
||||
cargo add eyra --rename=std
|
||||
echo 'fn main() { println!("cargo:rustc-link-arg=-nostartfiles"); }' > build.rs
|
||||
cd ..
|
||||
|
||||
- name: Enable LTO
|
||||
run: sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
|
||||
if: ${{ (matrix.type == 'release') }}
|
||||
|
||||
- name: Build Release
|
||||
run: cargo build --release --bin czkawka_cli
|
||||
if: ${{ (matrix.type == 'release') }}
|
||||
|
||||
- name: Store Linux CLI
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: czkawka_cli-${{ runner.os }}-${{ matrix.toolchain }}
|
||||
path: target/release/czkawka_cli
|
||||
if: ${{ matrix.type == 'release' }}
|
||||
|
||||
- name: Linux Regression Test
|
||||
run: |
|
||||
wget https://github.com/qarmin/czkawka/releases/download/6.0.0/TestFiles.zip
|
||||
cd ci_tester
|
||||
cargo build --release
|
||||
cd ..
|
||||
|
||||
ci_tester/target/release/ci_tester target/release/czkawka_cli
|
||||
if: ${{ matrix.type == 'release' }}
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020-2024 Rafał Mikrut
|
||||
Copyright (c) 2020-2023 Rafał Mikrut
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020-2024 Rafał Mikrut
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,44 +0,0 @@
|
||||
# Czkawka CLI
|
||||
|
||||
CLI frontend, allows to use Czkawka from terminal.
|
||||
|
||||
## Requirements
|
||||
Precompiled binaries should work without any additional dependencies with Linux(Ubuntu 20.04+), Windows(10+) and macOS(10.15+).
|
||||
|
||||
If you decide to compile the app, you probably will be able to run it on even older versions of OS, like Ubuntu 16.04 or Windows 7.
|
||||
|
||||
On linux it is even possible with eyra to avoid entirely libc and using fully static rust binary.
|
||||
|
||||
If you want to use similar videos tool, you need to install ffmpeg(runtime dependency) or use heif/libraw(build/runtime dependency) you need to install required packages.
|
||||
- mac - `brew install ffmpeg libraw libheif` - https://formulae.brew.sh/formula/ffmpeg
|
||||
- linux - `sudo apt install ffmpeg libraw-dev libheif-dev`
|
||||
- windows - `choco install ffmpeg` - or if not working, download from https://ffmpeg.org/download.html#build-windows and unpack to location with `czkawka_cli.exe`, heif and libraw are not supported on windows
|
||||
|
||||
## Compilation
|
||||
For compilation, you need to have installed Rust via rustup - https://rustup.rs/ and compile it e.g. via
|
||||
```shell
|
||||
cargo run --release --bin czkawka_cli
|
||||
```
|
||||
you can enable additional features via
|
||||
```shell
|
||||
cargo run --release --bin czkawka_cli --features "heif,libraw"
|
||||
```
|
||||
on linux to build fully static binary with eyra you need to use (this is only for crazy people, so just use command above if you don't know what you are doing)
|
||||
```shell
|
||||
rustup default nightly-2024-02-06 # or any newer nightly that works fine with eyra
|
||||
cd czkawka_cli
|
||||
cargo add eyra --rename=std
|
||||
echo 'fn main() { println!("cargo:rustc-link-arg=-nostartfiles"); }' > build.rs
|
||||
cd ..
|
||||
cargo build --release --bin czkawka_cli
|
||||
```
|
||||
|
||||
## Limitations
|
||||
Not all available features in core are available in CLI.
|
||||
|
||||
List of not available features:
|
||||
- Ability to use/choose referenced directories
|
||||
- See progress of scanning
|
||||
|
||||
## LICENSE
|
||||
MIT
|
@ -1,93 +0,0 @@
|
||||
use std::time::Duration;
|
||||
|
||||
use crossbeam_channel::Receiver;
|
||||
use indicatif::{ProgressBar, ProgressStyle};
|
||||
|
||||
use czkawka_core::common_dir_traversal::{CheckingMethod, ProgressData, ToolType};
|
||||
|
||||
pub fn connect_progress(progress_receiver: &Receiver<ProgressData>) {
|
||||
let mut pb = ProgressBar::new(1);
|
||||
let mut latest_id = None;
|
||||
while let Ok(progress_data) = progress_receiver.recv() {
|
||||
if latest_id != Some(progress_data.current_stage) {
|
||||
pb.finish_and_clear();
|
||||
if progress_data.current_stage == 0 {
|
||||
pb = get_progress_bar_for_collect_files();
|
||||
} else if check_if_saving_cache(&progress_data) || check_if_loading_cache(&progress_data) {
|
||||
pb = get_progress_loading_saving_cache(check_if_loading_cache(&progress_data));
|
||||
} else {
|
||||
pb = get_progress_known_values(progress_data.entries_to_check, &get_progress_message(&progress_data));
|
||||
}
|
||||
latest_id = Some(progress_data.current_stage);
|
||||
}
|
||||
|
||||
pb.set_position(progress_data.entries_checked as u64);
|
||||
if progress_data.current_stage == 0 && progress_data.tool_type != ToolType::EmptyFolders {
|
||||
pb.set_message(format!("Collecting files: {}", progress_data.entries_checked));
|
||||
} else if progress_data.current_stage == 0 {
|
||||
pb.set_message(format!("Collecting folders: {}", progress_data.entries_checked));
|
||||
}
|
||||
}
|
||||
pb.finish();
|
||||
}
|
||||
|
||||
pub fn get_progress_message(progress_data: &ProgressData) -> String {
|
||||
match (progress_data.tool_type, progress_data.current_stage, progress_data.checking_method) {
|
||||
(ToolType::SameMusic, 2, CheckingMethod::AudioTags) | (ToolType::SameMusic, 5, CheckingMethod::AudioContent) => "Reading tags",
|
||||
(ToolType::SameMusic, 2, CheckingMethod::AudioContent) => "Calculating fingerprint",
|
||||
(ToolType::SameMusic, 4, CheckingMethod::AudioTags) => "Comparing tags",
|
||||
(ToolType::SameMusic, 4, CheckingMethod::AudioContent) => "Comparing fingerprint",
|
||||
|
||||
(ToolType::Duplicate, 2, CheckingMethod::Hash) => "Reading prehashes",
|
||||
(ToolType::Duplicate, 5, CheckingMethod::Hash) => "Reading hashes",
|
||||
(ToolType::SimilarImages, 1, _) => "Reading images",
|
||||
(ToolType::SimilarImages, 2, _) => "Comparing image hashes",
|
||||
(ToolType::SimilarVideos, 1, _) => "Reading similar values",
|
||||
(ToolType::BrokenFiles, 1, _) => "Checking broken files",
|
||||
(ToolType::BadExtensions, 1, _) => "Checking extensions of files",
|
||||
_ => unreachable!(),
|
||||
}
|
||||
.to_string()
|
||||
}
|
||||
|
||||
pub fn check_if_loading_cache(progress_data: &ProgressData) -> bool {
|
||||
matches!(
|
||||
(progress_data.tool_type, progress_data.current_stage),
|
||||
(ToolType::SameMusic, 1) | (ToolType::Duplicate, 1 | 4)
|
||||
)
|
||||
}
|
||||
pub fn check_if_saving_cache(progress_data: &ProgressData) -> bool {
|
||||
matches!(
|
||||
(progress_data.tool_type, progress_data.current_stage),
|
||||
(ToolType::SameMusic, 3) | (ToolType::Duplicate, 3 | 6)
|
||||
)
|
||||
}
|
||||
|
||||
pub fn get_progress_bar_for_collect_files() -> ProgressBar {
|
||||
let pb = ProgressBar::new_spinner();
|
||||
pb.enable_steady_tick(Duration::from_millis(120));
|
||||
pb.set_style(
|
||||
ProgressStyle::with_template("{msg} {spinner:.blue}")
|
||||
.unwrap()
|
||||
.tick_strings(&["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸", "▪▪▪▪▪"]),
|
||||
);
|
||||
pb
|
||||
}
|
||||
|
||||
pub fn get_progress_known_values(max_value: usize, msg: &str) -> ProgressBar {
|
||||
let pb = ProgressBar::new(max_value as u64);
|
||||
pb.set_style(ProgressStyle::with_template(&format!("{msg} [{{bar}}] {{pos}}/{{len}} ")).unwrap().progress_chars("=> "));
|
||||
pb
|
||||
}
|
||||
|
||||
pub fn get_progress_loading_saving_cache(loading: bool) -> ProgressBar {
|
||||
let msg = if loading { "Loading cache" } else { "Saving cache" };
|
||||
let pb = ProgressBar::new_spinner();
|
||||
pb.enable_steady_tick(Duration::from_millis(120));
|
||||
pb.set_style(
|
||||
ProgressStyle::with_template(&format!("{msg} {{spinner:.blue}}"))
|
||||
.unwrap()
|
||||
.tick_strings(&["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸", "▪▪▪▪▪"]),
|
||||
);
|
||||
pb
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020-2024 Rafał Mikrut
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,3 +0,0 @@
|
||||
# Czkawka Core
|
||||
|
||||
Core of Czkawka GUI/CLI and Krokiet projects.
|
@ -1,18 +0,0 @@
|
||||
fn main() {
|
||||
let rust_version = match rustc_version::version_meta() {
|
||||
Ok(meta) => {
|
||||
let rust_v = meta.semver.to_string();
|
||||
let rust_date = meta.commit_date.unwrap_or_default();
|
||||
format!("{rust_v} ({rust_date})")
|
||||
}
|
||||
Err(_) => "<unknown>".to_string(),
|
||||
};
|
||||
println!("cargo:rustc-env=RUST_VERSION_INTERNAL={rust_version}");
|
||||
|
||||
// Find if app is build with cranelift
|
||||
if let Ok(codegen) = std::env::var("CARGO_PROFILE_RELEASE_CODEGEN_UNITS") {
|
||||
if codegen == "1" {
|
||||
println!("cargo:rustc-env=USING_CRANELIFT=1");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
# Core
|
||||
core_similarity_original = الأصل
|
||||
core_similarity_very_high = عالية جدا
|
||||
core_similarity_high = مرتفع
|
||||
core_similarity_medium = متوسط
|
||||
core_similarity_small = صغير
|
||||
core_similarity_very_small = صغير جدا
|
||||
core_similarity_minimal = الحد الأدنى
|
||||
core_cannot_open_dir = لا يمكن فتح dir { $dir }، السبب { $reason }
|
||||
core_cannot_read_entry_dir = لا يمكن قراءة الإدخال في dir { $dir }، السبب { $reason }
|
||||
core_cannot_read_metadata_dir = لا يمكن قراءة البيانات الوصفية في dir { $dir }، السبب { $reason }
|
||||
core_file_not_utf8_name = الملف { $name } ليس لديه اسم UTF-8 صالح (قد لا تظهر بعض الأحرف)
|
||||
core_file_modified_before_epoch = يبدو أن الملف { $name } قد تم تعديله قبل يونكس Epoch
|
||||
core_folder_modified_before_epoch = يبدو أن المجلد { $name } قد تم تعديله قبل يونكس Epoch
|
||||
core_file_no_modification_date = غير قادر على الحصول على تاريخ التعديل من الملف { $name }، السبب { $reason }
|
||||
core_folder_no_modification_date = غير قادر على الحصول على تاريخ التعديل من المجلد { $name }، السبب { $reason }
|
||||
core_missing_no_chosen_included_directory = يجب توفير دليل واحد على الأقل
|
||||
core_directory_wildcard_no_supported = الأدلة: البطاقات البرية في المسار غير مدعومة، تجاهل { $path }
|
||||
core_directory_must_exists = الأدلة: يجب أن يكون مسار المجلد المتوفر موجودا، تجاهل { $path }
|
||||
core_directory_must_be_directory = الأدلة: المسار المقدم يجب أن يشير إلى الدليل، تجاهل { $path }
|
||||
core_included_directory_zero_valid_directories = خطأ في الدليل المضمن: لا يوجد حتى مسار واحد صحيح للإدراج المطلوب
|
||||
core_excluded_directory_pointless_slash = الأدلة: استبعاد / لا معنى له، لأنه يعني أنه لن يتم مسح أي ملفات
|
||||
core_directory_overlap = الأدلة: جميع الدلائل للبحث عن التداخل مع الدلائل المستبعدة
|
||||
core_directory_unable_to_get_device_id = الأدلة: غير قادر على الحصول على معرف الجهاز من المجلد { $path }
|
||||
core_ffmpeg_not_found = لا يمكن العثور على التثبيت الصحيح لFFmpeg
|
||||
core_ffmpeg_not_found_windows = تأكد من أن ffmpeg.exe و ffprobe.exe متاحان في PATH أو يتم وضعهما مباشرة لنفس المجلد حيث التطبيق قابل للتنفيذ
|
||||
core_ffmpeg_missing_in_snap = مقاطع فيديو مشابهة لا تعمل حاليا مع السعادة، إذا كنت تريد المساعدة في النظر - { $url }
|
||||
core_saving_to_cache = تم الحفظ في الملف { $number } إدخالات ذاكرة التخزين المؤقت
|
||||
core_loading_from_cache = تحميل من ذاكرة التخزين المؤقت { $number } إدخالات
|
@ -1,29 +0,0 @@
|
||||
# Core
|
||||
core_similarity_original = Origineel
|
||||
core_similarity_very_high = Zeer hoog
|
||||
core_similarity_high = hoog
|
||||
core_similarity_medium = Middelgroot
|
||||
core_similarity_small = Klein
|
||||
core_similarity_very_small = Zeer Klein
|
||||
core_similarity_minimal = Minimaal
|
||||
core_cannot_open_dir = Kan dir { $dir }niet openen, reden { $reason }
|
||||
core_cannot_read_entry_dir = Kan invoer niet lezen in map { $dir }, reden { $reason }
|
||||
core_cannot_read_metadata_dir = Kan metadata niet lezen in map { $dir }, reden { $reason }
|
||||
core_file_not_utf8_name = Bestand { $name } heeft geen geldige UTF-8-naam (sommige tekens kunnen niet worden getoond)
|
||||
core_file_modified_before_epoch = Het bestand { $name } lijkt aangepast te zijn voor Unix Epoch
|
||||
core_folder_modified_before_epoch = Map { $name } lijkt aangepast te zijn voor Unix Epoch
|
||||
core_file_no_modification_date = Niet in staat om de datum van bestand { $name }te krijgen, reden { $reason }
|
||||
core_folder_no_modification_date = Niet in staat om wijzigingsdatum van map { $name }te krijgen, reden { $reason }
|
||||
core_missing_no_chosen_included_directory = Ten minste één map moet worden opgegeven
|
||||
core_directory_wildcard_no_supported = Maps: Wildcards op pad worden niet ondersteund, negeer { $path }
|
||||
core_directory_must_exists = Maps: Opgegeven mappad moet bestaan, afwijzend { $path }
|
||||
core_directory_must_be_directory = Directories: Het opgegeven pad moet naar de map wijzen, { $path } wordt genegeerd
|
||||
core_included_directory_zero_valid_directories = Inclusief map FOUT: Er is niet één juist pad gevonden naar de map die vereist is
|
||||
core_excluded_directory_pointless_slash = Maps: Uitsluiten/is zinloos, omdat er geen bestanden worden gescand
|
||||
core_directory_overlap = Maps: alle mappen om overlappingen te zoeken met uitgesloten mappen
|
||||
core_directory_unable_to_get_device_id = Maps: Kan apparaat-id niet ophalen uit map { $path }
|
||||
core_ffmpeg_not_found = Kan de juiste installatie van FFmpeg niet vinden
|
||||
core_ffmpeg_not_found_windows = Zorg ervoor dat ffmpeg.exe en ffprobe.exe beschikbaar zijn in PATH of direct in dezelfde map geplaatst zijn waar de app uitvoerbaar is
|
||||
core_ffmpeg_missing_in_snap = Vergelijkbare video's werken momenteel niet met snap, als je wilt helpen kijken naar - { $url }
|
||||
core_saving_to_cache = Opgeslagen in bestand { $number } cache items
|
||||
core_loading_from_cache = Geladen uit cache { $number } items
|
@ -1,29 +0,0 @@
|
||||
# Core
|
||||
core_similarity_original = Originală
|
||||
core_similarity_very_high = Foarte Mare
|
||||
core_similarity_high = Ridicat
|
||||
core_similarity_medium = Medie
|
||||
core_similarity_small = Mică
|
||||
core_similarity_very_small = Foarte mic
|
||||
core_similarity_minimal = Minimă
|
||||
core_cannot_open_dir = Nu se poate deschide dir { $dir }, motiv { $reason }
|
||||
core_cannot_read_entry_dir = Nu se poate citi intrarea în dir { $dir }, motivul { $reason }
|
||||
core_cannot_read_metadata_dir = Metadatele nu pot fi citite în dir { $dir }, motivul { $reason }
|
||||
core_file_not_utf8_name = Fișierul { $name } nu are un nume valid UTF-8 (este posibil ca unele caractere să nu fie afișate)
|
||||
core_file_modified_before_epoch = Fișierul { $name } pare să fie modificat înainte de Epoch Unix
|
||||
core_folder_modified_before_epoch = Dosarul { $name } pare să fie modificat înainte de Epoc Unix
|
||||
core_file_no_modification_date = Imposibil de obținut data modificării din fișierul { $name }, motivul { $reason }
|
||||
core_folder_no_modification_date = Imposibil de obținut data modificării din dosarul { $name }, motivul { $reason }
|
||||
core_missing_no_chosen_included_directory = Trebuie furnizat cel puțin un director
|
||||
core_directory_wildcard_no_supported = Directoare: Wildcards pe cale nu sunt acceptate, ignorând { $path }
|
||||
core_directory_must_exists = Directoare: Calea dosarului furnizat trebuie să existe, ignorând { $path }
|
||||
core_directory_must_be_directory = Directoare: Calea specificată trebuie să indice în director, ignorând { $path }
|
||||
core_included_directory_zero_valid_directories = EROARE din Director inclusă: Nici măcar o cale corectă de inclus, care este necesară
|
||||
core_excluded_directory_pointless_slash = Directoare: Excludere / este inutilă, deoarece înseamnă că niciun fișier nu va fi scanat
|
||||
core_directory_overlap = Directoare: Toate directoarele pentru a căuta suprapuneri cu directoarele excluse
|
||||
core_directory_unable_to_get_device_id = Directoare: Imposibil de obținut ID-ul dispozitivului din folderul { $path }
|
||||
core_ffmpeg_not_found = Nu se poate găsi instalarea corectă a FFmpeg
|
||||
core_ffmpeg_not_found_windows = Asigurați-vă că ffmpeg.exe și ffprobe.exe sunt disponibile în PATH sau sunt puse direct în același folder unde este executabilă aplicația
|
||||
core_ffmpeg_missing_in_snap = Videoclipuri similare nu funcționează în prezent cu ancorare, dacă doriți să vă uitați - { $url }
|
||||
core_saving_to_cache = Intrări cache salvate în fişierul { $number }
|
||||
core_loading_from_cache = Încărcat din geocutia { $number }
|
@ -1,124 +1,88 @@
|
||||
use std::collections::HashSet;
|
||||
use std::fs::DirEntry;
|
||||
|
||||
use crate::common_messages::Messages;
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Extensions {
|
||||
allowed_extensions_hashset: HashSet<String>,
|
||||
excluded_extensions_hashset: HashSet<String>,
|
||||
file_extensions: Vec<String>,
|
||||
}
|
||||
|
||||
impl Extensions {
|
||||
pub fn new() -> Self {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
pub fn filter_extensions(mut file_extensions: String) -> (HashSet<String>, Messages) {
|
||||
/// List of allowed extensions, only files with this extensions will be checking if are duplicates
|
||||
/// After, extensions cannot contains any dot, commas etc.
|
||||
pub fn set_allowed_extensions(&mut self, mut allowed_extensions: String) -> Messages {
|
||||
let mut messages = Messages::new();
|
||||
let mut extensions_hashset = HashSet::new();
|
||||
|
||||
if file_extensions.trim().is_empty() {
|
||||
return (Default::default(), messages);
|
||||
if allowed_extensions.trim().is_empty() {
|
||||
return messages;
|
||||
}
|
||||
file_extensions = file_extensions.replace("IMAGE", "jpg,kra,gif,png,bmp,tiff,hdr,svg");
|
||||
file_extensions = file_extensions.replace("VIDEO", "mp4,flv,mkv,webm,vob,ogv,gifv,avi,mov,wmv,mpg,m4v,m4p,mpeg,3gp");
|
||||
file_extensions = file_extensions.replace("MUSIC", "mp3,flac,ogg,tta,wma,webm");
|
||||
file_extensions = file_extensions.replace("TEXT", "txt,doc,docx,odt,rtf");
|
||||
allowed_extensions = allowed_extensions.replace("IMAGE", "jpg,kra,gif,png,bmp,tiff,hdr,svg");
|
||||
allowed_extensions = allowed_extensions.replace("VIDEO", "mp4,flv,mkv,webm,vob,ogv,gifv,avi,mov,wmv,mpg,m4v,m4p,mpeg,3gp");
|
||||
allowed_extensions = allowed_extensions.replace("MUSIC", "mp3,flac,ogg,tta,wma,webm");
|
||||
allowed_extensions = allowed_extensions.replace("TEXT", "txt,doc,docx,odt,rtf");
|
||||
|
||||
let extensions: Vec<String> = file_extensions.split(',').map(str::trim).map(String::from).collect();
|
||||
let extensions: Vec<String> = allowed_extensions.split(',').map(str::trim).map(String::from).collect();
|
||||
for mut extension in extensions {
|
||||
if extension.is_empty() || extension.replace(['.', ' '], "").trim().is_empty() {
|
||||
continue;
|
||||
}
|
||||
|
||||
if extension.starts_with('.') {
|
||||
extension = extension.chars().skip(1).collect::<String>();
|
||||
if !extension.starts_with('.') {
|
||||
extension = format!(".{extension}");
|
||||
}
|
||||
|
||||
if extension.contains('.') {
|
||||
if extension[1..].contains('.') {
|
||||
messages.warnings.push(format!("{extension} is not valid extension because contains dot inside"));
|
||||
continue;
|
||||
}
|
||||
|
||||
if extension.contains(' ') {
|
||||
if extension[1..].contains(' ') {
|
||||
messages.warnings.push(format!("{extension} is not valid extension because contains empty space inside"));
|
||||
continue;
|
||||
}
|
||||
|
||||
extensions_hashset.insert(extension);
|
||||
if !self.file_extensions.contains(&extension) {
|
||||
self.file_extensions.push(extension);
|
||||
}
|
||||
}
|
||||
(extensions_hashset, messages)
|
||||
}
|
||||
|
||||
/// List of allowed extensions, only files with this extensions will be checking if are duplicates
|
||||
/// After, extensions cannot contain any dot, commas etc.
|
||||
pub fn set_allowed_extensions(&mut self, allowed_extensions: String) -> Messages {
|
||||
let (extensions, messages) = Self::filter_extensions(allowed_extensions);
|
||||
|
||||
self.allowed_extensions_hashset = extensions;
|
||||
messages
|
||||
}
|
||||
|
||||
pub fn set_excluded_extensions(&mut self, excluded_extensions: String) -> Messages {
|
||||
let (extensions, messages) = Self::filter_extensions(excluded_extensions);
|
||||
|
||||
self.excluded_extensions_hashset = extensions;
|
||||
if self.file_extensions.is_empty() {
|
||||
messages
|
||||
.messages
|
||||
.push("No valid extensions were provided, so allowing all extensions by default.".to_string());
|
||||
}
|
||||
messages
|
||||
}
|
||||
|
||||
pub fn check_if_entry_have_valid_extension(&self, entry_data: &DirEntry) -> bool {
|
||||
if self.allowed_extensions_hashset.is_empty() && self.excluded_extensions_hashset.is_empty() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Using entry_data.path().extension() is a lot of slower, even 5 times
|
||||
let file_name = entry_data.file_name();
|
||||
let Some(file_name_str) = file_name.to_str() else { return false };
|
||||
let Some(extension_idx) = file_name_str.rfind('.') else { return false };
|
||||
let extension = &file_name_str[extension_idx + 1..];
|
||||
|
||||
if !self.allowed_extensions_hashset.is_empty() {
|
||||
if extension.chars().all(|c| c.is_ascii_lowercase()) {
|
||||
self.allowed_extensions_hashset.contains(extension)
|
||||
} else {
|
||||
self.allowed_extensions_hashset.contains(&extension.to_lowercase())
|
||||
}
|
||||
} else {
|
||||
if extension.chars().all(|c| c.is_ascii_lowercase()) {
|
||||
!self.excluded_extensions_hashset.contains(extension)
|
||||
} else {
|
||||
!self.excluded_extensions_hashset.contains(&extension.to_lowercase())
|
||||
}
|
||||
pub fn matches_filename(&self, file_name: &str) -> bool {
|
||||
// assert_eq!(file_name, file_name.to_lowercase());
|
||||
if !self.file_extensions.is_empty() && !self.file_extensions.iter().any(|e| file_name.ends_with(e)) {
|
||||
return false;
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
pub fn set_any_extensions(&self) -> bool {
|
||||
!self.allowed_extensions_hashset.is_empty()
|
||||
pub fn using_custom_extensions(&self) -> bool {
|
||||
!self.file_extensions.is_empty()
|
||||
}
|
||||
|
||||
fn extend_allowed_extensions(&mut self, file_extensions: &[&str]) {
|
||||
pub fn extend_allowed_extensions(&mut self, file_extensions: &[&str]) {
|
||||
for extension in file_extensions {
|
||||
let extension_without_dot = extension.trim_start_matches('.');
|
||||
self.allowed_extensions_hashset.insert(extension_without_dot.to_string());
|
||||
assert!(extension.starts_with('.'));
|
||||
self.file_extensions.push((*extension).to_string());
|
||||
}
|
||||
}
|
||||
|
||||
// E.g. when using similar videos, user can provide extensions like "mp4,flv", but if user provide "mp4,jpg" then
|
||||
// it will be only "mp4" because "jpg" is not valid extension for videos
|
||||
fn union_allowed_extensions(&mut self, file_extensions: &[&str]) {
|
||||
let mut new_extensions = HashSet::new();
|
||||
for extension in file_extensions {
|
||||
let extension_without_dot = extension.trim_start_matches('.');
|
||||
new_extensions.insert(extension_without_dot.to_string());
|
||||
}
|
||||
}
|
||||
pub fn validate_allowed_extensions(&mut self, file_extensions: &[&str]) {
|
||||
let mut current_file_extensions = Vec::new();
|
||||
|
||||
pub fn set_and_validate_allowed_extensions(&mut self, file_extensions: &[&str]) {
|
||||
if self.allowed_extensions_hashset.is_empty() {
|
||||
self.extend_allowed_extensions(file_extensions);
|
||||
} else {
|
||||
self.union_allowed_extensions(file_extensions);
|
||||
for extension in file_extensions {
|
||||
assert!(extension.starts_with('.'));
|
||||
if self.file_extensions.contains(&(*extension).to_string()) {
|
||||
current_file_extensions.push((*extension).to_string());
|
||||
}
|
||||
}
|
||||
self.file_extensions = current_file_extensions;
|
||||
}
|
||||
}
|
||||
|
@ -1,132 +0,0 @@
|
||||
# Czkawka GUI
|
||||
|
||||
Czkawka GUI is a graphical user interface for Czkawka Core written with GTK 4.
|
||||
|
||||
![Screenshot from 2023-11-26 12-43-32](https://github.com/qarmin/czkawka/assets/41945903/722ed490-0be1-4dac-bcfc-182a4d0787dc)
|
||||
|
||||
## Requirements
|
||||
|
||||
Requirements depend on your platform.
|
||||
|
||||
Prebuilt binaries are available here - https://github.com/qarmin/czkawka/releases/
|
||||
|
||||
### Linux
|
||||
|
||||
#### Prebuild binaries
|
||||
|
||||
Ubuntu - `sudo apt install libgtk-4 libheif libraw ffmpeg -y`
|
||||
|
||||
#### Snap -
|
||||
|
||||
none - all needed libraries are bundled in
|
||||
snap [except ffmpeg](https://github.com/snapcrafters/ffmpeg/issues/73) - https://snapcraft.io/czkawka
|
||||
|
||||
#### Flatpak
|
||||
|
||||
none - all needed libraries are bundled - https://flathub.org/apps/com.github.qarmin.czkawka
|
||||
|
||||
### Mac
|
||||
|
||||
```
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
brew install gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
All needed libraries should be bundled in zip (except ffmpeg which you need download and unpack to location
|
||||
with `czkawka_gui.exe` - https://ffmpeg.org/download.html#build-windows)
|
||||
|
||||
You can also install the app via msys2 (webp and heif should work here) - https://www.msys2.org/#installation (czkawka
|
||||
package - https://packages.msys2.org/base/mingw-w64-czkawka)
|
||||
|
||||
```
|
||||
pacman -S mingw-w64-x86_64-czkawka-gui
|
||||
```
|
||||
|
||||
and you can create a shortcut to `C:\msys64\mingw64\bin\czkawka_gui.exe`
|
||||
|
||||
## Compilation
|
||||
|
||||
Compiling the gui is harder than compiling cli or core, because it uses gtk4 which is written in C and also requires a
|
||||
lot build and runtime dependencies.
|
||||
|
||||
### Requirements
|
||||
|
||||
| Program | Minimal version |
|
||||
|:-------:|:---------------:|
|
||||
| Rust | 1.75.0 |
|
||||
| GTK | 4.6 |
|
||||
|
||||
### Linux (Ubuntu, but on other OS should work similar)
|
||||
|
||||
```shell
|
||||
sudo apt install libgtk-4-dev libheif-dev libraw-dev -y
|
||||
cargo run --release --bin czkawka_gui
|
||||
# Or with support for heif and libraw
|
||||
cargo run --release --bin czkawka_gui --features "heif,libraw"
|
||||
```
|
||||
|
||||
### Mac
|
||||
|
||||
```shell
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw pkg-config
|
||||
rustup-init
|
||||
cargo run --release --bin czkawka_gui
|
||||
# Or with support for heif and libraw
|
||||
cargo run --release --bin czkawka_gui --features "heif,libraw"
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Currently, there is are no instructions on how to compile the app on Windows natively.</br>
|
||||
You can check for CI for instructions how to cross-compile the app from linux to windows (uses prebuilt docker
|
||||
image) - [CI Instructions](../.github/workflows/windows.yml)</br>
|
||||
There exists a mingw recipe which you can try to convert for your
|
||||
purposes - https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-czkawka/PKGBUILD
|
||||
|
||||
## Limitations
|
||||
|
||||
Not all available features and/or components implemented here, this is the list of limitations:
|
||||
|
||||
- Snap versions does not allow to use the similar videos feature
|
||||
- Windows version does not support heif and webp files with prebuilt binaries
|
||||
- Prebuilt binaries for mac arm do not exist
|
||||
- On Windows, text may appear very small on high resolution displays, a solution is to manually change DPI scaling for
|
||||
this app, see :
|
||||
- recommended
|
||||
fix: [#787#issuecomment-1292253437](https://github.com/qarmin/czkawka/issues/787#issuecomment-1292253437) (modify
|
||||
gtk.css),
|
||||
- or this
|
||||
workaround: [#867#issuecomment-1416761308](https://github.com/qarmin/czkawka/issues/863#issuecomment-1416761308) (
|
||||
modify windows DPI settings for this app (this works too but the text is a bit blurry)).
|
||||
|
||||
## License
|
||||
|
||||
Code is distributed under MIT license.
|
||||
|
||||
Icon was created by [jannuary](https://github.com/jannuary) and licensed CC-BY-4.0.
|
||||
|
||||
Windows dark theme is used from project [WhiteSur](https://github.com/slypy/whitesur-gtk4-theme) with MIT license.
|
||||
|
||||
Some icons were taken from [ReShot](https://www.reshot.com) site and are licensed under Reshot Free License.
|
||||
|
||||
The program is completely free to use.
|
||||
|
||||
"Gratis to uczciwa cena" - "Free is a fair price"
|
||||
|
||||
## Name
|
||||
|
||||
Czkawka is a Polish word which means _hiccup_.
|
||||
|
||||
I chose this name because I wanted to hear people speaking other languages pronounce it, so feel free to spell it the
|
||||
way you want.
|
||||
|
||||
This name is not as bad as it seems, because I was also thinking about using words like _żółć_, _gżegżółka_ or _żołądź_,
|
||||
but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the
|
||||
project.
|
||||
|
||||
At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared
|
||||
myself
|
||||
for a possible change of the name of the program, and the opinions were extremely mixed.
|
@ -1,500 +0,0 @@
|
||||
# Window titles
|
||||
window_settings_title = Instellingen
|
||||
window_main_title = Czkawka (Hiccup)
|
||||
window_progress_title = Scannen
|
||||
window_compare_images = Vergelijk afbeeldingen
|
||||
# General
|
||||
general_ok_button = OK
|
||||
general_close_button = Afsluiten
|
||||
# Main window
|
||||
music_title_checkbox = Aanspreektitel
|
||||
music_artist_checkbox = Kunstenaar
|
||||
music_year_checkbox = jaar
|
||||
music_bitrate_checkbox = Bitsnelheid
|
||||
music_genre_checkbox = genre
|
||||
music_length_checkbox = longueur
|
||||
music_comparison_checkbox = Geschatte vergelijking
|
||||
music_checking_by_tags = Labels
|
||||
music_checking_by_content = Inhoud
|
||||
same_music_seconds_label = Minimale fragment tweede duur
|
||||
same_music_similarity_label = Maximum verschil
|
||||
same_music_tooltip =
|
||||
Zoeken naar vergelijkbare muziekbestanden door de inhoud ervan kan worden geconfigureerd door instelling:
|
||||
|
||||
- De minimale fragmenttijd waarna muziekbestanden kunnen worden geïdentificeerd als vergelijkbaar
|
||||
- Het maximale verschil tussen twee geteste fragmenten
|
||||
|
||||
De sleutel tot goede resultaten is om verstandige combinaties van deze parameters te vinden, voor opgegeven.
|
||||
|
||||
Instelling van de minimale tijd op 5 en het maximale verschil op 1.0, zal zoeken naar bijna identieke fragmenten in de bestanden.
|
||||
Een tijd van 20 en een maximaal verschil van 6,0 werkt daarentegen goed voor het vinden van remixes/live versies, enz.
|
||||
|
||||
Standaard wordt elk muziekbestand met elkaar vergeleken en dit kan veel tijd in beslag nemen bij het testen van veel bestanden, dus is het meestal beter om referentie-mappen te gebruiken en aan te geven welke bestanden met elkaar moeten worden vergeleken (met dezelfde hoeveelheid bestanden, Het vergelijken van vingerafdrukken is sneller dan zonder referentiemateriaal).
|
||||
music_comparison_checkbox_tooltip =
|
||||
Het zoekt naar vergelijkbare muziekbestanden met behulp van AI, die machine-leren gebruikt om haakjes uit een zin te verwijderen. Bijvoorbeeld met deze optie ingeschakeld de bestanden in kwestie zullen als duplicaten worden beschouwd:
|
||||
|
||||
SØ wieľdzizive b --- S000000wie.pldzizľb (Remix Lato 2021)
|
||||
duplicate_case_sensitive_name = Kist gevoelig
|
||||
duplicate_case_sensitive_name_tooltip =
|
||||
Wanneer ingeschakeld, groep alleen records wanneer ze precies dezelfde naam hebben, b.v. Zit ołd <-> ZØ ołd
|
||||
|
||||
Uitschakelen van een dergelijke optie zal namen groeperen zonder te controleren of elke letter hetzelfde formaat heeft, bijv. zghaoŁD <-> Zit ołd
|
||||
duplicate_mode_size_name_combo_box = Grootte en naam
|
||||
duplicate_mode_name_combo_box = naam
|
||||
duplicate_mode_size_combo_box = Grootte
|
||||
duplicate_mode_hash_combo_box = Toegangssleutel
|
||||
duplicate_hash_type_tooltip =
|
||||
Czkawka biedt 3 soorten hashes:
|
||||
|
||||
Blake3 - cryptografische hash-functie. Dit is de standaard omdat het erg snel is.
|
||||
|
||||
CRC32 - eenvoudige hashfunctie. Dit zou sneller moeten zijn dan Blake3, maar kan zeer zelden een botsing veroorzaken.
|
||||
|
||||
XXH3 - erg vergelijkbaar in prestaties en hashkwaliteit naar Blake3 (maar niet-cryptografie). Dergelijke modi kunnen dus eenvoudig worden verwisseld.
|
||||
duplicate_check_method_tooltip =
|
||||
Op dit moment biedt Czkawka drie soorten methode aan om duplicaten te vinden door:
|
||||
|
||||
Naam - Gevonden bestanden met dezelfde naam.
|
||||
|
||||
Grootte - Gevonden bestanden die dezelfde grootte hebben.
|
||||
|
||||
Hash - Gevonden bestanden die dezelfde inhoud hebben. Deze modus hashet het bestand en vergelijkt deze hash later om duplicaten te vinden. Deze modus is de veiligste manier om duplicaten te vinden. App gebruikt zwaar cache, dus de tweede en verdere scans van dezelfde gegevens zou veel sneller moeten zijn dan de eerste.
|
||||
image_hash_size_tooltip =
|
||||
Elke gecontroleerde afbeelding produceert een speciale hash die met elkaar kan worden vergeleken en een klein verschil tussen hen betekent dat deze afbeeldingen vergelijkbaar zijn.
|
||||
|
||||
8 hash size is vrij goed om afbeeldingen te vinden die maar een beetje lijken op origineel. Met een grotere set afbeeldingen (>1000) levert dit een grote hoeveelheid valse positieven op. Dus ik raad in dit geval aan een grotere hashgrootte te gebruiken.
|
||||
|
||||
16 is de standaard hash-afmeting, wat een heel goed compromis is tussen het vinden van zelfs een beetje gelijksoortige afbeeldingen en het hebben van slechts een klein aantal hash-botsingen.
|
||||
|
||||
32 en 64 hashes vinden slechts zeer gelijksoortige afbeeldingen, maar zouden bijna geen valse positieve motieven moeten hebben (behalve sommige afbeeldingen met alpha kanaal).
|
||||
image_resize_filter_tooltip =
|
||||
Om hash van de afbeelding te berekenen, moet de bibliotheek deze eerst grootschalen.
|
||||
|
||||
Afhankelijk van het gekozen algoritme, zal de uiteindelijke afbeelding die gebruikt wordt om hash te berekenen er een beetje anders uitzien.
|
||||
|
||||
Het snelste algoritme te gebruiken, maar ook het algoritme dat de slechtste resultaten geeft, is het dichtstbijst. Het is standaard ingeschakeld, want met 16x16 hash grootte is het niet echt zichtbaar.
|
||||
|
||||
met 8x8 hash grootte is het raadzaam om een ander algoritme te gebruiken dan Nearest, om betere groepen afbeeldingen te hebben.
|
||||
image_hash_alg_tooltip =
|
||||
Gebruikers kunnen kiezen uit een van de vele algoritmes om de hash te berekenen.
|
||||
|
||||
Elk van deze punten heeft sterke en zwakke punten en zal soms betere en soms slechtere resultaten opleveren voor verschillende afbeeldingen.
|
||||
|
||||
Dus om het beste voor u te bepalen, is handmatige test vereist.
|
||||
big_files_mode_combobox_tooltip = Maakt het mogelijk om naar kleinste/grootste bestanden te zoeken
|
||||
big_files_mode_label = Gecontroleerde bestanden
|
||||
big_files_mode_smallest_combo_box = De Kleinste
|
||||
big_files_mode_biggest_combo_box = De Grootste
|
||||
main_notebook_duplicates = Dupliceer Bestanden
|
||||
main_notebook_empty_directories = Lege mappen
|
||||
main_notebook_big_files = Grote bestanden
|
||||
main_notebook_empty_files = Lege bestanden
|
||||
main_notebook_temporary = Tijdelijke bestanden
|
||||
main_notebook_similar_images = Vergelijkbare afbeeldingen
|
||||
main_notebook_similar_videos = Soortgelijke video's
|
||||
main_notebook_same_music = Muziek duplicaten
|
||||
main_notebook_symlinks = Ongeldige Symlinks
|
||||
main_notebook_broken_files = Kapotte Bestanden
|
||||
main_notebook_bad_extensions = Slechte extensies
|
||||
main_tree_view_column_file_name = File Name
|
||||
main_tree_view_column_folder_name = Map Naam
|
||||
main_tree_view_column_path = Pad
|
||||
main_tree_view_column_modification = Wijziging datum
|
||||
main_tree_view_column_size = Grootte
|
||||
main_tree_view_column_similarity = Vergelijkbaarheid
|
||||
main_tree_view_column_dimensions = Mål
|
||||
main_tree_view_column_title = Aanspreektitel
|
||||
main_tree_view_column_artist = Kunstenaar
|
||||
main_tree_view_column_year = jaar
|
||||
main_tree_view_column_bitrate = Bitsnelheid
|
||||
main_tree_view_column_length = longueur
|
||||
main_tree_view_column_genre = genre
|
||||
main_tree_view_column_symlink_file_name = Symlink bestandsnaam
|
||||
main_tree_view_column_symlink_folder = Symlink map
|
||||
main_tree_view_column_destination_path = Bestemming pad
|
||||
main_tree_view_column_type_of_error = Type fout
|
||||
main_tree_view_column_current_extension = Huidige extensie
|
||||
main_tree_view_column_proper_extensions = Proper Extensie
|
||||
main_label_check_method = Controleer methode
|
||||
main_label_hash_type = Soort hash
|
||||
main_label_hash_size = Hash grootte
|
||||
main_label_size_bytes = Grootte (bytes)
|
||||
main_label_min_size = Min.
|
||||
main_label_max_size = Max.
|
||||
main_label_shown_files = Aantal getoonde bestanden
|
||||
main_label_resize_algorithm = Algoritme aanpassen
|
||||
main_label_similarity = Similarity{ " " }
|
||||
main_check_box_broken_files_audio = Geluid
|
||||
main_check_box_broken_files_pdf = PDF
|
||||
main_check_box_broken_files_archive = Archief
|
||||
main_check_box_broken_files_image = Afbeelding
|
||||
check_button_general_same_size = Negeer dezelfde grootte
|
||||
check_button_general_same_size_tooltip = Bestanden met identieke grootte in resultaten negeren - meestal zijn deze 1:1 duplicaten
|
||||
main_label_size_bytes_tooltip = Grootte van bestanden die zullen worden gebruikt in scan
|
||||
# Upper window
|
||||
upper_tree_view_included_folder_column_title = Mappen om te zoeken
|
||||
upper_tree_view_included_reference_column_title = Referentie Mappen
|
||||
upper_recursive_button = Recursief
|
||||
upper_recursive_button_tooltip = Indien geselecteerd, zoek ook naar bestanden die niet direct onder de gekozen mappen worden geplaatst.
|
||||
upper_manual_add_included_button = Handmatig toevoegen
|
||||
upper_add_included_button = Toevoegen
|
||||
upper_remove_included_button = Verwijderen
|
||||
upper_manual_add_excluded_button = Handmatig toevoegen
|
||||
upper_add_excluded_button = Toevoegen
|
||||
upper_remove_excluded_button = Verwijderen
|
||||
upper_manual_add_included_button_tooltip =
|
||||
Voeg mapnaam toe om met de hand te zoeken.
|
||||
|
||||
Om meerdere paden tegelijk toe te voegen, scheiden ze met ;
|
||||
|
||||
/home/roman;/home/rozkaz zal twee mappen / home/roman en /home/rozkaz toevoegen
|
||||
upper_add_included_button_tooltip = Voeg nieuwe map toe om te zoeken.
|
||||
upper_remove_included_button_tooltip = Map verwijderen uit zoekopdracht.
|
||||
upper_manual_add_excluded_button_tooltip =
|
||||
Voeg uitgesloten mapnaam met de hand toe.
|
||||
|
||||
Om meerdere paden tegelijk toe te voegen, scheid ze met
|
||||
|
||||
/home/roman;/home/krokiet zal twee mappen / home/roman en /home/keokiet toevoegen
|
||||
upper_add_excluded_button_tooltip = Voeg map toe om uitgesloten te worden in zoekopdracht.
|
||||
upper_remove_excluded_button_tooltip = Verwijder map van uitgesloten.
|
||||
upper_notebook_items_configuration = Artikelen configuratie
|
||||
upper_notebook_excluded_directories = Uitgesloten Mappen
|
||||
upper_notebook_included_directories = Inbegrepen Mappen
|
||||
upper_allowed_extensions_tooltip =
|
||||
Toegestane extensies moeten door komma's gescheiden worden (standaard zijn alle beschikbaar).
|
||||
|
||||
De volgende macro's die meerdere extensies in één keer toevoegen, zijn ook beschikbaar: IMAGE, VIDEO, MUSIC, TEXT.
|
||||
|
||||
Gebruiksgebruik voorbeeld ".exe, IMAGE, VIDEO, .rar, 7z" - dit betekent dat afbeeldingen (e. . jpg, png), video's (bijv. avi, mp4), exe, rr en 7z bestanden worden gescand.
|
||||
upper_excluded_extensions_tooltip =
|
||||
Lijst van uitgeschakelde bestanden die genegeerd zullen worden in scan.
|
||||
|
||||
Wanneer gebruik wordt gemaakt van toegestane en uitgeschakelde extensies, heeft deze hogere prioriteit, dus het bestand zal niet worden gecontroleerd.
|
||||
upper_excluded_items_tooltip =
|
||||
Uitgesloten items moeten * jokertekens bevatten en moeten gescheiden worden door komma's.
|
||||
Dit is langzamer dan uitgesloten mappen, dus gebruik het zorgvuldig.
|
||||
upper_excluded_items = Uitgesloten artikelen:
|
||||
upper_allowed_extensions = Toegestane extensies:
|
||||
upper_excluded_extensions = Uitgeschakelde extensies:
|
||||
# Popovers
|
||||
popover_select_all = Alles selecteren
|
||||
popover_unselect_all = Selectie ongedaan maken
|
||||
popover_reverse = Omgekeerde selectie
|
||||
popover_select_all_except_oldest = Alles selecteren behalve oudste
|
||||
popover_select_all_except_newest = Selecteer alles behalve nieuwste
|
||||
popover_select_one_oldest = Selecteer één oudste
|
||||
popover_select_one_newest = Selecteer een nieuwste
|
||||
popover_select_custom = Selecteer aangepaste
|
||||
popover_unselect_custom = Aangepaste deselecteer ongedaan maken
|
||||
popover_select_all_images_except_biggest = Alles selecteren behalve de grootste
|
||||
popover_select_all_images_except_smallest = Selecteer alles behalve de kleinste
|
||||
popover_custom_path_check_button_entry_tooltip =
|
||||
Records per pad selecteren.
|
||||
|
||||
Voorbeeld gebruik:
|
||||
/home/pimpek/rzecz.txt kan worden gevonden met /home/pim*
|
||||
popover_custom_name_check_button_entry_tooltip =
|
||||
Records selecteren op bestandnamen.
|
||||
|
||||
Voorbeeld gebruik:
|
||||
/usr/ping/pong.txt kan worden gevonden met *ong*
|
||||
popover_custom_regex_check_button_entry_tooltip =
|
||||
Select records by specified Regex.
|
||||
|
||||
In this mode is searched text Path with Name.
|
||||
|
||||
Voorbeeld use usage:
|
||||
/usr/bin/ziemniak. xt kan gevonden worden met /ziem[a-z]+
|
||||
|
||||
Dit gebruikt de standaard Rust regex implementatie. Je kunt hier meer over lezen: https://docs.rs/regex.
|
||||
popover_custom_case_sensitive_check_button_tooltip =
|
||||
Maakt hoofdlettergevoelige detectie mogelijk.
|
||||
|
||||
Wanneer uitgeschakeld /home/* vindt zowel /HoMe/roman en /home/roman.
|
||||
popover_custom_not_all_check_button_tooltip =
|
||||
Voorkomt dat alle records in de groep worden geselecteerd.
|
||||
|
||||
Dit is standaard ingeschakeld, omdat in de meeste situaties u wilt niet zowel origineel als duplicaten verwijderen, maar ten minste één bestand achterlaten.
|
||||
|
||||
WAARSCHUWING: Deze instelling werkt niet als je al handmatig alle resultaten hebt geselecteerd in een groep.
|
||||
popover_custom_regex_path_label = Pad
|
||||
popover_custom_regex_name_label = naam
|
||||
popover_custom_regex_regex_label = Regex pad + naam
|
||||
popover_custom_case_sensitive_check_button = Hoofdletter gevoelig
|
||||
popover_custom_all_in_group_label = Niet alle records in groep selecteren
|
||||
popover_custom_mode_unselect = Aangepaste deselecteren
|
||||
popover_custom_mode_select = Selecteer aangepast
|
||||
popover_sort_file_name = Bestandsnaam is vereist
|
||||
popover_sort_folder_name = Folder Name
|
||||
popover_sort_full_name = Volledige naam
|
||||
popover_sort_size = Grootte
|
||||
popover_sort_selection = Selectie
|
||||
popover_invalid_regex = Regex is ongeldig
|
||||
popover_valid_regex = Regex is geldig
|
||||
# Bottom buttons
|
||||
bottom_search_button = Zoeken
|
||||
bottom_select_button = Selecteren
|
||||
bottom_delete_button = Verwijderen
|
||||
bottom_save_button = Opslaan
|
||||
bottom_symlink_button = Symlink
|
||||
bottom_hardlink_button = Hardlink
|
||||
bottom_move_button = Verplaatsen
|
||||
bottom_sort_button = Sorteren
|
||||
bottom_search_button_tooltip = Zoeken starten
|
||||
bottom_select_button_tooltip = Selecteer records. Alleen geselecteerde bestanden/mappen kunnen later worden verwerkt.
|
||||
bottom_delete_button_tooltip = Verwijder geselecteerde bestanden/mappen.
|
||||
bottom_save_button_tooltip = Gegevens opslaan van zoekopdracht naar bestand
|
||||
bottom_symlink_button_tooltip =
|
||||
Maak symbolische links.
|
||||
Werkt alleen wanneer ten minste twee resultaten in een groep zijn geselecteerd.
|
||||
De eerste is ongewijzigd en de tweede is symgekoppeld naar eerst.
|
||||
bottom_hardlink_button_tooltip =
|
||||
Maak hardlinks.
|
||||
Werkt alleen wanneer ten minste twee resultaten in een groep worden geselecteerd.
|
||||
De eerste is ongewijzigd en de tweede keer en later zijn vastgekoppeld aan eerst.
|
||||
bottom_hardlink_button_not_available_tooltip =
|
||||
Maak hardlinks.
|
||||
Knop is uitgeschakeld, omdat hardlinks niet kunnen worden gemaakt.
|
||||
Hardlinks werkt alleen met beheerdersrechten op Windows, dus zorg ervoor dat je de app als administrator gebruikt.
|
||||
Als de app al werkt met dergelijke privileges controle op gelijksoortige issues op Github.
|
||||
bottom_move_button_tooltip =
|
||||
Verplaatst bestanden naar de gekozen map.
|
||||
Het kopieert alle bestanden naar de map zonder de mapstructuur te bewaren.
|
||||
Wanneer twee bestanden met dezelfde naam naar de map worden verplaatst, zal de tweede mislukt en de fout worden weergegeven.
|
||||
bottom_sort_button_tooltip = Sorteert bestanden/mappen op de geselecteerde methode.
|
||||
bottom_show_errors_tooltip = Onderste tekstvenster tonen/verbergen
|
||||
bottom_show_upper_notebook_tooltip = Toon/Verberg bovenste notitieboekpaneel.
|
||||
# Progress Window
|
||||
progress_stop_button = Stoppen
|
||||
progress_stop_additional_message = Stop aangevraagd
|
||||
# About Window
|
||||
about_repository_button_tooltip = Link naar de repository pagina met broncode.
|
||||
about_donation_button_tooltip = Link naar donatie pagina.
|
||||
about_instruction_button_tooltip = Link naar instructiepagina.
|
||||
about_translation_button_tooltip = Link naar de Crowdin pagina met appvertalingen. Officieel worden Pools en Engels ondersteund.
|
||||
about_repository_button = Bewaarplaats
|
||||
about_donation_button = Donatie
|
||||
about_instruction_button = Instructie
|
||||
about_translation_button = Vertaling
|
||||
# Header
|
||||
header_setting_button_tooltip = Opent instellingen dialoogvenster.
|
||||
header_about_button_tooltip = Opent dialoogvenster met info over app.
|
||||
|
||||
# Settings
|
||||
|
||||
|
||||
## General
|
||||
|
||||
settings_number_of_threads = Aantal gebruikte threads
|
||||
settings_number_of_threads_tooltip = Aantal gebruikte threads, 0 betekent dat alle beschikbare threads zullen worden gebruikt.
|
||||
settings_label_restart = U moet de app herstarten om de instellingen toe te passen!
|
||||
settings_ignore_other_filesystems = Negeer andere bestandssystemen (alleen Linux)
|
||||
settings_ignore_other_filesystems_tooltip =
|
||||
negeert bestanden die niet in hetzelfde bestandssysteem zitten als gezochte mappen.
|
||||
|
||||
Werkt dezelfde als -xdev optie in het zoekcommando voor Linux
|
||||
settings_save_at_exit_button_tooltip = Configuratie opslaan in bestand bij het sluiten van de app.
|
||||
settings_load_at_start_button_tooltip =
|
||||
Laad de configuratie van het bestand bij het openen van de app.
|
||||
|
||||
Indien niet ingeschakeld, worden standaard instellingen gebruikt.
|
||||
settings_confirm_deletion_button_tooltip = Bevestigingsvenster tonen bij het klikken op de knop verwijderen.
|
||||
settings_confirm_link_button_tooltip = Toon bevestigingsvenster bij het klikken op de hard/symlink knop.
|
||||
settings_confirm_group_deletion_button_tooltip = Waarschuwingsvenster weergeven wanneer geprobeerd wordt om alle records uit de groep te verwijderen.
|
||||
settings_show_text_view_button_tooltip = Tekstpaneel aan de onderkant van de gebruikersinterface weergeven.
|
||||
settings_use_cache_button_tooltip = Gebruik bestandscache.
|
||||
settings_save_also_as_json_button_tooltip = Cache opslaan in (menselijk leesbaar) JSON formaat. Het is mogelijk om de inhoud te wijzigen. Cache van dit bestand wordt automatisch gelezen door de app als er een binaire cache (met bin extensie) ontbreekt.
|
||||
settings_use_trash_button_tooltip = Verplaatst bestanden naar prullenbak in plaats daarvan ze permanent te verwijderen.
|
||||
settings_language_label_tooltip = Taal voor de gebruikersinterface.
|
||||
settings_save_at_exit_button = Configuratie opslaan bij het sluiten van app
|
||||
settings_load_at_start_button = Laad configuratie bij het openen van app
|
||||
settings_confirm_deletion_button = Toon bevestigingsdialoog bij het verwijderen van bestanden
|
||||
settings_confirm_link_button = Melding bevestigen bij hard/symlinks van bestanden
|
||||
settings_confirm_group_deletion_button = Toon het bevestigingsvenster bij het verwijderen van alle bestanden in de groep
|
||||
settings_show_text_view_button = Toon onderaan tekstpaneel
|
||||
settings_use_cache_button = Gebruik cache
|
||||
settings_save_also_as_json_button = Sla ook de cache op als JSON-bestand
|
||||
settings_use_trash_button = Verwijderde bestanden verplaatsen naar prullenbak
|
||||
settings_language_label = Taal
|
||||
settings_multiple_delete_outdated_cache_checkbutton = Verouderde cache vermeldingen automatisch verwijderen
|
||||
settings_multiple_delete_outdated_cache_checkbutton_tooltip =
|
||||
Verwijder verouderde cacheresultaten die verwijzen naar niet-bestaande bestanden.
|
||||
|
||||
Indien ingeschakeld, zorgt de app ervoor dat bij het laden van records, dat alle records naar geldige bestanden verwijzen (gebroken bestanden worden genegeerd).
|
||||
|
||||
Dit uitschakelen zal helpen bij het scannen van bestanden op externe schijven, dus cache-items over deze zullen niet worden gewist in de volgende scan.
|
||||
|
||||
In het geval van honderdduizenden records in de cache, het wordt aangeraden om dit in te schakelen, dit zal de cache laden/opslaan aan het starten/einde van de scan versnellen.
|
||||
settings_notebook_general = Algemeen
|
||||
settings_notebook_duplicates = Duplicaten
|
||||
settings_notebook_images = Vergelijkbare afbeeldingen
|
||||
settings_notebook_videos = Gelijkaardige Video
|
||||
|
||||
## Multiple - settings used in multiple tabs
|
||||
|
||||
settings_multiple_image_preview_checkbutton_tooltip = Toont voorbeeld aan rechterkant (bij het selecteren van een afbeeldingsbestand).
|
||||
settings_multiple_image_preview_checkbutton = Toon voorvertoning afbeelding
|
||||
settings_multiple_clear_cache_button_tooltip =
|
||||
Handmatig de cache van verouderde items wissen.
|
||||
Dit mag alleen worden gebruikt als automatisch wissen is uitgeschakeld.
|
||||
settings_multiple_clear_cache_button = Verwijder verouderde resultaten uit de cache.
|
||||
|
||||
## Duplicates
|
||||
|
||||
settings_duplicates_hide_hard_link_button_tooltip =
|
||||
Verbergt alle bestanden behalve één, als alle naar dezelfde gegevens verwijst (zijn hardlinked).
|
||||
|
||||
Voorbeeld: In het geval waar er (op schijf) zeven bestanden zijn die zijn gekoppeld aan specifieke data en één ander bestand met dezelfde gegevens, maar een andere inode, dan in dubbele zoeker, slechts één uniek bestand en één bestand van de hardgelinkte bestanden zullen worden weergegeven.
|
||||
settings_duplicates_minimal_size_entry_tooltip =
|
||||
Stel de minimale bestandsgrootte in die gecached zal worden.
|
||||
|
||||
kiezen van een kleinere waarde zal meer records genereren. Dit zal het zoeken versnellen, maar de cache aan het laden/opslaan.
|
||||
settings_duplicates_prehash_checkbutton_tooltip =
|
||||
Hiermee kan het cachen van prehash (een hash berekend van een klein deel van het bestand) eerder verwijderen van niet-gedupliceerde resultaten.
|
||||
|
||||
Het is standaard uitgeschakeld omdat het in sommige situaties vertraging kan veroorzaken.
|
||||
|
||||
Het is sterk aanbevolen om het te gebruiken bij het scannen van honderdduizenden of miljoen bestanden, omdat het zoeken meerdere keren kan versnellen.
|
||||
settings_duplicates_prehash_minimal_entry_tooltip = Minimale grootte van gecachete invoer.
|
||||
settings_duplicates_hide_hard_link_button = Verberg harde links (alleen Linux en macOS)
|
||||
settings_duplicates_prehash_checkbutton = Gebruik prehash cache
|
||||
settings_duplicates_minimal_size_cache_label = Minimale bestandsgrootte (in bytes) opgeslagen in de cache
|
||||
settings_duplicates_minimal_size_cache_prehash_label = Minimale grootte van bestanden (in bytes) opgeslagen naar prehash cache
|
||||
|
||||
## Saving/Loading settings
|
||||
|
||||
settings_saving_button_tooltip = De huidige instellingen configuratie opslaan in bestand.
|
||||
settings_loading_button_tooltip = Laad de instellingen uit het bestand en vervang de huidige configuratie.
|
||||
settings_reset_button_tooltip = De huidige configuratie terugzetten naar de standaard.
|
||||
settings_saving_button = Configuratie opslaan
|
||||
settings_loading_button = Laad configuratie
|
||||
settings_reset_button = Reset configuratie
|
||||
|
||||
## Opening cache/config folders
|
||||
|
||||
settings_folder_cache_open_tooltip =
|
||||
Opent de map waar de cache txt bestanden zijn opgeslagen.
|
||||
|
||||
Het wijzigen van de cachebestanden kan ervoor zorgen dat ongeldige resultaten worden getoond. Het wijzigen van een pad kan echter tijd besparen bij het verplaatsen van een grote hoeveelheid bestanden naar een andere locatie.
|
||||
|
||||
U kunt deze bestanden tussen computers kopiëren om tijd te besparen bij het scannen van bestanden (van natuurlijk als ze een vergelijkbare directory structuur hebben).
|
||||
|
||||
In geval van problemen met de cache kunnen deze bestanden worden verwijderd. De app zal ze automatisch opnieuw genereren.
|
||||
settings_folder_settings_open_tooltip =
|
||||
Opent de map waar de Czkawka config is opgeslagen.
|
||||
|
||||
WAARSCHUWING: Handmatig wijzigen van de configuratie kan uw workflow verbreken.
|
||||
settings_folder_cache_open = Open cachemap
|
||||
settings_folder_settings_open = Instellingenmap openen
|
||||
# Compute results
|
||||
compute_stopped_by_user = Zoeken is gestopt door gebruiker
|
||||
compute_found_duplicates_hash_size = Gevonden { $number_files } duplicaten in { $number_groups } groepen die { $size } namen
|
||||
compute_found_duplicates_name = Gevonden { $number_files } duplicaten in { $number_groups } groepen
|
||||
compute_found_empty_folders = Gevonden { $number_files } lege mappen
|
||||
compute_found_empty_files = Gevonden { $number_files } lege bestanden
|
||||
compute_found_big_files = Gevonden { $number_files } grote bestanden
|
||||
compute_found_temporary_files = Gevonden { $number_files } tijdelijke bestanden
|
||||
compute_found_images = Gevonden { $number_files } soortgelijke afbeeldingen in { $number_groups } groepen
|
||||
compute_found_videos = Gevonden { $number_files } vergelijkbare video's in { $number_groups } groepen
|
||||
compute_found_music = Gevonden { $number_files } vergelijkbare muziekbestanden in { $number_groups } groepen
|
||||
compute_found_invalid_symlinks = Gevonden { $number_files } ongeldige symlinks
|
||||
compute_found_broken_files = Gevonden { $number_files } gebroken bestanden
|
||||
compute_found_bad_extensions = { $number_files } bestanden met ongeldige extensies gevonden
|
||||
# Progress window
|
||||
progress_scanning_general_file = Scannen van { $file_number } bestand
|
||||
progress_scanning_extension_of_files = Extensie van { $file_checked }/{ $all_files } bestand controleren
|
||||
progress_scanning_broken_files = Controleren { $file_checked }/{ $all_files } bestand
|
||||
progress_scanning_video = Hashing van { $file_checked }/{ $all_files } video
|
||||
progress_scanning_image = Hashing van { $file_checked }/{ $all_files } afbeelding
|
||||
progress_comparing_image_hashes = Vergelijk { $file_checked }/{ $all_files } afbeelding hash
|
||||
progress_scanning_music_tags_end = Tags vergelijken van { $file_checked }/{ $all_files } muziekbestand
|
||||
progress_scanning_music_tags = Leestags van { $file_checked }/{ $all_files } muziekbestand
|
||||
progress_scanning_music_content_end = Vingerafdruk van { $file_checked }/{ $all_files } muziekbestand vergelijken
|
||||
progress_scanning_music_content = Vingerafdruk berekenen van { $file_checked }/{ $all_files } muziekbestand
|
||||
progress_scanning_empty_folders = Scannen { $folder_number } map
|
||||
progress_scanning_size = Scannen grootte van { $file_number } bestand
|
||||
progress_scanning_size_name = Scannen van naam en grootte van { $file_number } bestand
|
||||
progress_scanning_name = Scannen van naam { $file_number } bestand
|
||||
progress_analyzed_partial_hash = Geanalyseerde gedeeltelijke hash van { $file_checked }/{ $all_files } bestanden
|
||||
progress_analyzed_full_hash = Volledige hash van { $file_checked }/{ $all_files } bestanden geanalyseerd
|
||||
progress_prehash_cache_loading = Prehash cache laden
|
||||
progress_prehash_cache_saving = Opslaan van prehash cache
|
||||
progress_hash_cache_loading = hash-cache laden
|
||||
progress_hash_cache_saving = hash cache opslaan
|
||||
progress_cache_loading = Cache laden
|
||||
progress_cache_saving = Cache opslaan
|
||||
progress_current_stage = Current Stage:{ " " }
|
||||
progress_all_stages = All Stages:{ " " }
|
||||
# Saving loading
|
||||
saving_loading_saving_success = Configuratie opgeslagen in bestand { $name }.
|
||||
saving_loading_saving_failure = Kan configuratiegegevens niet opslaan in bestand { $name }.
|
||||
saving_loading_reset_configuration = Huidige configuratie is gewist.
|
||||
saving_loading_loading_success = Goed geladen app configuratie.
|
||||
saving_loading_invalid_string = Voor sleutel "{ $key }" vond een ongeldig resultaat - "{ $result }" wat geen string is.
|
||||
saving_loading_invalid_int = Voor sleutel "{ $key }" vond een ongeldig resultaat - "{ $result }" wat geen geheel getal is.
|
||||
saving_loading_invalid_bool = Voor sleutel "{ $key }" vond een ongeldig resultaat - "{ $result }" wat geen baas is.
|
||||
saving_loading_decode_problem_bool = Kan bool van sleutel niet decoderen "{ $key }" gevonden "{ $result }" maar toegestane waarden zijn 0, 1, waar of onwaar.
|
||||
saving_loading_saving_same_keys = Proberen de instelling op te slaan met de gedupliceerde sleutel "{ $key }".
|
||||
saving_loading_failed_to_get_home_directory = Fout bij het ophalen van de home directory naar configuratiebestand openen/opslaan.
|
||||
saving_loading_folder_config_instead_file = Kan configuratiebestand niet aanmaken of openen in pad "{ $path }" omdat er al een map is.
|
||||
saving_loading_failed_to_create_configuration_folder = Configuratie mislukt om configuratiemap "{ $path }", reden "{ $reason } " te maken.
|
||||
saving_loading_failed_to_create_config_file = Fout bij het aanmaken van het configuratiebestand "{ $path }", reden "{ $reason }".
|
||||
saving_loading_failed_to_read_config_file = Kan configuratie niet laden van "{ $path }" omdat deze niet bestaat of geen bestand is.
|
||||
saving_loading_failed_to_read_data_from_file = Kan gegevens niet lezen van bestand "{ $path }", reden "{ $reason }".
|
||||
saving_loading_orphan_data = orphan data gevonden "{ $data }" in regel "{ $line }".
|
||||
saving_loading_not_valid = Instelling "{ $data }" bestaat niet in de huidige versie van de app.
|
||||
# Invalid symlinks
|
||||
invalid_symlink_infinite_recursion = Oneindige recursie
|
||||
invalid_symlink_non_existent_destination = Niet-bestaand doelbestand
|
||||
# Other
|
||||
selected_all_reference_folders = Kan zoeken niet starten, als alle mappen als referentie mappen zijn ingesteld
|
||||
searching_for_data = Gegevens zoeken, het kan een tijdje duren, even wachten...
|
||||
text_view_messages = BERICHTEN
|
||||
text_view_warnings = LET OP
|
||||
text_view_errors = FOUTEN
|
||||
about_window_motto = Dit programma is gratis te gebruiken en zal dat altijd zijn.
|
||||
# Various dialog
|
||||
dialogs_ask_next_time = Volgende keer vragen
|
||||
delete_file_failed = Kan het bestand { $name }niet verwijderen, reden { $reason }
|
||||
delete_title_dialog = Bevestiging verwijderen
|
||||
delete_question_label = Weet u zeker dat u bestanden wilt verwijderen?
|
||||
delete_all_files_in_group_title = Bevestiging van het verwijderen van alle bestanden in groep
|
||||
delete_all_files_in_group_label1 = In sommige groepen worden alle records geselecteerd.
|
||||
delete_all_files_in_group_label2 = Weet u zeker dat u deze wilt verwijderen?
|
||||
delete_folder_failed = Kan de map { $dir } niet verwijderen omdat de map niet bestaat, u hebt geen toestemming of de map is niet leeg.
|
||||
delete_items_label = { $items } bestanden worden verwijderd.
|
||||
delete_items_groups_label = { $items } bestanden van { $groups } groepen worden verwijderd.
|
||||
hardlink_failed = Hardlink mislukt
|
||||
hard_sym_invalid_selection_title_dialog = Ongeldige selectie met sommige groepen
|
||||
hard_sym_invalid_selection_label_1 = In sommige groepen is er slechts één record geselecteerd en zal worden genegeerd.
|
||||
hard_sym_invalid_selection_label_2 = Om deze bestanden hard/sym te kunnen koppelen, moeten ten minste twee resultaten in de groep worden geselecteerd.
|
||||
hard_sym_invalid_selection_label_3 = Eerst wordt de groep als origineel erkend en niet veranderd, en vervolgens worden de tweede wijzigingen aangebracht.
|
||||
hard_sym_link_title_dialog = Bevestiging link
|
||||
hard_sym_link_label = Weet u zeker dat u deze bestanden wilt koppelen?
|
||||
move_folder_failed = Map { $name }kon niet verplaatst worden, reden { $reason }
|
||||
move_file_failed = Kon bestand niet verplaatsen { $name }, reden { $reason }
|
||||
move_files_title_dialog = Kies de map waarnaar u gedupliceerde bestanden wilt verplaatsen
|
||||
move_files_choose_more_than_1_path = Er kan slechts één pad geselecteerd zijn om hun gedupliceerde bestanden te kopiëren, geselecteerde { $path_number }.
|
||||
move_stats = Naar behoren verplaatst { $num_files }/{ $all_files } items
|
||||
save_results_to_file = Opgeslagen resultaten zowel in txt als in json bestanden in { $name } map.
|
||||
search_not_choosing_any_music = FOUT: U moet ten minste één selectievakje met muziekinstypes selecteren.
|
||||
search_not_choosing_any_broken_files = FOUT: U moet ten minste één selectievakje selecteren met type van aangevinkte bestanden.
|
||||
include_folders_dialog_title = Mappen om op te nemen
|
||||
exclude_folders_dialog_title = Mappen om uit te sluiten
|
||||
include_manually_directories_dialog_title = Voeg map handmatig toe
|
||||
cache_properly_cleared = Cache op juiste wijze gewist
|
||||
cache_clear_duplicates_title = Duplicaten cache wissen
|
||||
cache_clear_similar_images_title = Leeg soortgelijke afbeeldingen-cache
|
||||
cache_clear_similar_videos_title = Leeg soortgelijke video cache
|
||||
cache_clear_message_label_1 = Wilt u de cache van verouderde items wissen?
|
||||
cache_clear_message_label_2 = Deze actie zal alle cache-items verwijderen die naar ongeldige bestanden wijzen.
|
||||
cache_clear_message_label_3 = Dit kan de laden/opslaan enigszins versnellen.
|
||||
cache_clear_message_label_4 = WAARSCHUWING: De bewerking zal alle opgeslagen data van externe schijven verwijderen. Daarom zal elke hash opnieuw moeten worden gegenereerd.
|
||||
# Show preview
|
||||
preview_image_resize_failure = Formaat wijzigen van afbeelding { $name } is mislukt.
|
||||
preview_image_opening_failure = Kan afbeelding { $name }niet openen, reden { $reason }
|
||||
# Compare images (L is short Left, R is short Right - they can't take too much space)
|
||||
compare_groups_number = Groep { $current_group }/{ $all_groups } ({ $images_in_group } afbeeldingen)
|
||||
compare_move_left_button = L
|
||||
compare_move_right_button = R
|
@ -1,500 +0,0 @@
|
||||
# Window titles
|
||||
window_settings_title = Setări
|
||||
window_main_title = Czkawka (Hiccup)
|
||||
window_progress_title = Scanare
|
||||
window_compare_images = Compară imaginile
|
||||
# General
|
||||
general_ok_button = Ok
|
||||
general_close_button = Inchide
|
||||
# Main window
|
||||
music_title_checkbox = Titlu
|
||||
music_artist_checkbox = Artist
|
||||
music_year_checkbox = An
|
||||
music_bitrate_checkbox = Bitrate
|
||||
music_genre_checkbox = Gen
|
||||
music_length_checkbox = Lungime
|
||||
music_comparison_checkbox = Comparație aproximativă
|
||||
music_checking_by_tags = Etichete
|
||||
music_checking_by_content = Conținut
|
||||
same_music_seconds_label = Fragment minim a doua durată
|
||||
same_music_similarity_label = Diferența maximă
|
||||
same_music_tooltip =
|
||||
Căutarea fişierelor muzicale similare după conţinutul său poate fi configurată prin setarea:
|
||||
|
||||
- Timpul minim de fragment după care fişierele muzicale pot fi identificate ca fiind similare
|
||||
- Diferenţa maximă între două fragmente testate
|
||||
|
||||
Cheia pentru rezultate bune este de a găsi combinaţii rezonabile ale acestor parametri, pentru furnizare.
|
||||
|
||||
Setarea timpului minim la 5 s și diferența maximă la 1.0, va căuta fragmente aproape identice în fișiere.
|
||||
O perioadă de 20 de ani și o diferență maximă de 6,0, pe de altă parte, funcționează bine pentru a găsi remixuri/versiuni live etc.
|
||||
|
||||
În mod implicit, fiecare fișier muzical este comparat unul cu altul și acest lucru poate dura mult timp când testezi mai multe fișiere, astfel încât este de obicei mai bine să se utilizeze dosare de referință și să se precizeze care fișiere trebuie comparate între ele (cu același volum de fișiere; compararea amprentelor digitale va fi mai rapidă de cel puțin 4x decât fără dosare de referință).
|
||||
music_comparison_checkbox_tooltip =
|
||||
Caută fișiere muzicale similare folosind AI, care folosește învățarea mașinăriei pentru a elimina paranteze dintr-o frază. De exemplu, cu această opțiune activată, fișierele în cauză vor fi considerate duplicate:
|
||||
|
||||
Remix Lato 2021)
|
||||
duplicate_case_sensitive_name = Sensibil la caz
|
||||
duplicate_case_sensitive_name_tooltip =
|
||||
Când este activată, grupul înregistrează doar atunci când are exact același nume, de ex. Trunchiul <-> Z<unk> ołd
|
||||
|
||||
Dezactivarea acestei opțiuni va grupa numele fără a verifica dacă fiecare literă are aceeași mărime, de ex. z<unk> oŁD <-> Z<unk> ołd
|
||||
duplicate_mode_size_name_combo_box = Dimensiune și nume
|
||||
duplicate_mode_name_combo_box = Nume
|
||||
duplicate_mode_size_combo_box = Dimensiune
|
||||
duplicate_mode_hash_combo_box = Hash
|
||||
duplicate_hash_type_tooltip =
|
||||
Czkawka oferă 3 tipuri de hash-uri:
|
||||
|
||||
Blake3 - funcţie criptografică hash. Acesta este implicit pentru că este foarte rapid.
|
||||
|
||||
CRC32 - funcţia simplă de hash. Acest lucru ar trebui să fie mai rapid decât Blake3, dar foarte rar poate avea unele coliziuni.
|
||||
|
||||
XXH3 - foarte asemănător din punct de vedere al performanței și al calității hash-ului cu Blake3 (dar non-criptografic). Astfel de moduri pot fi ușor interschimbate.
|
||||
duplicate_check_method_tooltip =
|
||||
Deocamdată, Czkawka oferă trei tipuri de metode pentru a găsi duplicate după:
|
||||
|
||||
Nume - Găseşte fişiere care au acelaşi nume.
|
||||
|
||||
Dimensiune - Găseşte fişiere cu aceeaşi dimensiune.
|
||||
|
||||
Hash - Găseşte fişiere care au acelaşi conţinut. Acest mod hashează fişierul şi mai târziu compară acest hash pentru a găsi duplicate. Acest mod este cel mai sigur mod de a găsi duplicate. Aplicaţiile folosesc foarte mult cache, astfel încât scanările de la secundă şi mai departe ale aceloraşi date ar trebui să fie mult mai rapide decât primul.
|
||||
image_hash_size_tooltip =
|
||||
Fiecare imagine verificată produce un hash special, care poate fi comparat între ele, si o diferenta mica intre ele inseamna ca aceste imagini sunt similare.
|
||||
|
||||
dimensiunea de 8 hash este destul de bună pentru a găsi imagini care sunt doar puţin similare cu originalul. Cu un set mai mare de imagini (>1000), acesta va produce o cantitate mare de fals pozitiv, Aşa că vă recomand să utilizaţi o mărime mai mare de hash în acest caz.
|
||||
|
||||
16 este dimensiunea implicită a hash-ului care este un compromis destul de bun între a găsi chiar și imagini similare și a avea doar o mică coliziune a hash-ului.
|
||||
|
||||
32 și 64 de hash-uri găsesc doar imagini foarte similare, dar nu ar trebui să aibă aproape nicio poziție falsă (poate cu excepția unor imagini cu un canal alfa).
|
||||
image_resize_filter_tooltip =
|
||||
Pentru a calcula hash of imagine, biblioteca trebuie mai întâi să o redimensioneze.
|
||||
|
||||
În funcție de algoritmul ales, imaginea rezultată folosită pentru a calcula hash va arăta puțin diferit.
|
||||
|
||||
Cel mai rapid algoritm de utilizat, dar şi cel care dă cele mai slabe rezultate, este Nearest. Acesta este activat în mod implicit, deoarece cu dimensiunea de 16x16 a hash-ului este de calitate mai mică decât cea vizibilă.
|
||||
|
||||
Cu dimensiunea hash de 8x8 este recomandat să se folosească un algoritm diferit de Nearest, pentru a avea grupuri mai bune de imagini.
|
||||
image_hash_alg_tooltip =
|
||||
Utilizatorii pot alege unul dintre multele algoritmi de calculare a hash-ului.
|
||||
|
||||
Fiecare are atât puncte puternice, cât şi puncte mai slabe şi va da uneori rezultate mai bune şi uneori mai proaste pentru imagini diferite.
|
||||
|
||||
Deci, pentru a determina cel mai bun dintre voi, este necesară testarea manuală.
|
||||
big_files_mode_combobox_tooltip = Permite căutarea celor mai mici/mai mari fişiere
|
||||
big_files_mode_label = Fișiere verificate
|
||||
big_files_mode_smallest_combo_box = Cel mai mic
|
||||
big_files_mode_biggest_combo_box = Miggest
|
||||
main_notebook_duplicates = Fișiere duplicate
|
||||
main_notebook_empty_directories = Dosare goale
|
||||
main_notebook_big_files = Fișiere mari
|
||||
main_notebook_empty_files = Fișiere goale
|
||||
main_notebook_temporary = Fișiere temporare
|
||||
main_notebook_similar_images = Imagini similare
|
||||
main_notebook_similar_videos = Video similare
|
||||
main_notebook_same_music = Duplicate Muzică
|
||||
main_notebook_symlinks = Simboluri invalide
|
||||
main_notebook_broken_files = Fișiere defecte
|
||||
main_notebook_bad_extensions = Extensii rele
|
||||
main_tree_view_column_file_name = Numele fișierului
|
||||
main_tree_view_column_folder_name = Nume folder
|
||||
main_tree_view_column_path = Cale
|
||||
main_tree_view_column_modification = Data modificării
|
||||
main_tree_view_column_size = Dimensiune
|
||||
main_tree_view_column_similarity = Similaritate
|
||||
main_tree_view_column_dimensions = Dimensiuni
|
||||
main_tree_view_column_title = Titlu
|
||||
main_tree_view_column_artist = Artist
|
||||
main_tree_view_column_year = An
|
||||
main_tree_view_column_bitrate = Bitrate
|
||||
main_tree_view_column_length = Lungime
|
||||
main_tree_view_column_genre = Gen
|
||||
main_tree_view_column_symlink_file_name = Numele fișierului Symlink
|
||||
main_tree_view_column_symlink_folder = Dosar Symlink
|
||||
main_tree_view_column_destination_path = Calea destinației
|
||||
main_tree_view_column_type_of_error = Tip de eroare
|
||||
main_tree_view_column_current_extension = Extensia curentă
|
||||
main_tree_view_column_proper_extensions = Extensie corectă
|
||||
main_label_check_method = Metoda de verificare
|
||||
main_label_hash_type = Tip hash
|
||||
main_label_hash_size = Dimensiune hash
|
||||
main_label_size_bytes = Dimensiune (octeți)
|
||||
main_label_min_size = Minim
|
||||
main_label_max_size = Maxim
|
||||
main_label_shown_files = Numărul de fișiere afișate
|
||||
main_label_resize_algorithm = Redimensionare algoritm
|
||||
main_label_similarity = Similarity{ " " }
|
||||
main_check_box_broken_files_audio = Audio
|
||||
main_check_box_broken_files_pdf = Pdf
|
||||
main_check_box_broken_files_archive = Arhivează
|
||||
main_check_box_broken_files_image = Imagine
|
||||
check_button_general_same_size = Ignoră aceeași dimensiune
|
||||
check_button_general_same_size_tooltip = Ignoră fișierele cu rezultate de dimensiune identică - de obicei, acestea sunt de 1:1 duplicate
|
||||
main_label_size_bytes_tooltip = Dimensiunea fişierelor care vor fi utilizate în scanare
|
||||
# Upper window
|
||||
upper_tree_view_included_folder_column_title = Dosare de căutat
|
||||
upper_tree_view_included_reference_column_title = Dosare de referință
|
||||
upper_recursive_button = Recursiv
|
||||
upper_recursive_button_tooltip = Dacă este selectat, caută și fișiere care nu sunt plasate direct în dosarele alese.
|
||||
upper_manual_add_included_button = Adăugare manuală
|
||||
upper_add_included_button = Adăugare
|
||||
upper_remove_included_button = Elimină
|
||||
upper_manual_add_excluded_button = Adăugare manuală
|
||||
upper_add_excluded_button = Adăugare
|
||||
upper_remove_excluded_button = Elimină
|
||||
upper_manual_add_included_button_tooltip =
|
||||
Adăugați numele directorului pentru a căuta manual.
|
||||
|
||||
Pentru a adăuga căi multiple simultan, separați-le de ;
|
||||
|
||||
/home/roman;/home/rozkaz va adăuga două directoare /home/roman și /home/rozkaz
|
||||
upper_add_included_button_tooltip = Adăugați un nou director pentru căutare.
|
||||
upper_remove_included_button_tooltip = Ștergeți directorul de căutare.
|
||||
upper_manual_add_excluded_button_tooltip =
|
||||
Adaugă numele folderului exclus manual.
|
||||
|
||||
Pentru a adăuga căi multiple simultan, separați-le de ;
|
||||
|
||||
/home/roman;/home/krokiet va adăuga două directoare /home/roman și /home/keokiet
|
||||
upper_add_excluded_button_tooltip = Adauga directorul pentru a fi exclus in cautare.
|
||||
upper_remove_excluded_button_tooltip = Ştergeţi directorul din excludere.
|
||||
upper_notebook_items_configuration = Configurare articole
|
||||
upper_notebook_excluded_directories = Dosare excluse
|
||||
upper_notebook_included_directories = Dosare incluse
|
||||
upper_allowed_extensions_tooltip =
|
||||
Extensiile permise trebuie separate prin virgulă (implicit toate sunt disponibile).
|
||||
|
||||
Următoarele macro care adaugă simultan extensii multiple sunt de asemenea disponibile: IMAGE, VIDEO, MUSIC, TEXT.
|
||||
|
||||
Foloseste exemplul ".exe, IMAGE, VIDEO, .rar, 7z" - asta inseamna ca imaginile (e. . fișiere jpg, png), videoclipuri (de ex. avi, mp4), exe, rar și 7z vor fi scanate.
|
||||
upper_excluded_extensions_tooltip =
|
||||
Lista fişierelor dezactivate care vor fi ignorate în scanare.
|
||||
|
||||
La utilizarea extensiilor permise și dezactivate, aceasta are prioritate mai mare, deci fișierul nu va fi verificat.
|
||||
upper_excluded_items_tooltip =
|
||||
Elementele excluse trebuie sa contina * wildcard si sa fie separate prin virgule.
|
||||
Acest lucru este mai lent decat directoarele excluse, asa ca il folositi cu atentie.
|
||||
upper_excluded_items = Elemente excluse:
|
||||
upper_allowed_extensions = Extensii permise:
|
||||
upper_excluded_extensions = Extensii dezactivate:
|
||||
# Popovers
|
||||
popover_select_all = Selectează tot
|
||||
popover_unselect_all = Deselectează tot
|
||||
popover_reverse = Selectare inversă
|
||||
popover_select_all_except_oldest = Selectează toate cu excepția celor mai vechi
|
||||
popover_select_all_except_newest = Selectează toate cu excepția celor noi
|
||||
popover_select_one_oldest = Selectează unul mai vechi
|
||||
popover_select_one_newest = Selectaţi unul dintre cele mai noi
|
||||
popover_select_custom = Selectare particularizată
|
||||
popover_unselect_custom = Deselectare particularizată
|
||||
popover_select_all_images_except_biggest = Selectează toate cu excepția celui mai mare
|
||||
popover_select_all_images_except_smallest = Selectează toate cu excepția celor mici
|
||||
popover_custom_path_check_button_entry_tooltip =
|
||||
Selectaţi înregistrările după cale.
|
||||
|
||||
Exemplu de utilizare:
|
||||
/home/pimpek/rzecz.txt poate fi găsit cu /home/pim*
|
||||
popover_custom_name_check_button_entry_tooltip =
|
||||
Selectaţi înregistrările cu numele fişierelor.
|
||||
|
||||
Exemplu de utilizare:
|
||||
/usr/ping/pong.txt poate fi găsit cu *ong*
|
||||
popover_custom_regex_check_button_entry_tooltip =
|
||||
Selectaţi înregistrările specificate de Regex.
|
||||
|
||||
Cu acest mod, textul căutat este calea cu numele.
|
||||
|
||||
Exemplu de utilizare:
|
||||
/usr/bin/ziemniak. xt poate fi găsit cu /ziem[a-z]+
|
||||
|
||||
Acest lucru folosește implementările implicite Rust regex. Puteți citi mai multe despre ele aici: https://docs.rs/regex.
|
||||
popover_custom_case_sensitive_check_button_tooltip =
|
||||
Activează detectarea cazurilor sensibile.
|
||||
|
||||
Când este dezactivat /home/* găsește atât /HoMe/roman cât și /home/roman.
|
||||
popover_custom_not_all_check_button_tooltip =
|
||||
Previne selectarea tuturor înregistrărilor din grup.
|
||||
|
||||
Aceasta este activată în mod implicit, deoarece în majoritatea situațiilor, nu doriţi să ştergeţi atât fişierele originale, cât şi duplicate, dar doriţi să lăsaţi cel puţin un fişier.
|
||||
|
||||
ATENŢIE: Această setare nu funcţionează dacă aţi selectat deja manual toate rezultatele într-un grup.
|
||||
popover_custom_regex_path_label = Cale
|
||||
popover_custom_regex_name_label = Nume
|
||||
popover_custom_regex_regex_label = Cale Regex + Nume
|
||||
popover_custom_case_sensitive_check_button = Sensibil la caz
|
||||
popover_custom_all_in_group_label = Nu selectaţi toate înregistrările în grup
|
||||
popover_custom_mode_unselect = Deselectare particularizată
|
||||
popover_custom_mode_select = Selectare particularizată
|
||||
popover_sort_file_name = Nume fișier
|
||||
popover_sort_folder_name = Nume dosar
|
||||
popover_sort_full_name = Numele complet
|
||||
popover_sort_size = Dimensiune
|
||||
popover_sort_selection = Selecţie
|
||||
popover_invalid_regex = Regex nu este valid
|
||||
popover_valid_regex = Regex este valid
|
||||
# Bottom buttons
|
||||
bottom_search_button = Caută
|
||||
bottom_select_button = Selectare
|
||||
bottom_delete_button = Ștergere
|
||||
bottom_save_button = Salvează
|
||||
bottom_symlink_button = Symlink
|
||||
bottom_hardlink_button = Hardlink
|
||||
bottom_move_button = Mutare
|
||||
bottom_sort_button = Sortează
|
||||
bottom_search_button_tooltip = Începe căutarea
|
||||
bottom_select_button_tooltip = Selectaţi înregistrările. Numai fişierele/dosarele selectate pot fi procesate ulterior.
|
||||
bottom_delete_button_tooltip = Ştergeţi fişierele/dosarele selectate.
|
||||
bottom_save_button_tooltip = Salvează datele despre căutare în fișier
|
||||
bottom_symlink_button_tooltip =
|
||||
Creaţi link-uri simbolice.
|
||||
Funcţionează numai atunci când cel puţin două rezultate într-un grup sunt selectate.
|
||||
Prima este neschimbată, iar a doua și mai târziu simpatizează cu primul.
|
||||
bottom_hardlink_button_tooltip =
|
||||
Creează link-uri hardware.
|
||||
Funcţionează numai atunci când cel puţin două rezultate sunt selectate într-un grup.
|
||||
Prima este neschimbată, iar a doua și mai târziu sunt greu legate mai întâi.
|
||||
bottom_hardlink_button_not_available_tooltip =
|
||||
Creează link-uri hardware.
|
||||
Butonul este dezactivat, deoarece hardlink-urile nu pot fi create.
|
||||
Legăturile fizice funcționează doar cu privilegii de administrator pe Windows, așa că asigură-te că rulezi aplicația ca administrator.
|
||||
Dacă aplicația funcționează deja cu astfel de privilegii verificați pentru probleme similare pe Giwhere,
|
||||
bottom_move_button_tooltip =
|
||||
Mută fișierele în directorul ales.
|
||||
Copiază toate fișierele în director fără a păstra directorul arborescent.
|
||||
Când se încearcă mutarea a două fișiere cu nume identic în folder, al doilea va eșua și va afișa eroarea.
|
||||
bottom_sort_button_tooltip = Sortează fișierele/dosarele în funcție de metoda selectată.
|
||||
bottom_show_errors_tooltip = Arată/ascunde panoul de text de jos.
|
||||
bottom_show_upper_notebook_tooltip = Arată/Ascunde panoul de notebook-uri de sus.
|
||||
# Progress Window
|
||||
progress_stop_button = Oprește
|
||||
progress_stop_additional_message = Oprire solicitată
|
||||
# About Window
|
||||
about_repository_button_tooltip = Link către pagina de depozit cu codul sursă.
|
||||
about_donation_button_tooltip = Link la pagina de donare.
|
||||
about_instruction_button_tooltip = Link către pagina de instrucțiuni.
|
||||
about_translation_button_tooltip = Link catre pagina Crowdin cu traducerea aplicatiilor. Oficial, limba poloneza si engleza sunt suportate.
|
||||
about_repository_button = Depozit
|
||||
about_donation_button = Donație
|
||||
about_instruction_button = Instrucțiuni
|
||||
about_translation_button = Traducere
|
||||
# Header
|
||||
header_setting_button_tooltip = Deschide dialogul de setări.
|
||||
header_about_button_tooltip = Deschide dialogul cu informații despre aplicație.
|
||||
|
||||
# Settings
|
||||
|
||||
|
||||
## General
|
||||
|
||||
settings_number_of_threads = Numar discutii folosite
|
||||
settings_number_of_threads_tooltip = Numărul de teme folosite, 0 înseamnă că vor fi folosite toate temele disponibile.
|
||||
settings_label_restart = Trebuie să reporniți aplicația pentru a aplica setările!
|
||||
settings_ignore_other_filesystems = Ignorați alte sisteme de fișiere (doar Linux)
|
||||
settings_ignore_other_filesystems_tooltip =
|
||||
ignoră fişierele care nu se află în acelaşi sistem de fişiere ca şi directoarele căutate.
|
||||
|
||||
Funcţionează la fel ca opţiunea -xdev în găsirea comenzii în Linux
|
||||
settings_save_at_exit_button_tooltip = Salvați configurația în fișier la închiderea aplicației.
|
||||
settings_load_at_start_button_tooltip =
|
||||
Încarcă configurația din fișier la deschiderea aplicației.
|
||||
|
||||
Dacă nu este activată, se vor folosi setările implicite.
|
||||
settings_confirm_deletion_button_tooltip = Afișați caseta de confirmare când faceți clic pe butonul de ștergere.
|
||||
settings_confirm_link_button_tooltip = Afișați caseta de confirmare când faceți clic pe butonul hard/symlink.
|
||||
settings_confirm_group_deletion_button_tooltip = Arată dialogul de avertizare când se încearcă ștergerea tuturor înregistrărilor din grup.
|
||||
settings_show_text_view_button_tooltip = Arată panoul de text în partea de jos a interfeței utilizatorului.
|
||||
settings_use_cache_button_tooltip = Foloseşte cache-ul fişierelor.
|
||||
settings_save_also_as_json_button_tooltip = Salvează cache-ul în formatul JSON (citibil uman). Este posibil să îi modifici conținutul. Geocutia din acest fişier va fi citită automat de aplicaţie dacă nu există geocutie în format binar (cu extensie bin)
|
||||
settings_use_trash_button_tooltip = Mută fișierele la gunoi în loc să le ștergi definitiv.
|
||||
settings_language_label_tooltip = Limba interfeței utilizatorului.
|
||||
settings_save_at_exit_button = Salvați configurația la închiderea aplicației
|
||||
settings_load_at_start_button = Încarcă configurația la deschiderea aplicației
|
||||
settings_confirm_deletion_button = Arată dialog de confirmare la ștergerea oricăror fișiere
|
||||
settings_confirm_link_button = Arată dialog de confirmare atunci când fişierele hard/symlink
|
||||
settings_confirm_group_deletion_button = Arată dialog de confirmare la ștergerea tuturor fișierelor din grup
|
||||
settings_show_text_view_button = Arată panoul de text jos
|
||||
settings_use_cache_button = Utilizare geocutie
|
||||
settings_save_also_as_json_button = De asemenea, salvează cache-ul ca fișier JSON
|
||||
settings_use_trash_button = Mută fișierele șterse în gunoi
|
||||
settings_language_label = Limba
|
||||
settings_multiple_delete_outdated_cache_checkbutton = Şterge automat intrările învechite
|
||||
settings_multiple_delete_outdated_cache_checkbutton_tooltip =
|
||||
Ştergeţi rezultatele învechite ale geocutiei care indică fişierele inexistente.
|
||||
|
||||
Atunci când este activată, aplicația se asigură la încărcarea înregistrărilor, că toate înregistrările indică către fișiere valide (cele decongelate sunt ignorate).
|
||||
|
||||
Dezactivarea acestui lucru va ajuta la scanarea fişierelor pe unităţi externe, astfel încât intrările de cache despre acestea nu vor fi şterse în următoarea scanare.
|
||||
|
||||
În cazul în care există sute de mii de înregistrări în cache; se sugerează să activezi acest lucru, care va încărca/salva cache-ul la start/end al scanării.
|
||||
settings_notebook_general = Generalități
|
||||
settings_notebook_duplicates = Duplicate
|
||||
settings_notebook_images = Imagini similare
|
||||
settings_notebook_videos = Video similar
|
||||
|
||||
## Multiple - settings used in multiple tabs
|
||||
|
||||
settings_multiple_image_preview_checkbutton_tooltip = Afișează previzualizarea în partea dreaptă (când se selectează un fișier imagine).
|
||||
settings_multiple_image_preview_checkbutton = Arată previzualizarea imaginii
|
||||
settings_multiple_clear_cache_button_tooltip =
|
||||
Curăță manual cache-ul intrărilor învechite.
|
||||
Acest lucru ar trebui folosit doar dacă curățarea automată a fost dezactivată.
|
||||
settings_multiple_clear_cache_button = Elimină rezultatele învechite din geocutie.
|
||||
|
||||
## Duplicates
|
||||
|
||||
settings_duplicates_hide_hard_link_button_tooltip =
|
||||
Ascunde toate fişierele, cu excepţia unuia, dacă toate arată spre aceleaşi date (sunt conectate).
|
||||
|
||||
Exemplu: În cazul în care sunt (pe disc) şapte fişiere care sunt greu legate de date specifice şi un fişier diferit cu aceleaşi date, dar un alt inventar, apoi în duplicat va fi afișat un singur fișier unic și un fișier de la cele hardlink-ului.
|
||||
settings_duplicates_minimal_size_entry_tooltip =
|
||||
Setaţi dimensiunea minimă a fişierului care va fi memorată în cache.
|
||||
|
||||
Alegerea unei valori mai mici va genera mai multe înregistrări. (Automatic Translation) Aceasta va accelera căutarea, dar va încetini încărcarea/salvarea cache-ului.
|
||||
settings_duplicates_prehash_checkbutton_tooltip =
|
||||
Permite stocarea în cache a prehash (un hash calculat dintr-o mică parte a fișierului) care permite concedierea mai timpurie a rezultatelor nereplicate.
|
||||
|
||||
este dezactivat implicit deoarece poate cauza încetiniri în unele situații.
|
||||
|
||||
Este foarte recomandat sa il utilizezi cand scanezi sute de mii sau milioane de fisiere, pentru ca poate accelera cautarea de mai multe ori.
|
||||
settings_duplicates_prehash_minimal_entry_tooltip = Dimensiunea minimă a intrării în cache
|
||||
settings_duplicates_hide_hard_link_button = Ascunde link-urile hard (doar Linux și macOS)
|
||||
settings_duplicates_prehash_checkbutton = Foloseste cache-ul prehash
|
||||
settings_duplicates_minimal_size_cache_label = Dimensiunea minimă a fişierelor (în octeţi) salvate în cache
|
||||
settings_duplicates_minimal_size_cache_prehash_label = Dimensiunea minimă a fişierelor (în octeţi) salvate în cache de prehash
|
||||
|
||||
## Saving/Loading settings
|
||||
|
||||
settings_saving_button_tooltip = Salvați setările curente în fișier.
|
||||
settings_loading_button_tooltip = Încarcă setările din fișier și înlocuiește configurația curentă cu ele.
|
||||
settings_reset_button_tooltip = Resetați configurația curentă la cea implicită.
|
||||
settings_saving_button = Salvează configurația
|
||||
settings_loading_button = Încarcă configurația
|
||||
settings_reset_button = Resetare configurație
|
||||
|
||||
## Opening cache/config folders
|
||||
|
||||
settings_folder_cache_open_tooltip =
|
||||
Deschide folderul unde sunt stocate fișierele txt cache-ul.
|
||||
|
||||
Modificarea fișierelor de cache poate duce la afișarea unor rezultate invalide. Cu toate acestea, modificarea traiectoriei poate salva timpul atunci când mutați un număr mare de fișiere într-o locație diferită.
|
||||
|
||||
Puteţi copia aceste fişiere între computere pentru a salva timp la scanarea din nou pentru fişiere (desigur, dacă au o structură de directoare similară).
|
||||
|
||||
În caz de probleme cu geocutia, aceste fişiere pot fi şterse. Aplicaţia le va regenera automat.
|
||||
settings_folder_settings_open_tooltip =
|
||||
Deschide folderul unde este stocată configurația Czkawka.
|
||||
|
||||
AVERTISMENT: Modificarea manuală a configurației poate rupe fluxul de lucru.
|
||||
settings_folder_cache_open = Deschide dosarul cache
|
||||
settings_folder_settings_open = Deschide folderul de setări
|
||||
# Compute results
|
||||
compute_stopped_by_user = Căutarea a fost oprită de utilizator
|
||||
compute_found_duplicates_hash_size = Am găsit { $number_files } duplicate în { $number_groups } grupuri care au luat { $size }
|
||||
compute_found_duplicates_name = Am găsit { $number_files } duplicate în grupurile { $number_groups }
|
||||
compute_found_empty_folders = Foldere goale { $number_files }
|
||||
compute_found_empty_files = Fisiere goale gasite { $number_files }
|
||||
compute_found_big_files = Fisiere mari gasite { $number_files }
|
||||
compute_found_temporary_files = Fișiere temporare găsite { $number_files }
|
||||
compute_found_images = S-au găsit imagini similare { $number_files } în grupurile { $number_groups }
|
||||
compute_found_videos = S-au găsit videoclipuri similare { $number_files } în grupurile { $number_groups }
|
||||
compute_found_music = Am găsit { $number_files } fişiere muzicale similare în grupurile { $number_groups }
|
||||
compute_found_invalid_symlinks = { $number_files } link-uri simbolice invalide găsite
|
||||
compute_found_broken_files = Fișiere defecte { $number_files } găsite
|
||||
compute_found_bad_extensions = Fișiere { $number_files } cu extensii invalide
|
||||
# Progress window
|
||||
progress_scanning_general_file = Se scanează fişierul { $file_number }
|
||||
progress_scanning_extension_of_files = Se verifică extensia fișierului { $file_checked }/{ $all_files }
|
||||
progress_scanning_broken_files = Se verifică fişierul { $file_checked }/{ $all_files }
|
||||
progress_scanning_video = Hashing of { $file_checked }/{ $all_files } video
|
||||
progress_scanning_image = Hashing of { $file_checked }/{ $all_files } image
|
||||
progress_comparing_image_hashes = Comparare hash imagine { $file_checked }/{ $all_files }
|
||||
progress_scanning_music_tags_end = Compararea etichetelor fișierului de muzică { $file_checked }/{ $all_files }
|
||||
progress_scanning_music_tags = Citirea etichetelor din fişierul de muzică { $file_checked }/{ $all_files }
|
||||
progress_scanning_music_content_end = Compararea amprentelor fișierului de muzică { $file_checked }/{ $all_files }
|
||||
progress_scanning_music_content = Calcularea amprentei fişierului de muzică { $file_checked }/{ $all_files }
|
||||
progress_scanning_empty_folders = Se scanează directorul { $folder_number }
|
||||
progress_scanning_size = Dimensiune scanare fișier { $file_number }
|
||||
progress_scanning_size_name = Se scanează numele și dimensiunea fișierului { $file_number }
|
||||
progress_scanning_name = Se scanează numele fișierului { $file_number }
|
||||
progress_analyzed_partial_hash = S-a analizat hash-ul parțial al fișierelor { $file_checked }/{ $all_files }
|
||||
progress_analyzed_full_hash = A fost analizat hash complet al fişierelor { $file_checked }/{ $all_files }
|
||||
progress_prehash_cache_loading = Se încarcă cache-ul prehash
|
||||
progress_prehash_cache_saving = Salvare cache prehash
|
||||
progress_hash_cache_loading = Încărcare cache hash
|
||||
progress_hash_cache_saving = Salvare cache hash
|
||||
progress_cache_loading = Se încarcă geocutia
|
||||
progress_cache_saving = Salvare geocutie
|
||||
progress_current_stage = Current Stage:{ " " }
|
||||
progress_all_stages = All Stages:{ " " }
|
||||
# Saving loading
|
||||
saving_loading_saving_success = Configurație salvată în fișierul { $name }.
|
||||
saving_loading_saving_failure = Salvarea datelor de configurare în fișierul { $name } a eșuat.
|
||||
saving_loading_reset_configuration = Configurația curentă a fost ștearsă.
|
||||
saving_loading_loading_success = Configurare aplicație încărcată corespunzător.
|
||||
saving_loading_invalid_string = Pentru cheia "{ $key }" a găsit un rezultat nevalid - "{ $result }" care nu este un șir.
|
||||
saving_loading_invalid_int = Pentru cheia "{ $key }" a găsit un rezultat invalid - "{ $result }" care nu este un număr întreg.
|
||||
saving_loading_invalid_bool = Pentru cheia "{ $key }" a găsit rezultat nevalid - "{ $result }" care nu este un bool.
|
||||
saving_loading_decode_problem_bool = Nu s-a reușit decodificarea boolului de la tasta "{ $key }" găsit "{ $result }" dar valorile permise sunt 0, 1, adevărat sau false.
|
||||
saving_loading_saving_same_keys = Se încearcă salvarea setării cu cheie duplicată "{ $key }".
|
||||
saving_loading_failed_to_get_home_directory = Nu s-a putut obține directorul acasă pentru a deschide/salva fișierul de configurare.
|
||||
saving_loading_folder_config_instead_file = Nu se poate crea sau deschide fișierul de configurare în calea "{ $path }" deoarece există deja un dosar.
|
||||
saving_loading_failed_to_create_configuration_folder = Nu s-a reuşit configurarea pentru a crea folderul de configurare "{ $path }", motivul "{ $reason }".
|
||||
saving_loading_failed_to_create_config_file = Nu s-a putut crea fișierul de configurare "{ $path }", motivul "{ $reason }".
|
||||
saving_loading_failed_to_read_config_file = Nu se poate încărca configurația din "{ $path }" deoarece nu există sau nu este un fișier.
|
||||
saving_loading_failed_to_read_data_from_file = Datele din fişierul "{ $path }", motivul "{ $reason }".
|
||||
saving_loading_orphan_data = Am găsit date orfane "{ $data }" în rândul "{ $line }".
|
||||
saving_loading_not_valid = Setarea "{ $data }" nu există în versiunea curentă a aplicației.
|
||||
# Invalid symlinks
|
||||
invalid_symlink_infinite_recursion = Recepţie infinită
|
||||
invalid_symlink_non_existent_destination = Fișier destinație inexistent
|
||||
# Other
|
||||
selected_all_reference_folders = Nu se poate începe căutarea, atunci când toate directoarele sunt setate ca dosare de referință
|
||||
searching_for_data = Se caută date, poate dura ceva timp, vă rugăm așteptați...
|
||||
text_view_messages = MESAJE
|
||||
text_view_warnings = ATENȚIONĂRI
|
||||
text_view_errors = EROARE
|
||||
about_window_motto = Acest program este liber de utilizat și va fi întotdeauna.
|
||||
# Various dialog
|
||||
dialogs_ask_next_time = Întreabă data viitoare
|
||||
delete_file_failed = Nu s-a reușit ștergerea fișierului { $name }, motivul { $reason }
|
||||
delete_title_dialog = Ștergeți confirmarea
|
||||
delete_question_label = Sunteţi sigur că doriţi să ştergeţi fişierele?
|
||||
delete_all_files_in_group_title = Confirmarea ștergerii tuturor fișierelor din grup
|
||||
delete_all_files_in_group_label1 = In unele grupuri, toate inregistrarile sunt selectate.
|
||||
delete_all_files_in_group_label2 = Sunteţi sigur că doriţi să le ştergeţi?
|
||||
delete_folder_failed = Nu s-a reușit ștergerea dosarului { $dir } deoarece directorul nu există, nu aveți permisiunea sau folderul nu este gol.
|
||||
delete_items_label = { $items } fișiere vor fi șterse.
|
||||
delete_items_groups_label = { $items } fișiere din grupurile { $groups } vor fi șterse.
|
||||
hardlink_failed = Eșuare la hardlink
|
||||
hard_sym_invalid_selection_title_dialog = Selecţie invalidă cu unele grupuri
|
||||
hard_sym_invalid_selection_label_1 = În unele grupuri există doar o înregistrare selectată și va fi ignorată.
|
||||
hard_sym_invalid_selection_label_2 = Pentru a putea lega hard/sym aceste fișiere, cel puțin două rezultate în grup trebuie să fie selectate.
|
||||
hard_sym_invalid_selection_label_3 = Prima în grup este recunoscută ca fiind originală şi nu se modifică, dar se modifică a doua şi mai târziu.
|
||||
hard_sym_link_title_dialog = Confirmare link
|
||||
hard_sym_link_label = Sunteţi sigur că doriţi să conectaţi aceste fişiere?
|
||||
move_folder_failed = Nu s-a reușit mutarea dosarului { $name }, motivul { $reason }
|
||||
move_file_failed = Nu s-a reușit mutarea fișierului { $name }, motivul { $reason }
|
||||
move_files_title_dialog = Alegeți directorul în care doriți să mutați fișierele duplicate
|
||||
move_files_choose_more_than_1_path = Poate fi selectată doar o singură cale pentru a putea copia fişierele duplicate, selectate { $path_number }.
|
||||
move_stats = Elemente corect mutate { $num_files }/{ $all_files }
|
||||
save_results_to_file = Rezultate salvate atât pentru fişierele txt cât şi pentru fişierele json în directorul { $name }.
|
||||
search_not_choosing_any_music = EROARE: Trebuie să selectaţi cel puţin o casetă cu tipuri de căutare de muzică.
|
||||
search_not_choosing_any_broken_files = EROARE: Trebuie să selectaţi cel puţin o casetă de selectare cu tipul de fişiere bifate.
|
||||
include_folders_dialog_title = Dosare de inclus
|
||||
exclude_folders_dialog_title = Dosare de exclus
|
||||
include_manually_directories_dialog_title = Adaugă director manual
|
||||
cache_properly_cleared = Geocutie golită corect
|
||||
cache_clear_duplicates_title = Golire duplicate cache
|
||||
cache_clear_similar_images_title = Curăță cache imagini similare
|
||||
cache_clear_similar_videos_title = Curățare cache video similar
|
||||
cache_clear_message_label_1 = Vrei să ştergi memoria cache a intrărilor învechite?
|
||||
cache_clear_message_label_2 = Această operaţie va elimina toate intrările din cache-ul care indică fişiere invalide.
|
||||
cache_clear_message_label_3 = Aceasta poate încărca/salva uşor accelerat în cache.
|
||||
cache_clear_message_label_4 = AVERTISMENT: Operația va elimina toate datele stocate în cache din unplugged external drive. Deci fiecare hash va trebui să fie regenerat.
|
||||
# Show preview
|
||||
preview_image_resize_failure = Redimensionarea imaginii { $name } a eșuat.
|
||||
preview_image_opening_failure = Nu s-a reușit deschiderea imaginii { $name }, motivul { $reason }
|
||||
# Compare images (L is short Left, R is short Right - they can't take too much space)
|
||||
compare_groups_number = Grup { $current_group }/{ $all_groups } ({ $images_in_group } imagini)
|
||||
compare_move_left_button = l
|
||||
compare_move_right_button = R
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue