From a848f8042e57d5d5c5f24a10bfe4d9f21786e022 Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Tue, 30 Apr 2024 00:34:12 +0300 Subject: [PATCH 1/6] remove to string extra occurences --- src/gui/pages/overview_page.rs | 2 +- src/translations/translations.rs | 120 +++++++++++++++---------------- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/gui/pages/overview_page.rs b/src/gui/pages/overview_page.rs index f91c8309c..82c4a8678 100644 --- a/src/gui/pages/overview_page.rs +++ b/src/gui/pages/overview_page.rs @@ -616,7 +616,7 @@ fn col_bytes_packets( of_total_translation(language, &get_percentage_string(total, u128::from(dropped))) ) } else { - none_translation(language).to_string() + none_translation(language) }; let bytes_value = if dropped > 0 { ByteMultiple::formatted_string(filtered_bytes) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index a17b2f07a..4ba889ba2 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -330,26 +330,26 @@ pub fn ask_quit_translation(language: Language) -> Text<'static, StyleType> { pub fn quit_analysis_translation(language: Language) -> String { match language { - Language::EN => "Quit analysis".to_string(), - Language::IT => "Interrompi analisi".to_string(), - Language::FR => "Quitter l'analyse".to_string(), - Language::ES => "Quitar el análisis".to_string(), - Language::PL => "Zakończ analize".to_string(), - Language::DE => "Analyse beenden".to_string(), - Language::UK => "Закінчити аналіз".to_string(), - Language::ZH => "退出监控".to_string(), - Language::RO => "Renunță la analiză".to_string(), - Language::KO => "분석종료".to_string(), - Language::TR => "Analizden çık".to_string(), - Language::RU => "Закончить анализ".to_string(), - Language::PT => "Sair da análise".to_string(), - Language::EL => "Έξοδος ανάλυσης".to_string(), - // Language::FA => "خروج از تحلیل".to_string(), - Language::SV => "Avsluta analys".to_string(), - Language::FI => "Lopeta analyysi".to_string(), - Language::JA => "分析の終了".to_string(), - Language::UZ => "Tahlildan chiqish".to_string(), - } + Language::EN => "Quit analysis", + Language::IT => "Interrompi analisi", + Language::FR => "Quitter l'analyse", + Language::ES => "Quitar el análisis", + Language::PL => "Zakończ analize", + Language::DE => "Analyse beenden", + Language::UK => "Закінчити аналіз", + Language::ZH => "退出监控", + Language::RO => "Renunță la analiză", + Language::KO => "분석종료", + Language::TR => "Analizden çık", + Language::RU => "Закончить анализ", + Language::PT => "Sair da análise", + Language::EL => "Έξοδος ανάλυσης", + // Language::FA => "خروج از تحلیل", + Language::SV => "Avsluta analys", + Language::FI => "Lopeta analyysi", + Language::JA => "分析の終了", + Language::UZ => "Tahlildan chiqish", + }.to_string() } pub fn ask_clear_all_translation(language: Language) -> Text<'static, StyleType> { @@ -378,26 +378,26 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static, StyleType> pub fn clear_all_translation(language: Language) -> String { match language { - Language::EN => "Clear all".to_string(), - Language::IT => "Elimina tutto".to_string(), - Language::FR => "Tout effacer".to_string(), - Language::ES => "Borrar todo".to_string(), - Language::PL => "Wyczyść wszystko".to_string(), - Language::DE => "Alle löschen".to_string(), - Language::UK => "Видалити все".to_string(), - Language::ZH => "清除所有".to_string(), - Language::RO => "Ștergeți tot".to_string(), - Language::KO => "모두 지우기".to_string(), - Language::TR => "Hepsini temizle".to_string(), - Language::RU => "Очистить всё".to_string(), - Language::PT => "Limpar tudo".to_string(), - Language::EL => "Εκκαθάριση όλων".to_string(), - // Language::FA => "پاک کردن همه".to_string(), - Language::SV => "Radera alla".to_string(), - Language::FI => "Tyhjennä kaikki".to_string(), - Language::JA => "すべて削除".to_string(), - Language::UZ => "Barchasini tozalash".to_string(), - } + Language::EN => "Clear all", + Language::IT => "Elimina tutto", + Language::FR => "Tout effacer", + Language::ES => "Borrar todo", + Language::PL => "Wyczyść wszystko", + Language::DE => "Alle löschen", + Language::UK => "Видалити все", + Language::ZH => "清除所有", + Language::RO => "Ștergeți tot", + Language::KO => "모두 지우기", + Language::TR => "Hepsini temizle", + Language::RU => "Очистить всё", + Language::PT => "Limpar tudo", + Language::EL => "Εκκαθάριση όλων", + // Language::FA => "پاک کردن همه", + Language::SV => "Radera alla", + Language::FI => "Tyhjennä kaikki", + Language::JA => "すべて削除", + Language::UZ => "Barchasini tozalash", + }.to_string() } pub fn hide_translation(language: Language) -> &'static str { @@ -1559,26 +1559,26 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { pub fn threshold_translation(language: Language) -> String { match language { - Language::EN => "Threshold".to_string(), - Language::IT => "Soglia".to_string(), - Language::FR => "Seuil".to_string(), - Language::ES => "Límite".to_string(), - Language::PL => "Próg".to_string(), - Language::DE => "Schwellenwert".to_string(), - Language::UK => "Ліміт".to_string(), - Language::ZH => "阈值".to_string(), - Language::RO => "Prag".to_string(), - Language::KO => "임계값".to_string(), - Language::TR => "Eşik".to_string(), - Language::RU => "Порог".to_string(), - Language::PT => "Limite".to_string(), - Language::EL => "όριο".to_string(), - // Language::FA => "آستانه".to_string(), - Language::SV => "Gräns".to_string(), - Language::FI => "Raja".to_string(), - Language::JA => "閾値".to_string(), - Language::UZ => "Eshik".to_string(), - } + Language::EN => "Threshold", + Language::IT => "Soglia", + Language::FR => "Seuil", + Language::ES => "Límite", + Language::PL => "Próg", + Language::DE => "Schwellenwert", + Language::UK => "Ліміт", + Language::ZH => "阈值", + Language::RO => "Prag", + Language::KO => "임계값", + Language::TR => "Eşik", + Language::RU => "Порог", + Language::PT => "Limite", + Language::EL => "όριο", + // Language::FA => "آستانه", + Language::SV => "Gräns", + Language::FI => "Raja", + Language::JA => "閾値", + Language::UZ => "Eshik", + }.to_string() } pub fn volume_translation(language: Language) -> &'static str { From cac8aae9823091672e520b57566f9fef606194da Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Tue, 30 Apr 2024 02:23:40 +0300 Subject: [PATCH 2/6] feat: remove possible String usages in translations --- src/countries/country_utils.rs | 34 ++++++++++++----------------- src/gui/components/modal.rs | 4 ++-- src/gui/pages/notifications_page.rs | 2 +- src/gui/pages/overview_page.rs | 2 +- src/translations/translations.rs | 15 ++++++------- src/translations/translations_2.rs | 9 +++----- src/translations/translations_3.rs | 8 +++---- 7 files changed, 31 insertions(+), 43 deletions(-) diff --git a/src/countries/country_utils.rs b/src/countries/country_utils.rs index dc8bd62dd..bc6e2d1ca 100644 --- a/src/countries/country_utils.rs +++ b/src/countries/country_utils.rs @@ -286,27 +286,21 @@ fn get_flag_from_country( Country::ZM => ZM, Country::ZW => ZW, Country::ZZ => { - if is_loopback { - tooltip = your_network_adapter_translation(language); - svg_style = SvgType::AdaptColor; - COMPUTER + svg_style = SvgType::AdaptColor; + let (flag, new_tooltip) = if is_loopback { + (COMPUTER, your_network_adapter_translation(language)) } else if traffic_type.eq(&TrafficType::Multicast) { - tooltip = "Multicast".to_string(); - svg_style = SvgType::AdaptColor; - MULTICAST + (MULTICAST, "Multicast") } else if traffic_type.eq(&TrafficType::Broadcast) { - tooltip = "Broadcast".to_string(); - svg_style = SvgType::AdaptColor; - BROADCAST + (BROADCAST, "Broadcast") } else if is_local { - tooltip = local_translation(language); - svg_style = SvgType::AdaptColor; - HOME + (HOME, local_translation(language)) } else { - tooltip = unknown_translation(language); - svg_style = SvgType::AdaptColor; - UNKNOWN - } + (UNKNOWN, unknown_translation(language)) + }; + + tooltip = new_tooltip.to_string(); + flag } }))) .style(svg_style) @@ -383,11 +377,11 @@ pub fn get_computer_tooltip( let tooltip = match (is_my_address, is_local, traffic_type) { (true, _, _) => your_network_adapter_translation(language), - (false, _, TrafficType::Multicast) => "Multicast".to_string(), - (false, _, TrafficType::Broadcast) => "Broadcast".to_string(), + (false, _, TrafficType::Multicast) => "Multicast", + (false, _, TrafficType::Broadcast) => "Broadcast", (false, true, _) => local_translation(language), (false, false, TrafficType::Unicast) => unknown_translation(language), - }; + }.to_string(); Tooltip::new( content, diff --git a/src/gui/components/modal.rs b/src/gui/components/modal.rs index 729a7cc66..ddcd8cbcd 100644 --- a/src/gui/components/modal.rs +++ b/src/gui/components/modal.rs @@ -35,7 +35,7 @@ pub fn get_exit_overlay( font_headers, color_gradient, language, - quit_analysis_translation(language), + quit_analysis_translation(language).to_string(), )) .push(Space::with_height(20)) .push( @@ -67,7 +67,7 @@ pub fn get_clear_all_overlay( font_headers, color_gradient, language, - clear_all_translation(language), + clear_all_translation(language).to_string(), )) .push(Space::with_height(20)) .push( diff --git a/src/gui/pages/notifications_page.rs b/src/gui/pages/notifications_page.rs index 31d490684..e165a408e 100644 --- a/src/gui/pages/notifications_page.rs +++ b/src/gui/pages/notifications_page.rs @@ -230,7 +230,7 @@ fn bytes_notification_log( language: Language, font: Font, ) -> Container<'static, Message, StyleType> { - let mut threshold_str = threshold_translation(language); + let mut threshold_str = threshold_translation(language).to_string(); threshold_str.push_str(": "); threshold_str.push_str(&ByteMultiple::formatted_string( (logged_notification.threshold).into(), diff --git a/src/gui/pages/overview_page.rs b/src/gui/pages/overview_page.rs index 82c4a8678..f91c8309c 100644 --- a/src/gui/pages/overview_page.rs +++ b/src/gui/pages/overview_page.rs @@ -616,7 +616,7 @@ fn col_bytes_packets( of_total_translation(language, &get_percentage_string(total, u128::from(dropped))) ) } else { - none_translation(language) + none_translation(language).to_string() }; let bytes_value = if dropped > 0 { ByteMultiple::formatted_string(filtered_bytes) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index 4ba889ba2..756a6a232 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -328,7 +328,7 @@ pub fn ask_quit_translation(language: Language) -> Text<'static, StyleType> { }) } -pub fn quit_analysis_translation(language: Language) -> String { +pub fn quit_analysis_translation(language: Language) -> &'static str { match language { Language::EN => "Quit analysis", Language::IT => "Interrompi analisi", @@ -349,7 +349,7 @@ pub fn quit_analysis_translation(language: Language) -> String { Language::FI => "Lopeta analyysi", Language::JA => "分析の終了", Language::UZ => "Tahlildan chiqish", - }.to_string() + } } pub fn ask_clear_all_translation(language: Language) -> Text<'static, StyleType> { @@ -376,7 +376,7 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static, StyleType> }) } -pub fn clear_all_translation(language: Language) -> String { +pub fn clear_all_translation(language: Language) -> &'static str { match language { Language::EN => "Clear all", Language::IT => "Elimina tutto", @@ -397,7 +397,7 @@ pub fn clear_all_translation(language: Language) -> String { Language::FI => "Tyhjennä kaikki", Language::JA => "すべて削除", Language::UZ => "Barchasini tozalash", - }.to_string() + } } pub fn hide_translation(language: Language) -> &'static str { @@ -1180,7 +1180,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { } } -pub fn none_translation(language: Language) -> String { +pub fn none_translation(language: Language) -> &'static str { match language { Language::EN => "none", Language::IT => "nessuno", @@ -1202,7 +1202,6 @@ pub fn none_translation(language: Language) -> String { Language::JA => "なし", Language::UZ => "hech biri", } - .to_string() } pub fn yeti_night_translation(language: Language) -> &'static str { @@ -1557,7 +1556,7 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { } } -pub fn threshold_translation(language: Language) -> String { +pub fn threshold_translation(language: Language) -> &'static str { match language { Language::EN => "Threshold", Language::IT => "Soglia", @@ -1578,7 +1577,7 @@ pub fn threshold_translation(language: Language) -> String { Language::FI => "Raja", Language::JA => "閾値", Language::UZ => "Eshik", - }.to_string() + } } pub fn volume_translation(language: Language) -> &'static str { diff --git a/src/translations/translations_2.rs b/src/translations/translations_2.rs index cd04788b4..2f40a4789 100644 --- a/src/translations/translations_2.rs +++ b/src/translations/translations_2.rs @@ -193,7 +193,7 @@ pub fn only_top_30_items_translation(language: Language) -> &'static str { // } // } -pub fn local_translation(language: Language) -> String { +pub fn local_translation(language: Language) -> &'static str { match language { Language::EN => "Local network", Language::IT => "Rete locale", @@ -215,10 +215,9 @@ pub fn local_translation(language: Language) -> String { Language::PT => "Rede local", _ => "Local network", } - .to_string() } -pub fn unknown_translation(language: Language) -> String { +pub fn unknown_translation(language: Language) -> &'static str { match language { Language::EN => "Unknown location", Language::IT => "Localizzazione sconosciuta", @@ -240,10 +239,9 @@ pub fn unknown_translation(language: Language) -> String { Language::PT => "Localização desconhecida", _ => "Unknown location", } - .to_string() } -pub fn your_network_adapter_translation(language: Language) -> String { +pub fn your_network_adapter_translation(language: Language) -> &'static str { match language { Language::EN => "Your network adapter", Language::IT => "La tua scheda di rete", @@ -265,7 +263,6 @@ pub fn your_network_adapter_translation(language: Language) -> String { Language::PT => "Seu adaptador de rede", _ => "Your network adapter", } - .to_string() } pub fn socket_address_translation(language: Language) -> &'static str { diff --git a/src/translations/translations_3.rs b/src/translations/translations_3.rs index 4a18c38eb..61347473f 100644 --- a/src/translations/translations_3.rs +++ b/src/translations/translations_3.rs @@ -131,7 +131,7 @@ pub fn unsupported_link_type_translation( language: Language, adapter: &str, ) -> Text<'static, StyleType> { - let mut string = match language { + let translation = match language { Language::EN => "The link type associated with this adapter is not supported by Sniffnet yet...", Language::ES => "La conexión asociada con este adaptador aún no esta implementada en Sniffnet...", Language::IT => "Il tipo di collegamento associato a questo adattatore di rete non è ancora supportato da Sniffnet...", @@ -140,11 +140,9 @@ pub fn unsupported_link_type_translation( Language::PL => "Rodzaj połączenia powiązany z tym adapterem nie jest jeszcze obsługiwany przez Sniffnet...", Language::RU => "Тип соединения, связанный с этим адаптером, пока не поддерживается Sniffnet...", _ => "The link type associated with this adapter is not supported by Sniffnet yet...", - }.to_string(); + }; - let network_adapter_translation = network_adapter_translation(language); - string.push_str(&format!("\n\n{network_adapter_translation}: {adapter}")); - Text::new(string) + Text::new(format!("{translation}\n\n{}: {adapter}", network_adapter_translation(language))) } pub fn style_from_file_translation(language: Language) -> &'static str { From c638c3b2b155aef47f538fcb9f1978096842d4cc Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Tue, 30 Apr 2024 02:30:13 +0300 Subject: [PATCH 3/6] feat: remove more .to_string usages --- src/gui/components/modal.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/components/modal.rs b/src/gui/components/modal.rs index ddcd8cbcd..20ee292c6 100644 --- a/src/gui/components/modal.rs +++ b/src/gui/components/modal.rs @@ -35,7 +35,7 @@ pub fn get_exit_overlay( font_headers, color_gradient, language, - quit_analysis_translation(language).to_string(), + quit_analysis_translation(language), )) .push(Space::with_height(20)) .push( @@ -67,7 +67,7 @@ pub fn get_clear_all_overlay( font_headers, color_gradient, language, - clear_all_translation(language).to_string(), + clear_all_translation(language), )) .push(Space::with_height(20)) .push( @@ -88,7 +88,7 @@ fn get_modal_header( font_headers: Font, color_gradient: GradientType, language: Language, - title: String, + title: &'static str, ) -> Container<'static, Message, StyleType> { Container::new( Row::new() From 4b0dd5cecc79a16f9a5370b6de1c29ee8a20ffd5 Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Tue, 30 Apr 2024 02:30:40 +0300 Subject: [PATCH 4/6] chore: fix fmt --- src/countries/country_utils.rs | 3 ++- src/translations/translations_3.rs | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/countries/country_utils.rs b/src/countries/country_utils.rs index bc6e2d1ca..ae08965d5 100644 --- a/src/countries/country_utils.rs +++ b/src/countries/country_utils.rs @@ -381,7 +381,8 @@ pub fn get_computer_tooltip( (false, _, TrafficType::Broadcast) => "Broadcast", (false, true, _) => local_translation(language), (false, false, TrafficType::Unicast) => unknown_translation(language), - }.to_string(); + } + .to_string(); Tooltip::new( content, diff --git a/src/translations/translations_3.rs b/src/translations/translations_3.rs index 61347473f..214bc63df 100644 --- a/src/translations/translations_3.rs +++ b/src/translations/translations_3.rs @@ -142,7 +142,10 @@ pub fn unsupported_link_type_translation( _ => "The link type associated with this adapter is not supported by Sniffnet yet...", }; - Text::new(format!("{translation}\n\n{}: {adapter}", network_adapter_translation(language))) + Text::new(format!( + "{translation}\n\n{}: {adapter}", + network_adapter_translation(language) + )) } pub fn style_from_file_translation(language: Language) -> &'static str { From f08b4b2572dfa5c13cb33b172e5c1dfe76399cbe Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Tue, 30 Apr 2024 02:36:26 +0300 Subject: [PATCH 5/6] feat: move assignment of svg_style --- src/countries/country_utils.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/countries/country_utils.rs b/src/countries/country_utils.rs index ae08965d5..3bfeeebe4 100644 --- a/src/countries/country_utils.rs +++ b/src/countries/country_utils.rs @@ -286,7 +286,6 @@ fn get_flag_from_country( Country::ZM => ZM, Country::ZW => ZW, Country::ZZ => { - svg_style = SvgType::AdaptColor; let (flag, new_tooltip) = if is_loopback { (COMPUTER, your_network_adapter_translation(language)) } else if traffic_type.eq(&TrafficType::Multicast) { @@ -299,6 +298,7 @@ fn get_flag_from_country( (UNKNOWN, unknown_translation(language)) }; + svg_style = SvgType::AdaptColor; tooltip = new_tooltip.to_string(); flag } From 9e23926b1117c9c0f8ab2db2f94f203c8bd79404 Mon Sep 17 00:00:00 2001 From: Giuliano Bellini s294739 Date: Thu, 6 Jun 2024 22:54:50 +0200 Subject: [PATCH 6/6] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be6519e91..fc2188a42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All Sniffnet releases with the relative changes are documented in this file. - Japanese - [#504](https://github.com/GyulyVGC/sniffnet/pull/504) - Uzbek - [#510](https://github.com/GyulyVGC/sniffnet/pull/510) - Increased the range of selectable zoom values (fixes [#542](https://github.com/GyulyVGC/sniffnet/issues/542)) +- Reduced `String` allocations in translation code ([#524](https://github.com/GyulyVGC/sniffnet/pull/524)) ## [1.3.0] - 2024-04-08 - Introduced thumbnail mode, enabling users to keep an eye on Sniffnet while doing other tasks ([#484](https://github.com/GyulyVGC/sniffnet/pull/484))