diff --git a/resources/fonts/full/subset_characters.txt b/resources/fonts/full/subset_characters.txt index d704ecdf4..ec256584d 100644 --- a/resources/fonts/full/subset_characters.txt +++ b/resources/fonts/full/subset_characters.txt @@ -121,6 +121,56 @@ z ś ź ż +А +В +Г +Д +З +К +Л +М +Н +О +П +С +Т +У +Ч +Ш +Щ +Я +а +б +в +г +д +е +ж +з +и +й +к +л +м +н +о +п +р +с +т +у +ф +х +ц +ч +ш +щ +ь +ю +я +є +і +ї 一 中 主 diff --git a/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf b/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf index 76c946706..8474882b4 100644 Binary files a/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf and b/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf differ diff --git a/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf b/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf index a08d43880..9133a8ee4 100644 Binary files a/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf and b/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf differ diff --git a/src/enums/language.rs b/src/enums/language.rs index 57e038a4d..909915333 100644 --- a/src/enums/language.rs +++ b/src/enums/language.rs @@ -15,6 +15,8 @@ pub enum Language { PL, /// German, DE, + /// Ukrainian + UK, /// Simplified Chinese ZH, } @@ -27,7 +29,7 @@ impl Default for Language { impl Language { pub(crate) const COL1: [Language; 4] = [Language::EN, Language::FR, Language::ES, Language::ZH]; - pub(crate) const COL2: [Language; 3] = [Language::DE, Language::IT, Language::PL]; + pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::PL, Language::UK]; pub fn get_radio_label(&self) -> &str { match self { Language::EN => "English", @@ -36,6 +38,7 @@ impl Language { Language::ES => "Español", Language::PL => "Polski", Language::DE => "Deutsch", + Language::UK => "Українська", Language::ZH => "简体中文", } } diff --git a/src/gui/components/radio.rs b/src/gui/components/radio.rs index d6ac17894..b46d7c9c0 100644 --- a/src/gui/components/radio.rs +++ b/src/gui/components/radio.rs @@ -3,7 +3,7 @@ use crate::enums::message::Message; use crate::enums::sound::Sound; use crate::structs::notifications::{BytesNotification, FavoriteNotification, PacketsNotification}; use crate::structs::style_tuple::StyleTuple; -use crate::utility::countries::get_flag; +use crate::utility::countries::get_flag_from_language_code; use crate::utility::style_constants::FONT_SIZE_SUBTITLE; use crate::utility::translations::{ ip_version_translation, relevant_connections_translation, sound_translation, @@ -101,7 +101,7 @@ pub fn language_radios( ))), ) .push(horizontal_space(Length::Fixed(5.0))) - .push(get_flag(&format!("{option:?}"))), + .push(get_flag_from_language_code(&format!("{option:?}"))), ); } ret_val diff --git a/src/gui/pages/notifications_page.rs b/src/gui/pages/notifications_page.rs index 80640ac11..bd271ada5 100644 --- a/src/gui/pages/notifications_page.rs +++ b/src/gui/pages/notifications_page.rs @@ -8,7 +8,7 @@ use crate::enums::traffic_type::TrafficType; use crate::gui::components::header::get_button_settings; use crate::gui::components::tab::get_pages_tabs; use crate::structs::style_tuple::StyleTuple; -use crate::utility::countries::get_flag; +use crate::utility::countries::get_flag_from_country_code; use crate::utility::get_formatted_strings::get_formatted_bytes_string; use crate::utility::style_constants::{get_font, FONT_SIZE_FOOTER, HEIGHT_BODY, ICONS}; use crate::utility::translations::{ @@ -349,9 +349,9 @@ fn favorite_notification_log( .push(Text::new(dst_str).font(font)); if !country.is_empty() { if traffic_type.eq(&TrafficType::Outgoing) { - row_dst_flag = row_dst_flag.push(get_flag(&country)); + row_dst_flag = row_dst_flag.push(get_flag_from_country_code(&country)); } else { - row_src_flag = row_src_flag.push(get_flag(&country)); + row_src_flag = row_src_flag.push(get_flag_from_country_code(&country)); } } let content = Row::new() diff --git a/src/gui/pages/overview_page.rs b/src/gui/pages/overview_page.rs index 22cd2ccda..44a0ef726 100644 --- a/src/gui/pages/overview_page.rs +++ b/src/gui/pages/overview_page.rs @@ -18,7 +18,7 @@ use crate::gui::components::radio::{chart_radios, report_radios}; use crate::gui::components::tab::get_pages_tabs; use crate::structs::sniffer::Sniffer; use crate::structs::style_tuple::StyleTuple; -use crate::utility::countries::{get_flag, FLAGS_WIDTH}; +use crate::utility::countries::{get_flag_from_country_code, FLAGS_WIDTH}; use crate::utility::get_formatted_strings::{ get_active_filters_string, get_active_filters_string_nobr, get_app_count_string, get_connection_color, get_formatted_bytes_string, get_percentage_string, get_report_path, @@ -238,7 +238,7 @@ pub fn overview_page(sniffer: &Sniffer) -> Container { .push(Text::new(" ")); } else { entry_row = entry_row - .push(get_flag(&key_val.1.country)) + .push(get_flag_from_country_code(&key_val.1.country)) .push(Text::new(" ")); } entry_row = entry_row diff --git a/src/utility/countries.rs b/src/utility/countries.rs index 214e27215..bac1f8dc3 100644 --- a/src/utility/countries.rs +++ b/src/utility/countries.rs @@ -504,7 +504,22 @@ pub const ZW: &[u8] = include_bytes!("../../resources/countries_flags/png-16/zimbabwe-16x16-33150.png"); pub const UNKNOWN: &[u8] = include_bytes!("../../resources/countries_flags/png-16/question.png"); -pub fn get_flag(country: &str) -> Image { +pub fn get_flag_from_language_code(language: &str) -> Image { + Image::new(Handle::from_memory(Vec::from(match language { + "ZH" => CN, + "DE" => DE, + "ES" => ES, + "FR" => FR, + "EN" => GB, + "IT" => IT, + "PL" => PL, + "UK" => UA, + _ => UNKNOWN, + }))) + .width(Length::Fixed(FLAGS_WIDTH)) +} + +pub fn get_flag_from_country_code(country: &str) -> Image { Image::new(Handle::from_memory(Vec::from(match country { "AD" => AD, "AE" => AE, @@ -553,7 +568,7 @@ pub fn get_flag(country: &str) -> Image { "CK" => CK, "CL" => CL, "CM" => CM, - "CN" | "ZH" => CN, + "CN" => CN, "CO" => CO, "CR" => CR, "CU" => CU, @@ -582,7 +597,7 @@ pub fn get_flag(country: &str) -> Image { "FO" => FO, "FR" => FR, "GA" => GA, - "GB" | "EN" => GB, + "GB" => GB, "GD" => GD, "GE" => GE, "GF" => GF, diff --git a/src/utility/translations.rs b/src/utility/translations.rs index e49defab0..9d70afc1a 100644 --- a/src/utility/translations.rs +++ b/src/utility/translations.rs @@ -9,6 +9,7 @@ pub fn choose_adapters_translation(language: Language) -> Text<'static> { Language::ES => "Seleccione el adaptador de red que desea inspeccionar", Language::PL => "Wybierz adapter sieciowy do inspekcji", Language::DE => "Wähle einen Netzwerkadapter zum inspizieren aus", + Language::UK => "Вибрати мережевий адаптер для інспекції", Language::ZH => "选择需要监控的网络适配器", }) } @@ -21,6 +22,7 @@ pub fn application_protocol_translation(language: Language) -> &'static str { Language::ES => "Protocolo de aplicación", Language::PL => "Protokół aplikacji", Language::DE => "Anwendungs-Protokoll", + Language::UK => "Протокол аплікації", Language::ZH => "目标应用层协议", } } @@ -33,6 +35,7 @@ pub fn select_filters_translation(language: Language) -> Text<'static> { Language::ES => "Seleccionar los filtros que se aplicarán al tráfico de red", Language::PL => "Wybierz filtry, które mają być zastosowane na ruchu sieciowym", Language::DE => "Wähle die Filter, die auf den Netzwerkverkehr angewendet werden sollen", + Language::UK => "Вибрати фільтри, які мають бути застосовані до мережевого трафіку", Language::ZH => "选择需要监控的目标", }) } @@ -44,6 +47,7 @@ pub fn start_translation(language: Language) -> &'static str { Language::FR => "Commencer!", Language::ES => "¡Empieza!", Language::PL => "Rozpocznij!", + Language::UK => "Почати!", Language::ZH => "开始!", } } @@ -55,6 +59,7 @@ pub fn address_translation(language: Language) -> &'static str { Language::FR | Language::DE => "\nAdresse:", Language::ES => "\nDirección:", Language::PL => "\nAdres:", + Language::UK => "\nАдреса:", Language::ZH => "\n网络地址:", } } @@ -67,6 +72,7 @@ pub fn addresses_translation(language: Language) -> &'static str { Language::ES => "\nDirecciones:", Language::PL => "\nAdresy:", Language::DE => "\nAdressen:", + Language::UK => "\nАдреси:", Language::ZH => "\n网络地址:", } } @@ -79,6 +85,7 @@ pub fn ip_version_translation(language: Language) -> Text<'static> { Language::ES => "Versión IP", Language::PL => "Wersja IP", Language::DE => "IP Version", + Language::UK => "Версія IP", Language::ZH => "目标IP协议版本", }) } @@ -91,6 +98,7 @@ pub fn transport_protocol_translation(language: Language) -> &'static str { Language::ES => "Protocolo de transporte", Language::PL => "Protokół transportowy", Language::DE => "Netzwerkprotokoll", + Language::UK => "Транспортний протокол", Language::ZH => "目标传输协议", } } @@ -103,6 +111,7 @@ pub fn traffic_rate_translation(language: Language) -> Text<'static> { Language::ES => "Tasa de tráfico:", Language::PL => "Prędkość ruchu:", Language::DE => "Daten Frequenz:", + Language::UK => "Швидкість руху:", Language::ZH => "网络速率图:", }) } @@ -115,6 +124,7 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> { Language::ES => "Conexiones Relevantes:", Language::PL => "Istotne połączenia:", Language::DE => "Relevante Verbindungen:", + Language::UK => "Важливі підключення:", Language::ZH => "连接详情:", }) } @@ -127,6 +137,7 @@ pub fn settings_translation(language: Language) -> &'static str { Language::ES => "Ajustes", Language::PL => "Ustawienia", Language::DE => "Einstellungen", + Language::UK => "Налаштування", Language::ZH => "设置", } } @@ -139,6 +150,7 @@ pub fn yes_translation(language: Language) -> Text<'static> { Language::ES => "Sí", Language::PL => "Tak", Language::DE => "Ja", + Language::UK => "Так", Language::ZH => "是", }) } @@ -151,6 +163,7 @@ pub fn ask_quit_translation(language: Language) -> Text<'static> { Language::ES => "¿Estás seguro de que quieres dejar este análisis?", Language::PL => "Czy na pewno chcesz zakończyć analizę?", Language::DE => "Bist du sicher, dass du diese Analyse beenden willst?", + Language::UK => "Чи справді хочеш закінчити аналіз?", Language::ZH => "您确定退出当前监控吗?", }) } @@ -163,6 +176,7 @@ pub fn quit_analysis_translation(language: Language) -> 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(), } } @@ -175,6 +189,7 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static> { Language::ES => "¿Seguro que quieres borrar las notificaciones?", Language::PL => "Czy na pewno chcesz wyczyścić powiadomienia?", Language::DE => "Bist du sicher, dass du alle Benachrichtigungen löschen willst?", + Language::UK => "Чи справді хочеш видалити всі повідомлення?", Language::ZH => "确定清除所有通知?", }) } @@ -187,6 +202,7 @@ pub fn clear_all_translation(language: Language) -> String { Language::ES => "Borrar todo".to_string(), Language::PL => "Wyczyść wszystko".to_string(), Language::DE => "Alle leeren".to_string(), + Language::UK => "Видалити все".to_string(), Language::ZH => "清除所有".to_string(), } } @@ -199,6 +215,7 @@ pub fn hide_translation(language: Language) -> &'static str { Language::ES => "Ocultar", Language::PL => "Ukryj", Language::DE => "Verstecken", + Language::UK => "Заховати", Language::ZH => "隐藏", } } @@ -223,6 +240,9 @@ pub fn no_addresses_translation(language: Language, adapter: &str) -> Text<'stat Language::DE => format!("Es kann kein Netzwerkverkehr beobachtet werden, weil der Adapter keine aktiven Adressen hat...\n\n\ Netzwerkadapter: {adapter}\n\n\ Wenn du dir sicher bist, dass du mit dem Internet verbunden bist, probier einen anderen Adapter auszuwählen."), + Language::UK => format!("Не зафіксовано жодного мережевого трафіку тому що вибраний адаптер немає активних адрес... \n\n\ + Мережквий адаптер: {adapter}\n\n\ + Якщо Ти впевнений, що підключений до інтернету, спробуй вибрати інший адаптер."), Language::ZH => format!("您选择的网络适配器当前无活动网络......\n\n\ 网络适配器: {adapter}\n\n\ 如果您确信您已成功连接互联网, 请尝试选择其他网络适配器."), @@ -249,6 +269,9 @@ pub fn waiting_translation(language: Language, adapter: &str) -> Text<'static> { Language::DE => format!("Noch kein Netzwerkverkehr beobachtet. Warte auf Pakete...\n\n\ Netzwerkadapter: {adapter}\n\n\ Bist du sicher, dass du mit dem Internet verbunden bist und den richtigen Adapter ausgewählt hast?"), + Language::UK => format!("Не зафіксовано жодного мережевого трафіку. Очікування на пакети...\n\n\ + Мережквий адаптер: {adapter}\n\n\ + Чи Ти дійсно підключений до інтернету і вибрав відповідний мережевий адаптер?"), Language::ZH => format!("暂无流量数据. 等待网络活动中......\n\n\ 网络适配器: {adapter}\n\n\ 您确信您已成功连接到互联网, 并选择了当前正在使用的的网络适配器吗?"), @@ -279,6 +302,9 @@ pub fn some_observed_translation( Language::DE => format!("Anzahl der empfangenen Pakete: {observed}\n\n\ gefilterte Pakete: 0\n\n\ Ein Paar Pakete wurden empfangen, aber es entsprechen noch keine den spezifizierten Filtern...\n\n{filters}"), + Language::UK => format!("Сума перехоплених пакетів: {observed}\n\n\ + Відфільтровані пакеті: 0\n\n\ + Деякі пакети були перехоплені, але жоден з них не був вибраний відповідно до вказаних фільтрів...\n\n{filters}"), Language::ZH => format!("监测到的数据包总数: {observed}\n\n\ 目标数据包总数: 0\n\n\ 当前已监测到一些数据包, 但其中并未包含您的目标数据包......\n\n{filters}"), @@ -297,6 +323,9 @@ pub fn filtered_packets_translation( Language::ES => format!("Paquetes filtrados:\n {filtered} ({percentage} del total)"), Language::PL => format!("Przefiltrowane pakiety:\n {filtered} ({percentage} z całości)"), Language::DE => format!("Gefilterte Pakete:\n {filtered} ({percentage} der Gesamtzahl)"), + Language::UK => { + format!("Відфільтровані пакети:\n {filtered} ({percentage} від загальної суми)") + } Language::ZH => { format!("目标数据包计数:\n {filtered} (占所有数据包的 {percentage})") } @@ -315,6 +344,9 @@ pub fn filtered_bytes_translation( Language::ES => format!("Bytes filtrados:\n {filtered} ({percentage} del total)"), Language::PL => format!("Przechwycone bajty:\n {filtered} ({percentage} całości)"), Language::DE => format!("Gefilterte Bytes:\n {filtered} ({percentage} der Gesamtzahl)"), + Language::UK => { + format!("Відфільтровані байти:\n {filtered} ({percentage} від загальної суми)") + } Language::ZH => { format!("目标网络流量计数:\n {filtered} (占所有网络流量的 {percentage})") } @@ -329,6 +361,7 @@ pub fn filtered_application_translation(language: Language) -> Text<'static> { Language::ES => "Paquetes filtrados por protocolo de aplicación:", Language::PL => "Przefiltrowane pakiety według protokołu aplikacji:", Language::DE => "Gefilterte Pakete je Anwendungs-Protokoll:", + Language::UK => "Відфільтровані пакети протоколу аплікації/програми:", Language::ZH => "按应用层协议分类的目标数据包计数:", }) } @@ -347,6 +380,8 @@ pub fn no_favorites_translation(language: Language) -> Text<'static> { Aby dodać połączenie do ulubionych, kliknij na ikonę 'gwiazdki' obok połączenia.", Language::DE => "Im Moment nichts zu zeigen.\n\ Um eine Verbindung zu deinen Favoriten hinzuzufügen, klick das auf das Stern-Symbol neben der Verbindung.", + Language::UK => "Немає, що показати в цей момент.\n\ + Щоб додати підключення до улюблених, натисни на іконку 'зірочки' біля підключення.", Language::ZH => "收藏夹还是空的.\n\ 小贴士: 点击连接右侧的小星星即可收藏到这里哦.", }) @@ -378,6 +413,10 @@ pub fn error_translation(language: Language, error: &str) -> Text<'static> { "Es ist ein Fehler aufgetreten! \n\n\ {error}" ), + Language::UK => format!( + "Виступила помилка! \n\n\ + {error}" + ), Language::ZH => format!( "发生了一些错误! \n\n\ {error}" @@ -393,6 +432,7 @@ pub fn both_translation(language: Language) -> &'static str { Language::ES => "ambos", Language::PL => "oba", Language::DE => "beide", + Language::UK => "обидва", Language::ZH => "皆需", } } @@ -416,6 +456,7 @@ pub fn all_translation(language: Language) -> &'static str { Language::ES => "Todos", Language::PL => "Wszystkie", Language::DE => "Alle", + Language::UK => "Усі", Language::ZH => "所有", } } @@ -428,6 +469,7 @@ pub fn packets_chart_translation(language: Language) -> &'static str { Language::ES => "paquetes por segundo", Language::PL => "pakiety na sekundę", Language::DE => "Pakete pro Sekunde", + Language::UK => "пакети на секунду", Language::ZH => "数据包", } } @@ -440,6 +482,7 @@ pub fn bytes_chart_translation(language: Language) -> &'static str { Language::ES => "bytes por segundo", Language::PL => "bajty na sekundę", Language::DE => "Bytes pro Sekunde", + Language::UK => "байти на секунду", Language::ZH => "网络流量", } } @@ -452,6 +495,7 @@ pub fn recent_report_translation(language: Language) -> &'static str { Language::ES => "más reciente", Language::PL => "najnowsze", Language::DE => "zuletzt", + Language::UK => "найновіші", Language::ZH => "按时间", } } @@ -464,6 +508,7 @@ pub fn packets_report_translation(language: Language) -> &'static str { Language::ES => "mayoría de los paquetes", Language::PL => "najwięcej pakietów", Language::DE => "meiste Pakete", + Language::UK => "найбільше пакетів", Language::ZH => "按数据包", } } @@ -476,6 +521,7 @@ pub fn bytes_report_translation(language: Language) -> &'static str { Language::ES => "mayoría de los bytes", Language::PL => "najwięcej bajtów", Language::DE => "meiste Bytes", + Language::UK => "найбільше байтів", Language::ZH => "按流量", } } @@ -488,6 +534,7 @@ pub fn favorite_report_translation(language: Language) -> &'static str { Language::ES => "favoritos", Language::PL => "ulubione", Language::DE => "Favoriten", + Language::UK => "улюблені", Language::ZH => "收藏夹", } } @@ -500,6 +547,7 @@ pub fn notifications_title_translation(language: Language) -> Text<'static> { Language::ES => "Personaliza tus notificaciones", Language::PL => "Dostosuj powiadomienia", Language::DE => "Personalisier deine Benachrichtigungen", + Language::UK => "Достосуй повідомлення", Language::ZH => "自定义通知", }) } @@ -512,6 +560,7 @@ pub fn appearance_title_translation(language: Language) -> Text<'static> { Language::ES => "Elige tu tema favorito", Language::PL => "Wybierz swój ulubiony motyw", Language::DE => "Wähl dein Lieblingsdesign", + Language::UK => "Вибери улюблену тему", Language::ZH => "选择您喜欢的主题", }) } @@ -524,6 +573,7 @@ pub fn languages_title_translation(language: Language) -> Text<'static> { Language::ES => "Selecciona tu idioma", Language::PL => "Wybierz język", Language::DE => "Stell deine Sprache ein", + Language::UK => "Вибери мову", Language::ZH => "选择显示语言", }) } @@ -536,6 +586,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { Language::ES => "Filtros activos:", Language::PL => "Aktywne filtry:", Language::DE => "Aktive Filter:", + Language::UK => "Активні фільтри:", Language::ZH => "活动的过滤器:", } } @@ -548,6 +599,7 @@ pub fn none_translation(language: Language) -> &'static str { Language::ES => "ninguno", Language::PL => "brak", Language::DE => "keine", + Language::UK => "бракує", Language::ZH => "无", } } @@ -560,6 +612,7 @@ pub fn yeti_night_translation(language: Language) -> &'static str { Language::ES => "Tema oscuro original de Sniffnet", Language::PL => "Oryginalny, ciemny motyw Sniffnet", Language::DE => "Sniffnets urspüngliches, dunkles Design", + Language::UK => "Оригінальний, темний мотив Sniffnet", Language::ZH => "Sniffnet暗黑", } } @@ -572,6 +625,7 @@ pub fn yeti_day_translation(language: Language) -> &'static str { Language::ES => "Tema claro original de Sniffnet", Language::PL => "Oryginalny, jasny motyw Sniffnet", Language::DE => "Sniffnets urspüngliches, helles Design", + Language::UK => "Оригінальний, світлий мотив Sniffnet", Language::ZH => "Sniffnet浅色", } } @@ -584,6 +638,7 @@ pub fn deep_sea_translation(language: Language) -> &'static str { Language::ES => "Para sumergirse en el tráfico de la red", Language::PL => "Aby zanurzyć się w ruchu sieciowym", Language::DE => "Um in den Netzwerkverkehr einzutauchen", + Language::UK => "Проаналізувати мережевий рух", Language::ZH => "潜入网络活动的海洋", } } @@ -596,6 +651,7 @@ pub fn mon_amour_translation(language: Language) -> &'static str { Language::ES => "Tema encantador hecho para soñadores", Language::PL => "Uroczy motyw stworzony dla marzycieli", Language::DE => "Liebevolles Design für Träumer", + Language::UK => "Прекрасна тема для мрійників", Language::ZH => "梦想家的主题", } } @@ -608,6 +664,7 @@ pub fn incoming_translation(language: Language) -> &'static str { Language::ES => "Entrante", Language::PL => "Przychodzące", Language::DE => "Ankommend", + Language::UK => "Вхідні", Language::ZH => "入站", } } @@ -620,6 +677,7 @@ pub fn outgoing_translation(language: Language) -> &'static str { Language::ES => "Saliente", Language::PL => "Wychodzące", Language::DE => "Ausgehend", + Language::UK => "Вихідні", Language::ZH => "出站", } } @@ -631,6 +689,7 @@ pub fn notifications_translation(language: Language) -> &'static str { Language::ES => "Notificaciones", Language::PL => "Powiadomienia", Language::DE => "Benachrichtigungen", + Language::UK => "Повідомлення", Language::ZH => "通知", } } @@ -642,6 +701,7 @@ pub fn style_translation(language: Language) -> &'static str { Language::ES => "Estilo", Language::PL => "Styl", Language::DE => "Stil", + Language::UK => "Стиль", Language::ZH => "主题", } } @@ -654,6 +714,7 @@ pub fn language_translation(language: Language) -> &'static str { Language::ES => "Idioma", Language::PL => "Język", Language::DE => "Sprache", + Language::UK => "Мова", Language::ZH => "语言", } } @@ -666,6 +727,7 @@ pub fn overview_translation(language: Language) -> &'static str { Language::ES => "Resumen", Language::PL => "Przegląd", Language::DE => "Übersicht", + Language::UK => "Огляд", Language::ZH => "概览", } } @@ -689,6 +751,7 @@ pub fn packets_threshold_translation(language: Language) -> &'static str { Language::ES => "Notificarme cuando se supere un límite de paquetes", Language::PL => "Powiadom mnie, gdy zostanie przekroczony próg pakietów", Language::DE => "Benachrichtige mich, wenn die Pakete eine Schwelle überschreiten", + Language::UK => "Повідом мене про переліміт пакетів", Language::ZH => "超过设定的数据包数量阈值时通知我", } } @@ -701,6 +764,7 @@ pub fn bytes_threshold_translation(language: Language) -> &'static str { Language::ES => "Notificarme cuando se exceda un límite de bytes", Language::PL => "Powiadom mnie, gdy zostanie przekroczony próg bajtów", Language::DE => "Benachrichtige mich, wenn die Bytes eine Schwelle überschreiten", + Language::UK => "Повідом мене про переліміт байтів", Language::ZH => "超过设定的网络流量阈值时通知我", } } @@ -713,6 +777,7 @@ pub fn per_second_translation(language: Language) -> &'static str { Language::ES => "(por segundo)", Language::PL => "(na sekundę)", Language::DE => "(pro Sekunde)", + Language::UK => "(на секунду)", Language::ZH => "(每秒) ", } } @@ -725,6 +790,7 @@ pub fn specify_multiples_translation(language: Language) -> &'static str { Language::ES => "; también puede especificar 'K', 'M' y 'G'", Language::PL => "; możesz również określić 'K', 'M' i 'G'", Language::DE => "; du kannst auch 'K', 'M' und 'G' festlegen", + Language::UK => "; можеш також вибрати 'K', 'M' i 'G'", Language::ZH => "您可指定 'K', 'M', 'G'", } } @@ -739,6 +805,7 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { Language::DE => { "Benachrichtige mich, wenn neue Daten mit meinen Favoriten ausgetauscht werden" } + Language::UK => "Повідом мене, коли буде обмін даними з моїх улюблених", Language::ZH => "收藏夹内的连接有新活动时通知我", } } @@ -751,6 +818,7 @@ pub fn threshold_translation(language: Language) -> 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(), } } @@ -761,6 +829,7 @@ pub fn volume_translation(language: Language, value: u8) -> String { Language::ES => format!("Volumen: {value:^3}%"), Language::PL => format!("Głośność: {value:^3}%"), Language::DE => format!("Lautstärke: {value:^3}%"), + Language::UK => format!("Гучність: {value:^3}%"), Language::ZH => format!("通知音量: {value:^3}%"), } } @@ -773,6 +842,7 @@ pub fn sound_translation(language: Language) -> &'static str { Language::ES => "Sonido:", Language::PL => "Dźwięk:", Language::DE => "Ton:", + Language::UK => "Звук:", Language::ZH => "通知音:", } } @@ -785,6 +855,7 @@ pub fn open_report_translation(language: Language) -> &'static str { Language::ES => "Abrir el informe completo", Language::PL => "Otwórz pełny raport", Language::DE => "Kompletten Bericht öffnen", + Language::UK => "Відкрий повний рапорт", Language::ZH => "打开完整报告", } } @@ -797,6 +868,7 @@ pub fn bytes_exceeded_translation(language: Language) -> &'static str { Language::ES => "¡Límite de bytes superado!", Language::PL => "Próg bajtów przekroczony!", Language::DE => "Byte-Schwellenwert überschritten!", + Language::UK => "Ліміт байтів перевищено!", Language::ZH => "达到设定的网络流量阈值!", } } @@ -810,6 +882,7 @@ pub fn bytes_exceeded_value_translation(language: Language, value: &str) -> Stri Language::ES => format!("{trimmed_value} byte/s han sido intercambiado/s"), Language::PL => format!("Wymieniono {trimmed_value} bajtów"), Language::DE => format!("{trimmed_value} Bytes wurden ausgetauscht"), + Language::UK => format!("{trimmed_value} байтів було обміняно"), Language::ZH => format!("已交换字节 {trimmed_value}"), } } @@ -822,6 +895,7 @@ pub fn packets_exceeded_translation(language: Language) -> &'static str { Language::ES => "¡Se ha superado el límite de paquetes!", Language::PL => "Próg pakietów przekroczony!", Language::DE => "Paket-Schwellenwert überschritten!", + Language::UK => "Ліміт пакетів перевищено!", Language::ZH => "达到设定的数据包数量阈值!", } } @@ -837,6 +911,7 @@ pub fn packets_exceeded_value_translation(language: Language, value: u32) -> Str Language::ES => format!("{value} paquete/s han sido intercambiado/s"), Language::PL => format!("Wymieniono {value} pakietów"), Language::DE => format!("{value} Pakete wurden ausgetauscht"), + Language::UK => format!("Обміняно {value} пакетів"), Language::ZH => format!("已交换数据包 {value}"), } } @@ -849,6 +924,7 @@ pub fn favorite_transmitted_translation(language: Language) -> &'static str { Language::ES => "¡Nuevos datos intercambiados de favoritos!", Language::PL => "Nowe dane wymienione z ulubionych!", Language::DE => "Neue Daten mit den Favoriten ausgetauscht!", + Language::UK => "Нові дані обміняно з улюблених!", Language::ZH => "收藏夹内的连接有新活动!", } } @@ -873,6 +949,9 @@ pub fn no_notifications_set_translation(language: Language) -> Text<'static> { Language::DE => "Benachrichtigungen wurden noch nicht aktiviert!\n\n\ Nachdem du sie aktiviert hast, wird diese Seite eine Liste deiner Benachrichtigungen anzeigen\n\n\ Du kannst die Benachrichtigungen in den Einstellungen aktivieren:", + Language::UK => "Повідомлення не активовані!\n\n\ + Після їх активації, на цій сторінці побачиш список своїх повідомлень\n\n\ + Можеш вимкнути повідомлення в налаштуваннях:", Language::ZH => "您还没有设定任何通知!\n\n\ 启用它们后,此页面将显示您的通知日志\n\n\ 您可以从设置中设定:", @@ -905,6 +984,10 @@ pub fn no_notifications_received_translation(language: Language) -> Text<'static "Im Moment nichts zu sehen...\n\n\ Wenn du eine Benachrichtigung erhälst, wird sie hier angezeigt" } + Language::UK => { + "Немає що показати в даний момент...\n\n\ + Коли отримаєш повідомлення, побачиш його тут" + } Language::ZH => { "还没有任何通知...\n\n\ 当您收到通知时,它会显示在这里" @@ -920,6 +1003,7 @@ pub fn only_last_30_translation(language: Language) -> &'static str { Language::ES => "Sólo se muestran las últimas 30 notificaciones", Language::PL => "Wyświetlane jest tylko 30 ostatnich powiadomień", Language::DE => "Nur die letzten 30 Benachrichtigungen werden angezeigt", + Language::UK => "Можеш побачити лише 30 останніх повідомлень", Language::ZH => "仅显示最近 30 条通知", } }