From 62ee0e894a98c3c46e475bab81f08dfc85da66ec Mon Sep 17 00:00:00 2001 From: cheykrym Date: Wed, 8 Oct 2025 03:48:24 +0300 Subject: [PATCH] add localizable to edit privacy --- yobble/Network/ProfileService.swift | 6 - yobble/Resources/Localizable.xcstrings | 288 ++++++++++++++++-- .../Tab/Settings/ChangePasswordView.swift | 2 +- .../Views/Tab/Settings/EditPrivacyView.swift | 59 ++-- 4 files changed, 291 insertions(+), 64 deletions(-) diff --git a/yobble/Network/ProfileService.swift b/yobble/Network/ProfileService.swift index 8d5db9d..9865d21 100644 --- a/yobble/Network/ProfileService.swift +++ b/yobble/Network/ProfileService.swift @@ -82,12 +82,6 @@ final class ProfileService { completion(.failure(ProfileServiceError.encoding(message))) return } - - if let jsonString = String(data: body, encoding: .utf8) { - print("πŸ“€ Request Body JSON:\n\(jsonString)") - } else { - print("⚠️ НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π² строку") - } client.request( path: "/v1/profile/edit", diff --git a/yobble/Resources/Localizable.xcstrings b/yobble/Resources/Localizable.xcstrings index bbc57d9..36befe5 100644 --- a/yobble/Resources/Localizable.xcstrings +++ b/yobble/Resources/Localizable.xcstrings @@ -14,6 +14,16 @@ } } }, + "%@: %@" : { + "localizations" : { + "ru" : { + "stringUnit" : { + "state" : "new", + "value" : "%1$@: %2$@" + } + } + } + }, "%lld" : { }, @@ -148,7 +158,14 @@ } }, "АвтоудалСниС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Account Auto-Deletion" + } + } + } }, "АктивныС сСссии" : { "localizations" : { @@ -170,13 +187,34 @@ }, "Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visibility & Content" + } + } + } }, "Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ статуса 'Π±Ρ‹Π» Π² сСти'" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "'Last Seen' Status Visibility" + } + } + } }, "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enable Account Auto-Deletion" + } + } + } }, "Π’Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅" : { @@ -191,6 +229,16 @@ } } }, + "ВсС" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Everyone" + } + } + } + }, "Π’Ρ‹" : { "localizations" : { "en" : { @@ -221,7 +269,15 @@ "comment" : "Global search section" }, "Π“ΠΎΡ‚ΠΎΠ²ΠΎ" : { - "comment" : "Profile update success title" + "comment" : "Profile update success title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" + } + } + } }, "Π”Π°Π½Π½Ρ‹Π΅" : { @@ -420,6 +476,16 @@ "ΠšΠ»ΠΈΠΊΠ΅Ρ€ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅" : { "comment" : "Concept tab placeholder title" }, + "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacts" + } + } + } + }, "ΠšΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ" : { "localizations" : { "en" : { @@ -456,13 +522,34 @@ } }, "ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Who Can Call" + } + } + } }, "ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² бСсСды" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Who Can Invite to Group Chats" + } + } + } }, "ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠΈ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Who Can Invite to Public Groups" + } + } + } }, "Π›Π΅Π½Ρ‚Π°" : { "localizations" : { @@ -519,8 +606,15 @@ "Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹" : { "comment" : "Local search section" }, - "МаксимальноС врСмя автоудалСния: %@" : { - + "МаксимальноС врСмя автоудалСния" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maximum Auto-Delete Time" + } + } + } }, "Мини-прилоТСния" : { "comment" : "Applets", @@ -576,10 +670,25 @@ } }, "Настройки приватности" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Settings" + } + } + } }, "Настройки приватности ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹." : { - "comment" : "Profile update success fallback" + "comment" : "Profile update success fallback", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Settings Updated." + } + } + } }, "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск." : { "comment" : "Search error fallback\nSearch service decoding error" @@ -793,6 +902,16 @@ } } }, + "Никто" : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nobody" + } + } + } + }, "НичСго Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ" : { "comment" : "Global search empty state" }, @@ -831,7 +950,14 @@ }, "ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ автоудалСния (максимум)" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Limit Auto-Delete Timer (Maximum)" + } + } + } }, "ОписаниС" : { @@ -1044,13 +1170,34 @@ } }, "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΈΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show Bio to Non-Contacts" + } + } + } }, "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ сторисы Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show Stories to Non-Contacts" + } + } + } }, "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show Profile Photo to Non-Contacts" + } + } + } }, "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ БистСмы 1" : { "comment" : "ВСстовая ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° ΠΎΡ„Ρ„ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°", @@ -1079,7 +1226,14 @@ }, "ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Private Chats" + } + } + } }, "ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ достигло Π»ΠΈΠΌΠΈΡ‚Π° использования." : { "localizations" : { @@ -1112,7 +1266,14 @@ } }, "ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΈ Π·Π²ΠΎΠ½ΠΊΠΈ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invitations & Calls" + } + } + } }, "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅" : { @@ -1128,10 +1289,24 @@ } }, "ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния ΠΎΡ‚ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ†Π΅Π²" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Messages from Non-Contacts" + } + } + } }, "ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ автоудалСния сообщСний" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Force Auto-Delete in Private Chats" + } + } + } }, "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ." : { "localizations" : { @@ -1170,19 +1345,47 @@ "comment" : "Search placeholder title" }, "ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ поиск" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profile & Search" + } + } + } }, "ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ информация" : { }, "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пСрСсылку сообщСний" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Message Forwarding" + } + } + } }, "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ поиск профиля" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Profile Search" + } + } + } }, "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Π°Ρ‚Ρ‹ Π½Π° сСрвСрС" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow Storing Chats on Server" + } + } + } }, "РСгистрация" : { "comment" : "РСгистрация", @@ -1246,7 +1449,14 @@ } }, "Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset to Default" + } + } + } }, "БвСтлая" : { "localizations" : { @@ -1352,7 +1562,14 @@ }, "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Save Changes" + } + } + } }, "Бпасибо!" : { @@ -1439,9 +1656,17 @@ } }, "Π£Π΄Π°Π»ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Ρ‡Π΅Ρ€Π΅Π· %lld Π΄Π½." : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete Account After %lld days." + } + } + } }, "Π£Ρ€Π°!" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -1494,7 +1719,14 @@ } }, "Π§Π°Ρ‚Ρ‹ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅" : { - + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chats & Storage" + } + } + } }, "Π§Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΈ" : { "comment" : "Drafts", diff --git a/yobble/Views/Tab/Settings/ChangePasswordView.swift b/yobble/Views/Tab/Settings/ChangePasswordView.swift index 826e082..76c2459 100644 --- a/yobble/Views/Tab/Settings/ChangePasswordView.swift +++ b/yobble/Views/Tab/Settings/ChangePasswordView.swift @@ -176,7 +176,7 @@ struct ChangePasswordView: View { .alert(item: $alertData) { data in Alert( title: Text(data.kind == .success - ? NSLocalizedString("Π£Ρ€Π°!", comment: "") + ? NSLocalizedString("Π“ΠΎΡ‚ΠΎΠ²ΠΎ", comment: "") : NSLocalizedString("Ошибка", comment: "")), message: Text(data.message), dismissButton: .default(Text(NSLocalizedString("OK", comment: ""))) { diff --git a/yobble/Views/Tab/Settings/EditPrivacyView.swift b/yobble/Views/Tab/Settings/EditPrivacyView.swift index 025cd87..91b90bf 100644 --- a/yobble/Views/Tab/Settings/EditPrivacyView.swift +++ b/yobble/Views/Tab/Settings/EditPrivacyView.swift @@ -59,18 +59,18 @@ struct EditPrivacyView: View { } if !isLoading && loadError == nil { - Section(header: Text("ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ поиск")) { - Toggle("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ поиск профиля", isOn: $profilePermissions.isSearchable) - Toggle("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пСрСсылку сообщСний", isOn: $profilePermissions.allowMessageForwarding) - Toggle("ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния ΠΎΡ‚ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ†Π΅Π²", isOn: $profilePermissions.allowMessagesFromNonContacts) + Section(header: Text(NSLocalizedString("ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ поиск", comment: ""))) { + Toggle(NSLocalizedString("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ поиск профиля", comment: ""), isOn: $profilePermissions.isSearchable) + Toggle(NSLocalizedString("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пСрСсылку сообщСний", comment: ""), isOn: $profilePermissions.allowMessageForwarding) + Toggle(NSLocalizedString("ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния ΠΎΡ‚ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ†Π΅Π²", comment: ""), isOn: $profilePermissions.allowMessagesFromNonContacts) } - Section(header: Text("Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚")) { - Toggle("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", isOn: $profilePermissions.showProfilePhotoToNonContacts) - Toggle("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΈΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", isOn: $profilePermissions.showBioToNonContacts) - Toggle("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ сторисы Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", isOn: $profilePermissions.showStoriesToNonContacts) + Section(header: Text(NSLocalizedString("Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚", comment: ""))) { + Toggle(NSLocalizedString("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", comment: ""), isOn: $profilePermissions.showProfilePhotoToNonContacts) + Toggle(NSLocalizedString("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΈΠΎ Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", comment: ""), isOn: $profilePermissions.showBioToNonContacts) + Toggle(NSLocalizedString("ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ сторисы Π½Π΅-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ", comment: ""), isOn: $profilePermissions.showStoriesToNonContacts) - Picker("Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ статуса 'Π±Ρ‹Π» Π² сСти'", selection: $profilePermissions.lastSeenVisibility) { + Picker(NSLocalizedString("Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ статуса 'Π±Ρ‹Π» Π² сСти'", comment: ""), selection: $profilePermissions.lastSeenVisibility) { ForEach(privacyScopeOptions) { scope in Text(scope.title).tag(scope.rawValue) } @@ -78,22 +78,22 @@ struct EditPrivacyView: View { .pickerStyle(.segmented) } - Section(header: Text("ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΈ Π·Π²ΠΎΠ½ΠΊΠΈ")) { - Picker("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠΈ", selection: $profilePermissions.publicInvitePermission) { + Section(header: Text(NSLocalizedString("ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΈ Π·Π²ΠΎΠ½ΠΊΠΈ", comment: ""))) { + Picker(NSLocalizedString("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠΈ", comment: ""), selection: $profilePermissions.publicInvitePermission) { ForEach(privacyScopeOptions) { scope in Text(scope.title).tag(scope.rawValue) } } .pickerStyle(.segmented) - Picker("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² бСсСды", selection: $profilePermissions.groupInvitePermission) { + Picker(NSLocalizedString("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Ρ‚ΡŒ Π² бСсСды", comment: ""), selection: $profilePermissions.groupInvitePermission) { ForEach(privacyScopeOptions) { scope in Text(scope.title).tag(scope.rawValue) } } .pickerStyle(.segmented) - Picker("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ", selection: $profilePermissions.callPermission) { + Picker(NSLocalizedString("ΠšΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ", comment: ""), selection: $profilePermissions.callPermission) { ForEach(privacyScopeOptions) { scope in Text(scope.title).tag(scope.rawValue) } @@ -101,27 +101,28 @@ struct EditPrivacyView: View { .pickerStyle(.segmented) } - Section(header: Text("Π§Π°Ρ‚Ρ‹ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅")) { - Toggle("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Π°Ρ‚Ρ‹ Π½Π° сСрвСрС", isOn: $profilePermissions.allowServerChats) + Section(header: Text(NSLocalizedString("Π§Π°Ρ‚Ρ‹ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅", comment: ""))) { + Toggle(NSLocalizedString("Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Π°Ρ‚Ρ‹ Π½Π° сСрвСрС", comment: ""), isOn: $profilePermissions.allowServerChats) } - Section(header: Text("ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹")) { - Toggle("ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ автоудалСния сообщСний", isOn: $profilePermissions.forceAutoDeleteMessagesInPrivate) - Toggle("ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ автоудалСния (максимум)", isOn: autoDeleteTimerEnabled) + Section(header: Text(NSLocalizedString("ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Ρ‡Π°Ρ‚Ρ‹", comment: ""))) { + Toggle(NSLocalizedString("ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ автоудалСния сообщСний", comment: ""), isOn: $profilePermissions.forceAutoDeleteMessagesInPrivate) + Toggle(NSLocalizedString("ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ автоудалСния (максимум)", comment: ""), isOn: autoDeleteTimerEnabled) if autoDeleteTimerEnabled.wrappedValue { Stepper(value: autoDeleteTimerBinding, in: 5...86400, step: 5) { - Text("МаксимальноС врСмя автоудалСния: \(formattedAutoDeleteSeconds(autoDeleteTimerBinding.wrappedValue))") + Text("\(NSLocalizedString("МаксимальноС врСмя автоудалСния", comment: "")): \(formattedAutoDeleteSeconds(autoDeleteTimerBinding.wrappedValue))") } } } - Section(header: Text("АвтоудалСниС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°")) { - Toggle("Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°", isOn: autoDeleteAccountEnabled) + Section(header: Text(NSLocalizedString("АвтоудалСниС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°", comment: ""))) { + Toggle(NSLocalizedString("Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°", comment: ""), isOn: autoDeleteAccountEnabled) if autoDeleteAccountEnabled.wrappedValue { Stepper(value: autoDeleteAccountBinding, in: 1...365) { - Text("Π£Π΄Π°Π»ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Ρ‡Π΅Ρ€Π΅Π· \(autoDeleteAccountBinding.wrappedValue) Π΄Π½.") + Text(String(format: NSLocalizedString("Π£Π΄Π°Π»ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Ρ‡Π΅Ρ€Π΅Π· %lld Π΄Π½.", comment: ""), autoDeleteAccountBinding.wrappedValue)) + } } } @@ -136,7 +137,7 @@ struct EditPrivacyView: View { ProgressView() .frame(maxWidth: .infinity, alignment: .center) } else { - Text("Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния") + Text(NSLocalizedString("Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния", comment: "")) .frame(maxWidth: .infinity, alignment: .center) } } @@ -146,9 +147,9 @@ struct EditPrivacyView: View { Section { Button(role: .destructive) { profilePermissions = ProfilePermissionsState() - print("Настройки приватности ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ ΠΊ значСниям ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ") + if AppConfig.DEBUG {print("Настройки приватности ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ ΠΊ значСниям ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ")} } label: { - Text("Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ") + Text(NSLocalizedString("Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ", comment: "")) .frame(maxWidth: .infinity, alignment: .center) } } @@ -165,7 +166,7 @@ struct EditPrivacyView: View { } ) } - .navigationTitle("Настройки приватности") + .navigationTitle(NSLocalizedString("Настройки приватности", comment: "")) .task { await loadProfile() } @@ -203,11 +204,11 @@ private enum PrivacyScope: Int, CaseIterable, Identifiable { var title: String { switch self { case .everyone: - return "ВсС" + return NSLocalizedString("ВсС", comment: "") case .contacts: - return "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹" + return NSLocalizedString("ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹", comment: "") case .nobody: - return "Никто" + return NSLocalizedString("Никто", comment: "") } } }