From e2af198a8e58997fe00dc683fa5d8e0c48bce1f9 Mon Sep 17 00:00:00 2001 From: Marcin Maj Date: Thu, 7 Aug 2025 23:46:21 +0200 Subject: [PATCH 1/4] Add Polish Localization --- StosVPN.xcodeproj/project.pbxproj | 1 + StosVPN/ContentView.swift | 4 +- .../Localization/en.lproj/Localizable.strings | 1 + .../Localization/es.lproj/Localizable.strings | 1 + .../Localization/it.lproj/Localizable.strings | 1 + .../Localization/pl.lproj/Localizable.strings | 118 ++++++++++++++++++ 6 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 StosVPN/Localization/pl.lproj/Localizable.strings diff --git a/StosVPN.xcodeproj/project.pbxproj b/StosVPN.xcodeproj/project.pbxproj index 187b0ec..0abc14d 100644 --- a/StosVPN.xcodeproj/project.pbxproj +++ b/StosVPN.xcodeproj/project.pbxproj @@ -196,6 +196,7 @@ Base, es, it, + pl, ); mainGroup = 4EB3C74F2D96631A00C1B22C; minimizedProjectReferenceProxies = 1; diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 5992b9e..50c915d 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -983,7 +983,7 @@ class LanguageManager: ObservableObject { @Published var currentLanguage: String = Locale.current.languageCode ?? "en" - private let supportedLanguages = ["en", "es", "it"] + private let supportedLanguages = ["en", "es", "it", "pl"] func updateLanguage(to languageCode: String) { if supportedLanguages.contains(languageCode) { @@ -1000,4 +1000,4 @@ class LanguageManager: ObservableObject { #Preview { ContentView() -} \ No newline at end of file +} diff --git a/StosVPN/Localization/en.lproj/Localizable.strings b/StosVPN/Localization/en.lproj/Localizable.strings index d959e2d..69cd168 100644 --- a/StosVPN/Localization/en.lproj/Localizable.strings +++ b/StosVPN/Localization/en.lproj/Localizable.strings @@ -41,6 +41,7 @@ "english" = "English"; "spanish" = "Spanish"; "italian" = "Italian"; +"polish" = "Polish"; "settings" = "Settings"; "done" = "Done"; diff --git a/StosVPN/Localization/es.lproj/Localizable.strings b/StosVPN/Localization/es.lproj/Localizable.strings index a115886..916fb23 100644 --- a/StosVPN/Localization/es.lproj/Localizable.strings +++ b/StosVPN/Localization/es.lproj/Localizable.strings @@ -41,6 +41,7 @@ "english" = "Inglés"; "spanish" = "Español"; "italian" = "Italiano"; +"polish" = "Polish"; "settings" = "Configuración"; "done" = "Hecho"; diff --git a/StosVPN/Localization/it.lproj/Localizable.strings b/StosVPN/Localization/it.lproj/Localizable.strings index 5ecdb67..5ad5152 100644 --- a/StosVPN/Localization/it.lproj/Localizable.strings +++ b/StosVPN/Localization/it.lproj/Localizable.strings @@ -41,6 +41,7 @@ "english" = "Inglese"; "spanish" = "Spagnolo"; "italian" = "Italiano"; +"polish" = "Polish"; "settings" = "Impostazioni"; "done" = "Fine"; diff --git a/StosVPN/Localization/pl.lproj/Localizable.strings b/StosVPN/Localization/pl.lproj/Localizable.strings new file mode 100644 index 0000000..55642d9 --- /dev/null +++ b/StosVPN/Localization/pl.lproj/Localizable.strings @@ -0,0 +1,118 @@ +/* MARK: Start Screen */ + +"disconnected" = "Rozłączony"; +"connecting" = "Łączenie"; +"connected" = "Połączony"; +"disconnecting" = "Rozłączanie"; +"error" = "Błąd"; + +"local_tunnel_active" = "Lokalny tunel aktywny"; +"local_tunnel_inactive" = "Lokalny tunel nieaktywny"; + +"connect" = "Połącz"; +"disconnect" = "Rozłącz"; +"connecting_ellipsis" = "Łączenie..."; +"disconnecting_ellipsis" = "Rozłączanie..."; +"server_address_name" = "Lokalny tunel StosVPN"; + +"local_tunnel_details" = "Szczegóły tunelu"; +"time_connected" = "Czas połączenia"; +"status" = "Status"; +"active" = "Aktywny"; +"network_interface" = "Interfejs sieciowy"; +"local" = "Lokalny"; +"assigned_ip" = "Przydzielony IP"; + +/* MARK: Settings */ + +"connection_settings" = "Ustawienia połączenia"; +"auto_connect_on_launch" = "Automatyczne łączenie przy uruchomieniu"; +"connection_logs" = "Logi połączenia"; +"network_configuration" = "Konfiguracja sieci"; +"device_ip" = "IP urządzenia"; +"tunnel_ip" = "IP tunelu"; +"subnet_mask" = "Maska podsieci"; +"app_information" = "Informacje o aplikacji"; +"privacy_policy" = "Polityka prywatności"; +"data_collection_policy" = "Polityka zbierania danych"; +"app_version" = "Wersja aplikacji"; +"help_and_support" = "Pomoc i wsparcie"; +"language" = "Język"; +"english" = "Angielski"; +"spanish" = "Hiszpański"; +"italian" = "Włoski"; +"polish" = "Polski"; +"settings" = "Ustawienia"; +"done" = "Gotowe"; + +"data_collection_policy_title" = "Polityka zbierania danych"; +"no_data_collection" = "Brak zbierania danych"; +"no_data_collection_description" = "StosVPN NIE zbiera danych użytkownika, informacji o ruchu ani aktywności w przeglądarce. Aplikacja tworzy lokalny tunel sieciowy, który działa wyłącznie na Twoim urządzeniu."; +"local_processing_only" = "Tylko lokalne przetwarzanie"; +"local_processing_only_description" = "Cały ruch sieciowy i konfiguracje są przetwarzane lokalnie na Twoim urządzeniu. Żadne informacje nie opuszczają urządzenia ani nie są przesyłane przez Internet."; +"no_third_party_sharing" = "Brak udostępniania osobom trzecim"; +"no_third_party_sharing_description" = "Ponieważ nie zbieramy danych, nie ma żadnego udostępniania osobom trzecim. Aplikacja nie zawiera analityki, śledzenia ani mechanizmów zbierania danych."; +"why_use_network_permissions" = "Dlaczego wymagane są uprawnienia sieciowe"; +"why_use_network_permissions_description" = "StosVPN wymaga uprawnień rozszerzenia sieciowego, aby utworzyć lokalny interfejs sieciowy na Twoim urządzeniu. Jest on używany wyłącznie do lokalnego rozwoju i testowania."; +"our_promise" = "Nasza obietnica"; +"our_promise_description" = "Zobowiązujemy się do ochrony prywatności i przejrzystości. Ta aplikacja została zaprojektowana z myślą o programistach do testowania i łączenia się z lokalnymi serwerami bez obaw o prywatność."; +"data_collection_policy_nav" = "Zbieranie danych"; +"logs_nav" = "Logi"; +"faq_header" = "Najczęściej zadawane pytania"; +"faq_q1" = "Do czego służy ta aplikacja?"; +"faq_q1_a1" = "StosVPN tworzy lokalny interfejs sieciowy do celów rozwojowych i testowych. Nie przekierowuje ruchu przez zewnętrzne serwery – wszystko pozostaje na urządzeniu."; +"faq_common_use_cases" = "Typowe przypadki użycia:"; +"faq_case1" = "• Testowanie aplikacji webowych z lokalnymi serwerami"; +"faq_case2" = "• Tworzenie i debugowanie funkcji sieciowych"; +"faq_case3" = "• Dostęp do lokalnych środowisk deweloperskich"; +"faq_case4" = "• Testowanie aplikacji wymagających określonych konfiguracji sieciowych"; +"faq_q2" = "Czy to tradycyjna sieć VPN?"; +"faq_q2_a1" = "Nie, StosVPN NIE jest tradycyjną usługą VPN. NIE robi:"; +"faq_q2_point1" = "• Przekierowywania ruchu przez zewnętrzne serwery"; +"faq_q2_point2" = "• Zapewnienia prywatności lub anonimowości przeglądania"; +"faq_q2_point3" = "• Łączenia z zewnętrznymi serwerami VPN"; +"faq_q2_point4" = "• Szyfrowania lub przekierowywania Twojego ruchu internetowego"; +"faq_q2_a2" = "StosVPN jedynie tworzy lokalny interfejs sieciowy, aby pomóc programistom łączyć się z lokalnymi usługami w celu rozwoju i testowania."; +"faq_q3" = "Dlaczego połączenie się nie udaje?"; +"faq_q3_a1" = "Nieudane połączenia mogą wynikać z braku uprawnień systemowych, błędów konfiguracji lub ograniczeń iOS."; +"faq_troubleshoot_header" = "Kroki rozwiązywania problemów:"; +"faq_troubleshoot1" = "• Upewnij się, że zatwierdziłeś uprawnienia rozszerzenia sieciowego"; +"faq_troubleshoot2" = "• Spróbuj ponownie uruchomić aplikację"; +"faq_troubleshoot3" = "• Sprawdź, czy konfiguracja IP jest prawidłowa"; +"faq_troubleshoot4" = "• Uruchom ponownie urządzenie, jeśli problemy będą się powtarzać"; +"faq_q4" = "Dla kogo jest ta aplikacja?"; +"faq_q4_intro" = "StosVPN został zaprojektowany głównie dla:"; +"faq_q4_case1" = "• Programistów testujących lokalne serwery webowe"; +"faq_q4_case2" = "• Twórców aplikacji testujących funkcje sieciowe"; +"faq_q4_case3" = "• Inżynierów QA testujących aplikacje w izolowanych środowiskach"; +"faq_q4_case4" = "• Każdego, kto potrzebuje dostępu do lokalnych usług na iOS"; +"faq_q4_conclusion" = "Aplikacja jest publicznie dostępna i przydatna dla deweloperów testujących aplikacje z funkcjami sieciowymi na iOS."; +"business_model_header" = "Model biznesowy"; +"biz_q1" = "Jak działa StosVPN?"; +"biz_q1_a1" = "StosVPN to całkowicie darmowa aplikacja dostępna publicznie. Nie ma żadnych płatnych funkcji, subskrypcji ani zakupów w aplikacji."; +"biz_key_points_header" = "Kluczowe cechy naszego modelu:"; +"biz_point1" = "• Aplikacja nie jest powiązana z żadną firmą ani organizacją"; +"biz_point2" = "• Każdy może pobrać i używać aplikacji z App Store"; +"biz_point3" = "• Nie jest wymagane zakładanie konta"; +"biz_point4" = "• Wszystkie funkcje są dostępne za darmo dla wszystkich użytkowników"; +"biz_point5" = "• Aplikacja jest rozwijana i utrzymywana jako otwarte narzędzie dla społeczności iOS"; +"app_info_header" = "Informacje o aplikacji"; +"requires_ios" = "Wymaga iOS 14.0 lub nowszego"; +"uses_network_extension" = "Wykorzystuje API Apple Network Extension"; +"help_and_support_nav" = "Pomoc i wsparcie"; +"setup_welcome_title" = "Witamy w StosVPN"; +"setup_welcome_description" = "Prosty lokalny tunel sieciowy dla programistów"; +"setup_welcome_details" = "StosVPN tworzy lokalny interfejs sieciowy do rozwoju, testowania i dostępu do lokalnych serwerów. Aplikacja NIE zbiera danych użytkownika ani nie przekierowuje ruchu przez zewnętrzne serwery."; +"setup_why_title" = "Dlaczego warto używać StosVPN?"; +"setup_why_description" = "Idealny dla programistów iOS"; +"setup_why_details" = "• Dostęp do lokalnych serwerów webowych i środowisk deweloperskich\n• Testowanie aplikacji wymagających określonych konfiguracji sieci\n• Łączenie z lokalnymi usługami sieciowymi bez skomplikowanej konfiguracji\n• Tworzenie izolowanych środowisk testowych"; +"setup_easy_title" = "Łatwy w użyciu"; +"setup_easy_description" = "Połączenie za pomocą jednego kliknięcia"; +"setup_easy_details" = "StosVPN został zaprojektowany z myślą o prostocie. Wystarczy kliknąć przycisk połączenia, aby ustanowić lokalny tunel z gotową konfiguracją."; +"setup_privacy_title" = "Skoncentrowany na prywatności"; +"setup_privacy_description" = "Twoje dane pozostają na urządzeniu"; +"setup_privacy_details" = "StosVPN tworzy lokalny tunel, który nie przekierowuje ruchu przez zewnętrzne serwery. Cały ruch pozostaje na Twoim urządzeniu, zapewniając prywatność i bezpieczeństwo. Żadne dane nie są zbierane ani udostępniane osobom trzecim."; +"setup_nav" = "Konfiguracja"; +"setup_get_started" = "Zaczynamy"; +"setup_next" = "Dalej"; +"setup_skip" = "Pomiń"; From 302e9c90c7c451111da9925c89eea8bfcece8489 Mon Sep 17 00:00:00 2001 From: Marcin Maj Date: Thu, 7 Aug 2025 23:52:13 +0200 Subject: [PATCH 2/4] Add missing tag --- StosVPN/ContentView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 50c915d..7bfdcd0 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -683,6 +683,7 @@ struct SettingsView: View { Text("English").tag("en") Text("Spanish").tag("es") Text("Italian").tag("it") + Text("Polish").tag("pl") } .onChange(of: selectedLanguage) { newValue in let languageCode = newValue From 01f3da1de695e791e096f8b0a6601207e905446f Mon Sep 17 00:00:00 2001 From: Marcin Maj Date: Thu, 7 Aug 2025 23:57:25 +0200 Subject: [PATCH 3/4] Repair syntax --- StosVPN/ContentView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 7bfdcd0..ba519bb 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -683,7 +683,7 @@ struct SettingsView: View { Text("English").tag("en") Text("Spanish").tag("es") Text("Italian").tag("it") - Text("Polish").tag("pl") + Text("Polish").tag("pl") } .onChange(of: selectedLanguage) { newValue in let languageCode = newValue From d380588e65e22dd7078cda31feb49c666968f5e7 Mon Sep 17 00:00:00 2001 From: marcinmajsc <27273303+marcinmajsc@users.noreply.github.com> Date: Thu, 2 Oct 2025 05:59:54 +0200 Subject: [PATCH 4/4] Update Localizable.strings Add missing strings. Signed-off-by: marcinmajsc <27273303+marcinmajsc@users.noreply.github.com> --- StosVPN/Localization/pl.lproj/Localizable.strings | 3 +++ 1 file changed, 3 insertions(+) diff --git a/StosVPN/Localization/pl.lproj/Localizable.strings b/StosVPN/Localization/pl.lproj/Localizable.strings index 55642d9..9815f62 100644 --- a/StosVPN/Localization/pl.lproj/Localizable.strings +++ b/StosVPN/Localization/pl.lproj/Localizable.strings @@ -45,6 +45,9 @@ "settings" = "Ustawienia"; "done" = "Gotowe"; +"warning_alert" = "Uwaga"; +"warning_message" = "Zmiana ustawień IP tunelu może zakłócić połączenie sieciowe. Kontynuuj tylko wtedy, gdy jesteś pewien tego, co robisz."; +"understand_button" = "Rozumiem"; "data_collection_policy_title" = "Polityka zbierania danych"; "no_data_collection" = "Brak zbierania danych"; "no_data_collection_description" = "StosVPN NIE zbiera danych użytkownika, informacji o ruchu ani aktywności w przeglądarce. Aplikacja tworzy lokalny tunel sieciowy, który działa wyłącznie na Twoim urządzeniu.";