From ff3be8fe24f3a0c9945a7746d8eaa4ad8a535d9c Mon Sep 17 00:00:00 2001 From: Angelos Bousis <25039645+abousis@users.noreply.github.com> Date: Fri, 21 Apr 2023 17:49:50 +0300 Subject: [PATCH 1/6] Added Greek language. --- src/translations/translations.rs | 85 ++++++++++++++++++++++++++++++ src/translations/types/language.rs | 5 +- src/utils/countries.rs | 1 + 3 files changed, 90 insertions(+), 1 deletion(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index 67b3c600..c8f4cc2f 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -17,6 +17,7 @@ pub fn choose_adapters_translation(language: Language) -> Text<'static> { Language::TR => "İncelemek için bir ağ adaptörü seçiniz", Language::RU => "Выберите сетевой адаптер для инспекции", Language::PT => "Selecione o adaptador de rede a inspecionar", + Language::EL => "Επίλεξε τον προσαρμογέα δικτύου για επιθεώρηση" }) } @@ -35,6 +36,7 @@ pub fn application_protocol_translation(language: Language) -> &'static str { Language::TR => "Uygulama protokolü", Language::RU => "Прикладной протокол", Language::PT => "Protocolo de aplicação", + Language::EL => "Πρωτόκολλο εφαρμογής" } } @@ -53,6 +55,7 @@ pub fn select_filters_translation(language: Language) -> Text<'static> { Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz", Language::RU => "Выберите фильтры для применения к сетевому трафику", Language::PT => "Selecione os filtros a serem aplicados no tráfego de rede", + Language::EL => "Επίλεξε τα φίλτρα για εφαρμογή στην κίνηση του δικτύου" }) } @@ -68,6 +71,7 @@ pub fn start_translation(language: Language) -> &'static str { Language::TR => "Başla!", Language::RU => "Начать!", Language::PT => "Começar!", + Language::EL => "Ξεκίνα!" } } @@ -84,6 +88,7 @@ pub fn address_translation(language: Language) -> &'static str { Language::KO => "\n주소:", Language::RU => "\nАдрес:", Language::PT => "\nEndereço:", + Language::EL => "\nΔιεύθυνση:" } } @@ -102,6 +107,7 @@ pub fn addresses_translation(language: Language) -> &'static str { Language::TR => "\nAdresler:", Language::RU => "\nАдреса:", Language::PT => "\nEndereços:", + Language::EL => "\nΔιευθύνσεις:" } } @@ -120,6 +126,7 @@ pub fn ip_version_translation(language: Language) -> Text<'static> { Language::TR => "IP versiyonu", Language::RU => "Версия IP", Language::PT => "Versão de IP", + Language::EL => "Έκδοση IP" }) } @@ -137,6 +144,7 @@ pub fn transport_protocol_translation(language: Language) -> &'static str { Language::KO => "전송 프로토콜", Language::TR => "İletişim protokolü", Language::RU => "Транспортный протокол", + Language::EL => "Πρωτόκολλο μεταφοράς" } } @@ -155,6 +163,7 @@ pub fn traffic_rate_translation(language: Language) -> Text<'static> { Language::TR => "Trafik oranı:", Language::RU => "Cкорость трафика:", Language::PT => "Taxa de tráfego:", + Language::EL => "Ρυθμός κίνησης" }) } @@ -173,6 +182,7 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> { Language::TR => "İlgili bağlantılar:", Language::RU => "Важные подключения:", Language::PT => "Conexões relevantes:", + Language::EL => "Σχετικές συνδέσεις:" }) } @@ -191,6 +201,7 @@ pub fn settings_translation(language: Language) -> &'static str { Language::TR => "Ayarlar", Language::RU => "Настройки", Language::PT => "Configurações", + Language::EL => "Ρυθμίσεις" } } @@ -209,6 +220,7 @@ pub fn yes_translation(language: Language) -> Text<'static> { Language::TR => "Evet", Language::RU => "Да", Language::PT => "Sim", + Language::EL => "Ναι" }) } @@ -227,6 +239,7 @@ pub fn ask_quit_translation(language: Language) -> Text<'static> { Language::TR => "Bu analizden çıkmak istediğine emin misin?", Language::RU => "Вы уверены, что хотите выйти из текущего анализа?", Language::PT => "Tem a certeza que deseja sair desta análise?", + Language::EL => "Είσαι σίγουρος ότι θες να κλείσεις την ανάλυση;" }) } @@ -245,6 +258,7 @@ pub fn quit_analysis_translation(language: Language) -> String { Language::TR => "Analizden çık".to_string(), Language::RU => "Закончить анализ".to_string(), Language::PT => "Sair da análise".to_string(), + Language::EL => "Έξοδος ανάλυσης".to_string() } } @@ -263,6 +277,7 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static> { Language::TR => "Bildirimleri temizlemek istediğine emin misin?", Language::RU => "Вы уверены, что хотите удлить все уведомления?", Language::PT => "Tem a certeza que deseja eliminar as notificações?", + Language::EL => "Είσαι σίγουρος ότι θες να κάνεις εκκαθάριση των ειδοποιήσεων;" }) } @@ -281,6 +296,7 @@ pub fn clear_all_translation(language: Language) -> String { Language::TR => "Hepsini temizle".to_string(), Language::RU => "Очистить всё".to_string(), Language::PT => "Limpar tudo".to_string(), + Language::EL => "Εκκαθάριση όλων".to_string(), } } @@ -299,6 +315,7 @@ pub fn hide_translation(language: Language) -> &'static str { Language::TR => "Gizle", Language::RU => "Скрыть", Language::PT => "Esconder", + Language::EL => "Κρύψε" } } @@ -343,6 +360,9 @@ pub fn no_addresses_translation(language: Language, adapter: &str) -> Text<'stat Language::PT => format!("Não é possível observar tráfego porque o adaptador que selecionou não tem endereços ativos...\n\n\ Adaptador de rede: {adapter}\n\n\ Se tiver a certeza que está ligado à internet, tente escolher um adaptador diferente."), + Language::EL => format!("Δεν μπορεί να ανιχνευθεί κίνηση επειδή ο προσαρμογέας που επέλεξες δεν έχει ενεργές διευθύνσεις...\n\n\ + Προσαρμογέας δικτύου: {adapter}\n\n\ + Αν είσαι σίγουρος ότι είσαι συνδεδεμένος στο διαδίκτυο, δοκίμασε αν επιλέξεις έναν διαφορετικό προσαρμογέα."), }) } @@ -387,6 +407,10 @@ pub fn waiting_translation(language: Language, adapter: &str) -> Text<'static> { Language::PT => format!("Ainda não foi observado tráfego. Aguardando por pacotes...\n\n\ Adaptador de rede: {adapter}\n\n\ Tem a certeza de que está ligado à internet e selecionou o adaptador correto?"), + + Language::EL => format!("Δεν έχει παρατηρηθεί κίνηση μέχρι στιγμής. Ανέμενε για πακέτα δικτύου...\n\n\ + Προσαρμογέας δικτύου: {adapter}\n\n\ + Είσαι σίγουρος ότι είσαι συνδεδεμένος στο διαδίκτυο και ότι έχεις επιλέξει τον σωστό προσαρμογέα;"), }) } @@ -435,6 +459,10 @@ pub fn some_observed_translation( Language::PT => format!("Total de pacotes interceptados: {observed}\n\n\ Pacotes filtrados: 0\n\n\ Alguns pacotes foram interceptados, mas nenhum deles foi selecionado de acordo com os filtros especificados...\n\n{filters}"), + + Language::EL => format!("Συνολικά αναχαιτισμένα πακέτα: {observed}\n\n\ + Φιλτραρισμένα πακέτα: 0\n\n\ + Κάποια από τα πακέτα έχουν αναχαιτιστεί, αλλά κανένα ακόμη δεν έχει επιλεγεί σύμφωνα με τα φίλτρα που επέλεξες...\n\n{filters}"), }) } @@ -469,6 +497,7 @@ pub fn filtered_packets_translation( Language::PT => { format!("Pacotes filtrados:\n {filtered} ({percentage} do total)") } + Language::EL => format!("Φιλτραρισμένα πακέτα:\n {filtered} ({percentage} από τα συνολικά)"), }) } @@ -503,6 +532,7 @@ pub fn filtered_bytes_translation( Language::PT => { format!("Bytes filtrados:\n {filtered} ({percentage} do total)") } + Language::EL => format!("Φιλτραρισμένα bytes:\n {filtered} ({percentage} από τα συνολικά)"), }) } @@ -521,6 +551,7 @@ pub fn filtered_application_translation(language: Language) -> Text<'static> { Language::TR => "Uygulama protokolü bazında filtrelenen paketler:", Language::RU => "Отфильтровано пакетов прикладного протокола:", Language::PT => "Pacotes filtrados por protocolo de aplicação:", + Language::EL => "Φιλτραρισμένα πακέτα ανά πρωτόκολλο εφαρμογής:", }) } @@ -552,6 +583,8 @@ pub fn no_favorites_translation(language: Language) -> Text<'static> { Для добавления соединения в избранные, нажмите на символ звезды возле соединения.", Language::PT => "Nada para mostrar de momento.\n\ Para adicionar uma conexão aos seus favoritos, clique na estrela perto da conexão.", + Language::EL => "Δεν υπάρχει κάτι για απεικόνιση.\n\ + Για να προσθέσεις μια σύνδεση στα αγαπημένα σου, κλίκαρε στο σύμβολο με τον αστερίσκο δίπλα στη σύνδεση.", }) } @@ -609,6 +642,10 @@ pub fn error_translation(language: Language, error: &str) -> Text<'static> { "Ocorreu um erro! \n\n\ {error}" ), + Language::EL => format!( + "Κάποιο σφάλμα συνέβη! \n\n\ + {error}" + ), }) } @@ -626,6 +663,7 @@ pub fn both_translation(language: Language) -> &'static str { Language::KO => "둘다", Language::TR => "ikiside", Language::RU => "оба", + Language::EL => "αμφότερα", } } @@ -655,6 +693,7 @@ pub fn all_translation(language: Language) -> &'static str { Language::KO => "모두", Language::TR => "Hepsi", Language::RU => "Всё", + Language::EL => "Όλα" } } @@ -673,6 +712,7 @@ pub fn packets_chart_translation(language: Language) -> &'static str { Language::TR => "saniye başı paket", Language::RU => "пакектов в секунду", Language::PT => "pacotes por segundo", + Language::EL => "πακέτα ανά δευτερόλεπτο" } } @@ -690,6 +730,7 @@ pub fn bytes_chart_translation(language: Language) -> &'static str { Language::KO => "초당 바이트", Language::TR => "saniye başı bayt", Language::RU => "байтов в секунду", + Language::EL => "bytes ανά δευτερόλεπτο" } } @@ -708,6 +749,7 @@ pub fn recent_report_translation(language: Language) -> &'static str { Language::TR => "en son", Language::RU => "новейшие", Language::PT => "mais recente", + Language::EL => "πιο πρόσφατα" } } @@ -726,6 +768,7 @@ pub fn packets_report_translation(language: Language) -> &'static str { Language::TR => "en çok paket", Language::RU => "больше всего пакетов", Language::PT => "mais pacotes", + Language::EL => "περισσότερα πακέτα" } } @@ -744,6 +787,7 @@ pub fn bytes_report_translation(language: Language) -> &'static str { Language::TR => "en çok bayt", Language::RU => "больше всего байт", Language::PT => "mais bytes", + Language::EL => "περισσότερα bytes" } } @@ -761,6 +805,7 @@ pub fn favorite_report_translation(language: Language) -> &'static str { Language::KO => "즐겨찾기", Language::TR => "favoriler", Language::RU => "избранное", + Language::EL => "αγαπημένα" } } @@ -779,6 +824,7 @@ pub fn notifications_title_translation(language: Language) -> Text<'static> { Language::TR => "Bildirimlerinizi özelleştirin", Language::RU => "Настройка уведомлений", Language::PT => "Personalize as suas notificações", + Language::EL => "Εξατομίκευση ειδοποιήσεων" }) } @@ -797,6 +843,7 @@ pub fn appearance_title_translation(language: Language) -> Text<'static> { Language::TR => "Favori temanızı seçin", Language::RU => "Выберите предпочительную тему", Language::PT => "Escolha o seu tema favorito", + Language::EL => "Επίλεξε το αγαπημένο σου θέμα" }) } @@ -815,6 +862,7 @@ pub fn languages_title_translation(language: Language) -> Text<'static> { Language::TR => "Dilinizi seçin", Language::RU => "Выберите язык", Language::PT => "Selecione o seu idioma", + Language::EL => "Επίλεξε τη γλώσσα σου" }) } @@ -833,6 +881,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { Language::TR => "Aktif filtreler:", Language::RU => "Выбранные фильтры:", Language::PT => "Filtros ativos:", + Language::EL => "Ενεργά φίλτρα:" } } @@ -851,6 +900,7 @@ pub fn none_translation(language: Language) -> &'static str { Language::TR => "hiç biri", Language::RU => "не выбран", Language::PT => "nenhum", + Language::EL => "κανένα" } } @@ -869,6 +919,7 @@ pub fn yeti_night_translation(language: Language) -> &'static str { Language::TR => "Sniffnet'in orjinal koyu teması", Language::RU => "Оригинальная тёмная тема Sniffnet'а", Language::PT => "Tema escuro original de Sniffnet", + Language::EL => "Το αυθεντικό σκούρο θέμα του Sniffnet" } } @@ -886,6 +937,7 @@ pub fn yeti_day_translation(language: Language) -> &'static str { Language::KO => "Sniffnet의 기본 라이트테마", Language::TR => "Sniffnet'in orjinal açık teması", Language::RU => "Оригинальная светая тема Sniffnet'а", + Language::EL => "Το αυθεντικό ανοιχτόχρωμο θέμα του Sniffnet" } } @@ -904,6 +956,7 @@ pub fn deep_sea_translation(language: Language) -> &'static str { Language::TR => "Ağ trafiğine dalmak", Language::RU => "Для погружения в сетевой трафик", Language::PT => "Para mergulhar no tráfego de rede", + Language::EL => "Βουτιά μέσα στην κίνηση του δικτύου" } } @@ -922,6 +975,7 @@ pub fn mon_amour_translation(language: Language) -> &'static str { Language::TR => "Hayal perestler için yapılmış güzel tema", Language::RU => "Милая тема для мечтателей", Language::PT => "Tema encantador feito para sonhadores", + Language::EL => "Όμορφο θέμα φτιαγμένο για ονειροπόλους" } } @@ -940,6 +994,7 @@ pub fn incoming_translation(language: Language) -> &'static str { Language::TR => "Gelen", Language::RU => "Входящий", Language::PT => "Entrando", + Language::EL => "Εισερχόμενα" } } @@ -958,6 +1013,7 @@ pub fn outgoing_translation(language: Language) -> &'static str { Language::TR => "Giden", Language::RU => "Исходящий", Language::PT => "Saindo", + Language::EL => "Εξερχόμενα" } } @@ -975,6 +1031,7 @@ pub fn notifications_translation(language: Language) -> &'static str { Language::TR => "Bildirimler", Language::RU => "Уведомления", Language::PT => "Notificações", + Language::EL => "Ειδοποιήσεις" } } @@ -988,6 +1045,7 @@ pub fn style_translation(language: Language) -> &'static str { Language::UK | Language::RU => "Стиль", Language::ZH => "主题", Language::KO => "스타일", + Language::EL => "Στυλ" } } @@ -1006,6 +1064,7 @@ pub fn language_translation(language: Language) -> &'static str { Language::TR => "Dil", Language::RU => "Язык", Language::PT => "Língua", + Language::EL => "Γλώσσα" } } @@ -1024,6 +1083,7 @@ pub fn overview_translation(language: Language) -> &'static str { Language::TR => "Ön izleme", Language::RU => "Обзор", Language::PT => "Visão geral", + Language::EL => "επισκόπηση" } } @@ -1054,6 +1114,7 @@ pub fn packets_threshold_translation(language: Language) -> &'static str { Language::TR => "Paket eşiği aşıldığında beni bilgilendir", Language::RU => "Уведомить, когда порог по частоте пакетов превышен", Language::PT => "Notifique-me quando um limite de pacotes for excedido", + Language::EL => "Ειδοποίησέ με όταν το όριο τον πακέτων ξεπεραστεί" } } @@ -1072,6 +1133,7 @@ pub fn bytes_threshold_translation(language: Language) -> &'static str { Language::TR => "Bayt eşiği aşıldığında beni bilgilendir", Language::RU => "Уведомить, когда порог по полосе в байтах превышен", Language::PT => "Notifique-me quando um limite de bytes for excedido", + Language::EL => "Ειδοποίησέ με όταν το όριο των bytes ξεπεραστεί" } } @@ -1089,6 +1151,7 @@ pub fn per_second_translation(language: Language) -> &'static str { Language::KO => "(초당)", Language::TR => "(her saniye)", Language::RU => "(в секунду)", + Language::EL => "(ανά δευτερόλεπτο)" } } @@ -1107,6 +1170,7 @@ pub fn specify_multiples_translation(language: Language) -> &'static str { Language::TR => "; şunları da kullanabilirsin 'K', 'M' ve 'G'", Language::RU => "; Так же можно указать 'K', 'M' или 'G'", Language::PT => "; também pode especificar 'K', 'M' e 'G'", + Language::EL => "• μπορείς επίσης να διαλέξεις ένα από τα 'K', 'M' και 'G'", } } @@ -1127,6 +1191,7 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { Language::TR => "Favorilerimde veri akışı olduğunda beni uyar", Language::RU => "Уведомить, если произошёл обмен данными в соединениях из избранного", Language::PT => "Notificar-me quando novos dados forem trocados dos meus favoritos", + Language::EL => "Ειδοποίησέ με όταν νέα δεδομένα έχουν εισαχθεί στα αγαπημένα μου", } } @@ -1145,6 +1210,7 @@ pub fn threshold_translation(language: Language) -> String { Language::TR => "Eşik: ".to_string(), Language::RU => "Порог: ".to_string(), Language::PT => "Limite: ".to_string(), + Language::EL => "Όριο:".to_string(), } } @@ -1160,6 +1226,7 @@ pub fn volume_translation(language: Language, value: u8) -> String { Language::KO => format!("볼륨: {value:^3}%"), Language::TR => format!("Ses: {value:^3}%"), Language::RU => format!("Объём: {value:^3}%"), + Language::EL => format!("Ένταση: {value:^3}%") } } @@ -1177,6 +1244,7 @@ pub fn sound_translation(language: Language) -> &'static str { Language::KO => "사운드:", Language::TR => "Ses:", Language::PT => "Som:", + Language::EL => "Ήχος:" } } @@ -1195,6 +1263,7 @@ pub fn open_report_translation(language: Language) -> &'static str { Language::TR => "Tam raporu aç", Language::RU => "Открыть полный отчёт", Language::PT => "Abrir relatório completo", + Language::EL => "Άνοιγμα της πλήρους αναφοράς" } } @@ -1213,6 +1282,7 @@ pub fn bytes_exceeded_translation(language: Language) -> &'static str { Language::TR => "Bayt eşik değeri aşıldı!", Language::RU => "Порог в байтах превышен!", Language::PT => "Limite de bytes excedido!", + Language::EL => "Το όριο των bytes ξεπεράστηκε!" } } @@ -1232,6 +1302,7 @@ pub fn bytes_exceeded_value_translation(language: Language, value: &str) -> Stri Language::TR => format!("{trimmed_value} bayt aktarıldı"), Language::RU => format!("{trimmed_value} байт обмена информацией"), Language::PT => format!("Foram trocados {trimmed_value} bytes"), + Language::EL => format!("{trimmed_value} bytes έχουν ανταλλαγεί"), } } @@ -1250,6 +1321,7 @@ pub fn packets_exceeded_translation(language: Language) -> &'static str { Language::TR => "Paket eşik değeri aşıldı!", Language::RU => "Порог по числу пакетов превышен!", Language::PT => "Limite de pacotes excedido!", + Language::EL => "Το όριο των πακέτων ξεπεράσθηκε!", } } @@ -1280,6 +1352,10 @@ pub fn packets_exceeded_value_translation(language: Language, value: u32) -> Str 1 => "Foi trocado 1 pacote".to_owned(), npackets => format!("Foram trocados {npackets} pacotes"), }, + Language::EL => match value { + 1 => "1 πακέτο έχει ανταλλαγεί".to_owned(), + npackets => format!("{npackets} πακέτα έχουν ανταλλαγεί"), + }, } } @@ -1298,6 +1374,7 @@ pub fn favorite_transmitted_translation(language: Language) -> &'static str { Language::TR => "Favorilerden yeni veri aktarıldı!", Language::RU => "Новый обмен данными в избранных соедиениях!", Language::PT => "Novos dados trocados dos favoritos!", + Language::EL => "Καινούρια δεδομένα έχουν εισαχθεί στα αγαπημένα!", } } @@ -1342,6 +1419,9 @@ pub fn no_notifications_set_translation(language: Language) -> Text<'static> { Language::PT => "Ainda não ativou as notificações!\n\n\ Depois de ativá-las, esta página irá mostrar um registo das suas notificações\n\n\ Pode ativar as notificações nas definições:", + Language::EL => "Δεν έχεις ενεργοποιήσει τις ειδοποιήσεις ακόμη!\n\n\ + Αφότου τις ενεργοποιήσεις, αυτή η σελίδα θα απεικονίσει μια καταγραφή των ειδοποιήσεών σου\n\n\ + Μπορείς να ενεργοποιήσεις τις ειδοποιήσεις από τις ρυθμίσεις:", }) } @@ -1399,6 +1479,10 @@ pub fn no_notifications_received_translation(language: Language) -> Text<'static "Nada para ver neste momento...\n\n\ Quando receber uma notificação, ela será mostrada aqui" } + Language::EL => { + "Δεν υπάρχει κάτι για απεικόνιση αυτή τη στιγμή...\n\n\ + Όταν λάβεις μια ειδοποίηση, αυτή θα εμφανιστεί εδώ" + } }) } @@ -1417,5 +1501,6 @@ pub fn only_last_30_translation(language: Language) -> &'static str { Language::TR => "Sadece son 30 bildirim gösterilmektedir", Language::RU => "Тут показываются только последние 30 уведомлений", Language::PT => "São mostradas apenas as últimas 30 notificações", + Language::EL => "Μόνο οι τελευταίες 30 ειδοποιήσεις απεικονίζονται", } } diff --git a/src/translations/types/language.rs b/src/translations/types/language.rs index 692fa63a..104373ab 100644 --- a/src/translations/types/language.rs +++ b/src/translations/types/language.rs @@ -29,6 +29,8 @@ pub enum Language { TR, /// Russian RU, + /// Greek + EL } impl Default for Language { @@ -45,7 +47,7 @@ impl Language { Language::RU, Language::ZH, ]; - pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::PT, Language::TR]; + pub(crate) const COL2: [Language; 5] = [Language::DE, Language::IT, Language::PT, Language::TR, Language::EL]; pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::RO, Language::UK]; pub fn get_radio_label(&self) -> &str { @@ -63,6 +65,7 @@ impl Language { Language::TR => "Türkçe", Language::RU => "Русский", Language::PT => "Português", + Language::EL => "Ελληνικά" } } } diff --git a/src/utils/countries.rs b/src/utils/countries.rs index 0f4f395f..5376c797 100644 --- a/src/utils/countries.rs +++ b/src/utils/countries.rs @@ -520,6 +520,7 @@ pub fn get_flag_from_language_code(language: &str) -> Image { "RU" => RU, "TR" => TR, "UK" => UA, + "EL" => GR, _ => UNKNOWN, }))) .width(Length::Fixed(FLAGS_WIDTH)) From dc49d054ab7a5eeec4e107c4ca487cd0b2d824f2 Mon Sep 17 00:00:00 2001 From: Angelos Bousis <25039645+abousis@users.noreply.github.com> Date: Fri, 21 Apr 2023 18:39:09 +0300 Subject: [PATCH 2/6] Improved Greek translation. --- src/translations/translations.rs | 10 ++++------ src/translations/translations_2.rs | 1 + 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index c8f4cc2f..a6e7febc 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -407,7 +407,6 @@ pub fn waiting_translation(language: Language, adapter: &str) -> Text<'static> { Language::PT => format!("Ainda não foi observado tráfego. Aguardando por pacotes...\n\n\ Adaptador de rede: {adapter}\n\n\ Tem a certeza de que está ligado à internet e selecionou o adaptador correto?"), - Language::EL => format!("Δεν έχει παρατηρηθεί κίνηση μέχρι στιγμής. Ανέμενε για πακέτα δικτύου...\n\n\ Προσαρμογέας δικτύου: {adapter}\n\n\ Είσαι σίγουρος ότι είσαι συνδεδεμένος στο διαδίκτυο και ότι έχεις επιλέξει τον σωστό προσαρμογέα;"), @@ -459,7 +458,6 @@ pub fn some_observed_translation( Language::PT => format!("Total de pacotes interceptados: {observed}\n\n\ Pacotes filtrados: 0\n\n\ Alguns pacotes foram interceptados, mas nenhum deles foi selecionado de acordo com os filtros especificados...\n\n{filters}"), - Language::EL => format!("Συνολικά αναχαιτισμένα πακέτα: {observed}\n\n\ Φιλτραρισμένα πακέτα: 0\n\n\ Κάποια από τα πακέτα έχουν αναχαιτιστεί, αλλά κανένα ακόμη δεν έχει επιλεγεί σύμφωνα με τα φίλτρα που επέλεξες...\n\n{filters}"), @@ -584,7 +582,7 @@ pub fn no_favorites_translation(language: Language) -> Text<'static> { Language::PT => "Nada para mostrar de momento.\n\ Para adicionar uma conexão aos seus favoritos, clique na estrela perto da conexão.", Language::EL => "Δεν υπάρχει κάτι για απεικόνιση.\n\ - Για να προσθέσεις μια σύνδεση στα αγαπημένα σου, κλίκαρε στο σύμβολο με τον αστερίσκο δίπλα στη σύνδεση.", + Για να προσθέσεις μια σύνδεση στα αγαπημένα σου, κλίκαρε στο σύμβολο με το αστέρι δίπλα στη σύνδεση.", }) } @@ -1170,7 +1168,7 @@ pub fn specify_multiples_translation(language: Language) -> &'static str { Language::TR => "; şunları da kullanabilirsin 'K', 'M' ve 'G'", Language::RU => "; Так же можно указать 'K', 'M' или 'G'", Language::PT => "; também pode especificar 'K', 'M' e 'G'", - Language::EL => "• μπορείς επίσης να διαλέξεις ένα από τα 'K', 'M' και 'G'", + Language::EL => "• μπορείς επίσης να καθορίσεις τα 'K', 'M' και 'G'", } } @@ -1191,7 +1189,7 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { Language::TR => "Favorilerimde veri akışı olduğunda beni uyar", Language::RU => "Уведомить, если произошёл обмен данными в соединениях из избранного", Language::PT => "Notificar-me quando novos dados forem trocados dos meus favoritos", - Language::EL => "Ειδοποίησέ με όταν νέα δεδομένα έχουν εισαχθεί στα αγαπημένα μου", + Language::EL => "Ειδοποίησέ με όταν νέα δεδομένα έχουν ανταλλαγεί από τα αγαπημένα μου", } } @@ -1374,7 +1372,7 @@ pub fn favorite_transmitted_translation(language: Language) -> &'static str { Language::TR => "Favorilerden yeni veri aktarıldı!", Language::RU => "Новый обмен данными в избранных соедиениях!", Language::PT => "Novos dados trocados dos favoritos!", - Language::EL => "Καινούρια δεδομένα έχουν εισαχθεί στα αγαπημένα!", + Language::EL => "Καινούρια δεδομένα έχουν ανταλλαγεί στα αγαπημένα!", } } diff --git a/src/translations/translations_2.rs b/src/translations/translations_2.rs index fc467fc4..6f49b169 100644 --- a/src/translations/translations_2.rs +++ b/src/translations/translations_2.rs @@ -7,6 +7,7 @@ pub fn new_version_available_translation(language: Language) -> &'static str { Language::EN => "A newer version is available on GitHub", Language::IT => "Una versione più recente è disponibile su GitHub", Language::RU => "Новая версия доступна на GitHub", + Language::EL => "Μια νεότερη έκδοση είναι διαθέσιμη στο GitHub", _ => "A newer version is available on GitHub", } } From e3f1eb383c0999643ba95763c2208d90c8e8cb3d Mon Sep 17 00:00:00 2001 From: Giuliano Bellini s294739 Date: Fri, 21 Apr 2023 18:50:21 +0200 Subject: [PATCH 3/6] fixes to greek translations and added greek characters --- resources/fonts/full/subset_characters.txt | 51 +++++++++ .../subset/sarasa-mono-sc-bold.subset.ttf | Bin 105060 -> 110012 bytes .../subset/sarasa-mono-sc-regular.subset.ttf | Bin 106336 -> 111268 bytes src/gui/pages/settings_style_page.rs | 6 +- src/translations/translations.rs | 100 +++++++++--------- src/translations/types/language.rs | 14 ++- 6 files changed, 116 insertions(+), 55 deletions(-) diff --git a/resources/fonts/full/subset_characters.txt b/resources/fonts/full/subset_characters.txt index 04138b46..8010bc27 100644 --- a/resources/fonts/full/subset_characters.txt +++ b/resources/fonts/full/subset_characters.txt @@ -136,6 +136,56 @@ z Ș ș ț +Ά +Έ +Ή +Ό +Α +Β +Γ +Δ +Ε +Κ +Μ +Ν +Ξ +Π +Ρ +Σ +Τ +Φ +ά +έ +ή +ί +α +β +γ +δ +ε +ζ +η +θ +ι +κ +λ +μ +ν +ξ +ο +π +ρ +ς +σ +τ +υ +φ +χ +ψ +ω +ό +ύ +ώ А В Г @@ -194,6 +244,7 @@ z є і ї +• ⏎ ❤ 一 diff --git a/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf b/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf index 226a73cb577d06bd301320c94e109f2ac6439181..d6856f54f49263db24e800944d11d1803aeab014 100644 GIT binary patch delta 9792 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 delta 5420 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 AW&i*H diff --git a/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf b/resources/fonts/subset/sarasa-mono-sc-regular.subset.ttf index f7aae9f6c4fcd05bd02776a57a2bd28fb77c7e61..7dce78fe107af43b2483e7c17a809bf9320ea62b 100644 GIT binary patch delta 9698 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 diff --git a/src/gui/pages/settings_style_page.rs b/src/gui/pages/settings_style_page.rs index d11fd309..278564a0 100644 --- a/src/gui/pages/settings_style_page.rs +++ b/src/gui/pages/settings_style_page.rs @@ -57,7 +57,7 @@ pub fn settings_style_page(sniffer: &Sniffer) -> Container { yeti_night_translation(sniffer.language).to_string(), Night, )) - .push(horizontal_space(Length::Fixed(33.0))) + .push(horizontal_space(Length::Fixed(15.0))) .push(get_palette_container( sniffer.style, YETI_DAY, @@ -76,7 +76,7 @@ pub fn settings_style_page(sniffer: &Sniffer) -> Container { deep_sea_translation(sniffer.language).to_string(), DeepSea, )) - .push(horizontal_space(Length::Fixed(33.0))) + .push(horizontal_space(Length::Fixed(15.0))) .push(get_palette_container( sniffer.style, MON_AMOUR, @@ -112,7 +112,7 @@ fn get_palette_container( Button::new(content) .height(Length::Fixed(130.0)) - .width(Length::Fixed(360.0)) + .width(Length::Fixed(380.0)) .padding(5) .style( StyleTuple( diff --git a/src/translations/translations.rs b/src/translations/translations.rs index a6e7febc..69397dce 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -17,7 +17,7 @@ pub fn choose_adapters_translation(language: Language) -> Text<'static> { Language::TR => "İncelemek için bir ağ adaptörü seçiniz", Language::RU => "Выберите сетевой адаптер для инспекции", Language::PT => "Selecione o adaptador de rede a inspecionar", - Language::EL => "Επίλεξε τον προσαρμογέα δικτύου για επιθεώρηση" + Language::EL => "Επίλεξε τον προσαρμογέα δικτύου για επιθεώρηση", }) } @@ -36,7 +36,7 @@ pub fn application_protocol_translation(language: Language) -> &'static str { Language::TR => "Uygulama protokolü", Language::RU => "Прикладной протокол", Language::PT => "Protocolo de aplicação", - Language::EL => "Πρωτόκολλο εφαρμογής" + Language::EL => "Πρωτόκολλο εφαρμογής", } } @@ -55,7 +55,7 @@ pub fn select_filters_translation(language: Language) -> Text<'static> { Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz", Language::RU => "Выберите фильтры для применения к сетевому трафику", Language::PT => "Selecione os filtros a serem aplicados no tráfego de rede", - Language::EL => "Επίλεξε τα φίλτρα για εφαρμογή στην κίνηση του δικτύου" + Language::EL => "Επίλεξε τα φίλτρα για εφαρμογή στην κίνηση του δικτύου", }) } @@ -71,7 +71,7 @@ pub fn start_translation(language: Language) -> &'static str { Language::TR => "Başla!", Language::RU => "Начать!", Language::PT => "Começar!", - Language::EL => "Ξεκίνα!" + Language::EL => "Ξεκίνα!", } } @@ -88,7 +88,7 @@ pub fn address_translation(language: Language) -> &'static str { Language::KO => "\n주소:", Language::RU => "\nАдрес:", Language::PT => "\nEndereço:", - Language::EL => "\nΔιεύθυνση:" + Language::EL => "\nΔιεύθυνση:", } } @@ -107,7 +107,7 @@ pub fn addresses_translation(language: Language) -> &'static str { Language::TR => "\nAdresler:", Language::RU => "\nАдреса:", Language::PT => "\nEndereços:", - Language::EL => "\nΔιευθύνσεις:" + Language::EL => "\nΔιευθύνσεις:", } } @@ -126,7 +126,7 @@ pub fn ip_version_translation(language: Language) -> Text<'static> { Language::TR => "IP versiyonu", Language::RU => "Версия IP", Language::PT => "Versão de IP", - Language::EL => "Έκδοση IP" + Language::EL => "Έκδοση IP", }) } @@ -144,7 +144,7 @@ pub fn transport_protocol_translation(language: Language) -> &'static str { Language::KO => "전송 프로토콜", Language::TR => "İletişim protokolü", Language::RU => "Транспортный протокол", - Language::EL => "Πρωτόκολλο μεταφοράς" + Language::EL => "Πρωτόκολλο μεταφοράς", } } @@ -163,7 +163,7 @@ pub fn traffic_rate_translation(language: Language) -> Text<'static> { Language::TR => "Trafik oranı:", Language::RU => "Cкорость трафика:", Language::PT => "Taxa de tráfego:", - Language::EL => "Ρυθμός κίνησης" + Language::EL => "Ρυθμός κίνησης:", }) } @@ -182,7 +182,7 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> { Language::TR => "İlgili bağlantılar:", Language::RU => "Важные подключения:", Language::PT => "Conexões relevantes:", - Language::EL => "Σχετικές συνδέσεις:" + Language::EL => "Σχετικές συνδέσεις:", }) } @@ -201,7 +201,7 @@ pub fn settings_translation(language: Language) -> &'static str { Language::TR => "Ayarlar", Language::RU => "Настройки", Language::PT => "Configurações", - Language::EL => "Ρυθμίσεις" + Language::EL => "Ρυθμίσεις", } } @@ -220,7 +220,7 @@ pub fn yes_translation(language: Language) -> Text<'static> { Language::TR => "Evet", Language::RU => "Да", Language::PT => "Sim", - Language::EL => "Ναι" + Language::EL => "Ναι", }) } @@ -239,7 +239,7 @@ pub fn ask_quit_translation(language: Language) -> Text<'static> { Language::TR => "Bu analizden çıkmak istediğine emin misin?", Language::RU => "Вы уверены, что хотите выйти из текущего анализа?", Language::PT => "Tem a certeza que deseja sair desta análise?", - Language::EL => "Είσαι σίγουρος ότι θες να κλείσεις την ανάλυση;" + Language::EL => "Είσαι σίγουρος ότι θες να κλείσεις την ανάλυση;", }) } @@ -258,7 +258,7 @@ pub fn quit_analysis_translation(language: Language) -> String { Language::TR => "Analizden çık".to_string(), Language::RU => "Закончить анализ".to_string(), Language::PT => "Sair da análise".to_string(), - Language::EL => "Έξοδος ανάλυσης".to_string() + Language::EL => "Έξοδος ανάλυσης".to_string(), } } @@ -277,7 +277,7 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static> { Language::TR => "Bildirimleri temizlemek istediğine emin misin?", Language::RU => "Вы уверены, что хотите удлить все уведомления?", Language::PT => "Tem a certeza que deseja eliminar as notificações?", - Language::EL => "Είσαι σίγουρος ότι θες να κάνεις εκκαθάριση των ειδοποιήσεων;" + Language::EL => "Είσαι σίγουρος ότι θες να κάνεις εκκαθάριση των ειδοποιήσεων;", }) } @@ -315,7 +315,7 @@ pub fn hide_translation(language: Language) -> &'static str { Language::TR => "Gizle", Language::RU => "Скрыть", Language::PT => "Esconder", - Language::EL => "Κρύψε" + Language::EL => "Κρύψε", } } @@ -495,7 +495,9 @@ pub fn filtered_packets_translation( Language::PT => { format!("Pacotes filtrados:\n {filtered} ({percentage} do total)") } - Language::EL => format!("Φιλτραρισμένα πακέτα:\n {filtered} ({percentage} από τα συνολικά)"), + Language::EL => { + format!("Φιλτραρισμένα πακέτα:\n {filtered} ({percentage} από τα συνολικά)") + } }) } @@ -530,7 +532,9 @@ pub fn filtered_bytes_translation( Language::PT => { format!("Bytes filtrados:\n {filtered} ({percentage} do total)") } - Language::EL => format!("Φιλτραρισμένα bytes:\n {filtered} ({percentage} από τα συνολικά)"), + Language::EL => { + format!("Φιλτραρισμένα bytes:\n {filtered} ({percentage} από τα συνολικά)") + } }) } @@ -691,7 +695,7 @@ pub fn all_translation(language: Language) -> &'static str { Language::KO => "모두", Language::TR => "Hepsi", Language::RU => "Всё", - Language::EL => "Όλα" + Language::EL => "Όλα", } } @@ -710,7 +714,7 @@ pub fn packets_chart_translation(language: Language) -> &'static str { Language::TR => "saniye başı paket", Language::RU => "пакектов в секунду", Language::PT => "pacotes por segundo", - Language::EL => "πακέτα ανά δευτερόλεπτο" + Language::EL => "πακέτα ανά δευτερόλεπτο", } } @@ -728,7 +732,7 @@ pub fn bytes_chart_translation(language: Language) -> &'static str { Language::KO => "초당 바이트", Language::TR => "saniye başı bayt", Language::RU => "байтов в секунду", - Language::EL => "bytes ανά δευτερόλεπτο" + Language::EL => "bytes ανά δευτερόλεπτο", } } @@ -747,7 +751,7 @@ pub fn recent_report_translation(language: Language) -> &'static str { Language::TR => "en son", Language::RU => "новейшие", Language::PT => "mais recente", - Language::EL => "πιο πρόσφατα" + Language::EL => "πιο πρόσφατα", } } @@ -766,7 +770,7 @@ pub fn packets_report_translation(language: Language) -> &'static str { Language::TR => "en çok paket", Language::RU => "больше всего пакетов", Language::PT => "mais pacotes", - Language::EL => "περισσότερα πακέτα" + Language::EL => "περισσότερα πακέτα", } } @@ -785,7 +789,7 @@ pub fn bytes_report_translation(language: Language) -> &'static str { Language::TR => "en çok bayt", Language::RU => "больше всего байт", Language::PT => "mais bytes", - Language::EL => "περισσότερα bytes" + Language::EL => "περισσότερα bytes", } } @@ -803,7 +807,7 @@ pub fn favorite_report_translation(language: Language) -> &'static str { Language::KO => "즐겨찾기", Language::TR => "favoriler", Language::RU => "избранное", - Language::EL => "αγαπημένα" + Language::EL => "αγαπημένα", } } @@ -822,7 +826,7 @@ pub fn notifications_title_translation(language: Language) -> Text<'static> { Language::TR => "Bildirimlerinizi özelleştirin", Language::RU => "Настройка уведомлений", Language::PT => "Personalize as suas notificações", - Language::EL => "Εξατομίκευση ειδοποιήσεων" + Language::EL => "Εξατομίκευση ειδοποιήσεων", }) } @@ -841,7 +845,7 @@ pub fn appearance_title_translation(language: Language) -> Text<'static> { Language::TR => "Favori temanızı seçin", Language::RU => "Выберите предпочительную тему", Language::PT => "Escolha o seu tema favorito", - Language::EL => "Επίλεξε το αγαπημένο σου θέμα" + Language::EL => "Επίλεξε το αγαπημένο σου θέμα", }) } @@ -860,7 +864,7 @@ pub fn languages_title_translation(language: Language) -> Text<'static> { Language::TR => "Dilinizi seçin", Language::RU => "Выберите язык", Language::PT => "Selecione o seu idioma", - Language::EL => "Επίλεξε τη γλώσσα σου" + Language::EL => "Επίλεξε τη γλώσσα σου", }) } @@ -879,7 +883,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { Language::TR => "Aktif filtreler:", Language::RU => "Выбранные фильтры:", Language::PT => "Filtros ativos:", - Language::EL => "Ενεργά φίλτρα:" + Language::EL => "Ενεργά φίλτρα:", } } @@ -898,7 +902,7 @@ pub fn none_translation(language: Language) -> &'static str { Language::TR => "hiç biri", Language::RU => "не выбран", Language::PT => "nenhum", - Language::EL => "κανένα" + Language::EL => "κανένα", } } @@ -917,7 +921,7 @@ pub fn yeti_night_translation(language: Language) -> &'static str { Language::TR => "Sniffnet'in orjinal koyu teması", Language::RU => "Оригинальная тёмная тема Sniffnet'а", Language::PT => "Tema escuro original de Sniffnet", - Language::EL => "Το αυθεντικό σκούρο θέμα του Sniffnet" + Language::EL => "Το αυθεντικό σκούρο θέμα του Sniffnet", } } @@ -935,7 +939,7 @@ pub fn yeti_day_translation(language: Language) -> &'static str { Language::KO => "Sniffnet의 기본 라이트테마", Language::TR => "Sniffnet'in orjinal açık teması", Language::RU => "Оригинальная светая тема Sniffnet'а", - Language::EL => "Το αυθεντικό ανοιχτόχρωμο θέμα του Sniffnet" + Language::EL => "Το αυθεντικό ανοιχτόχρωμο θέμα του Sniffnet", } } @@ -954,7 +958,7 @@ pub fn deep_sea_translation(language: Language) -> &'static str { Language::TR => "Ağ trafiğine dalmak", Language::RU => "Для погружения в сетевой трафик", Language::PT => "Para mergulhar no tráfego de rede", - Language::EL => "Βουτιά μέσα στην κίνηση του δικτύου" + Language::EL => "Βουτιά μέσα στην κίνηση του δικτύου", } } @@ -973,7 +977,7 @@ pub fn mon_amour_translation(language: Language) -> &'static str { Language::TR => "Hayal perestler için yapılmış güzel tema", Language::RU => "Милая тема для мечтателей", Language::PT => "Tema encantador feito para sonhadores", - Language::EL => "Όμορφο θέμα φτιαγμένο για ονειροπόλους" + Language::EL => "Όμορφο θέμα φτιαγμένο για ονειροπόλους", } } @@ -992,7 +996,7 @@ pub fn incoming_translation(language: Language) -> &'static str { Language::TR => "Gelen", Language::RU => "Входящий", Language::PT => "Entrando", - Language::EL => "Εισερχόμενα" + Language::EL => "Εισερχόμενα", } } @@ -1011,7 +1015,7 @@ pub fn outgoing_translation(language: Language) -> &'static str { Language::TR => "Giden", Language::RU => "Исходящий", Language::PT => "Saindo", - Language::EL => "Εξερχόμενα" + Language::EL => "Εξερχόμενα", } } @@ -1029,7 +1033,7 @@ pub fn notifications_translation(language: Language) -> &'static str { Language::TR => "Bildirimler", Language::RU => "Уведомления", Language::PT => "Notificações", - Language::EL => "Ειδοποιήσεις" + Language::EL => "Ειδοποιήσεις", } } @@ -1043,7 +1047,7 @@ pub fn style_translation(language: Language) -> &'static str { Language::UK | Language::RU => "Стиль", Language::ZH => "主题", Language::KO => "스타일", - Language::EL => "Στυλ" + Language::EL => "Στυλ", } } @@ -1062,7 +1066,7 @@ pub fn language_translation(language: Language) -> &'static str { Language::TR => "Dil", Language::RU => "Язык", Language::PT => "Língua", - Language::EL => "Γλώσσα" + Language::EL => "Γλώσσα", } } @@ -1081,7 +1085,7 @@ pub fn overview_translation(language: Language) -> &'static str { Language::TR => "Ön izleme", Language::RU => "Обзор", Language::PT => "Visão geral", - Language::EL => "επισκόπηση" + Language::EL => "επισκόπηση", } } @@ -1112,7 +1116,7 @@ pub fn packets_threshold_translation(language: Language) -> &'static str { Language::TR => "Paket eşiği aşıldığında beni bilgilendir", Language::RU => "Уведомить, когда порог по частоте пакетов превышен", Language::PT => "Notifique-me quando um limite de pacotes for excedido", - Language::EL => "Ειδοποίησέ με όταν το όριο τον πακέτων ξεπεραστεί" + Language::EL => "Ειδοποίησέ με όταν το όριο τον πακέτων ξεπεραστεί", } } @@ -1131,7 +1135,7 @@ pub fn bytes_threshold_translation(language: Language) -> &'static str { Language::TR => "Bayt eşiği aşıldığında beni bilgilendir", Language::RU => "Уведомить, когда порог по полосе в байтах превышен", Language::PT => "Notifique-me quando um limite de bytes for excedido", - Language::EL => "Ειδοποίησέ με όταν το όριο των bytes ξεπεραστεί" + Language::EL => "Ειδοποίησέ με όταν το όριο των bytes ξεπεραστεί", } } @@ -1149,7 +1153,7 @@ pub fn per_second_translation(language: Language) -> &'static str { Language::KO => "(초당)", Language::TR => "(her saniye)", Language::RU => "(в секунду)", - Language::EL => "(ανά δευτερόλεπτο)" + Language::EL => "(ανά δευτερόλεπτο)", } } @@ -1208,7 +1212,7 @@ pub fn threshold_translation(language: Language) -> String { Language::TR => "Eşik: ".to_string(), Language::RU => "Порог: ".to_string(), Language::PT => "Limite: ".to_string(), - Language::EL => "Όριο:".to_string(), + Language::EL => "Όριο: ".to_string(), } } @@ -1224,7 +1228,7 @@ pub fn volume_translation(language: Language, value: u8) -> String { Language::KO => format!("볼륨: {value:^3}%"), Language::TR => format!("Ses: {value:^3}%"), Language::RU => format!("Объём: {value:^3}%"), - Language::EL => format!("Ένταση: {value:^3}%") + Language::EL => format!("Ένταση: {value:^3}%"), } } @@ -1242,7 +1246,7 @@ pub fn sound_translation(language: Language) -> &'static str { Language::KO => "사운드:", Language::TR => "Ses:", Language::PT => "Som:", - Language::EL => "Ήχος:" + Language::EL => "Ήχος:", } } @@ -1261,7 +1265,7 @@ pub fn open_report_translation(language: Language) -> &'static str { Language::TR => "Tam raporu aç", Language::RU => "Открыть полный отчёт", Language::PT => "Abrir relatório completo", - Language::EL => "Άνοιγμα της πλήρους αναφοράς" + Language::EL => "Άνοιγμα της πλήρους αναφοράς", } } @@ -1280,7 +1284,7 @@ pub fn bytes_exceeded_translation(language: Language) -> &'static str { Language::TR => "Bayt eşik değeri aşıldı!", Language::RU => "Порог в байтах превышен!", Language::PT => "Limite de bytes excedido!", - Language::EL => "Το όριο των bytes ξεπεράστηκε!" + Language::EL => "Το όριο των bytes ξεπεράστηκε!", } } diff --git a/src/translations/types/language.rs b/src/translations/types/language.rs index 104373ab..5e1a4ce6 100644 --- a/src/translations/types/language.rs +++ b/src/translations/types/language.rs @@ -30,7 +30,7 @@ pub enum Language { /// Russian RU, /// Greek - EL + EL, } impl Default for Language { @@ -42,13 +42,19 @@ impl Default for Language { impl Language { pub(crate) const COL1: [Language; 5] = [ Language::EN, + Language::ES, + Language::KO, + Language::RO, + Language::UK, + ]; + pub(crate) const COL2: [Language; 5] = [ + Language::DE, Language::FR, Language::PL, Language::RU, Language::ZH, ]; - pub(crate) const COL2: [Language; 5] = [Language::DE, Language::IT, Language::PT, Language::TR, Language::EL]; - pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::RO, Language::UK]; + pub(crate) const COL3: [Language; 4] = [Language::EL, Language::IT, Language::PT, Language::TR]; pub fn get_radio_label(&self) -> &str { match self { @@ -65,7 +71,7 @@ impl Language { Language::TR => "Türkçe", Language::RU => "Русский", Language::PT => "Português", - Language::EL => "Ελληνικά" + Language::EL => "Ελληνικά", } } } From 3ec43b00481cd9de37c057a3e623edd5778d1211 Mon Sep 17 00:00:00 2001 From: Angelos Bousis <25039645+abousis@users.noreply.github.com> Date: Fri, 21 Apr 2023 20:32:49 +0300 Subject: [PATCH 4/6] Minor changes for greek translation. --- src/translations/translations.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index 69397dce..f39c225b 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -315,7 +315,7 @@ pub fn hide_translation(language: Language) -> &'static str { Language::TR => "Gizle", Language::RU => "Скрыть", Language::PT => "Esconder", - Language::EL => "Κρύψε", + Language::EL => "Κλείσιμο", } } @@ -1323,7 +1323,7 @@ pub fn packets_exceeded_translation(language: Language) -> &'static str { Language::TR => "Paket eşik değeri aşıldı!", Language::RU => "Порог по числу пакетов превышен!", Language::PT => "Limite de pacotes excedido!", - Language::EL => "Το όριο των πακέτων ξεπεράσθηκε!", + Language::EL => "Το όριο των πακέτων ξεπεράστηκε!", } } From 23e6f30784cf4aba59f397a1dcbe01363b136d3b Mon Sep 17 00:00:00 2001 From: Angelos Bousis <25039645+abousis@users.noreply.github.com> Date: Fri, 21 Apr 2023 21:24:55 +0300 Subject: [PATCH 5/6] Fixed clipped sentence. --- src/translations/translations.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index f39c225b..b1b8d791 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -977,7 +977,7 @@ pub fn mon_amour_translation(language: Language) -> &'static str { Language::TR => "Hayal perestler için yapılmış güzel tema", Language::RU => "Милая тема для мечтателей", Language::PT => "Tema encantador feito para sonhadores", - Language::EL => "Όμορφο θέμα φτιαγμένο για ονειροπόλους", + Language::EL => "Φτιαγμένο για ονειροπόλους", } } From 920e037a7be594fca2e7024bbd4e57f5bc923f3e Mon Sep 17 00:00:00 2001 From: Giuliano Bellini s294739 Date: Fri, 21 Apr 2023 22:15:35 +0200 Subject: [PATCH 6/6] fix: greek byte notification --- src/gui/pages/notifications_page.rs | 8 ++++---- src/translations/translations.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gui/pages/notifications_page.rs b/src/gui/pages/notifications_page.rs index 5c1fd450..9129bd27 100644 --- a/src/gui/pages/notifications_page.rs +++ b/src/gui/pages/notifications_page.rs @@ -242,10 +242,10 @@ fn bytes_notification_log( &(logged_notification.threshold / logged_notification.byte_multiple.get_multiplier()) .to_string(), ); - threshold_str.push_str(&format!( - " {}", - logged_notification.byte_multiple.get_char() - )); + let char_multiple = logged_notification.byte_multiple.get_char(); + if !char_multiple.is_empty() { + threshold_str.push_str(&format!(" {char_multiple}",)); + } threshold_str.push_str(&format!(" {}", per_second_translation(language))); let mut incoming_str = " - ".to_string(); incoming_str.push_str(incoming_translation(language)); diff --git a/src/translations/translations.rs b/src/translations/translations.rs index b1b8d791..df93c50c 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -1212,7 +1212,7 @@ pub fn threshold_translation(language: Language) -> String { Language::TR => "Eşik: ".to_string(), Language::RU => "Порог: ".to_string(), Language::PT => "Limite: ".to_string(), - Language::EL => "Όριο: ".to_string(), + Language::EL => "όριο: ".to_string(), } }