From d155252621801a27c2fed3ad35b6c26d7df3ea56 Mon Sep 17 00:00:00 2001 From: George Shuklin Date: Thu, 13 Apr 2023 17:04:12 +0300 Subject: [PATCH 1/3] feat: add Russian translation --- src/translations/translations.rs | 93 ++++++++++++++++++++++++++++-- src/translations/translations_2.rs | 1 + src/translations/types/language.rs | 5 +- 3 files changed, 93 insertions(+), 6 deletions(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index d624a926..9a1dc1ce 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -15,6 +15,7 @@ pub fn choose_adapters_translation(language: Language) -> Text<'static> { Language::RO => "Selectați adaptor de rețea pentru a inspecta", Language::KO => "검사할 네트워크 어댑터 선택", Language::TR => "İncelemek için bir ağ adaptörü seçiniz", + Language::RU => "Выберите сетевой адаптер для инспекции", }) } @@ -31,6 +32,7 @@ pub fn application_protocol_translation(language: Language) -> &'static str { Language::RO => "Protocol aplicație", Language::KO => "어플리케이션 프로토콜", Language::TR => "Uygulama protokolü", + Language::RU => "Прикладной протокол", } } @@ -47,6 +49,7 @@ pub fn select_filters_translation(language: Language) -> Text<'static> { Language::RO => "Selectați filtre pentru traficul de rețea", Language::KO => "네트워크 트레픽에 적용할 필터 선택", Language::TR => "Ağ trafiğine uygulanacak filtreleri seçiniz", + Language::RU => "Выберите фильтры для применения к сетевому трафику", }) } @@ -60,6 +63,7 @@ pub fn start_translation(language: Language) -> &'static str { Language::UK => "Почати!", Language::ZH => "开始!", Language::TR => "Başla!", + Language::RU => "Начать!", } } @@ -74,6 +78,7 @@ pub fn address_translation(language: Language) -> &'static str { Language::ZH => "\n网络地址:", Language::RO => "\nAdresă:", Language::KO => "\n주소:", + Language::RU => "\nАдрес:", } } @@ -90,6 +95,7 @@ pub fn addresses_translation(language: Language) -> &'static str { Language::RO => "\nAdrese:", Language::KO => "\n주소:", Language::TR => "\nAdresler:", + Language::RU => "\nАдреса:", } } @@ -106,6 +112,7 @@ pub fn ip_version_translation(language: Language) -> Text<'static> { Language::RO => "Versiune IP", Language::KO => "IP 버전", Language::TR => "IP versiyonu", + Language::RU => "Версия IP", }) } @@ -122,6 +129,7 @@ pub fn transport_protocol_translation(language: Language) -> &'static str { Language::RO => "Protocol de transport", Language::KO => "전송 프로토콜", Language::TR => "İletişim protokolü", + Language::RU => "Транспортный протокол", } } @@ -138,6 +146,7 @@ pub fn traffic_rate_translation(language: Language) -> Text<'static> { Language::RO => "Rata de trafic:", Language::KO => "트레픽 속도:", Language::TR => "Trafik oranı:", + Language::RU => "Cкорость трафика:", }) } @@ -154,6 +163,7 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> { Language::RO => "Conexiuni relevante:", Language::KO => "관련 연결:", Language::TR => "İlgili bağlantılar:", + Language::RU => "Относящиеся подключения:", }) } @@ -170,6 +180,7 @@ pub fn settings_translation(language: Language) -> &'static str { Language::RO => "Setări", Language::KO => "설정", Language::TR => "Ayarlar", + Language::RU => "Настройки", } } @@ -186,6 +197,7 @@ pub fn yes_translation(language: Language) -> Text<'static> { Language::RO => "Da", Language::KO => "네", Language::TR => "Evet", + Language::RU => "Да", }) } @@ -202,6 +214,7 @@ pub fn ask_quit_translation(language: Language) -> Text<'static> { Language::RO => "Sunteți sigur că doriți să renunțați la această analiză?", Language::KO => "정말로 분석을 종료하겠습니까?", Language::TR => "Bu analizden çıkmak istediğine emin misin?", + Language::RU => "Вы уверены, что хотите выйти из текущего анализа?", }) } @@ -218,6 +231,7 @@ pub fn quit_analysis_translation(language: Language) -> String { Language::RO => "Renunță la analiză".to_string(), Language::KO => "분석종료".to_string(), Language::TR => "Analizden çık".to_string(), + Language::RU => "Закончить анализ".to_string(), } } @@ -234,6 +248,7 @@ pub fn ask_clear_all_translation(language: Language) -> Text<'static> { Language::RO => "Sigur doriți să ștergeți notificările?", Language::KO => "알림을 삭제하시겠습니까?", Language::TR => "Bildirimleri temizlemek istediğine emin misin?", + Language::RU => "Вы уверены, что хотите удлить все уведомления?", }) } @@ -250,6 +265,7 @@ pub fn clear_all_translation(language: Language) -> String { Language::RO => "Ștergeți tot".to_string(), Language::KO => "모두 지우기".to_string(), Language::TR => "Hepsini temizle".to_string(), + Language::RU => "Очистить всё".to_string(), } } @@ -266,6 +282,7 @@ pub fn hide_translation(language: Language) -> &'static str { Language::RO => "Ascundeți", Language::KO => "숨기기", Language::TR => "Gizle", + Language::RU => "Скрыть", } } @@ -303,7 +320,10 @@ pub fn no_addresses_translation(language: Language, adapter: &str) -> Text<'stat 인터넷이 연결되어있다면 다른 어댑터로 시도해보세요."), Language::TR => format!("Seçtiğiniz adaptör aktif bir adrese sahip olmadığı için hiç bir trafik izlenemez...\n\n\ Ağ adaptörü: {adapter}\n\n\ - Eğer gerçekten internete bağlı olduğunuza eminseniz, başka bir adaptör seçmeyi deneyiniz.") + Eğer gerçekten internete bağlı olduğunuza eminseniz, başka bir adaptör seçmeyi deneyiniz."), + Language::RU => format!("Наблюдение за трафиком не возможно, потому что Вы выбрали интерфейс без активного адреса...\n\n\ + Сетевой интерфейс: {adapter}\n\n\ + Если Вы уверены, что подключены к Интернету, попробуйте выбрать другой интерфейс."), }) } @@ -341,7 +361,10 @@ pub fn waiting_translation(language: Language, adapter: &str) -> Text<'static> { 인터넷에 연결되어 있고 올바른 어댑터를 선택하셨습니까?"), Language::TR => format!("Henüz bir trafik algılanamadı. Ağ paketleri için bekleniyor...\n\n\ Ağ adaptörü: {adapter}\n\n\ - İnternete bağlı olduğunuza ve doğru adaptörü seçtiğinize emin misiniz?") + İnternete bağlı olduğunuza ve doğru adaptörü seçtiğinize emin misiniz?"), + Language::RU => format!("Трафик не обнаружен. Ожидаем сетевые пакеты...\n\n\ + Сетевой интерфейс: {adapter}\n\n\ + Вы уверены, что подключены к Интернету и выбрали правильный интерфейс?"), }) } @@ -383,7 +406,10 @@ pub fn some_observed_translation( 일부 패킷이 감지되었지만, 지정한 필터에 따라 선택되지 않았습니다...\n\n{filters}"), Language::TR => format!("Toplam yakalanan paketler: {observed}\n\n\ Filterelenen paketler: 0\n\n\ - Bazı paketler yakalandı, fakat belirttiğiniz filtrelere göre hiç biri seçilmedi...\n\n{filters}") + Bazı paketler yakalandı, fakat belirttiğiniz filtrelere göre hiç biri seçilmedi...\n\n{filters}"), + Language::RU => format!("Всего пакетов перехвачено: {observed}\n\n\ + Фильтровано пакетов: 0\n\n\ + Сетевые пакеты были перехвачены, но ни один из них не соответствует заданным фильтрам...\n\n{filters}"), }) } @@ -412,6 +438,7 @@ pub fn filtered_packets_translation( format!("필터링된 패킷:\n {filtered} ({percentage} 의 일부)") } Language::TR => format!("Filtrelenen paketler:\n {filtered} toplamın ({percentage})"), + Language::RU => format!("Отфильтровано пакетов:\n {filtered} ({percentage}% от общего числа)"), }) } @@ -440,6 +467,7 @@ pub fn filtered_bytes_translation( format!("필터링된 바이트:\n {filtered} ({percentage} 의 일부)") } Language::TR => format!("Filtrelenen bayt:\n {filtered} toplamın ({percentage})"), + Language::RU => format!("Отфильтровано байт:\n {filtered} ({percentage}% от общего числа)"), }) } @@ -456,6 +484,7 @@ pub fn filtered_application_translation(language: Language) -> Text<'static> { Language::RO => "Pachete filtrate pe protocol de aplicație:", Language::KO => "애플리케이션 프로토콜당 필터링된 패킷 수:", Language::TR => "Uygulama protokolü bazında filtrelenen paketler:", + Language::RU => "Отфильтровано пакетов прикладного протокола:", }) } @@ -482,7 +511,10 @@ pub fn no_favorites_translation(language: Language) -> Text<'static> { Language::KO => "현재는 보여줄게 없습니다.\n\ 즐겨찾기에 연결을 추가하려면 별을 눌러주세요.", Language::TR => "Şu an gösterecek bir şey yok.\n\ - Favorilere bağlantı eklemek için, bağlantı yanındaki yıldız sembolüne tıklayınız." + Favorilere bağlantı eklemek için, bağlantı yanındaki yıldız sembolüne tıklayınız.", + Language::RU => "Нечего показать в настоящий момент.\n\ + Для добавления соединения в избранные, нажмите на символ звезды возле соединения." + }) } @@ -532,6 +564,10 @@ pub fn error_translation(language: Language, error: &str) -> Text<'static> { "Bir hata oluştu! \n\n\ {error}" ), + Language::RU => format!( + "Произошла ошибка! \n\n\ + {error}" + ), }) } @@ -548,6 +584,7 @@ pub fn both_translation(language: Language) -> &'static str { Language::RO => "ambele", Language::KO => "둘다", Language::TR => "ikiside", + Language::RU => "оба", } } @@ -559,6 +596,7 @@ pub fn both_translation(language: Language) -> &'static str { // Language::ES => "Todos los protocolos", // Language::PL => "Wszystkie protokoły", // Language::DE => "Alle Protokolle", +// Language::RU => "Все протоколы", // } // } @@ -575,6 +613,7 @@ pub fn all_translation(language: Language) -> &'static str { Language::RO => "Toate", Language::KO => "모두", Language::TR => "Hepsi", + Language::RU => "Всё", } } @@ -591,6 +630,7 @@ pub fn packets_chart_translation(language: Language) -> &'static str { Language::RO => "pachete pe secundă", Language::KO => "초당 패킷", Language::TR => "saniye başı paket", + Language::RU => "пакектов в секунду", } } @@ -607,6 +647,7 @@ pub fn bytes_chart_translation(language: Language) -> &'static str { Language::RO => "octeți pe secundă", Language::KO => "초당 바이트", Language::TR => "saniye başı bayt", + Language::RU => "байтов в секунду", } } @@ -623,6 +664,7 @@ pub fn recent_report_translation(language: Language) -> &'static str { Language::RO => "cea mai recentă", Language::KO => "가장 최근", Language::TR => "en son", + Language::RU => "новейшие", } } @@ -639,6 +681,7 @@ pub fn packets_report_translation(language: Language) -> &'static str { Language::RO => "cele mai multe pachete", Language::KO => "대부분의 패킷", Language::TR => "en çok paket", + Language::RU => "больше всего пакетов", } } @@ -655,6 +698,7 @@ pub fn bytes_report_translation(language: Language) -> &'static str { Language::RO => "cei mai mulți octeți", Language::KO => "대부분의 바이트", Language::TR => "en çok bayt", + Language::RU => "больше всего байт", } } @@ -671,6 +715,7 @@ pub fn favorite_report_translation(language: Language) -> &'static str { Language::RO => "favorite", Language::KO => "즐겨찾기", Language::TR => "favoriler", + Language::RU => "избранное", } } @@ -687,6 +732,7 @@ pub fn notifications_title_translation(language: Language) -> Text<'static> { Language::RO => "Personalizați-vă notificările", Language::KO => "사용자 지정 알림", Language::TR => "Bildirimlerinizi özelleştirin", + Language::RU => "Настройка уведомлений", }) } @@ -703,6 +749,7 @@ pub fn appearance_title_translation(language: Language) -> Text<'static> { Language::RO => "Selectați tema preferată", Language::KO => "태마를 선택하세요", Language::TR => "Favori temanızı seçin", + Language::RU => "Выберите предпочительную тему", }) } @@ -719,6 +766,7 @@ pub fn languages_title_translation(language: Language) -> Text<'static> { Language::RO => "Selectați limba", Language::KO => "언어를 선택하세요", Language::TR => "Dilinizi seçin", + Language::RU => "Выберите язык", }) } @@ -735,6 +783,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { Language::RO => "Filtre active:", Language::KO => "활성화된 필터:", Language::TR => "Aktif filtreler:", + Language::RU => "Выберите фильтры:", } } @@ -751,6 +800,7 @@ pub fn none_translation(language: Language) -> &'static str { Language::RO => "niciunul", Language::KO => "없음", Language::TR => "hiç biri", + Language::RU => "ничего", } } @@ -767,6 +817,7 @@ pub fn yeti_night_translation(language: Language) -> &'static str { Language::RO => "Tema întunecată originală Sniffnet", Language::KO => "Sniffnet의 기본 다크테마", Language::TR => "Sniffnet'in orjinal koyu teması", + Language::RU => "Оригинальная тёмная тема Sniffnet'а", } } @@ -783,6 +834,7 @@ pub fn yeti_day_translation(language: Language) -> &'static str { Language::RO => "Tema deschisă originală Sniffnet", Language::KO => "Sniffnet의 기본 라이트테마", Language::TR => "Sniffnet'in orjinal açık teması", + Language::RU => "Оригинальная светая тема Sniffnet'а", } } @@ -799,6 +851,7 @@ pub fn deep_sea_translation(language: Language) -> &'static str { Language::RO => "Pentru a vă scufunda în traficul de rețea", Language::KO => "네트워크 트레픽으로 바로가기", Language::TR => "Ağ trafiğine dalmak", + Language::RU => "Анализировать сетевой трафик", } } @@ -815,6 +868,7 @@ pub fn mon_amour_translation(language: Language) -> &'static str { Language::RO => "O temă minunată creată pentru visători", Language::KO => "사랑스러운 몽환가들을 위한 테마", Language::TR => "Hayal perestler için yapılmış güzel tema", + Language::RU => "Милая тема для мечтателей", } } @@ -831,6 +885,7 @@ pub fn incoming_translation(language: Language) -> &'static str { Language::RO => "de intrare", Language::KO => "수신중", Language::TR => "Gelen", + Language::RU => "Входящий", } } @@ -847,6 +902,7 @@ pub fn outgoing_translation(language: Language) -> &'static str { Language::RO => "de ieșire", Language::KO => "발신중", Language::TR => "Giden", + Language::RU => "Исходящий", } } @@ -862,6 +918,7 @@ pub fn notifications_translation(language: Language) -> &'static str { Language::RO => "Notificări", Language::KO => "알림", Language::TR => "Bildirimler", + Language::RU => "Уведомления", } } @@ -875,6 +932,7 @@ pub fn style_translation(language: Language) -> &'static str { Language::UK => "Стиль", Language::ZH => "主题", Language::KO => "스타일", + Language::RU => "Стиль", } } @@ -891,6 +949,7 @@ pub fn language_translation(language: Language) -> &'static str { Language::RO => "Limbă", Language::KO => "언어", Language::TR => "Dil", + Language::RU => "Язык", } } @@ -907,6 +966,7 @@ pub fn overview_translation(language: Language) -> &'static str { Language::RO => "Prezentare generală", Language::KO => "개요", Language::TR => "Ön izleme", + Language::RU => "Обзор", } } @@ -918,6 +978,7 @@ pub fn overview_translation(language: Language) -> &'static str { // Language::ES => "Inspeccionar", // Language::PL => "Sprawdź", // Language::DE => "Überprüfen", +// Language::RU => "Инспектировать", // } // } @@ -934,6 +995,7 @@ pub fn packets_threshold_translation(language: Language) -> &'static str { Language::RO => "Anunță-mă când este depășit un prag de pachete", Language::KO => "패킷 임계값을 초과하면 알림", Language::TR => "Paket eşiği aşıldığında beni bilgilendir", + Language::RU => "Уведомить, когда порог по частоте пакетов превышен", } } @@ -950,6 +1012,7 @@ pub fn bytes_threshold_translation(language: Language) -> &'static str { Language::RO => "Anunță-mă când este depășit un prag de octeți", Language::KO => "바이트 임계값을 초과하면 알림", Language::TR => "Bayt eşiği aşıldığında beni bilgilendir", + Language::RU => "Уведомить, когда порог по полосе в байтах превышен", } } @@ -966,6 +1029,7 @@ pub fn per_second_translation(language: Language) -> &'static str { Language::RO => "(pe secundă)", Language::KO => "(초당)", Language::TR => "(her saniye)", + Language::RU => "(в секунду)", } } @@ -982,6 +1046,7 @@ pub fn specify_multiples_translation(language: Language) -> &'static str { Language::RO => "; puteți specifica 'K', 'M', 'G'", Language::KO => "; 지정가능합니다 'K', 'M', 'G'", Language::TR => "; şunları da kullanabilirsin 'K', 'M' ve 'G'", + Language::RU => "; Так же можно указать 'K', 'M' или 'G'", } } @@ -1000,6 +1065,7 @@ pub fn favorite_notification_translation(language: Language) -> &'static str { Language::RO => "Anunță-mă când sunt transferate date noi de la favoritele mele", Language::KO => "즐겨찾기에서 새 데이터가 교환될 때 알림", Language::TR => "Favorilerimde veri akışı olduğunda beni uyar", + Language::RU => "Уведомить, если произошёл обмен данными в соединениях из избранного", } } @@ -1016,6 +1082,7 @@ pub fn threshold_translation(language: Language) -> String { Language::RO => "Prag: ".to_string(), Language::KO => "임계값: ".to_string(), Language::TR => "Eşik: ".to_string(), + Language::RU => "Порог: ".to_string(), } } @@ -1030,6 +1097,7 @@ pub fn volume_translation(language: Language, value: u8) -> String { Language::RO => format!("Volum: {value:^3}%"), Language::KO => format!("볼륨: {value:^3}%"), Language::TR => format!("Ses: {value:^3}%"), + Language::RU => format!("Объём: {value:^3}%"), } } @@ -1046,6 +1114,7 @@ pub fn sound_translation(language: Language) -> &'static str { Language::RO => "Sunet:", Language::KO => "사운드:", Language::TR => "Ses:", + Language::RU => "Звук:", } } @@ -1062,6 +1131,7 @@ pub fn open_report_translation(language: Language) -> &'static str { Language::RO => "Deschideți raport complet", Language::KO => "전체 보고서 열기", Language::TR => "Tam raporu aç", + Language::RU => "Открыть полный отчёт", } } @@ -1078,6 +1148,7 @@ pub fn bytes_exceeded_translation(language: Language) -> &'static str { Language::RO => "Prag de octeți depășit!", Language::KO => "바이트 임계값 초과!", Language::TR => "Bayt eşik değeri aşıldı!", + Language::RU => "Порог в байтах превышен!", } } @@ -1095,6 +1166,7 @@ pub fn bytes_exceeded_value_translation(language: Language, value: &str) -> Stri Language::RO => format!("au fost transferați {trimmed_value} octeți"), Language::KO => format!("바이트 {trimmed_value} 가 교환되었습니다"), Language::TR => format!("{trimmed_value} bayt aktarıldı"), + Language::RU => format!("{trimmed_value} байт обмена информацией"), } } @@ -1111,6 +1183,7 @@ pub fn packets_exceeded_translation(language: Language) -> &'static str { Language::RO => "Prag de pachete depășit!", Language::KO => "패킷 임계값 초과!", Language::TR => "Paket eşik değeri aşıldı!", + Language::RU => "Порог по числу пакетов превышен!", } } @@ -1130,6 +1203,7 @@ pub fn packets_exceeded_value_translation(language: Language, value: u32) -> Str Language::RO => format!("au fost transferate {value} pachete"), Language::KO => format!("패킷 {value} 가 교환되었습니다"), Language::TR => format!("{value} paket aktarıldı"), + Language::RU => format!("{value} пакет(ов) обмена информацией"), } } @@ -1146,6 +1220,7 @@ pub fn favorite_transmitted_translation(language: Language) -> &'static str { Language::RO => "Date noi transferate de la favorite!", Language::KO => "즐겨찾기에서 새 데이터 교환", Language::TR => "Favorilerden yeni veri aktarıldı!", + Language::RU => "Новый обмен данными в избранных соедиениях!", } } @@ -1183,7 +1258,10 @@ pub fn no_notifications_set_translation(language: Language) -> Text<'static> { 설정에서 알림을 활성화할 수 있습니다:", Language::TR => "Henüz bildirimleri etkinleştirmedin!\n\n\ Etkinleştirdikten sonra bu sayfada bildirimlerine ait kütüğü görebilirsin\n\n\ - Bildirimleri, ayarlardan etkinleştirebilirsin:" + Bildirimleri, ayarlardan etkinleştirebilirsin:", + Language::RU => "Уведомления пока не настроены!\n\n\ + После настройки, эта страница будет показывать журнал уведомлений\n\n\ + Вы можете включить уведомления в настройках:", }) } @@ -1233,6 +1311,10 @@ pub fn no_notifications_received_translation(language: Language) -> Text<'static "Şu an görecek bir şey yok...\n\n\ Bildirim aldığınız zaman burada gözükecektir" } + Language::RU => { + "Нечего показывать в текущий момент...\n\n\ + Когда прийдут уведомления, они будут показаны тут" + } }) } @@ -1249,5 +1331,6 @@ pub fn only_last_30_translation(language: Language) -> &'static str { Language::RO => "Sunt afișate doar ultimele 30 de notificări", Language::KO => "최근 30개의 알림만 표시됩니다", Language::TR => "Sadece son 30 bildirim gösterilmektedir", + Language::RU => "Тут показываются только послдение 30 уведомлений", } } diff --git a/src/translations/translations_2.rs b/src/translations/translations_2.rs index 942a24c2..88b36a60 100644 --- a/src/translations/translations_2.rs +++ b/src/translations/translations_2.rs @@ -5,6 +5,7 @@ pub fn new_version_available_translation(language: Language) -> &'static str { match language { Language::EN => "A newer version is available on GitHub", Language::IT => "Una versione più recente è disponibile su GitHub", + Language::RU => "Новая версия доступна на GitHub", _ => "A newer version is available on GitHub", } } diff --git a/src/translations/types/language.rs b/src/translations/types/language.rs index 838f76a2..03af7a6c 100644 --- a/src/translations/types/language.rs +++ b/src/translations/types/language.rs @@ -25,6 +25,8 @@ pub enum Language { KO, /// Turkish TR, + /// Russian + RU } impl Default for Language { @@ -36,7 +38,7 @@ impl Default for Language { impl Language { pub(crate) const COL1: [Language; 4] = [Language::EN, Language::FR, Language::PL, Language::UK]; pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::RO, Language::ZH]; - pub(crate) const COL3: [Language; 3] = [Language::ES, Language::KO, Language::TR]; + pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::TR, Language::RU]; pub fn get_radio_label(&self) -> &str { match self { @@ -51,6 +53,7 @@ impl Language { Language::RO => "Română", Language::KO => "한국인", Language::TR => "Türkçe", + Language::RU => "Русский", } } } From b30592e4259010782d093a7ba4026bd1da73cb80 Mon Sep 17 00:00:00 2001 From: George Shuklin Date: Sat, 15 Apr 2023 11:58:51 +0300 Subject: [PATCH 2/3] fix: minor context changes to RU localization --- src/translations/translations.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/translations/translations.rs b/src/translations/translations.rs index 9a1dc1ce..5b540bc6 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -163,7 +163,7 @@ pub fn relevant_connections_translation(language: Language) -> Text<'static> { Language::RO => "Conexiuni relevante:", Language::KO => "관련 연결:", Language::TR => "İlgili bağlantılar:", - Language::RU => "Относящиеся подключения:", + Language::RU => "Важные подключения:", }) } @@ -783,7 +783,7 @@ pub fn active_filters_translation(language: Language) -> &'static str { Language::RO => "Filtre active:", Language::KO => "활성화된 필터:", Language::TR => "Aktif filtreler:", - Language::RU => "Выберите фильтры:", + Language::RU => "Выбранные фильтры:", } } @@ -800,7 +800,7 @@ pub fn none_translation(language: Language) -> &'static str { Language::RO => "niciunul", Language::KO => "없음", Language::TR => "hiç biri", - Language::RU => "ничего", + Language::RU => "не выбран", } } @@ -851,7 +851,7 @@ pub fn deep_sea_translation(language: Language) -> &'static str { Language::RO => "Pentru a vă scufunda în traficul de rețea", Language::KO => "네트워크 트레픽으로 바로가기", Language::TR => "Ağ trafiğine dalmak", - Language::RU => "Анализировать сетевой трафик", + Language::RU => "Для погружения в сетевой трафик", } } @@ -1331,6 +1331,6 @@ pub fn only_last_30_translation(language: Language) -> &'static str { Language::RO => "Sunt afișate doar ultimele 30 de notificări", Language::KO => "최근 30개의 알림만 표시됩니다", Language::TR => "Sadece son 30 bildirim gösterilmektedir", - Language::RU => "Тут показываются только послдение 30 уведомлений", + Language::RU => "Тут показываются только последние 30 уведомлений", } } From 118abcc50639e0a3873d4f2c925b2a3feea2f5e0 Mon Sep 17 00:00:00 2001 From: Giuliano Bellini s294739 Date: Sat, 15 Apr 2023 11:18:05 +0200 Subject: [PATCH 3/3] added russian characters and flag, fixed lints --- resources/fonts/full/subset_characters.txt | 8 ++++++++ .../subset/sarasa-mono-sc-bold.subset.ttf | Bin 104164 -> 105012 bytes .../subset/sarasa-mono-sc-regular.subset.ttf | Bin 105436 -> 106288 bytes src/translations/translations.rs | 14 ++++++++------ src/translations/types/language.rs | 8 ++++---- src/utils/countries.rs | 1 + 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/resources/fonts/full/subset_characters.txt b/resources/fonts/full/subset_characters.txt index 1ab39be1..f0e11ab9 100644 --- a/resources/fonts/full/subset_characters.txt +++ b/resources/fonts/full/subset_characters.txt @@ -138,16 +138,20 @@ z В Г Д +Е З +И К Л М Н О П +Р С Т У +Ф Ч Ш Щ @@ -178,9 +182,13 @@ z ч ш щ +ъ +ы ь +э ю я +ё є і ї diff --git a/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf b/resources/fonts/subset/sarasa-mono-sc-bold.subset.ttf index e6a27ac3fec706d4e59dbf43e2131c35c462f3bb..ffc5918123304a55d4c7d1797749e654a7568448 100644 GIT binary patch delta 6447 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 Uvn#0?PnA|fBPb=zv07^PKZ=e;p#T5? delta 5471 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 XZy60&N$aQqPjz%VolBWvjnw>qP?o%& diff --git a/src/translations/translations.rs b/src/translations/translations.rs index 5b540bc6..aae86a24 100644 --- a/src/translations/translations.rs +++ b/src/translations/translations.rs @@ -438,7 +438,9 @@ pub fn filtered_packets_translation( format!("필터링된 패킷:\n {filtered} ({percentage} 의 일부)") } Language::TR => format!("Filtrelenen paketler:\n {filtered} toplamın ({percentage})"), - Language::RU => format!("Отфильтровано пакетов:\n {filtered} ({percentage}% от общего числа)"), + Language::RU => { + format!("Отфильтровано пакетов:\n {filtered} ({percentage}% от общего числа)") + } }) } @@ -467,7 +469,9 @@ pub fn filtered_bytes_translation( format!("필터링된 바이트:\n {filtered} ({percentage} 의 일부)") } Language::TR => format!("Filtrelenen bayt:\n {filtered} toplamın ({percentage})"), - Language::RU => format!("Отфильтровано байт:\n {filtered} ({percentage}% от общего числа)"), + Language::RU => { + format!("Отфильтровано байт:\n {filtered} ({percentage}% от общего числа)") + } }) } @@ -929,10 +933,9 @@ pub fn style_translation(language: Language) -> &'static str { Language::ES => "Estilo", Language::PL => "Styl", Language::DE | Language::RO | Language::TR => "Stil", - Language::UK => "Стиль", + Language::UK | Language::RU => "Стиль", Language::ZH => "主题", Language::KO => "스타일", - Language::RU => "Стиль", } } @@ -1109,12 +1112,11 @@ pub fn sound_translation(language: Language) -> &'static str { Language::ES => "Sonido:", Language::PL => "Dźwięk:", Language::DE => "Ton:", - Language::UK => "Звук:", + Language::UK | Language::RU => "Звук:", Language::ZH => "通知音:", Language::RO => "Sunet:", Language::KO => "사운드:", Language::TR => "Ses:", - Language::RU => "Звук:", } } diff --git a/src/translations/types/language.rs b/src/translations/types/language.rs index 03af7a6c..9a571c78 100644 --- a/src/translations/types/language.rs +++ b/src/translations/types/language.rs @@ -26,7 +26,7 @@ pub enum Language { /// Turkish TR, /// Russian - RU + RU, } impl Default for Language { @@ -36,9 +36,9 @@ impl Default for Language { } impl Language { - pub(crate) const COL1: [Language; 4] = [Language::EN, Language::FR, Language::PL, Language::UK]; - pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::RO, Language::ZH]; - pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::TR, Language::RU]; + pub(crate) const COL1: [Language; 4] = [Language::EN, Language::FR, Language::PL, Language::TR]; + pub(crate) const COL2: [Language; 4] = [Language::DE, Language::IT, Language::RO, Language::UK]; + pub(crate) const COL3: [Language; 4] = [Language::ES, Language::KO, Language::RU, Language::ZH]; pub fn get_radio_label(&self) -> &str { match self { diff --git a/src/utils/countries.rs b/src/utils/countries.rs index 623c936a..dfb361af 100644 --- a/src/utils/countries.rs +++ b/src/utils/countries.rs @@ -516,6 +516,7 @@ pub fn get_flag_from_language_code(language: &str) -> Image { "KO" => KR, "PL" => PL, "RO" => RO, + "RU" => RU, "TR" => TR, "UK" => UA, _ => UNKNOWN,