From d1ac2f3c22bf7be86b121153ff8258f3d09085de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= <41945903+qarmin@users.noreply.github.com> Date: Sun, 19 Dec 2021 21:42:14 +0100 Subject: [PATCH] Update translation and add helpful script (#510) --- czkawka_gui/src/gui_about.rs | 4 +++ czkawka_gui/src/gui_data.rs | 5 +++- czkawka_gui/src/gui_progress_dialog.rs | 4 ++- czkawka_gui/src/gui_settings.rs | 3 +++ czkawka_gui/src/language_functions.rs | 7 ++---- i18n/en/czkawka_gui.ftl | 6 ++++- i18n/pl/czkawka_gui.ftl | 34 +++++++++++--------------- instructions/Translations.md | 28 ++++++++++++++++++++- 8 files changed, 62 insertions(+), 29 deletions(-) diff --git a/czkawka_gui/src/gui_about.rs b/czkawka_gui/src/gui_about.rs index 65291f3..ab274fe 100644 --- a/czkawka_gui/src/gui_about.rs +++ b/czkawka_gui/src/gui_about.rs @@ -33,6 +33,10 @@ impl GuiAbout { } } pub fn update_language(&self) { + let mut comment_text: String = "2020 - 2021 Rafał Mikrut(qarmin)\n\n".to_string(); + comment_text += &fl!("about_window_motto"); + self.about_dialog.set_comments(Some(&comment_text)); + self.button_repository.set_tooltip_text(Some(&fl!("about_repository_button_tooltip"))); self.button_donation.set_tooltip_text(Some(&fl!("about_donation_button_tooltip"))); self.button_instruction.set_tooltip_text(Some(&fl!("about_instruction_button_tooltip"))); diff --git a/czkawka_gui/src/gui_data.rs b/czkawka_gui/src/gui_data.rs index 350ae1e..5cf78ac 100644 --- a/czkawka_gui/src/gui_data.rs +++ b/czkawka_gui/src/gui_data.rs @@ -11,6 +11,7 @@ use czkawka_core::broken_files::BrokenFiles; use czkawka_core::duplicate::DuplicateFinder; use czkawka_core::empty_files::EmptyFiles; use czkawka_core::empty_folder::EmptyFolder; +use czkawka_core::fl; use czkawka_core::invalid_symlinks::InvalidSymlinks; use czkawka_core::same_music::SameMusic; use czkawka_core::similar_images::SimilarImages; @@ -86,8 +87,8 @@ impl GuiData { //// Windows let window_main: gtk::Window = builder.object("window_main").unwrap(); + window_main.set_title(&fl!("window_main_title")); window_main.show_all(); - window_main.set_title("Czkawka"); window_main.set_application(Some(application)); @@ -181,6 +182,8 @@ impl GuiData { } pub fn update_language(&self) { + self.window_main.set_title(&fl!("window_main_title")); + self.main_notebook.update_language(); self.upper_notebook.update_language(); self.popovers.update_language(); diff --git a/czkawka_gui/src/gui_progress_dialog.rs b/czkawka_gui/src/gui_progress_dialog.rs index 87d68df..cc9844e 100644 --- a/czkawka_gui/src/gui_progress_dialog.rs +++ b/czkawka_gui/src/gui_progress_dialog.rs @@ -28,9 +28,9 @@ impl GuiProgressDialog { let builder = Builder::from_string(glade_src.as_str()); let window_progress: gtk::Dialog = builder.object("window_progress").unwrap(); + window_progress.set_title(&fl!("window_progress_title")); window_progress.set_transient_for(Some(window_main)); window_progress.set_modal(true); - window_progress.set_title("Czkawka"); let progress_bar_current_stage: gtk::ProgressBar = builder.object("progress_bar_current_stage").unwrap(); let progress_bar_all_stages: gtk::ProgressBar = builder.object("progress_bar_all_stages").unwrap(); @@ -61,6 +61,8 @@ impl GuiProgressDialog { } } pub fn update_language(&self) { + self.window_progress.set_title(&fl!("window_progress_title")); + get_custom_label_from_button_with_image(&self.button_stop_in_dialog.clone().upcast::()).set_text(&fl!("progress_stop_button")); self.label_progress_current_stage.set_label(&fl!("progress_current_stage")); diff --git a/czkawka_gui/src/gui_settings.rs b/czkawka_gui/src/gui_settings.rs index 0202d82..898cbe2 100644 --- a/czkawka_gui/src/gui_settings.rs +++ b/czkawka_gui/src/gui_settings.rs @@ -56,6 +56,7 @@ impl GuiSettings { let builder = Builder::from_string(glade_src.as_str()); let window_settings: gtk::Window = builder.object("window_settings").unwrap(); + window_settings.set_title(&fl!("window_settings_title")); window_settings.set_modal(true); window_settings.set_transient_for(Some(window_main)); @@ -137,6 +138,8 @@ impl GuiSettings { } pub fn update_language(&self) { + self.window_settings.set_title(&fl!("window_settings_title")); + self.check_button_settings_save_at_exit.set_label(&fl!("settings_save_at_exit_button")); self.check_button_settings_load_at_start.set_label(&fl!("settings_load_at_start_button")); self.check_button_settings_confirm_deletion.set_label(&fl!("settings_confirm_deletion_button")); diff --git a/czkawka_gui/src/language_functions.rs b/czkawka_gui/src/language_functions.rs index 99cccec..ae73c4b 100644 --- a/czkawka_gui/src/language_functions.rs +++ b/czkawka_gui/src/language_functions.rs @@ -5,12 +5,9 @@ pub struct Language { } pub const LANGUAGES_ALL: [Language; 2] = [ + Language { combo_box_text: "English", short_text: "en" }, Language { - combo_box_text: "English (en)", - short_text: "en", - }, - Language { - combo_box_text: "Polski (pl)", + combo_box_text: "Polski (Polish)", short_text: "pl", }, ]; diff --git a/i18n/en/czkawka_gui.ftl b/i18n/en/czkawka_gui.ftl index 5f64499..18ae78f 100644 --- a/i18n/en/czkawka_gui.ftl +++ b/i18n/en/czkawka_gui.ftl @@ -15,12 +15,15 @@ core_folder_modified_before_epoch = Folder {$name} seems to be modified before U core_file_no_modification_date = Unable to get modification date from file {$name}, reason {$reason} core_folder_no_modification_date = Unable to get modification date from folder {$name}, reason {$reason} +# Window titles +window_settings_title = Options +window_main_title = Czkawka (Hiccup) +window_progress_title = Scanning # General general_ok_button = Ok general_close_button = Close - general_bytes = bytes general_lost = lost @@ -416,6 +419,7 @@ searching_for_data = Searching data, it may take a while, please wait... text_view_messages = MESSAGES text_view_warnings = WARNINGS text_view_errors = ERRORS +about_window_motto = This program is free to use and will always be. # Various dialog dialogs_ask_next_time = Ask next time diff --git a/i18n/pl/czkawka_gui.ftl b/i18n/pl/czkawka_gui.ftl index 27e1802..d147a33 100644 --- a/i18n/pl/czkawka_gui.ftl +++ b/i18n/pl/czkawka_gui.ftl @@ -15,6 +15,10 @@ core_folder_modified_before_epoch = Folder {$name} ma datę modyfikacji sprzed e core_file_no_modification_date = Nie udało się pobrać daty modyfikacji z pliku {$name}, powód {$reason} core_folder_no_modification_date = Nie udało się pobrać daty modyfikacji z folderu {$name}, powód {$reason} +# Nazwy okien +window_settings_title = Opcje +window_main_title = Czkawka +window_progress_title = Skanowanie # Różne general_ok_button = Ok @@ -37,9 +41,9 @@ music_comparison_checkbox_tooltip = Świędziżłób --- Świędziżłób (Remix Lato 2021) -duplicate_mode_name_checkbox = Nazwa -duplicate_mode_size_checkbox = Rozmiar -duplicate_mode_hash_checkbox = Hash +duplicate_mode_name_combo_box = Nazwa +duplicate_mode_size_combo_box = Rozmiar +duplicate_mode_hash_combo_box = Hash duplicate_hash_type_tooltip = Czkawka oferuje 3 różne algorytmy do tworzenia hashu pliku: @@ -50,23 +54,6 @@ duplicate_hash_type_tooltip = XXH3 - zarówno pod względem jakości hashu jak i wydajności jest podobny do Blake3, dlatego te algorytmy mogą być używane wymiennie. -duplicate_mode_name_checkbox_tooltip = - Służy do znajdowania plików o identycznych nazwach. - - Ten tryb nie sprawdza zawartości pliku, dlatego należy uważać przy jego stosowaniu. - -duplicate_mode_size_checkbox_tooltip = - Służy do znajdowania plików o identycznych rozmiarach. - - Ten tryb nie sprawdza zawartości pliku, dlatego należy uważać przy jego stosowaniu. - -duplicate_mode_hash_checkbox_tooltip = - Znajduje pliki z identyczną zawartością, bez względu na nazwę i rozszerzenie pliku. - - W tym trybie, każdy plik jest hasowany a następnie każdy hash jest porównywany z innymi. - - Ten tryb używa pamięci podręcznej do przechowywania raz obliczonych hashy, dlatego drugie i kolejne skanowanie, powinno być o wiele szybsze niż pierwsze. - duplicate_check_method_tooltip = Na chwilę obecną, Czkawka oferuje 3 tryby wyszukiwania duplicatów poprzez: @@ -278,6 +265,7 @@ settings_confirm_group_deletion_button_tooltip = Wyświetla okno potwierdzające settings_show_text_view_button_tooltip = Pokazuje na dole ekranu panel tekstowy. settings_use_cache_button_tooltip = Umożliwia zapisywanie rekordów do pamięci podręcznej. settings_use_trash_button_tooltip = Przenosi pliki do kosza zamiast usuwać je permanentnie. +settings_language_label_tooltip = Pozwala wybrać język interfejsu. settings_save_at_exit_button = Zapisuj konfigurację przy wyłączaniu settings_load_at_start_button = Ładuj ustawienia na starcie z pliku @@ -287,6 +275,7 @@ settings_confirm_group_deletion_button = Pokazuj okno potwierdzające usuwanie w settings_show_text_view_button = Pokazuj panel tekstowy na dole settings_use_cache_button = Używaj pamięci podręcznej settings_use_trash_button = Przenoś pliki do kosza +settings_language_label = Język ## Multiple - ustawienia wskazywane przez większość zakładek @@ -419,7 +408,12 @@ searching_for_data = Przeszukiwanie dysku, może to potrwać chwilę, proszę cz text_view_messages = WIADOMOŚCI text_view_warnings = OSTRZEŻENIA text_view_errors = BŁĘDY +about_window_motto = + Program jest i będzie zawsze darmowy do użytku. + Może interfejs programu nie jest ergonomiczny, + ale za to przynajmniej kod jest nieczytelny. + # Various dialog dialogs_ask_next_time = Pytaj następnym razem reason_of_error = powód diff --git a/instructions/Translations.md b/instructions/Translations.md index 75086aa..909086a 100644 --- a/instructions/Translations.md +++ b/instructions/Translations.md @@ -59,4 +59,30 @@ Next new record must be added to array. combo_box_text: "Polski (pl)", short_text: "pl", }, -``` \ No newline at end of file +``` + +# Verify strings +Due renames, adding and removing elements, may happen that translations contains outdated entries. + +To help find such keywords, special python script can be used. + +To be able to use it, be sure that you are directly inside main `czkawka` folder. +Next run python script `python3 misc/translation_test.py`. +Then results should be visible in console: +``` +Checking pl language +Missing keyword - duplicate_mode_name_combo_box +Missing keyword - duplicate_mode_size_combo_box +Missing keyword - duplicate_mode_hash_combo_box +Missing keyword - settings_language_label_tooltip +Missing keyword - settings_language_label +Unused keyword - duplicate_mode_name_checkbox +Unused keyword - duplicate_mode_size_checkbox +Unused keyword - duplicate_mode_hash_checkbox +Unused keyword - duplicate_mode_name_checkbox_tooltip +Unused keyword - duplicate_mode_size_checkbox_tooltip +Unused keyword - duplicate_mode_hash_checkbox_tooltip +``` +To be able to check new language, inside script variable `translations` needs to be updated. +`Missing keyword` means that some keywords exists in base translations and texts needs to be translated. +`Unused keyword` means that keyword is no longer used. It can be renamed or entirely removed from file. \ No newline at end of file