2
0
mirror of https://github.com/qarmin/czkawka synced 2024-10-31 21:20:19 +00:00

Update translation and add helpful script (#510)

This commit is contained in:
Rafał Mikrut 2021-12-19 21:42:14 +01:00 committed by GitHub
parent 0a924d2355
commit d1ac2f3c22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 62 additions and 29 deletions

View File

@ -33,6 +33,10 @@ impl GuiAbout {
} }
} }
pub fn update_language(&self) { 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_repository.set_tooltip_text(Some(&fl!("about_repository_button_tooltip")));
self.button_donation.set_tooltip_text(Some(&fl!("about_donation_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"))); self.button_instruction.set_tooltip_text(Some(&fl!("about_instruction_button_tooltip")));

View File

@ -11,6 +11,7 @@ use czkawka_core::broken_files::BrokenFiles;
use czkawka_core::duplicate::DuplicateFinder; use czkawka_core::duplicate::DuplicateFinder;
use czkawka_core::empty_files::EmptyFiles; use czkawka_core::empty_files::EmptyFiles;
use czkawka_core::empty_folder::EmptyFolder; use czkawka_core::empty_folder::EmptyFolder;
use czkawka_core::fl;
use czkawka_core::invalid_symlinks::InvalidSymlinks; use czkawka_core::invalid_symlinks::InvalidSymlinks;
use czkawka_core::same_music::SameMusic; use czkawka_core::same_music::SameMusic;
use czkawka_core::similar_images::SimilarImages; use czkawka_core::similar_images::SimilarImages;
@ -86,8 +87,8 @@ impl GuiData {
//// Windows //// Windows
let window_main: gtk::Window = builder.object("window_main").unwrap(); let window_main: gtk::Window = builder.object("window_main").unwrap();
window_main.set_title(&fl!("window_main_title"));
window_main.show_all(); window_main.show_all();
window_main.set_title("Czkawka");
window_main.set_application(Some(application)); window_main.set_application(Some(application));
@ -181,6 +182,8 @@ impl GuiData {
} }
pub fn update_language(&self) { pub fn update_language(&self) {
self.window_main.set_title(&fl!("window_main_title"));
self.main_notebook.update_language(); self.main_notebook.update_language();
self.upper_notebook.update_language(); self.upper_notebook.update_language();
self.popovers.update_language(); self.popovers.update_language();

View File

@ -28,9 +28,9 @@ impl GuiProgressDialog {
let builder = Builder::from_string(glade_src.as_str()); let builder = Builder::from_string(glade_src.as_str());
let window_progress: gtk::Dialog = builder.object("window_progress").unwrap(); 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_transient_for(Some(window_main));
window_progress.set_modal(true); 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_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(); 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) { 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::<Bin>()).set_text(&fl!("progress_stop_button")); get_custom_label_from_button_with_image(&self.button_stop_in_dialog.clone().upcast::<Bin>()).set_text(&fl!("progress_stop_button"));
self.label_progress_current_stage.set_label(&fl!("progress_current_stage")); self.label_progress_current_stage.set_label(&fl!("progress_current_stage"));

View File

@ -56,6 +56,7 @@ impl GuiSettings {
let builder = Builder::from_string(glade_src.as_str()); let builder = Builder::from_string(glade_src.as_str());
let window_settings: gtk::Window = builder.object("window_settings").unwrap(); 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_modal(true);
window_settings.set_transient_for(Some(window_main)); window_settings.set_transient_for(Some(window_main));
@ -137,6 +138,8 @@ impl GuiSettings {
} }
pub fn update_language(&self) { 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_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_load_at_start.set_label(&fl!("settings_load_at_start_button"));
self.check_button_settings_confirm_deletion.set_label(&fl!("settings_confirm_deletion_button")); self.check_button_settings_confirm_deletion.set_label(&fl!("settings_confirm_deletion_button"));

View File

@ -5,12 +5,9 @@ pub struct Language {
} }
pub const LANGUAGES_ALL: [Language; 2] = [ pub const LANGUAGES_ALL: [Language; 2] = [
Language { combo_box_text: "English", short_text: "en" },
Language { Language {
combo_box_text: "English (en)", combo_box_text: "Polski (Polish)",
short_text: "en",
},
Language {
combo_box_text: "Polski (pl)",
short_text: "pl", short_text: "pl",
}, },
]; ];

View File

@ -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_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} 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
general_ok_button = Ok general_ok_button = Ok
general_close_button = Close general_close_button = Close
general_bytes = bytes general_bytes = bytes
general_lost = lost 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_messages = MESSAGES
text_view_warnings = WARNINGS text_view_warnings = WARNINGS
text_view_errors = ERRORS text_view_errors = ERRORS
about_window_motto = This program is free to use and will always be.
# Various dialog # Various dialog
dialogs_ask_next_time = Ask next time dialogs_ask_next_time = Ask next time

View File

@ -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_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} 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 # Różne
general_ok_button = Ok general_ok_button = Ok
@ -37,9 +41,9 @@ music_comparison_checkbox_tooltip =
Świędziżłób --- Świędziżłób (Remix Lato 2021) Świędziżłób --- Świędziżłób (Remix Lato 2021)
duplicate_mode_name_checkbox = Nazwa duplicate_mode_name_combo_box = Nazwa
duplicate_mode_size_checkbox = Rozmiar duplicate_mode_size_combo_box = Rozmiar
duplicate_mode_hash_checkbox = Hash duplicate_mode_hash_combo_box = Hash
duplicate_hash_type_tooltip = duplicate_hash_type_tooltip =
Czkawka oferuje 3 różne algorytmy do tworzenia hashu pliku: 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. 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 = duplicate_check_method_tooltip =
Na chwilę obecną, Czkawka oferuje 3 tryby wyszukiwania duplicatów poprzez: 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_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_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_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_save_at_exit_button = Zapisuj konfigurację przy wyłączaniu
settings_load_at_start_button = Ładuj ustawienia na starcie z pliku 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_show_text_view_button = Pokazuj panel tekstowy na dole
settings_use_cache_button = Używaj pamięci podręcznej settings_use_cache_button = Używaj pamięci podręcznej
settings_use_trash_button = Przenoś pliki do kosza settings_use_trash_button = Przenoś pliki do kosza
settings_language_label = Język
## Multiple - ustawienia wskazywane przez większość zakładek ## 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_messages = WIADOMOŚCI
text_view_warnings = OSTRZEŻENIA text_view_warnings = OSTRZEŻENIA
text_view_errors = BŁĘDY 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 # Various dialog
dialogs_ask_next_time = Pytaj następnym razem dialogs_ask_next_time = Pytaj następnym razem
reason_of_error = powód reason_of_error = powód

View File

@ -59,4 +59,30 @@ Next new record must be added to array.
combo_box_text: "Polski (pl)", combo_box_text: "Polski (pl)",
short_text: "pl", short_text: "pl",
}, },
``` ```
# 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.