Skip to content

Commit d12efde

Browse files
Added new Languages (#9)
1 parent 67780c1 commit d12efde

File tree

8 files changed

+313
-1
lines changed

8 files changed

+313
-1
lines changed

LocalDevVPN/ContentView.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,8 @@ struct SettingsView: View {
11401140
Text("italian").tag("it")
11411141
Text("polish").tag("pl")
11421142
Text("korean").tag("ko")
1143+
Text("TChinese").tag("zh-Hant")
1144+
Text("french").tag("fr")
11431145
}
11441146
.onChange(of: selectedLanguage) { newValue in
11451147
let languageCode = newValue
@@ -1537,7 +1539,7 @@ struct SetupPageView: View {
15371539
class LanguageManager: ObservableObject {
15381540
static let shared = LanguageManager()
15391541
@Published var currentLanguage: String = Locale.current.languageCode ?? "en"
1540-
private let supportedLanguages = ["en", "es", "it", "pl", "ko"]
1542+
private let supportedLanguages = ["en", "es", "it", "pl", "ko", "zh-Hant", "fr"]
15411543

15421544
func updateLanguage(to languageCode: String) {
15431545
if supportedLanguages.contains(languageCode) {

LocalDevVPN/Localization/en.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
"italian" = "Italian";
4949
"polish" = "Polish";
5050
"korean" = "Korean";
51+
"TChinese" = "Traditional Chinese"
52+
"french" = "French";
5153

5254
/* MARK: Settings */
5355

LocalDevVPN/Localization/es.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
"italian" = "Italiano";
4949
"polish" = "Polaco";
5050
"korean" = "Coreano";
51+
"TChinese" = "Chino tradicional"
52+
"french" = "Francés";
5153

5254
/* MARK: Configuración */
5355

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
/* MARK: Start Screen */
2+
3+
"current_status" = "État actuel";
4+
5+
"disconnected" = "Déconnecté";
6+
"connecting" = "Connexion";
7+
"connected" = "Connecté";
8+
"disconnecting" = "Déconnexion";
9+
"error" = "Erreur";
10+
11+
"local_tunnel_active" = "Tunnel local actif";
12+
"local_tunnel_inactive" = "Tunnel local inactif";
13+
14+
"connected_to_ip" = "Connecté à %@";
15+
"connected_at" = "Connecté à";
16+
"ios_might_ask_you_to_allow_the_vpn" = "iOS peut vous demander d'autoriser le VPN";
17+
"disconnecting_safely" = "Déconnexion sécurisée en cours…";
18+
"open_settings_to_review_details" = "Ouvrir les paramètres pour voir les détails";
19+
"tap_connect_to_create_the_tunnel" = "Touchez Se connecter pour créer le tunnel";
20+
21+
"connection" = "Connexion";
22+
"start_or_stop_the_secure_local_tunnel" = "Démarrez ou arrêtez le tunnel local sécurisé.";
23+
24+
"connect" = "Se connecter";
25+
"disconnect" = "Se déconnecter";
26+
"connecting_ellipsis" = "Connexion...";
27+
"disconnecting_ellipsis" = "Déconnexion...";
28+
"server_address_name" = "Tunnel local LocalDevVPN";
29+
30+
"auto-connect_on_launch" = "Connexion automatique au lancement";
31+
"resume_your_last_state_automatically" = "Reprend automatiquement votre dernier état.";
32+
33+
"session_details" = "Détails de la session";
34+
"live_stats_while_the_tunnel_is_connected" = "Statistiques en temps réel pendant que le tunnel est connecté.";
35+
"local_device_ip" = "IP du périphérique local";
36+
37+
"local_tunnel_details" = "Détails du tunnel";
38+
"time_connected" = "Durée de connexion";
39+
"status" = "Statut";
40+
"active" = "Actif";
41+
"network_interface" = "Interface réseau";
42+
"local" = "Local";
43+
"assigned_ip" = "IP assignée";
44+
45+
/* MARK: Settings */
46+
47+
"connection_settings" = "Paramètres de connexion";
48+
"auto_connect_on_launch" = "Connexion automatique au lancement";
49+
"connection_logs" = "Journaux de connexion";
50+
"network_configuration" = "Configuration réseau";
51+
"device_ip" = "IP de l'appareil";
52+
"tunnel_ip" = "IP du tunnel";
53+
"subnet_mask" = "Masque de sous-réseau";
54+
"app_information" = "Informations sur l'App";
55+
"privacy_policy" = "Politique de confidentialité";
56+
"data_collection_policy" = "Politique de collecte de données";
57+
"app_version" = "Version de l'App";
58+
"help_and_support" = "Aide et support";
59+
"language" = "Langue";
60+
"dropdown_language" = "Langue";
61+
62+
/* MARK: Locales* /
63+
"english" = "Anglais";
64+
"spanish" = "Espagnol";
65+
"italian" = "Italien";
66+
"polish" = "Polonais";
67+
"korean" = "Coréen";
68+
"TChinese" = "Chinois traditionnel"
69+
"french" = "Français";
70+
71+
"settings" = "Paramètres";
72+
"done" = "Valider";
73+
"warning_alert" = "Avertissement";
74+
"warning_message" = "La modification des paramètres IP du tunnel peut interrompre votre connexion réseau. Continuez uniquement si vous êtes sûr de ce que vous faites.";
75+
"understand_button" = "J'ai compris";
76+
77+
"data_collection_policy_title" = "Politique de collecte des données";
78+
"no_data_collection" = "Aucune collecte de données";
79+
"no_data_collection_description" = "LocalDevVPN NE collecte PAS les données utilisateur, les informations de trafic ou l'activité de navigation. Cette application crée un tunnel réseau local qui reste entièrement sur votre appareil.";
80+
"local_processing_only" = "Traitement local uniquement";
81+
"local_processing_only_description" = "Tout le trafic réseau et la configuration sont traités localement sur votre appareil. Aucune information ne quitte jamais l'appareil ni n'est transmise sur Internet.";
82+
"no_third_party_sharing" = "Aucun partage avec des tiers";
83+
"no_third_party_sharing_description" = "Puisque nous ne collectons aucune donnée, il n'y a pas de partage avec des tiers. Il n'y a pas d'analyses, de suivi ou de mécanismes de collecte de données dans cette application.";
84+
"why_use_network_permissions" = "Pourquoi demander les autorisations réseau";
85+
"why_use_network_permissions_description" = "LocalDevVPN nécessite des autorisations d'extension réseau pour créer une interface réseau locale sur votre appareil. Ceci est utilisé exclusivement pour le développement et les tests locaux.";
86+
"our_promise" = "Notre engagement";
87+
"our_promise_description" = "Nous nous engageons à respecter la confidentialité et la transparence. Cette application est conçue pour permettre aux développeurs de tester et de se connecter à des serveurs locaux sans aucune préoccupation de confidentialité.";
88+
"data_collection_policy_nav" = "Collecte des données";
89+
"logs_nav" = "Journaux";
90+
"faq_header" = "Questions fréquentes";
91+
"faq_q1" = "Que fait cette application?";
92+
"faq_q1_a1" = "LocalDevVPN crée une interface réseau locale pour le développement et les tests. Elle ne redirige pas le trafic via des serveurs externes: tout reste sur l'appareil.";
93+
"faq_common_use_cases" = "Cas d'utilisation courants:";
94+
"faq_case1" = "• Tests d'applications web avec des serveurs locaux";
95+
"faq_case2" = "• Développement et débogage de fonctionnalités réseau";
96+
"faq_case3" = "• Accès à des environnements de développement locaux hébergés";
97+
"faq_case4" = "• Tests d'applications nécessitant des configurations réseau spécifiques";
98+
"faq_q2" = "Est-ce un VPN traditionnel?";
99+
"faq_q2_a1" = "Non, LocalDevVPN n'est PAS un service VPN traditionnel. Il:";
100+
"faq_q2_point1" = "• NE redirige pas votre trafic via des serveurs externes";
101+
"faq_q2_point2" = "• N'offre pas de confidentialité ou d'anonymat pour la navigation";
102+
"faq_q2_point3" = "• NE se connecte pas à des serveurs VPN distants";
103+
"faq_q2_point4" = "• NE chiffre ni ne redirige votre trafic Internet";
104+
"faq_q2_a2" = "LocalDevVPN crée uniquement une interface réseau locale pour permettre aux développeurs de se connecter à des services locaux à des fins de développement et de test.";
105+
"faq_q3" = "Pourquoi la connexion échoue-t-elle?";
106+
"faq_q3_a1" = "Les échecs de connexion peuvent être dus à des autorisations système, à des erreurs de configuration ou à des restrictions iOS.";
107+
"faq_troubleshoot_header" = "Étapes de dépannage:";
108+
"faq_troubleshoot1" = "• Assurez-vous d'avoir approuvé l'autorisation d'extension réseau";
109+
"faq_troubleshoot2" = "• Essayez de redémarrer l'application";
110+
"faq_troubleshoot3" = "• Vérifiez si la configuration IP est valide";
111+
"faq_troubleshoot4" = "• Redémarrez l'appareil si les problèmes persistent";
112+
"faq_q4" = "À qui s'adresse cette app?";
113+
"faq_q4_intro" = "LocalDevVPN est principalement destiné pour:";
114+
"faq_q4_case1" = "• Les développeurs testant des serveurs web locaux";
115+
"faq_q4_case2" = "• Les développeurs d'applications testant des fonctionnalités réseau";
116+
"faq_q4_case3" = "• Les ingénieurs QA testant des applications en environnement isolé";
117+
"faq_q4_case4" = "• Toute personne ayant besoin d'accéder à des services locaux sur iOS";
118+
"faq_q4_conclusion" = "Cette app est publique et utile aux développeurs qui ont besoin de tester des applications avec des fonctionnalités réseau sur iOS.";
119+
"business_model_header" = "Modèle économique";
120+
"biz_q1" = "Comment fonctionne LocalDevVPN?";
121+
"biz_q1_a1" = "LocalDevVPN est une app entièrement gratuite, disponible pour tous. Il n'y a aucune fonctionnalité payante, aucun abonnement ni achat intégré.";
122+
"biz_key_points_header" = "Points clés de notre modèle:";
123+
"biz_point1" = "• L'application n'est liée à aucune entreprise ou groupe";
124+
"biz_point2" = "• N'importe qui peut télécharger et utiliser l'application depuis l'App Store";
125+
"biz_point3" = "• Aucune création de compte n'est requise";
126+
"biz_point4" = "• Toutes les fonctionnalités sont gratuites pour tous les utilisateurs";
127+
"biz_point5" = "• L'application est développée et maintenue comme un utilitaire ouvert pour la communauté iOS";
128+
"app_info_header" = "Informations sur l'App";
129+
"requires_ios" = "Nécessite iOS 16.0 ou version ultérieure";
130+
"uses_network_extension" = "Utilise les API Network Extension d'Apple";
131+
"help_and_support_nav" = "Aide & support";
132+
"setup_welcome_title" = "Bienvenue sur LocalDevVPN";
133+
"setup_welcome_description" = "Un tunnel réseau local simple pour les développeurs";
134+
"setup_welcome_details" = "LocalDevVPN crée une interface réseau locale pour le développement, les tests et l'accès à des serveurs locaux. Cette application NE collecte pas de données utilisateur et ne redirige pas le trafic via des serveurs externes.";
135+
"setup_why_title" = "Pourquoi utiliser LocalDevVPN?";
136+
"setup_why_description" = "Parfait pour les développeurs iOS";
137+
"setup_why_details" = "• Accédez à des serveurs web locaux et à des environnements de développement\n• Testez des applications nécessitant des configurations réseau spécifiques\n• Connectez-vous à des services réseau locaux sans configuration complexe\n• Créez des environnements de test isolés";
138+
"setup_easy_title" = "Facile à utiliser";
139+
"setup_easy_description" = "Une seule pression pour se connecter";
140+
"setup_easy_details" = "LocalDevVPN a été conçu pour être simple. Appuyez simplement sur le bouton de connexion pour établir un tunnel local avec des paramètres préconfigurés.";
141+
"setup_privacy_title" = "Respect de la vie privée";
142+
"setup_privacy_description" = "Vos données restent sur l'appareil";
143+
"setup_privacy_details" = "LocalDevVPN crée un tunnel local qui ne redirige pas le trafic via des serveurs externes. Tout le trafic reste sur votre appareil, garantissant confidentialité et sécurité. Aucune donnée n'est collectée ou partagée avec des tiers.";
144+
"setup_nav" = "Configuration";
145+
"setup_get_started" = "Commencer";
146+
"setup_next" = "Suivant";
147+
"setup_skip" = "Ignorer";

LocalDevVPN/Localization/it.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
"italian" = "Italiano";
4949
"polish" = "Polacco";
5050
"korean" = "Coreano";
51+
"TChinese" = "Cinese Tradizionale"
52+
"french" = "Francese";
5153

5254
/* MARK: Settings*/
5355

LocalDevVPN/Localization/ko.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
"italian" = "이탈리아어";
4949
"polish" = "폴란드어";
5050
"korean" = "한국어";
51+
"TChinese" = "중국어(번체)"
52+
"french" = "프랑스어";
5153

5254
/* MARK: Settings */
5355

LocalDevVPN/Localization/pl.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
"italian" = "Włoski";
5050
"polish" = "Polski";
5151
"korean" = "koreański";
52+
"TChinese" = "Tradycyjny chiński"
53+
"french" = "Francuski";
5254

5355
/* MARK: Settings */
5456

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
/* MARK: Start Screen */
2+
3+
"current_status" = "現狀";
4+
5+
"disconnected" = "已中斷連線";
6+
"connecting" = "連線中";
7+
"connected" = "已連線";
8+
"disconnecting" = "中斷連線中";
9+
"error" = "錯誤";
10+
11+
"local_tunnel_active" = "本地通道已啟動";
12+
"local_tunnel_inactive" = "本地通道未啟動";
13+
14+
"connected_to_ip" = "已連接至 %@";
15+
"connected_at" = "連接於";
16+
"ios_might_ask_you_to_allow_the_vpn" = "iOS可能會要求您允許VPN";
17+
"disconnecting_safely" = "安全地中斷連線中…";
18+
"open_settings_to_review_details" = "開啟設定以查看詳細資訊";
19+
"tap_connect_to_create_the_tunnel" = "點選「連線」以建立通道";
20+
21+
"connection" = "連線";
22+
"start_or_stop_the_secure_local_tunnel" = "啟動或停止安全的本地通道。";
23+
24+
"connect" = "連線";
25+
"disconnect" = "斷線";
26+
"connecting_ellipsis" = "連線中...";
27+
"disconnecting_ellipsis" = "中斷連線中...";
28+
"server_address_name" = "LocalDevVPN 本地通道";
29+
30+
"auto-connect_on_launch" = "啟動時自動連線";
31+
"resume_your_last_state_automatically" = "自動恢復您上次的狀態。";
32+
33+
"session_details" = "工作階段詳細資訊";
34+
"live_stats_while_the_tunnel_is_connected" = "通道連接時的即時統計資料。";
35+
"local_device_ip" = "本地設備IP";
36+
37+
"local_tunnel_details" = "通道詳細資訊";
38+
"time_connected" = "連線時間";
39+
"status" = "狀態";
40+
"active" = "啟用中";
41+
"network_interface" = "網路介面";
42+
"local" = "本地";
43+
"assigned_ip" = "分配的IP";
44+
45+
/* MARK: Settings */
46+
47+
"connection_settings" = "連線設定";
48+
"auto_connect_on_launch" = "啟動時自動連線";
49+
"connection_logs" = "連線紀錄";
50+
"network_configuration" = "網路設定";
51+
"device_ip" = "裝置IP";
52+
"tunnel_ip" = "通道IP";
53+
"subnet_mask" = "子網路遮罩";
54+
"app_information" = "應用程式資訊";
55+
"privacy_policy" = "隱私權政策";
56+
"data_collection_policy" = "資料收集政策";
57+
"app_version" = "應用程式版本";
58+
"help_and_support" = "協助與支援";
59+
"language" = "語言";
60+
"dropdown_language" = "語言";
61+
62+
/*MARK: Locales*/
63+
"english" = "英文";
64+
"spanish" = "西班牙文";
65+
"italian" = "義大利文";
66+
"polish" = "波蘭文";
67+
"korean" = "韓文";
68+
"TChinese" = "繁體中文"
69+
"french" = "法語";
70+
71+
"settings" = "設定";
72+
"done" = "完成";
73+
"warning_alert" = "警告";
74+
"warning_message" = "更改通道IP設定可能會中斷您的網路連線。僅在完全了解操作時才繼續。";
75+
"understand_button" = "我了解";
76+
77+
"data_collection_policy_title" = "資料收集政策";
78+
"no_data_collection" = "不收集資料";
79+
"no_data_collection_description" = "LocalDevVPN 不會收集使用者資料、流量資訊或瀏覽紀錄。此應用程式僅建立在裝置上的本地網路通道。";
80+
"local_processing_only" = "僅本地處理";
81+
"local_processing_only_description" = "所有網路流量和設定皆在您的裝置上處理。資訊不會離開裝置或傳輸到網際網路。";
82+
"no_third_party_sharing" = "不與第三方共享";
83+
"no_third_party_sharing_description" = "由於我們不收集資料,因此也不會與第三方共享。此應用程式中沒有分析、追蹤或資料收集機制。";
84+
"why_use_network_permissions" = "為何需要網路權限";
85+
"why_use_network_permissions_description" = "LocalDevVPN 需要網路延伸權限來建立裝置上的本地網路介面。這僅用於本地開發與測試。";
86+
"our_promise" = "我們的承諾";
87+
"our_promise_description" = "我們重視隱私與透明度。此應用程式專為開發者設計,可在無隱私疑慮下連接本地服務。";
88+
"data_collection_policy_nav" = "資料收集";
89+
"logs_nav" = "紀錄";
90+
"faq_header" = "常見問題";
91+
"faq_q1" = "這個應用程式是做什麼的?";
92+
"faq_q1_a1" = "LocalDevVPN 建立本地網路介面以供開發與測試使用。它不會透過外部伺服器傳送流量:所有操作皆在裝置上進行。";
93+
"faq_common_use_cases" = "常見使用情境包括:";
94+
"faq_case1" = "• 使用本地伺服器進行網頁應用測試";
95+
"faq_case2" = "• 網路功能的開發與除錯";
96+
"faq_case3" = "• 存取本地開發環境";
97+
"faq_case4" = "• 測試需要特定網路設定的應用程式";
98+
"faq_q2" = "這是傳統 VPN 嗎?";
99+
"faq_q2_a1" = "不,LocalDevVPN 並非傳統 VPN 服務。它不會:";
100+
"faq_q2_point1" = "• 將您的流量透過外部伺服器";
101+
"faq_q2_point2" = "• 提供瀏覽隱私或匿名";
102+
"faq_q2_point3" = "• 連接到遠端 VPN 伺服器";
103+
"faq_q2_point4" = "• 加密或路由您的網際網路流量";
104+
"faq_q2_a2" = "LocalDevVPN 只建立本地網路介面,協助開發者連接本地服務進行開發與測試。";
105+
"faq_q3" = "為什麼連線會失敗?";
106+
"faq_q3_a1" = "連線失敗可能因系統權限、設定錯誤或 iOS 限制所致。";
107+
"faq_troubleshoot_header" = "故障排除步驟:";
108+
"faq_troubleshoot1" = "• 確認已批准網路延伸權限";
109+
"faq_troubleshoot2" = "• 嘗試重新啟動應用程式";
110+
"faq_troubleshoot3" = "• 檢查 IP 設定是否正確";
111+
"faq_troubleshoot4" = "• 問題持續則重新啟動裝置";
112+
"faq_q4" = "這個應用程式適合誰使用?";
113+
"faq_q4_intro" = "LocalDevVPN 主要適用於:";
114+
"faq_q4_case1" = "• 測試本地網頁伺服器的開發者";
115+
"faq_q4_case2" = "• 測試網路功能的應用程式開發者";
116+
"faq_q4_case3" = "• 在隔離環境中測試應用程式的 QA 工程師";
117+
"faq_q4_case4" = "• 需要存取iOS上本地服務的使用者";
118+
"faq_q4_conclusion" = "此應用程式公開提供,對需要在iOS上測試網路功能的開發者非常有用。";
119+
"business_model_header" = "商業模式";
120+
"biz_q1" = "LocalDevVPN 是如何運作的?";
121+
"biz_q1_a1" = "LocalDevVPN 是完全免費的應用程式,公開提供給所有人。沒有付費功能、訂閱或應用程式內購買。";
122+
"biz_key_points_header" = "我們模式的重點:";
123+
"biz_point1" = "• 此應用程式不隸屬任何公司或團體";
124+
"biz_point2" = "• 任何人都可以從App Store下載使用";
125+
"biz_point3" = "• 不需要建立帳號";
126+
"biz_point4" = "• 所有功能對所有使用者皆免費";
127+
"biz_point5" = "• 此應用程式作為開放工具,供iOS社群使用與維護";
128+
"app_info_header" = "應用程式資訊";
129+
"requires_ios" = "需iOS 14.0或更新版本";
130+
"uses_network_extension" = "使用Apple網路延伸API";
131+
"help_and_support_nav" = "協助與支援";
132+
"setup_welcome_title" = "歡迎使用LocalDevVPN";
133+
"setup_welcome_description" = "簡單的本地網路通道工具,專為開發者設計";
134+
"setup_welcome_details" = "LocalDevVPN建立本地網路介面,用於開發、測試及存取本地伺服器。此應用程式不會收集使用者資料,也不會將流量傳送到外部伺服器。";
135+
"setup_why_title" = "為什麼使用LocalDevVPN?";
136+
"setup_why_description" = "iOS開發者的最佳選擇";
137+
"setup_why_details" = "• 存取本地網頁伺服器與開發環境\n• 測試需要特定網路設定的應用程式\n• 無需複雜設定即可連接本地網路服務\n• 創建隔離的測試環境";
138+
"setup_easy_title" = "操作簡單";
139+
"setup_easy_description" = "只需一鍵即可連線";
140+
"setup_easy_details" = "LocalDevVPN設計簡單明瞭,只要點擊連線按鈕即可建立本地通道並使用預設設定。";
141+
"setup_privacy_title" = "重視隱私";
142+
"setup_privacy_description" = "您的資料僅存在裝置上";
143+
"setup_privacy_details" = "LocalDevVPN建立本地通道,不會將流量傳送至外部伺服器。所有流量都停留在裝置上,確保隱私與安全。資料不會被收集或與第三方共享。";
144+
"setup_nav" = "設定";
145+
"setup_get_started" = "開始使用";
146+
"setup_next" = "下一步";
147+
"setup_skip" = "略過";
148+
149+
/*MARK: Restart pop-up*/
150+
restart_title = "重新啟動";
151+
restart_message = "要套用變更,必須重新啟動應用程式。";
152+
confirmYes = "是";
153+
confirmNo = "不";

0 commit comments

Comments
 (0)