diff --git a/StosVPN.xcodeproj/project.pbxproj b/StosVPN.xcodeproj/project.pbxproj index 2e4428e..6420a79 100644 --- a/StosVPN.xcodeproj/project.pbxproj +++ b/StosVPN.xcodeproj/project.pbxproj @@ -197,6 +197,7 @@ es, it, pl, + zh, ); mainGroup = 4EB3C74F2D96631A00C1B22C; minimizedProjectReferenceProxies = 1; diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 9159f68..cdce391 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -945,6 +945,7 @@ struct SettingsView: View { Text("Spanish").tag("es") Text("Italian").tag("it") Text("Polish").tag("pl") + Text("Chinese").tag("zh") } .onChange(of: selectedLanguage) { newValue in let languageCode = newValue @@ -1335,7 +1336,7 @@ class LanguageManager: ObservableObject { @Published var currentLanguage: String = Locale.current.languageCode ?? "en" - private let supportedLanguages = ["en", "es", "it", "pl"] + private let supportedLanguages = ["en", "es", "it", "pl", "zh"] func updateLanguage(to languageCode: String) { if supportedLanguages.contains(languageCode) { diff --git a/StosVPN/Localization/en.lproj/Localizable.strings b/StosVPN/Localization/en.lproj/Localizable.strings index 8a3c8f3..6b1cf33 100644 --- a/StosVPN/Localization/en.lproj/Localizable.strings +++ b/StosVPN/Localization/en.lproj/Localizable.strings @@ -42,6 +42,7 @@ "spanish" = "Spanish"; "italian" = "Italian"; "polish" = "Polish"; +"chinese" = "Chinese"; "settings" = "Settings"; "done" = "Done"; "warning_alert" = "Warning"; diff --git a/StosVPN/Localization/es.lproj/Localizable.strings b/StosVPN/Localization/es.lproj/Localizable.strings index 5152a6a..336540b 100644 --- a/StosVPN/Localization/es.lproj/Localizable.strings +++ b/StosVPN/Localization/es.lproj/Localizable.strings @@ -42,6 +42,7 @@ "spanish" = "Español"; "italian" = "Italiano"; "polish" = "Polish"; +"chinese" = "Chinese"; "settings" = "Configuración"; "done" = "Hecho"; "warning_alert" = "Advertencia"; diff --git a/StosVPN/Localization/it.lproj/Localizable.strings b/StosVPN/Localization/it.lproj/Localizable.strings index 44c266a..35dae55 100644 --- a/StosVPN/Localization/it.lproj/Localizable.strings +++ b/StosVPN/Localization/it.lproj/Localizable.strings @@ -42,6 +42,7 @@ "spanish" = "Spagnolo"; "italian" = "Italiano"; "polish" = "Polish"; +"chinese" = "Chinese"; "settings" = "Impostazioni"; "done" = "Fine"; "warning_alert" = "Avviso"; diff --git a/StosVPN/Localization/pl.lproj/Localizable.strings b/StosVPN/Localization/pl.lproj/Localizable.strings index 9815f62..78a4db6 100644 --- a/StosVPN/Localization/pl.lproj/Localizable.strings +++ b/StosVPN/Localization/pl.lproj/Localizable.strings @@ -42,6 +42,7 @@ "spanish" = "Hiszpański"; "italian" = "Włoski"; "polish" = "Polski"; +"chinese" = "Chiński"; "settings" = "Ustawienia"; "done" = "Gotowe"; diff --git a/StosVPN/Localization/zh.lproj/Localizable.strings b/StosVPN/Localization/zh.lproj/Localizable.strings new file mode 100644 index 0000000..dae6d1a --- /dev/null +++ b/StosVPN/Localization/zh.lproj/Localizable.strings @@ -0,0 +1,122 @@ +/* MARK: Start Screen */ + +"disconnected" = "已断开"; +"connecting" = "连接中"; +"connected" = "已连接"; +"disconnecting" = "断开中"; +"error" = "错误"; + +"local_tunnel_active" = "本地隧道已激活"; +"local_tunnel_inactive" = "本地隧道未激活"; + +"connect" = "连接"; +"disconnect" = "断开"; +"connecting_ellipsis" = "连接中..."; +"disconnecting_ellipsis" = "断开中..."; +"server_address_name" = "StosVPN 本地隧道"; + +"local_tunnel_details" = "隧道详情"; +"time_connected" = "连接时长"; +"status" = "状态"; +"active" = "活跃"; +"network_interface" = "网络接口"; +"local" = "本地"; +"assigned_ip" = "分配的IP"; + +/* MARK: Settings */ + +"connection_settings" = "连接设置"; +"auto_connect_on_launch" = "启动时自动连接"; +"connection_logs" = "连接日志"; +"network_configuration" = "网络配置"; +"device_ip" = "设备IP"; +"tunnel_ip" = "隧道IP"; +"subnet_mask" = "子网掩码"; +"app_information" = "应用信息"; +"privacy_policy" = "隐私政策"; +"data_collection_policy" = "数据收集政策"; +"app_version" = "应用版本"; +"help_and_support" = "帮助与支持"; +"language" = "语言设置"; +"english" = "English"; +"spanish" = "Spanish"; +"italian" = "Italian"; +"polish" = "Polish"; +"chinese" = "简体中文"; +"settings" = "设置"; +"done" = "完成"; +"warning_alert" = "警告"; +"warning_message" = "更改隧道IP设置可能会中断您的网络连接。只有在确定自己在做什么的情况下才能继续。"; +"understand_button" = "我明白"; + +"data_collection_policy_title" = "数据收集政策"; +"no_data_collection" = "不收集数据"; +"no_data_collection_description" = "StosVPN 不收集用户数据、流量信息或浏览活动。此应用创建的本地网络隧道完全保留在您的设备上。"; +"local_processing_only" = "仅本地处理"; +"local_processing_only_description" = "所有网络流量和配置都在您的设备上本地处理。没有任何信息离开设备或通过互联网传输。"; +"no_third_party_sharing" = "不与第三方共享"; +"no_third_party_sharing_description" = "由于我们不收集数据,因此不会与第三方共享。我们在此应用中没有分析、跟踪或数据收集机制。"; +"why_use_network_permissions" = "为什么使用网络权限"; +"why_use_network_permissions_description" = "StosVPN 需要网络扩展权限才能在您的设备上创建本地网络接口。这专门用于本地开发和测试。"; +"our_promise" = "我们的承诺"; +"our_promise_description" = "我们致力于隐私和透明度。此应用专为开发人员设计,用于测试和连接到本地服务器,无隐私顾虑。"; +"data_collection_policy_nav" = "数据收集"; +"logs_nav" = "日志"; +"faq_header" = "常见问题"; +"faq_q1" = "这个应用做什么?"; +"faq_q1_a1" = "StosVPN 为开发和测试创建本地网络接口。它不通过外部服务器路由流量:一切都保留在设备上。"; +"faq_common_use_cases" = "常见用例包括:"; +"faq_case1" = "• 使用本地服务器进行Web应用测试"; +"faq_case2" = "• 网络功能的开发和调试"; +"faq_case3" = "• 访问托管的本地开发环境"; +"faq_case4" = "• 测试需要特定网络配置的应用"; +"faq_q2" = "这是传统的VPN吗?"; +"faq_q2_a1" = "不,StosVPN 不是传统的VPN服务。它不会:"; +"faq_q2_point1" = "• 通过外部服务器路由您的流量"; +"faq_q2_point2" = "• 为浏览提供隐私或匿名性"; +"faq_q2_point3" = "• 连接到远程VPN服务器"; +"faq_q2_point4" = "• 加密或路由您的互联网流量"; +"faq_q2_a2" = "StosVPN 只创建本地网络接口,帮助开发人员连接到本地服务进行开发和测试。"; +"faq_q3" = "为什么连接失败?"; +"faq_q3_a1" = "连接失败可能是由于系统权限、配置错误或iOS限制。"; +"faq_troubleshoot_header" = "故障排除步骤:"; +"faq_troubleshoot1" = "• 确保您已批准网络扩展权限"; +"faq_troubleshoot2" = "• 尝试重启应用"; +"faq_troubleshoot3" = "• 检查IP配置是否有效"; +"faq_troubleshoot4" = "• 如果问题持续存在,请重启设备"; +"faq_q4" = "这个应用适合谁?"; +"faq_q4_intro" = "StosVPN 主要为以下人员设计:"; +"faq_q4_case1" = "• 测试本地Web服务器的开发人员"; +"faq_q4_case2" = "• 测试网络功能的应用开发人员"; +"faq_q4_case3" = "• 在隔离环境中测试应用的QA工程师"; +"faq_q4_case4" = "• 任何需要在iOS上访问本地服务的人"; +"faq_q4_conclusion" = "此应用公开可用,对需要在iOS上测试具有网络功能的应用的开发人员很有用。"; +"business_model_header" = "商业模式"; +"biz_q1" = "StosVPN 如何工作?"; +"biz_q1_a1" = "StosVPN 是一个完全免费的公共应用。没有付费功能、订阅或应用内购买。"; +"biz_key_points_header" = "我们模式的要点:"; +"biz_point1" = "• 该应用不隶属于任何公司或团体"; +"biz_point2" = "• 任何人都可以从App Store下载和使用该应用"; +"biz_point3" = "• 无需创建账户"; +"biz_point4" = "• 所有功能对所有用户免费"; +"biz_point5" = "• 该应用作为iOS社区的开放实用工具进行开发和维护"; +"app_info_header" = "应用信息"; +"requires_ios" = "需要iOS 14.0或更高版本"; +"uses_network_extension" = "使用Apple网络扩展API"; +"help_and_support_nav" = "帮助与支持"; +"setup_welcome_title" = "欢迎使用StosVPN"; +"setup_welcome_description" = "为开发人员提供的简单本地网络隧道"; +"setup_welcome_details" = "StosVPN 为开发、测试和访问本地服务器创建本地网络接口。此应用不收集用户数据或通过外部服务器路由流量。"; +"setup_why_title" = "为什么使用StosVPN?"; +"setup_why_description" = "非常适合iOS开发人员"; +"setup_why_details" = "• 访问本地Web服务器和开发环境\n• 测试需要特定网络配置的应用\n• 连接到本地网络服务而无需复杂设置\n• 创建隔离的测试环境"; +"setup_easy_title" = "易于使用"; +"setup_easy_description" = "只需一次点击即可连接"; +"setup_easy_details" = "StosVPN 设计简单。只需点击连接按钮即可使用预配置设置建立本地隧道。"; +"setup_privacy_title" = "注重隐私"; +"setup_privacy_description" = "您的数据保留在设备上"; +"setup_privacy_details" = "StosVPN 创建的本地隧道不通过外部服务器路由流量。所有流量都保留在您的设备上,确保隐私和安全。不收集或与第三方共享任何数据。"; +"setup_nav" = "设置"; +"setup_get_started" = "开始使用"; +"setup_next" = "下一步"; +"setup_skip" = "跳过"; \ No newline at end of file