diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj index a50e9eb8..b79b8a61 100644 --- a/damus.xcodeproj/project.pbxproj +++ b/damus.xcodeproj/project.pbxproj @@ -282,7 +282,6 @@ 4CA927632A290EB10098A105 /* EventTop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA927622A290EB10098A105 /* EventTop.swift */; }; 4CA927652A290F1A0098A105 /* TimeDot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA927642A290F1A0098A105 /* TimeDot.swift */; }; 4CA927672A290F8B0098A105 /* RelativeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA927662A290F8B0098A105 /* RelativeTime.swift */; }; - 4CA9276A2A290FC00098A105 /* ContextButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA927692A290FC00098A105 /* ContextButton.swift */; }; 4CA9276C2A2910D10098A105 /* ReplyPart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA9276B2A2910D10098A105 /* ReplyPart.swift */; }; 4CAAD8AD298851D000060CEA /* AccountDeletion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CAAD8AC298851D000060CEA /* AccountDeletion.swift */; }; 4CAAD8B029888AD200060CEA /* RelayConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CAAD8AF29888AD200060CEA /* RelayConfigView.swift */; }; @@ -319,7 +318,6 @@ 4CC7AAF8297F1CEE00430951 /* EventProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAF7297F1CEE00430951 /* EventProfile.swift */; }; 4CC7AAFA297F64AC00430951 /* EventMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC7AAF9297F64AC00430951 /* EventMenu.swift */; }; 4CCEB7AE29B53D260078AA28 /* SearchingEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CCEB7AD29B53D260078AA28 /* SearchingEventView.swift */; }; - 4CCEB7B029B5415A0078AA28 /* SearchingProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CCEB7AF29B5415A0078AA28 /* SearchingProfileView.swift */; }; 4CD348EF29C3659D00497EB2 /* ImageUploadModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD348EE29C3659D00497EB2 /* ImageUploadModel.swift */; }; 4CD7641B28A1641400B6928F /* EndBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD7641A28A1641400B6928F /* EndBlock.swift */; }; 4CDA128A29E9D10C0006FA5A /* SignalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDA128929E9D10C0006FA5A /* SignalView.swift */; }; @@ -742,6 +740,9 @@ 3A41E55A299D52BE001FA465 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; }; 3A41E55B299D52BE001FA465 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = id; path = id.lproj/Localizable.stringsdict; sourceTree = ""; }; 3A4647CE2A413ADC00386AD8 /* CondensedProfilePicturesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CondensedProfilePicturesView.swift; sourceTree = ""; }; + 3A47CB772BDA05A200728A7C /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; }; + 3A47CB782BDA05A200728A7C /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; }; + 3A47CB792BDA05A200728A7C /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fi; path = fi.lproj/Localizable.stringsdict; sourceTree = ""; }; 3A48E7AF29DFBE9D006E787E /* MutedThreadsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MutedThreadsManager.swift; sourceTree = ""; }; 3A5C4575296A879E0032D398 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "es-419"; path = "es-419.lproj/Localizable.stringsdict"; sourceTree = ""; }; 3A5CAE1D298DC0DB00B5334F /* zh-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-CN"; path = "zh-CN.lproj/InfoPlist.strings"; sourceTree = ""; }; @@ -1195,7 +1196,6 @@ 4CA927622A290EB10098A105 /* EventTop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventTop.swift; sourceTree = ""; }; 4CA927642A290F1A0098A105 /* TimeDot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeDot.swift; sourceTree = ""; }; 4CA927662A290F8B0098A105 /* RelativeTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelativeTime.swift; sourceTree = ""; }; - 4CA927692A290FC00098A105 /* ContextButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextButton.swift; sourceTree = ""; }; 4CA9276B2A2910D10098A105 /* ReplyPart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplyPart.swift; sourceTree = ""; }; 4CA9276D2A2A5D110098A105 /* wasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wasm.h; sourceTree = ""; }; 4CA9276E2A2A5D110098A105 /* wasm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = wasm.c; sourceTree = ""; }; @@ -1239,7 +1239,6 @@ 4CC7AAF7297F1CEE00430951 /* EventProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventProfile.swift; sourceTree = ""; }; 4CC7AAF9297F64AC00430951 /* EventMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventMenu.swift; sourceTree = ""; }; 4CCEB7AD29B53D260078AA28 /* SearchingEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchingEventView.swift; sourceTree = ""; }; - 4CCEB7AF29B5415A0078AA28 /* SearchingProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchingProfileView.swift; sourceTree = ""; }; 4CD348EE29C3659D00497EB2 /* ImageUploadModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadModel.swift; sourceTree = ""; }; 4CD7641A28A1641400B6928F /* EndBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndBlock.swift; sourceTree = ""; }; 4CDA128929E9D10C0006FA5A /* SignalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignalView.swift; sourceTree = ""; }; @@ -2292,7 +2291,6 @@ 4CA927622A290EB10098A105 /* EventTop.swift */, 4CC7AAF3297F18B400430951 /* ReplyDescription.swift */, 4CA927662A290F8B0098A105 /* RelativeTime.swift */, - 4CA927692A290FC00098A105 /* ContextButton.swift */, 4CA9276B2A2910D10098A105 /* ReplyPart.swift */, 5C7389B02B6EFA7100781E0A /* ProxyView.swift */, ); @@ -2403,7 +2401,6 @@ isa = PBXGroup; children = ( 4CCEB7AD29B53D260078AA28 /* SearchingEventView.swift */, - 4CCEB7AF29B5415A0078AA28 /* SearchingProfileView.swift */, 4C9D6D1A2B1D35D7004E5CD9 /* PullDownSearch.swift */, ); path = Search; @@ -2940,6 +2937,7 @@ "es-419", "es-ES", fa, + fi, fr, "hu-HU", id, @@ -3082,7 +3080,6 @@ 4C32B9572A9AD44700DC3548 /* Root.swift in Sources */, 4C3EA64428FF558100C48A62 /* sha256.c in Sources */, 504323A72A34915F006AE6DC /* RelayModel.swift in Sources */, - 4CA9276A2A290FC00098A105 /* ContextButton.swift in Sources */, 4CF0ABF62985CD5500D66079 /* UserSearch.swift in Sources */, 4C32B9542A9AD44700DC3548 /* FlatBuffersUtils.swift in Sources */, D7EDED1C2B1178FE0018B19C /* NoteContent.swift in Sources */, @@ -3257,7 +3254,6 @@ 4C2B7BF22A71B6540049DEE7 /* Id.swift in Sources */, 7C95CAEE299DCEF1009DCB67 /* KFOptionSetter+.swift in Sources */, 4C7D09722A0AEF5E00943473 /* DamusGradient.swift in Sources */, - 4CCEB7B029B5415A0078AA28 /* SearchingProfileView.swift in Sources */, 4C463CBF2B960B96008A8C36 /* PurpleBackdrop.swift in Sources */, BAB68BED29543FA3007BA466 /* SelectWalletView.swift in Sources */, 3169CAE6294E69C000EE4006 /* EmptyTimelineView.swift in Sources */, @@ -3771,6 +3767,7 @@ 3AC59CA929CDDB78007E04A6 /* pt-BR */, 3A821C4029E819D500B4BCA7 /* fr */, 3ABACEC02A5B3ED10037A847 /* sw */, + 3A47CB792BDA05A200728A7C /* fi */, ); name = Localizable.stringsdict; sourceTree = ""; @@ -3806,6 +3803,7 @@ 3AC59CA829CDDB78007E04A6 /* pt-BR */, 3A821C3F29E819D500B4BCA7 /* fr */, 3ABACEBF2A5B3ED10037A847 /* sw */, + 3A47CB772BDA05A200728A7C /* fi */, ); name = InfoPlist.strings; sourceTree = ""; @@ -3842,6 +3840,7 @@ 3AC59CA729CDDB78007E04A6 /* pt-BR */, 3A821C3E29E819D500B4BCA7 /* fr */, 3ABACEC12A5B3ED10037A847 /* sw */, + 3A47CB782BDA05A200728A7C /* fi */, ); name = Localizable.strings; sourceTree = ""; diff --git a/damus/Components/Search/SearchHeaderView.swift b/damus/Components/Search/SearchHeaderView.swift index aef87191..7f9449dc 100644 --- a/damus/Components/Search/SearchHeaderView.swift +++ b/damus/Components/Search/SearchHeaderView.swift @@ -35,7 +35,7 @@ struct SearchHeaderView: View { } var SearchText: Text { - Text(verbatim: described.description) + Text(described.description) } var body: some View { @@ -83,9 +83,9 @@ struct SingleCharacterAvatar: View { var body: some View { NonImageAvatar { - Text(verbatim: character) + Text(character) .font(.largeTitle.bold()) - .mask(Text(verbatim: character) + .mask(Text(character) .font(.largeTitle.bold())) } } diff --git a/damus/Components/Status/UserStatusSheet.swift b/damus/Components/Status/UserStatusSheet.swift index 8acbfa77..00f56ff1 100644 --- a/damus/Components/Status/UserStatusSheet.swift +++ b/damus/Components/Status/UserStatusSheet.swift @@ -192,7 +192,7 @@ struct UserStatusSheet: View { Picker(NSLocalizedString("Duration", comment: "Label for profile status expiration duration picker."), selection: $duration) { ForEach(StatusDuration.allCases, id: \.self) { d in - Text(verbatim: d.description) + Text(d.description) .tag(d) } } diff --git a/damus/Components/SupporterBadge.swift b/damus/Components/SupporterBadge.swift index 5a08bd9c..794bbb27 100644 --- a/damus/Components/SupporterBadge.swift +++ b/damus/Components/SupporterBadge.swift @@ -29,7 +29,8 @@ struct SupporterBadge: View { .frame(width:size, height:size) .foregroundStyle(GoldGradient) if self.style == .full { - Text(verbatim: format_date(date: purple_account.created_at, time_style: .none)) + let date = format_date(date: purple_account.created_at, time_style: .none) + Text(date) .foregroundStyle(.secondary) .font(.caption) } diff --git a/damus/Util/CompatibleAttribute.swift b/damus/Util/CompatibleAttribute.swift index 652eb7f4..6810ab9e 100644 --- a/damus/Util/CompatibleAttribute.swift +++ b/damus/Util/CompatibleAttribute.swift @@ -17,7 +17,7 @@ class CompatibleText: Equatable { return AnyView( VStack { Image("warning") - Text(NSLocalizedString("This note contains too many items and cannot be rendered", comment: "Error message indicating that a note is too big and cannot be rendered")) + Text("This note contains too many items and cannot be rendered", comment: "Error message indicating that a note is too big and cannot be rendered") .multilineTextAlignment(.center) } .foregroundColor(.secondary) diff --git a/damus/Views/ActionBar/ShareActionButton.swift b/damus/Views/ActionBar/ShareActionButton.swift index 11e1188d..0910d9de 100644 --- a/damus/Views/ActionBar/ShareActionButton.swift +++ b/damus/Views/ActionBar/ShareActionButton.swift @@ -36,7 +36,7 @@ struct ShareActionButton: View { .frame(width: 55.0, height: 55.0) } .frame(height: 25) - Text(verbatim: text) + Text(text) .foregroundColor(col) .font(.footnote) .multilineTextAlignment(.center) diff --git a/damus/Views/AddRelayView.swift b/damus/Views/AddRelayView.swift index e9749b71..9e7413b8 100644 --- a/damus/Views/AddRelayView.swift +++ b/damus/Views/AddRelayView.swift @@ -121,7 +121,7 @@ struct AddRelayView: View { dismiss() }) { HStack { - Text(verbatim: "Add relay") + Text("Add relay", comment: "Button to add a relay.") .bold() } .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) diff --git a/damus/Views/BookmarksView.swift b/damus/Views/BookmarksView.swift index d240c7c1..f7fb9074 100644 --- a/damus/Views/BookmarksView.swift +++ b/damus/Views/BookmarksView.swift @@ -33,7 +33,7 @@ struct BookmarksView: View { .resizable() .scaledToFit() .frame(width: 32.0, height: 32.0) - Text(NSLocalizedString("You have no bookmarks yet, add them in the context menu", comment: "Text indicating that there are no bookmarks to be viewed")) + Text("You have no bookmarks yet, add them in the context menu", comment: "Text indicating that there are no bookmarks to be viewed") } } else { ScrollView { diff --git a/damus/Views/Buttons/GradientFollowButton.swift b/damus/Views/Buttons/GradientFollowButton.swift index ed799405..2d130692 100644 --- a/damus/Views/Buttons/GradientFollowButton.swift +++ b/damus/Views/Buttons/GradientFollowButton.swift @@ -22,7 +22,8 @@ struct GradientFollowButton: View { Button(action: { follow_state = perform_follow_btn_action(follow_state, target: target) }) { - Text(follow_btn_txt(follow_state, follows_you: follows_you)) + let followButtonText = follow_btn_txt(follow_state, follows_you: follows_you) + Text(followButtonText) .foregroundColor(follow_state == .unfollows ? .white : grayTextColor) .font(.callout) .fontWeight(.medium) diff --git a/damus/Views/ConfigView.swift b/damus/Views/ConfigView.swift index c6e331c3..c273ddd4 100644 --- a/damus/Views/ConfigView.swift +++ b/damus/Views/ConfigView.swift @@ -88,7 +88,7 @@ struct ConfigView: View { } if state.is_privkey_user { - Section(header: Text(NSLocalizedString("Permanently Delete Account", comment: "Section title for deleting the user"))) { + Section(header: Text("Permanently Delete Account", comment: "Section title for deleting the user")) { Button(action: { delete_account_warning = true }, label: { diff --git a/damus/Views/CreateAccountView.swift b/damus/Views/CreateAccountView.swift index 1039b0d1..016f221e 100644 --- a/damus/Views/CreateAccountView.swift +++ b/damus/Views/CreateAccountView.swift @@ -28,7 +28,7 @@ struct CreateAccountView: View { VStack(alignment: .center) { EditPictureControl(uploader: .nostrBuild, pubkey: account.pubkey, image_url: $account.profile_image , uploadObserver: profileUploadObserver, callback: uploadedProfilePicture) - Text(NSLocalizedString("Public Key", comment: "Label to indicate the public key of the account.")) + Text("Public Key", comment: "Label to indicate the public key of the account.") .bold() .padding() .onTapGesture { diff --git a/damus/Views/Events/Components/ContextButton.swift b/damus/Views/Events/Components/ContextButton.swift deleted file mode 100644 index 8a2f0639..00000000 --- a/damus/Views/Events/Components/ContextButton.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// ContextButton.swift -// damus -// -// Created by William Casarin on 2023-06-01. -// - -import SwiftUI - -struct ContextButton: View { - var body: some View { - Text(verbatim: /*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) - } -} - -struct ContextButton_Previews: PreviewProvider { - static var previews: some View { - ContextButton() - } -} diff --git a/damus/Views/Events/Components/ProxyView.swift b/damus/Views/Events/Components/ProxyView.swift index 6df55f4a..afb6cae3 100644 --- a/damus/Views/Events/Components/ProxyView.swift +++ b/damus/Views/Events/Components/ProxyView.swift @@ -36,7 +36,7 @@ struct ProxyView: View { HStack { let protocolLogo = get_protocol_image(protocolName: proxy.protocolName) if protocolLogo.isEmpty { - Text("\(proxy.protocolName)") + Text(proxy.protocolName) .font(.caption) } else { Image(protocolLogo) diff --git a/damus/Views/Images/FullScreenCarouselView.swift b/damus/Views/Images/FullScreenCarouselView.swift index c350a2a0..c24e873b 100644 --- a/damus/Views/Images/FullScreenCarouselView.swift +++ b/damus/Views/Images/FullScreenCarouselView.swift @@ -145,7 +145,7 @@ struct FullScreenCarouselView_Previews: PreviewProvider { HStack { Spacer() - Text("Some content") + Text(verbatim: "Some content") .padding() .foregroundColor(.white) diff --git a/damus/Views/Muting/MuteDurationMenu.swift b/damus/Views/Muting/MuteDurationMenu.swift index 04a24bfa..20a784df 100644 --- a/damus/Views/Muting/MuteDurationMenu.swift +++ b/damus/Views/Muting/MuteDurationMenu.swift @@ -17,7 +17,7 @@ struct MuteDurationMenu: View { Button { action(duration) } label: { - Text("\(duration.title)") + Text(duration.title) } } } label: { @@ -30,6 +30,6 @@ struct MuteDurationMenu: View { MuteDurationMenu { _ in } label: { - Text("Mute hashtag") + Text(verbatim: "Mute hashtag") } } diff --git a/damus/Views/Muting/MutelistView.swift b/damus/Views/Muting/MutelistView.swift index 2091c929..fd4973a4 100644 --- a/damus/Views/Muting/MutelistView.swift +++ b/damus/Views/Muting/MutelistView.swift @@ -62,7 +62,7 @@ struct MutelistView: View { Section(NSLocalizedString("Hashtags", comment: "Section header title for a list of hashtags that are muted.")) { ForEach(hashtags, id: \.self) { item in if case let MuteItem.hashtag(hashtag, _) = item { - Text("#\(hashtag.hashtag)") + Text(verbatim: "#\(hashtag.hashtag)") .id(hashtag.hashtag) .swipeActions { RemoveAction(item: .hashtag(hashtag, nil)) @@ -76,7 +76,7 @@ struct MutelistView: View { Section(NSLocalizedString("Words", comment: "Section header title for a list of words that are muted.")) { ForEach(words, id: \.self) { item in if case let MuteItem.word(word, _) = item { - Text("\(word)") + Text(word) .id(word) .swipeActions { RemoveAction(item: .word(word, nil)) @@ -94,7 +94,7 @@ struct MutelistView: View { RemoveAction(item: .thread(note_id, nil)) } } else { - Text(NSLocalizedString("Error retrieving muted event", comment: "Text for an item that application failed to retrieve the muted event for.")) + Text("Error retrieving muted event", comment: "Text for an item that application failed to retrieve the muted event for.") } } } diff --git a/damus/Views/Notifications/DamusAppNotificationView.swift b/damus/Views/Notifications/DamusAppNotificationView.swift index e73d43e6..27f5e41b 100644 --- a/damus/Views/Notifications/DamusAppNotificationView.swift +++ b/damus/Views/Notifications/DamusAppNotificationView.swift @@ -37,9 +37,9 @@ struct DamusAppNotificationView: View { .shadow(radius: 5, y: 5) VStack(alignment: .leading, spacing: 5) { HStack(alignment: .center, spacing: 3) { - Text(NSLocalizedString("Damus", comment: "Name of the app for the title of an internal notification")) + Text("Damus", comment: "Name of the app for the title of an internal notification") .font(.body.weight(.bold)) - Text("·") + Text(verbatim: "·") .foregroundStyle(.secondary) Text(relative_date) .font(.system(size: 16)) @@ -49,7 +49,7 @@ struct DamusAppNotificationView: View { Image("check-circle.fill") .resizable() .frame(width: 15, height: 15) - Text(NSLocalizedString("Internal app notification", comment: "Badge indicating that a notification is an official internal app notification")) + Text("Internal app notification", comment: "Badge indicating that a notification is an official internal app notification") .font(.caption2) .bold() } diff --git a/damus/Views/Notifications/EventGroupView.swift b/damus/Views/Notifications/EventGroupView.swift index 37fb9c7f..b0fe03dc 100644 --- a/damus/Views/Notifications/EventGroupView.swift +++ b/damus/Views/Notifications/EventGroupView.swift @@ -196,7 +196,7 @@ struct EventGroupView: View { return VStack(alignment: .center) { Image("zap.fill") .foregroundColor(.orange) - Text(verbatim: fmt) + Text(fmt) .foregroundColor(Color.orange) } } diff --git a/damus/Views/Onboarding/OnboardingSuggestionsView.swift b/damus/Views/Onboarding/OnboardingSuggestionsView.swift index 773e22c1..b8377836 100644 --- a/damus/Views/Onboarding/OnboardingSuggestionsView.swift +++ b/damus/Views/Onboarding/OnboardingSuggestionsView.swift @@ -36,7 +36,7 @@ struct OnboardingSuggestionsView: View { .navigationBarItems(leading: Button(action: { self.next_page() }, label: { - Text(NSLocalizedString("Skip", comment: "Button to dismiss the suggested users screen")) + Text("Skip", comment: "Button to dismiss the suggested users screen") .font(.subheadline.weight(.semibold)) })) .tag(0) @@ -48,7 +48,7 @@ struct OnboardingSuggestionsView: View { AnyView( HStack { Image(systemName: "sparkles") - Text(NSLocalizedString("Add your first post", comment: "Prompt given to the user during onboarding, suggesting them to write their first post")) + Text("Add your first post", comment: "Prompt given to the user during onboarding, suggesting them to write their first post") } .foregroundColor(.secondary) .font(.callout) @@ -97,7 +97,7 @@ fileprivate struct SuggestedUsersPageView: View { Button(action: { self.next_page() }) { - Text(NSLocalizedString("Continue", comment: "Button to dismiss suggested users view and continue to the main app")) + Text("Continue", comment: "Button to dismiss suggested users view and continue to the main app") .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) } .buttonStyle(GradientButtonStyle()) diff --git a/damus/Views/PostView.swift b/damus/Views/PostView.swift index 89846b27..6e585f31 100644 --- a/damus/Views/PostView.swift +++ b/damus/Views/PostView.swift @@ -268,7 +268,7 @@ struct PostView: View { Button(action: { self.cancel() }, label: { - Text(NSLocalizedString("Cancel", comment: "Button to cancel out of posting a note.")) + Text("Cancel", comment: "Button to cancel out of posting a note.") .padding(10) }) .buttonStyle(NeutralButtonStyle()) diff --git a/damus/Views/Profile/ProfileView.swift b/damus/Views/Profile/ProfileView.swift index c3ff327a..c8e71313 100644 --- a/damus/Views/Profile/ProfileView.swift +++ b/damus/Views/Profile/ProfileView.swift @@ -199,7 +199,7 @@ struct ProfileView: View { MuteDurationMenu { duration in notify(.mute(.user(profile.pubkey, duration?.date_from_now))) } label: { - Text(NSLocalizedString("Mute", comment: "Button to mute a profile.")) + Text("Mute", comment: "Button to mute a profile.") .foregroundStyle(.red) } } diff --git a/damus/Views/ProfileActionSheetView.swift b/damus/Views/ProfileActionSheetView.swift index bcec3929..f2f7abd6 100644 --- a/damus/Views/ProfileActionSheetView.swift +++ b/damus/Views/ProfileActionSheetView.swift @@ -59,7 +59,7 @@ struct ProfileActionSheetView: View { } ) .buttonStyle(NeutralButtonShape.circle.style) - Text(NSLocalizedString("Message", comment: "Button label that allows the user to start a direct message conversation with the user shown on-screen")) + Text("Message", comment: "Button label that allows the user to start a direct message conversation with the user shown on-screen") .foregroundStyle(.secondary) .font(.caption) } @@ -114,7 +114,7 @@ struct ProfileActionSheetView: View { label: { HStack { Spacer() - Text(NSLocalizedString("View full profile", comment: "A button label that allows the user to see the full profile of the profile they are previewing")) + Text("View full profile", comment: "A button label that allows the user to see the full profile of the profile they are previewing") Image(systemName: "arrow.up.right") Spacer() } @@ -305,9 +305,9 @@ fileprivate struct ProfileActionSheetZapButton: View { }) .alert(isPresented: $show_error_alert) { Alert( - title: Text(NSLocalizedString("Zap failed", comment: "Title of an alert indicating that a zap action failed")), + title: Text("Zap failed", comment: "Title of an alert indicating that a zap action failed"), message: Text(zap_state.error_message() ?? ""), - dismissButton: .default(Text(NSLocalizedString("OK", comment: "Button label to dismiss an error dialog"))) + dismissButton: .default(Text("OK", comment: "Button label to dismiss an error dialog")) ) } .onChange(of: zap_state) { new_zap_state in diff --git a/damus/Views/PubkeyView.swift b/damus/Views/PubkeyView.swift index 0705408e..78532720 100644 --- a/damus/Views/PubkeyView.swift +++ b/damus/Views/PubkeyView.swift @@ -57,7 +57,7 @@ struct PubkeyView: View { .resizable() .foregroundColor(DamusColors.green) .frame(width: 20, height: 20) - Text(NSLocalizedString("Copied", comment: "Label indicating that a user's key was copied.")) + Text("Copied", comment: "Label indicating that a user's key was copied.") .font(.footnote) .layoutPriority(1) .foregroundColor(DamusColors.green) diff --git a/damus/Views/Purple/DamusPurpleAccountView.swift b/damus/Views/Purple/DamusPurpleAccountView.swift index 8b6753ad..ebb9ce4e 100644 --- a/damus/Views/Purple/DamusPurpleAccountView.swift +++ b/damus/Views/Purple/DamusPurpleAccountView.swift @@ -31,9 +31,10 @@ struct DamusPurpleAccountView: View { // TODO: Generalize this view instead of setting up dividers and paddings manually VStack { HStack { - Text(NSLocalizedString("Expiry date", comment: "Label for Purple subscription expiry date")) + Text("Expiry date", comment: "Label for Purple subscription expiry date") Spacer() - Text(DateFormatter.localizedString(from: account.expiry, dateStyle: .short, timeStyle: .none)) + let formattedDate = DateFormatter.localizedString(from: account.expiry, dateStyle: .short, timeStyle: .none) + Text(formattedDate) } .padding(.horizontal) .padding(.top, 20) @@ -43,9 +44,10 @@ struct DamusPurpleAccountView: View { .padding(.vertical, 10) HStack { - Text(NSLocalizedString("Account creation", comment: "Label for Purple account creation date")) + Text("Account creation", comment: "Label for Purple account creation date") Spacer() - Text(DateFormatter.localizedString(from: account.created_at, dateStyle: .short, timeStyle: .none)) + let formattedDate = DateFormatter.localizedString(from: account.created_at, dateStyle: .short, timeStyle: .none) + Text(formattedDate) } .padding(.horizontal) @@ -54,7 +56,7 @@ struct DamusPurpleAccountView: View { .padding(.vertical, 10) HStack { - Text(NSLocalizedString("Subscriber number", comment: "Label for Purple account subscriber number")) + Text("Subscriber number", comment: "Label for Purple account subscriber number") Spacer() Text(verbatim: "#\(account.subscriber_number)") } @@ -90,7 +92,7 @@ struct DamusPurpleAccountView: View { .resizable() .frame(width: 15, height: 15) - Text(NSLocalizedString("Active account", comment: "Badge indicating user has an active Damus Purple account")) + Text("Active account", comment: "Badge indicating user has an active Damus Purple account") .font(.caption) .bold() } @@ -107,7 +109,7 @@ struct DamusPurpleAccountView: View { .resizable() .frame(width: 15, height: 15) - Text(NSLocalizedString("Expired account", comment: "Badge indicating user has an expired Damus Purple account")) + Text("Expired account", comment: "Badge indicating user has an expired Damus Purple account") .font(.caption) .bold() } diff --git a/damus/Views/Purple/DamusPurpleTranslationSetupView.swift b/damus/Views/Purple/DamusPurpleTranslationSetupView.swift index 0db5fbf4..c722a16a 100644 --- a/damus/Views/Purple/DamusPurpleTranslationSetupView.swift +++ b/damus/Views/Purple/DamusPurpleTranslationSetupView.swift @@ -61,7 +61,7 @@ struct DamusPurpleTranslationSetupView: View { .opacity(start ? 1.0 : 0.0) .animation(.content(), value: start) - Text(NSLocalizedString("You unlocked", comment: "Part 1 of 2 in message 'You unlocked automatic translations' the user gets when they sign up for Damus Purple" )) + Text("You unlocked", comment: "Part 1 of 2 in message 'You unlocked automatic translations' the user gets when they sign up for Damus Purple" ) .font(.largeTitle) .fontWeight(.bold) .foregroundStyle( @@ -95,7 +95,7 @@ struct DamusPurpleTranslationSetupView: View { .opacity(start ? 1.0 : 0.0) .animation(Animation.snappy(duration: 2).delay(0), value: start) - Text(NSLocalizedString("Automatic translations", comment: "Part 1 of 2 in message 'You unlocked automatic translations' the user gets when they sign up for Damus Purple")) + Text("Automatic translations", comment: "Part 1 of 2 in message 'You unlocked automatic translations' the user gets when they sign up for Damus Purple") .font(.headline) .fontWeight(.bold) .foregroundStyle( @@ -110,7 +110,7 @@ struct DamusPurpleTranslationSetupView: View { .animation(.content(), value: start) .padding(.top, 10) - Text(NSLocalizedString("As part of your Damus Purple membership, you get complimentary and automated translations. Would you like to enable Damus Purple translations?\n\nTip: You can always change this later in Settings → Translations", comment: "Message notifying the user that they get auto-translations as part of their service")) + Text("As part of your Damus Purple membership, you get complimentary and automated translations. Would you like to enable Damus Purple translations?\n\nTip: You can always change this later in Settings → Translations", comment: "Message notifying the user that they get auto-translations as part of their service") .lineSpacing(5) .multilineTextAlignment(.center) .foregroundStyle(.white.opacity(0.8)) @@ -125,7 +125,7 @@ struct DamusPurpleTranslationSetupView: View { }, label: { HStack { Spacer() - Text(NSLocalizedString("Enable Purple auto-translations", comment: "Label for button that allows users to enable Damus Purple translations")) + Text("Enable Purple auto-translations", comment: "Label for button that allows users to enable Damus Purple translations") Spacer() } }) @@ -139,7 +139,7 @@ struct DamusPurpleTranslationSetupView: View { }, label: { HStack { Spacer() - Text(NSLocalizedString("No, thanks", comment: "Label for button that allows users to reject enabling Damus Purple translations")) + Text("No, thanks", comment: "Label for button that allows users to reject enabling Damus Purple translations") Spacer() } }) diff --git a/damus/Views/Purple/DamusPurpleVerifyNpubView.swift b/damus/Views/Purple/DamusPurpleVerifyNpubView.swift index 8193de60..c235df2b 100644 --- a/damus/Views/Purple/DamusPurpleVerifyNpubView.swift +++ b/damus/Views/Purple/DamusPurpleVerifyNpubView.swift @@ -53,7 +53,7 @@ struct DamusPurpleVerifyNpubView: View { }, label: { HStack { Spacer() - Text(NSLocalizedString("Verify my npub", comment: "Button label to verify the user's npub for the purpose of Purple subscription checkout")) + Text("Verify my npub", comment: "Button label to verify the user's npub for the purpose of Purple subscription checkout") Spacer() } }) @@ -61,7 +61,7 @@ struct DamusPurpleVerifyNpubView: View { .buttonStyle(GradientButtonStyle()) } else { - Text(NSLocalizedString("Verified!", comment: "Instructions after the user has verified their npub for Damus Purple purchase checkout")) + Text("Verified!", comment: "Instructions after the user has verified their npub for Damus Purple purchase checkout") .frame(height: subtitle_height) .multilineTextAlignment(.center) .foregroundColor(.green) @@ -71,7 +71,7 @@ struct DamusPurpleVerifyNpubView: View { }, label: { HStack { Spacer() - Text(NSLocalizedString("Continue", comment: "Prompt to user to continue")) + Text("Continue", comment: "Prompt to user to continue") Spacer() } }) diff --git a/damus/Views/Purple/DamusPurpleView.swift b/damus/Views/Purple/DamusPurpleView.swift index a2c93dbc..c1c95658 100644 --- a/damus/Views/Purple/DamusPurpleView.swift +++ b/damus/Views/Purple/DamusPurpleView.swift @@ -138,7 +138,7 @@ struct DamusPurpleView: View, DamusPurpleStoreKitManagerDelegate { if let account_uuid { DamusPurpleView.IAPProductStateView(products: products, purchased: purchased, account_uuid: account_uuid, subscribe: subscribe) if let iap_error { - Text(String(format: NSLocalizedString("There has been an unexpected error with the in-app purchase. Please try again later or contact support@damus.io. Error: %@", comment: "In-app purchase error message for the user"), iap_error)) + Text("There has been an unexpected error with the in-app purchase. Please try again later or contact support@damus.io. Error: \(iap_error)", comment: "In-app purchase error message for the user") .foregroundStyle(.red) .multilineTextAlignment(.center) .padding(.horizontal) @@ -158,7 +158,7 @@ struct DamusPurpleView: View, DamusPurpleStoreKitManagerDelegate { } var ManageOnWebsiteNote: some View { - Text(NSLocalizedString("Visit the Damus website on a web browser to manage billing", comment: "Instruction on how to manage billing externally")) + Text("Visit the Damus website on a web browser to manage billing", comment: "Instruction on how to manage billing externally") .font(.caption) .foregroundColor(.white.opacity(0.6)) .multilineTextAlignment(.center) diff --git a/damus/Views/Purple/DamusPurpleWelcomeView.swift b/damus/Views/Purple/DamusPurpleWelcomeView.swift index d7e28a63..66dc8bac 100644 --- a/damus/Views/Purple/DamusPurpleWelcomeView.swift +++ b/damus/Views/Purple/DamusPurpleWelcomeView.swift @@ -37,7 +37,7 @@ struct DamusPurpleWelcomeView: View { .opacity(start ? 1.0 : 0.0) .animation(.content(), value: start) - Text(NSLocalizedString("Welcome to Purple", comment: "Greeting to subscription service")) + Text("Welcome to Purple", comment: "Greeting to subscription service") .font(.largeTitle) .fontWeight(.bold) .foregroundStyle( @@ -70,7 +70,7 @@ struct DamusPurpleWelcomeView: View { .opacity(start ? 1.0 : 0.0) .animation(Animation.snappy(duration: 2).delay(0), value: start) - Text(NSLocalizedString("Thank you very much for signing up for Damus\u{00A0}Purple. Your contribution helps us continue our fight for a more Open and Free\u{00A0}internet.\n\nYou will also get access to premium features, and a star badge on your profile.\n\nEnjoy!", comment: "Appreciation to user for purchasing subscription service")) + Text("Thank you very much for signing up for Damus\u{00A0}Purple. Your contribution helps us continue our fight for a more Open and Free\u{00A0}internet.\n\nYou will also get access to premium features, and a star badge on your profile.\n\nEnjoy!", comment: "Appreciation to user for purchasing subscription service") .lineSpacing(5) .multilineTextAlignment(.center) .foregroundStyle(.white.opacity(0.8)) @@ -85,7 +85,7 @@ struct DamusPurpleWelcomeView: View { }, label: { HStack { Spacer() - Text(NSLocalizedString("Continue", comment: "Prompt to user to continue")) + Text("Continue", comment: "Prompt to user to continue") Spacer() } }) diff --git a/damus/Views/Purple/Detail/IAPProductStateView.swift b/damus/Views/Purple/Detail/IAPProductStateView.swift index 8375de0b..cd9b20f0 100644 --- a/damus/Views/Purple/Detail/IAPProductStateView.swift +++ b/damus/Views/Purple/Detail/IAPProductStateView.swift @@ -26,7 +26,7 @@ extension DamusPurpleView { var body: some View { if subscription_purchase_loading { HStack(spacing: 10) { - Text(NSLocalizedString("Purchasing", comment: "Loading label indicating the purchase action is in progress")) + Text("Purchasing", comment: "Loading label indicating the purchase action is in progress") .foregroundStyle(.white) ProgressView() .progressViewStyle(.circular) @@ -66,7 +66,7 @@ extension DamusPurpleView { } func PurchasedUnmanageableView(_ purchased: PurchasedProduct) -> some View { - Text(NSLocalizedString("This device's in-app purchase is registered to a different Nostr account. Unable to manage this Purple account. If you believe this was a mistake, please contact us via support@damus.io.", comment: "Notice label that user cannot manage their In-App purchases")) + Text("This device's in-app purchase is registered to a different Nostr account. Unable to manage this Purple account. If you believe this was a mistake, please contact us via support@damus.io.", comment: "Notice label that user cannot manage their In-App purchases") .font(.caption) .foregroundColor(.white.opacity(0.6)) .multilineTextAlignment(.center) @@ -76,21 +76,21 @@ extension DamusPurpleView { func PurchasedManageView(_ purchased: PurchasedProduct) -> some View { VStack(spacing: 10) { if SHOW_IAP_DEBUG_INFO == true { - Text(NSLocalizedString("Purchased!", comment: "User purchased a subscription")) + Text("Purchased!", comment: "User purchased a subscription") .font(.title2) .foregroundColor(.white) price_description(product: purchased.product) .foregroundColor(.white) .opacity(0.65) .frame(width: 200) - Text(NSLocalizedString("Purchased on", comment: "Indicating when the user purchased the subscription")) + Text("Purchased on", comment: "Indicating when the user purchased the subscription") .font(.title2) .foregroundColor(.white) Text(format_date(date: purchased.tx.purchaseDate)) .foregroundColor(.white) .opacity(0.65) if let expiry = purchased.tx.expirationDate { - Text(NSLocalizedString("Renews on", comment: "Indicating when the subscription will renew")) + Text("Renews on", comment: "Indicating when the subscription will renew") .font(.title2) .foregroundColor(.white) Text(format_date(date: expiry)) @@ -101,7 +101,7 @@ extension DamusPurpleView { Button(action: { show_manage_subscriptions = true }, label: { - Text(NSLocalizedString("Manage", comment: "Manage the damus subscription")) + Text("Manage", comment: "Manage the damus subscription") .padding(.horizontal, 20) }) .buttonStyle(GradientButtonStyle()) @@ -112,7 +112,7 @@ extension DamusPurpleView { func ProductsView(_ products: [Product]) -> some View { VStack(spacing: 10) { - Text(NSLocalizedString("Save 20% off on an annual subscription", comment: "Savings for purchasing an annual subscription")) + Text("Save 20% off on an annual subscription", comment: "Savings for purchasing an annual subscription") .font(.callout.bold()) .foregroundColor(.white) ForEach(products) { product in @@ -132,7 +132,7 @@ extension DamusPurpleView { .buttonStyle(GradientButtonStyle()) } - Text("By subscribing to Damus Purple you are accepting our [privacy policy](https://damus.io/privacy-policy.txt) and Apple's Standard [EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/)") + Text("By subscribing to Damus Purple, you are accepting our [privacy policy](https://damus.io/privacy-policy.txt) and Apple's Standard [EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/)", comment: "Text explaining the terms and conditions of subscribing to Damus Purple. EULA stands for End User License Agreement.") .foregroundColor(.white.opacity(0.6)) .font(.caption) .padding() @@ -148,11 +148,11 @@ extension DamusPurpleView { Text(purple_type?.label() ?? product.displayName) Spacer() if let non_discounted_price = purple_type?.non_discounted_price(product: product) { - Text(verbatim: non_discounted_price) + Text(non_discounted_price) .strikethrough() .foregroundColor(DamusColors.white.opacity(0.5)) } - Text(verbatim: product.displayPrice) + Text(product.displayPrice) .fontWeight(.bold) } ) diff --git a/damus/Views/Purple/Detail/LogoView.swift b/damus/Views/Purple/Detail/LogoView.swift index ce9ad940..b467dc3a 100644 --- a/damus/Views/Purple/Detail/LogoView.swift +++ b/damus/Views/Purple/Detail/LogoView.swift @@ -27,7 +27,7 @@ extension DamusPurpleView { .shadow(radius: 5) VStack(alignment: .leading) { - Text(NSLocalizedString("Purple", comment: "Subscription service name")) + Text("Purple", comment: "Subscription service name") .font(.system(size: 60.0).weight(.bold)) .foregroundStyle( LinearGradient( diff --git a/damus/Views/Purple/Detail/MarketingContentView.swift b/damus/Views/Purple/Detail/MarketingContentView.swift index aa13e623..dc80578a 100644 --- a/damus/Views/Purple/Detail/MarketingContentView.swift +++ b/damus/Views/Purple/Detail/MarketingContentView.swift @@ -38,7 +38,7 @@ extension DamusPurpleView { .resizable() .frame(width: 15, height: 15) - Text(NSLocalizedString("Coming soon", comment: "Feature is still in development and will be available soon")) + Text("Coming soon", comment: "Feature is still in development and will be available soon") .font(.caption) .bold() } diff --git a/damus/Views/Purple/Detail/PurpleBackdrop.swift b/damus/Views/Purple/Detail/PurpleBackdrop.swift index 00e79b7c..afcfa370 100644 --- a/damus/Views/Purple/Detail/PurpleBackdrop.swift +++ b/damus/Views/Purple/Detail/PurpleBackdrop.swift @@ -25,6 +25,6 @@ struct PurpleBackdrop: View { #Preview { PurpleBackdrop { - Text("Hello, World") + Text(verbatim: "Hello, World") } } diff --git a/damus/Views/Purple/Detail/PurpleViewPrimitives.swift b/damus/Views/Purple/Detail/PurpleViewPrimitives.swift index 80633c94..c3a39fff 100644 --- a/damus/Views/Purple/Detail/PurpleViewPrimitives.swift +++ b/damus/Views/Purple/Detail/PurpleViewPrimitives.swift @@ -67,14 +67,14 @@ struct PurpleViewPrimitives { struct ProductLoadErrorView: View { var body: some View { - Text(NSLocalizedString("Subscription Error", comment: "Ah dang there was an error loading subscription information from the AppStore. Please try again later :(")) + Text("Subscription Error", comment: "Ah dang there was an error loading subscription information from the AppStore. Please try again later :(") .foregroundColor(.white) } } struct SaveTextView: View { var body: some View { - Text(NSLocalizedString("Save 14%", comment: "Percentage of purchase price the user will save")) + Text("Save 14%", comment: "Percentage of purchase price the user will save") .font(.callout) .italic() .foregroundColor(DamusColors.green) diff --git a/damus/Views/Relays/Detail/RelayAdminDetail.swift b/damus/Views/Relays/Detail/RelayAdminDetail.swift index 3d040b15..dc566874 100644 --- a/damus/Views/Relays/Detail/RelayAdminDetail.swift +++ b/damus/Views/Relays/Detail/RelayAdminDetail.swift @@ -15,7 +15,7 @@ struct RelayAdminDetail: View { var body: some View { HStack(spacing: 15) { VStack(spacing: 10) { - Text("ADMIN") + Text("ADMIN", comment: "Text label indicating the profile picture underneath it is the admin of the Nostr relay.") .font(.caption) .fontWeight(.heavy) .foregroundColor(DamusColors.mediumGrey) @@ -36,18 +36,18 @@ struct RelayAdminDetail: View { Divider().frame(width: 1) VStack { - Text("CONTACT") + Text("CONTACT", comment: "Text label indicating that the information below is the contact information of the admin of the Nostr relay.") .font(.caption) .fontWeight(.heavy) .foregroundColor(DamusColors.mediumGrey) Image("messages") .foregroundColor(.gray) - if nip11?.contact == "" { - Text("N/A") + if let contact = nip11?.contact, !contact.isEmpty { + Text(contact) .font(.subheadline) .foregroundColor(.gray) } else { - Text(nip11?.contact ?? "N/A") + Text("N/A", comment: "Text label indicating that there is no NIP-11 relay admin contact information found. In English, N/A stands for not applicable.") .font(.subheadline) .foregroundColor(.gray) } diff --git a/damus/Views/Relays/Detail/RelayAuthenticationDetail.swift b/damus/Views/Relays/Detail/RelayAuthenticationDetail.swift index 5f1d9513..da1485ee 100644 --- a/damus/Views/Relays/Detail/RelayAuthenticationDetail.swift +++ b/damus/Views/Relays/Detail/RelayAuthenticationDetail.swift @@ -15,7 +15,7 @@ struct RelayAuthenticationDetail: View { case .none: EmptyView() case .pending: - Text(NSLocalizedString("Pending", comment: "Label to display that authentication to a server is pending.")) + Text("Pending", comment: "Label to display that authentication to a server is pending.") .font(.caption) .frame(height: 20) .padding(.horizontal, 10) @@ -27,7 +27,7 @@ struct RelayAuthenticationDetail: View { .stroke(DamusColors.warningBorder, lineWidth: 1) ) case .verified: - Text(NSLocalizedString("Authenticated", comment: "Label to display that authentication to a server has succeeded.")) + Text("Authenticated", comment: "Label to display that authentication to a server has succeeded.") .font(.caption) .frame(height: 20) .padding(.horizontal, 10) @@ -39,7 +39,7 @@ struct RelayAuthenticationDetail: View { .stroke(DamusColors.successBorder, lineWidth: 1) ) case .error: - Text(NSLocalizedString("Error", comment: "Label to display that authentication to a server has failed.")) + Text("Error", comment: "Label to display that authentication to a server has failed.") .font(.caption) .frame(height: 20) .padding(.horizontal, 10) diff --git a/damus/Views/Relays/Detail/RelayNipList.swift b/damus/Views/Relays/Detail/RelayNipList.swift index 2e547c2c..c2b29e7e 100644 --- a/damus/Views/Relays/Detail/RelayNipList.swift +++ b/damus/Views/Relays/Detail/RelayNipList.swift @@ -47,7 +47,7 @@ struct RelayNipList: View { var body: some View { VStack(alignment: .leading, spacing: 10) { - Text(NSLocalizedString("Supported NIPs", comment: "Label to display relay's supported NIPs.")) + Text("Supported NIPs", comment: "Label to display relay's supported NIPs.") .font(.callout) .fontWeight(.bold) .foregroundColor(DamusColors.mediumGrey) diff --git a/damus/Views/Relays/Detail/RelayPaidDetail.swift b/damus/Views/Relays/Detail/RelayPaidDetail.swift index f89344f2..047ad526 100644 --- a/damus/Views/Relays/Detail/RelayPaidDetail.swift +++ b/damus/Views/Relays/Detail/RelayPaidDetail.swift @@ -19,18 +19,21 @@ struct RelayPaidDetail: View { let formattedString = formatter.string(from: TimeInterval(time)) ?? "" return formattedString } - + + func displayAmount(unit: String, amount: Int64) -> String { + if unit == "msats" { + format_msats(amount) + } else { + "\(amount) \(unit)" + } + } + func Amount(unit: String, amount: Int64) -> some View { HStack { - if unit == "msats" { - Text("\(format_msats(amount))") - .font(.system(size: 13, weight: .heavy)) - .foregroundColor(DamusColors.white) - } else { - Text("\(amount) \(unit)") - .font(.system(size: 13, weight: .heavy)) - .foregroundColor(DamusColors.white) - } + let displayString = displayAmount(unit: unit, amount: amount) + Text(displayString) + .font(.system(size: 13, weight: .heavy)) + .foregroundColor(DamusColors.white) } } @@ -48,26 +51,24 @@ struct RelayPaidDetail: View { if !admission.isEmpty { Amount(unit: admission[0].unit, amount: admission[0].amount) } else { - Text(verbatim: "Paid Relay") + Text("Paid Relay", comment: "Text indicating that this is a paid relay.") .font(.system(size: 13, weight: .heavy)) .foregroundColor(DamusColors.white) } } else if let subscription = fees?.subscription { if !subscription.isEmpty { - Amount(unit: subscription[0].unit, amount: subscription[0].amount) - Text("/ \(timeString(time: subscription[0].period))") + Text("\(displayAmount(unit: subscription[0].unit, amount: subscription[0].amount)) / \(timeString(time: subscription[0].period))", comment: "Amount of money required to subscribe to the Nostr relay. In English, this would look something like '4,000 sats / 30 days', meaning it costs 4000 sats to subscribe to the Nostr relay for 30 days.") .font(.system(size: 13, weight: .heavy)) .foregroundColor(DamusColors.white) } } else if let publication = fees?.publication { if !publication.isEmpty { - Amount(unit: publication[0].unit, amount: publication[0].amount) - Text("/ event") + Text("\(displayAmount(unit: publication[0].unit, amount: publication[0].amount)) / event", comment: "Amount of money required to publish to the Nostr relay. In English, this would look something like '10 sats / event', meaning it costs 10 sats to publish one event.") .font(.system(size: 13, weight: .heavy)) .foregroundColor(DamusColors.white) } } else { - Text(verbatim: "Paid Relay") + Text("Paid Relay", comment: "Text indicating that this is a paid relay.") .font(.system(size: 13, weight: .heavy)) .foregroundColor(DamusColors.white) } diff --git a/damus/Views/Relays/Detail/RelaySoftwareDetail.swift b/damus/Views/Relays/Detail/RelaySoftwareDetail.swift index 5168da4e..9584b167 100644 --- a/damus/Views/Relays/Detail/RelaySoftwareDetail.swift +++ b/damus/Views/Relays/Detail/RelaySoftwareDetail.swift @@ -14,7 +14,7 @@ struct RelaySoftwareDetail: View { var body: some View { HStack(spacing: 15) { VStack { - Text("SOFTWARE") + Text("SOFTWARE", comment: "Text label indicating which relay software is used to run this Nostr relay.") .font(.caption) .fontWeight(.heavy) .foregroundColor(DamusColors.mediumGrey) @@ -24,26 +24,37 @@ struct RelaySoftwareDetail: View { let software = nip11?.software let softwareSeparated = software?.components(separatedBy: "/") - let softwareShortened = softwareSeparated?.last - Text(softwareShortened ?? "N/A") - .font(.subheadline) - .foregroundColor(.gray) + if let softwareShortened = softwareSeparated?.last { + Text(softwareShortened) + .font(.subheadline) + .foregroundColor(.gray) + } else { + Text("N/A", comment: "Text label indicating that there is no NIP-11 relay software information found. In English, N/A stands for not applicable.") + .font(.subheadline) + .foregroundColor(.gray) + } } Divider().frame(width: 1) VStack { - Text("VERSION") + Text("VERSION", comment: "Text label indicating which version of the relay software is being run for this Nostr relay.") .font(.caption) .fontWeight(.heavy) .foregroundColor(DamusColors.mediumGrey) Image("branches") .foregroundColor(.gray) - - Text(nip11?.version ?? "N/A") - .font(.subheadline) - .foregroundColor(.gray) + + if let version = nip11?.version, !version.isEmpty { + Text(version) + .font(.subheadline) + .foregroundColor(.gray) + } else { + Text("N/A", comment: "Text label indicating that there is no NIP-11 relay software version information found. In English, N/A stands for not applicable.") + .font(.subheadline) + .foregroundColor(.gray) + } } } } diff --git a/damus/Views/Relays/RelayConfigView.swift b/damus/Views/Relays/RelayConfigView.swift index 19c5c2c8..aa3bab6f 100644 --- a/damus/Views/Relays/RelayConfigView.swift +++ b/damus/Views/Relays/RelayConfigView.swift @@ -112,7 +112,7 @@ struct RelayConfigView: View { func RelayList(title: String, relayList: [RelayDescriptor], recommended: Bool) -> some View { ScrollView(showsIndicators: false) { HStack { - Text(NSLocalizedString(title, comment: "Section title for type of relay server list")) + Text(title) .font(.system(size: 32, weight: .bold)) @@ -123,7 +123,7 @@ struct RelayConfigView: View { show_add_relay.toggle() }) { HStack { - Text(verbatim: "Add relay") + Text("Add relay", comment: "Button text to add a relay") .padding(10) } } diff --git a/damus/Views/Relays/RelayDetailView.swift b/damus/Views/Relays/RelayDetailView.swift index 50d93c57..fe08f2e2 100644 --- a/damus/Views/Relays/RelayDetailView.swift +++ b/damus/Views/Relays/RelayDetailView.swift @@ -144,13 +144,18 @@ struct RelayDetailView: View { Divider() - Text("Description") + Text("Description", comment: "Description of the specific Nostr relay server.") .font(.subheadline) .foregroundColor(DamusColors.mediumGrey) - Text(nip11?.description ?? "N/A") - .font(.subheadline) - + if let description = nip11?.description, !description.isEmpty { + Text(description) + .font(.subheadline) + } else { + Text("N/A", comment: "Text label indicating that there is no NIP-11 relay description information found. In English, N/A stands for not applicable.") + .font(.subheadline) + } + Divider() RelayInfo @@ -175,7 +180,7 @@ struct RelayDetailView: View { } if state.settings.developer_mode { - Text("Relay Logs") + Text("Relay Logs", comment: "Text label indicating that the text below it are developer mode logs.") .padding(.top) Divider() Text(log.contents ?? NSLocalizedString("No logs to display", comment: "Label to indicate that there are no developer mode logs available to be displayed on the screen")) diff --git a/damus/Views/Relays/RelayView.swift b/damus/Views/Relays/RelayView.swift index a2c43edd..a50a35b5 100644 --- a/damus/Views/Relays/RelayView.swift +++ b/damus/Views/Relays/RelayView.swift @@ -75,7 +75,7 @@ struct RelayView: View { Button(action: { remove_action(privkey: keypair.privkey) }) { - Text(NSLocalizedString("Added", comment: "Button to show relay server is already added to list.")) + Text("Added", comment: "Button to show relay server is already added to list.") .font(.caption) } .buttonStyle(NeutralButtonShape.capsule.style) @@ -147,7 +147,7 @@ struct RelayView: View { Button(action: { add_action(keypair: keypair) }) { - Text(NSLocalizedString("Add", comment: "Button to add relay server to list.")) + Text("Add", comment: "Button to add relay server to list.") .font(.caption) } .buttonStyle(NeutralButtonShape.capsule.style) @@ -166,7 +166,7 @@ struct RelayView: View { remove_action(privkey: privkey) }) { if showText { - Text(NSLocalizedString("Disconnect", comment: "Button to disconnect from a relay server.")) + Text("Disconnect", comment: "Button to disconnect from a relay server.") } Image("minus-circle") diff --git a/damus/Views/Search/PullDownSearch.swift b/damus/Views/Search/PullDownSearch.swift index 21e98559..63bc7b75 100644 --- a/damus/Views/Search/PullDownSearch.swift +++ b/damus/Views/Search/PullDownSearch.swift @@ -84,7 +84,7 @@ struct PullDownSearchView: View { if results.count > 0 { HStack { Image("search") - Text(NSLocalizedString("Top hits", comment: "A label indicating that the notes being displayed below it are all top note search results")) + Text("Top hits", comment: "A label indicating that the notes being displayed below it are all top note search results") Spacer() } .padding(.horizontal) @@ -101,7 +101,7 @@ struct PullDownSearchView: View { HStack { Image("notes.fill") - Text(NSLocalizedString("Notes", comment: "A label indicating that the notes being displayed below it are from a timeline, not search results")) + Text("Notes", comment: "A label indicating that the notes being displayed below it are from a timeline, not search results") Spacer() } .foregroundColor(.secondary) @@ -109,7 +109,7 @@ struct PullDownSearchView: View { } else if results.count == 0 && !search_text.isEmpty { HStack { Image("search") - Text(NSLocalizedString("No results", comment: "A label indicating that note search resulted in no results")) + Text("No results", comment: "A label indicating that note search resulted in no results") Spacer() } .padding(.horizontal) diff --git a/damus/Views/Search/SearchingProfileView.swift b/damus/Views/Search/SearchingProfileView.swift deleted file mode 100644 index a5ce8bf9..00000000 --- a/damus/Views/Search/SearchingProfileView.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// SearchingProfileView.swift -// damus -// -// Created by William Casarin on 2023-03-05. -// - -import SwiftUI - -struct SearchingProfileView: View { - var body: some View { - Text(verbatim: /*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) - } -} - -struct SearchingProfileView_Previews: PreviewProvider { - static var previews: some View { - SearchingProfileView() - } -} diff --git a/damus/Views/SearchHomeView.swift b/damus/Views/SearchHomeView.swift index 3aa13c8d..0795eb51 100644 --- a/damus/Views/SearchHomeView.swift +++ b/damus/Views/SearchHomeView.swift @@ -85,7 +85,7 @@ struct SearchHomeView: View { HStack { Image("notes.fill") - Text(NSLocalizedString("All recent notes", comment: "A label indicating that the notes being displayed below it are all recent notes")) + Text("All recent notes", comment: "A label indicating that the notes being displayed below it are all recent notes") Spacer() } .foregroundColor(.secondary) diff --git a/damus/Views/Settings/AppearanceSettingsView.swift b/damus/Views/Settings/AppearanceSettingsView.swift index 9b6b2f77..24403c73 100644 --- a/damus/Views/Settings/AppearanceSettingsView.swift +++ b/damus/Views/Settings/AppearanceSettingsView.swift @@ -54,7 +54,7 @@ struct AppearanceSettingsView: View { } // MARK: - Text Truncation - Section(header: Text(NSLocalizedString("Text Truncation", comment: "Section header for damus text truncation user configuration"))) { + Section(header: Text("Text Truncation", comment: "Section header for damus text truncation user configuration")) { Toggle(NSLocalizedString("Truncate timeline text", comment: "Setting to truncate text in timeline"), isOn: $settings.truncate_timeline_text) .toggleStyle(.switch) Toggle(NSLocalizedString("Truncate notification mention text", comment: "Setting to truncate text in mention notifications"), isOn: $settings.truncate_mention_text) @@ -70,7 +70,7 @@ struct AppearanceSettingsView: View { } // MARK: - Accessibility - Section(header: Text(NSLocalizedString("Accessibility", comment: "Section header for accessibility settings"))) { + Section(header: Text("Accessibility", comment: "Section header for accessibility settings")) { Toggle(NSLocalizedString("Left Handed", comment: "Moves the post button to the left side of the screen"), isOn: $settings.left_handed) .toggleStyle(.switch) } @@ -97,8 +97,8 @@ struct AppearanceSettingsView: View { // MARK: - Content filters and moderation Section( - header: Text(NSLocalizedString("Content filters", comment: "Section title for content filtering/moderation configuration.")), - footer: Text(NSLocalizedString("Notes with the #nsfw tag usually contains adult content or other \"Not safe for work\" content", comment: "Section footer clarifying what #nsfw (not safe for work) tags mean")) + header: Text("Content filters", comment: "Section title for content filtering/moderation configuration."), + footer: Text("Notes with the #nsfw tag usually contains adult content or other \"Not safe for work\" content", comment: "Section footer clarifying what #nsfw (not safe for work) tags mean") ) { Toggle(NSLocalizedString("Hide notes with #nsfw tags", comment: "Setting to hide notes with the #nsfw (not safe for work) tags"), isOn: $settings.hide_nsfw_tagged_content) .toggleStyle(.switch) @@ -106,8 +106,8 @@ struct AppearanceSettingsView: View { // MARK: - Profiles Section( - header: Text(NSLocalizedString("Profiles", comment: "Section title for profile view configuration.")), - footer: Text(NSLocalizedString("Profile action sheets allow you to follow, zap, or DM profiles more quickly without having to view their full profile", comment: "Section footer clarifying what the profile action sheet feature does")) + header: Text("Profiles", comment: "Section title for profile view configuration."), + footer: Text("Profile action sheets allow you to follow, zap, or DM profiles more quickly without having to view their full profile", comment: "Section footer clarifying what the profile action sheet feature does") ) { Toggle(NSLocalizedString("Show profile action sheets", comment: "Setting to show profile action sheets when clicking on a user's profile picture"), isOn: $settings.show_profile_action_sheet_on_pfp_click) .toggleStyle(.switch) @@ -157,9 +157,9 @@ struct AppearanceSettingsView: View { } } .alert(isPresented: $showing_enable_animation_alert) { - Alert(title: Text(NSLocalizedString("Confirmation", comment: "Confirmation dialog title")), - message: Text(NSLocalizedString("Changing this setting will cause the cache to be cleared. This will free space, but images may take longer to load again. Are you sure you want to proceed?", comment: "Message explaining consequences of changing the 'enable animation' setting")), - primaryButton: .default(Text(NSLocalizedString("OK", comment: "Button label indicating user wants to proceed."))) { + Alert(title: Text("Confirmation", comment: "Confirmation dialog title"), + message: Text("Changing this setting will cause the cache to be cleared. This will free space, but images may take longer to load again. Are you sure you want to proceed?", comment: "Message explaining consequences of changing the 'enable animation' setting"), + primaryButton: .default(Text("OK", comment: "Button label indicating user wants to proceed.")) { self.clear_cache_button_action() }, secondaryButton: .cancel() { @@ -176,22 +176,22 @@ struct AppearanceSettingsView: View { HStack(spacing: 6) { switch cache_clearing_state { case .not_cleared: - Text(NSLocalizedString("Clear Cache", comment: "Button to clear image cache.")) + Text("Clear Cache", comment: "Button to clear image cache.") case .clearing: ProgressView() - Text(NSLocalizedString("Clearing Cache", comment: "Loading message indicating that the cache is being cleared.")) + Text("Clearing Cache", comment: "Loading message indicating that the cache is being cleared.") case .cleared: Image(systemName: "checkmark.circle.fill") .foregroundColor(.green) - Text(NSLocalizedString("Cache has been cleared", comment: "Message indicating that the cache was successfully cleared.")) + Text("Cache has been cleared", comment: "Message indicating that the cache was successfully cleared.") } } }) .disabled(self.cache_clearing_state != .not_cleared) .alert(isPresented: $showing_cache_clear_alert) { - Alert(title: Text(NSLocalizedString("Confirmation", comment: "Confirmation dialog title")), - message: Text(NSLocalizedString("Are you sure you want to clear the cache? This will free space, but images may take longer to load again.", comment: "Message explaining what it means to clear the cache, asking if user wants to proceed.")), - primaryButton: .default(Text(NSLocalizedString("OK", comment: "Button label indicating user wants to proceed."))) { + Alert(title: Text("Confirmation", comment: "Confirmation dialog title"), + message: Text("Are you sure you want to clear the cache? This will free space, but images may take longer to load again.", comment: "Message explaining what it means to clear the cache, asking if user wants to proceed."), + primaryButton: .default(Text("OK", comment: "Button label indicating user wants to proceed.")) { self.clear_cache_button_action() }, secondaryButton: .cancel()) diff --git a/damus/Views/Settings/DeveloperSettingsView.swift b/damus/Views/Settings/DeveloperSettingsView.swift index 9f0373c7..4251e435 100644 --- a/damus/Views/Settings/DeveloperSettingsView.swift +++ b/damus/Views/Settings/DeveloperSettingsView.swift @@ -13,7 +13,7 @@ struct DeveloperSettingsView: View { var body: some View { Form { - Section(footer: Text(NSLocalizedString("Developer Mode enables features and options that may help developers diagnose issues and improve this app. Most users will not need Developer Mode.", comment: "Section header for Developer Settings view"))) { + Section(footer: Text("Developer Mode enables features and options that may help developers diagnose issues and improve this app. Most users will not need Developer Mode.", comment: "Section header for Developer Settings view")) { Toggle(NSLocalizedString("Developer Mode", comment: "Setting to enable developer mode"), isOn: $settings.developer_mode) .toggleStyle(.switch) if settings.developer_mode { diff --git a/damus/Views/Settings/NotificationSettingsView.swift b/damus/Views/Settings/NotificationSettingsView.swift index bab1943f..237db5a9 100644 --- a/damus/Views/Settings/NotificationSettingsView.swift +++ b/damus/Views/Settings/NotificationSettingsView.swift @@ -26,7 +26,7 @@ struct NotificationSettingsView: View { var body: some View { Form { - Section(header: Text(NSLocalizedString("Local Notifications", comment: "Section header for damus local notifications user configuration"))) { + Section(header: Text("Local Notifications", comment: "Section header for damus local notifications user configuration")) { Toggle(NSLocalizedString("Zaps", comment: "Setting to enable Zap Local Notification"), isOn: $settings.zap_notification) .toggleStyle(.switch) Toggle(NSLocalizedString("Mentions", comment: "Setting to enable Mention Local Notification"), isOn: $settings.mention_notification) @@ -39,12 +39,12 @@ struct NotificationSettingsView: View { .toggleStyle(.switch) } - Section(header: Text(NSLocalizedString("Notification Preference", comment: "Section header for Notification Preferences"))) { + Section(header: Text("Notification Preference", comment: "Section header for Notification Preferences")) { Toggle(NSLocalizedString("Show only from users you follow", comment: "Setting to Show notifications only associated to users your follow"), isOn: $settings.notification_only_from_following) .toggleStyle(.switch) } - Section(header: Text(NSLocalizedString("Notification Dots", comment: "Section header for notification indicator dot settings"))) { + Section(header: Text("Notification Dots", comment: "Section header for notification indicator dot settings")) { Toggle(NSLocalizedString("Zaps", comment: "Setting to enable Zap Local Notification"), isOn: indicator_binding(.zaps)) .toggleStyle(.switch) Toggle(NSLocalizedString("Mentions", comment: "Setting to enable Mention Local Notification"), isOn: indicator_binding(.mentions)) diff --git a/damus/Views/Settings/ReactionsSettingsView.swift b/damus/Views/Settings/ReactionsSettingsView.swift index 7aa48054..c30d56bb 100644 --- a/damus/Views/Settings/ReactionsSettingsView.swift +++ b/damus/Views/Settings/ReactionsSettingsView.swift @@ -26,7 +26,7 @@ struct ReactionsSettingsView: View { isReactionsVisible = true } } header: { - Text(NSLocalizedString("Select default emoji", comment: "Prompt selection of user's default emoji reaction")) + Text("Select default emoji", comment: "Prompt selection of user's default emoji reaction") } } .navigationTitle(NSLocalizedString("Reactions", comment: "Title of emoji reactions view")) diff --git a/damus/Views/Settings/SearchSettingsView.swift b/damus/Views/Settings/SearchSettingsView.swift index ca46e5f2..5a34ee0a 100644 --- a/damus/Views/Settings/SearchSettingsView.swift +++ b/damus/Views/Settings/SearchSettingsView.swift @@ -13,7 +13,7 @@ struct SearchSettingsView: View { var body: some View { Form { - Section(header: Text(NSLocalizedString("Spam", comment: "Section header for Universe/Search spam"))) { + Section(header: Text("Spam", comment: "Section header for Universe/Search spam")) { Toggle(NSLocalizedString("View multiple events per user", comment: "Setting to only see 1 event per user (npub) in the search/universe"), isOn: $settings.multiple_events_per_pubkey) .toggleStyle(.switch) } diff --git a/damus/Views/Settings/TranslationSettingsView.swift b/damus/Views/Settings/TranslationSettingsView.swift index 225c0688..de4e95d3 100644 --- a/damus/Views/Settings/TranslationSettingsView.swift +++ b/damus/Views/Settings/TranslationSettingsView.swift @@ -28,7 +28,7 @@ struct TranslationSettingsView: View { if settings.translation_service == .purple && damus_state.purple.enable_purple { NavigationLink(destination: DamusPurpleView(damus_state: damus_state)) { - Text(NSLocalizedString("Configure Damus Purple", comment: "Button to allow Damus Purple to be configured")) + Text("Configure Damus Purple", comment: "Button to allow Damus Purple to be configured") } } diff --git a/damus/Views/Settings/ZapSettingsView.swift b/damus/Views/Settings/ZapSettingsView.swift index bb3db6db..71bf9e10 100644 --- a/damus/Views/Settings/ZapSettingsView.swift +++ b/damus/Views/Settings/ZapSettingsView.swift @@ -22,8 +22,8 @@ struct ZapSettingsView: View { var body: some View { Form { Section( - header: Text(NSLocalizedString("OnlyZaps", comment: "Section header for enabling OnlyZaps mode (hide reactions)")), - footer: Text(NSLocalizedString("Hide all 🤙's", comment: "Section footer describing OnlyZaps mode")) + header: Text("OnlyZaps", comment: "Section header for enabling OnlyZaps mode (hide reactions)"), + footer: Text("Hide all 🤙's", comment: "Section footer describing OnlyZaps mode") ) { Toggle(NSLocalizedString("OnlyZaps mode", comment: "Setting toggle to hide reactions."), isOn: $settings.onlyzaps_mode) diff --git a/damus/Views/SuggestedHashtagsView.swift b/damus/Views/SuggestedHashtagsView.swift index 84bcb4d9..b7848e92 100644 --- a/damus/Views/SuggestedHashtagsView.swift +++ b/damus/Views/SuggestedHashtagsView.swift @@ -57,7 +57,7 @@ struct SuggestedHashtagsView: View { VStack { HStack { Image(systemName: "sparkles") - Text(NSLocalizedString("Suggested hashtags", comment: "A label indicating that the items below it are suggested hashtags")) + Text("Suggested hashtags", comment: "A label indicating that the items below it are suggested hashtags") Spacer() Button(action: { withAnimation(.easeOut(duration: 0.2)) { @@ -105,7 +105,8 @@ struct SuggestedHashtagsView: View { Text(verbatim: "#\(hashtag)") .bold() - Text(pluralizedString(key: "users_talking_about_it", count: self.count)) + let pluralizedString = pluralizedString(key: "users_talking_about_it", count: self.count) + Text(pluralizedString) .foregroundStyle(.secondary) } diff --git a/damus/Views/Wallet/ConnectWalletView.swift b/damus/Views/Wallet/ConnectWalletView.swift index fb4dedf1..d5a094d2 100644 --- a/damus/Views/Wallet/ConnectWalletView.swift +++ b/damus/Views/Wallet/ConnectWalletView.swift @@ -39,9 +39,9 @@ struct ConnectWalletView: View { } .alert(isPresented: $showAlert) { Alert( - title: Text(NSLocalizedString("Invalid Nostr wallet connection string", comment: "Error message when an invalid Nostr wallet connection string is provided.")), - message: Text("Make sure the wallet you are connecting to supports NWC."), - dismissButton: .default(Text(NSLocalizedString("OK", comment: "Button label indicating user wants to proceed."))) { + title: Text("Invalid Nostr wallet connection string", comment: "Error message when an invalid Nostr wallet connection string is provided."), + message: Text("Make sure the wallet you are connecting to supports NWC.", comment: "Hint message when an invalid Nostr wallet connection string is provided."), + dismissButton: .default(Text("OK", comment: "Button label indicating user wants to proceed.")) { wallet_scan_result = .scanning } ) @@ -80,7 +80,7 @@ struct ConnectWalletView: View { model.cancel() }) { HStack { - Text(NSLocalizedString("Cancel", comment: "Text for button to cancel out of connecting Nostr Wallet Connect lightning wallet.")) + Text("Cancel", comment: "Text for button to cancel out of connecting Nostr Wallet Connect lightning wallet.") .padding() } .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) @@ -175,10 +175,10 @@ struct ConnectWalletView: View { var TitleSection: some View { VStack(spacing: 25) { - Text("Damus Wallet") + Text("Damus Wallet", comment: "Title text for Damus Wallet view.") .fontWeight(.bold) - Text("Securely connect your Damus app to your wallet\nusing Nostr Wallet Connect") + Text("Securely connect your Damus app to your wallet using Nostr\u{00A0}Wallet\u{00A0}Connect", comment: "Text to prompt user to connect their wallet using 'Nostr Wallet Connect'.") .font(.caption) .multilineTextAlignment(.center) } diff --git a/damus/Views/Wallet/WalletView.swift b/damus/Views/Wallet/WalletView.swift index 6cb6d8bb..0e6ca27e 100644 --- a/damus/Views/Wallet/WalletView.swift +++ b/damus/Views/Wallet/WalletView.swift @@ -28,7 +28,7 @@ struct WalletView: View { VStack(spacing: 5) { VStack(spacing: 10) { - Text("Wallet Relay") + Text("Wallet Relay", comment: "Label text indicating that below it is the information about the wallet relay.") .fontWeight(.semibold) .padding(.top) @@ -47,12 +47,12 @@ struct WalletView: View { if let lud16 = nwc.lud16 { VStack(spacing: 10) { - Text("Wallet Address") + Text("Wallet Address", comment: "Label text indicating that below it is the wallet address.") .fontWeight(.semibold) Divider() - Text(verbatim: lud16) + Text(lud16) } .frame(maxWidth: .infinity, minHeight: 75, alignment: .center) .padding(.horizontal, 10) @@ -69,7 +69,7 @@ struct WalletView: View { self.model.disconnect() }) { HStack { - Text(NSLocalizedString("Disconnect Wallet", comment: "Text for button to disconnect from Nostr Wallet Connect lightning wallet.")) + Text("Disconnect Wallet", comment: "Text for button to disconnect from Nostr Wallet Connect lightning wallet.") } .frame(minWidth: 300, maxWidth: .infinity, maxHeight: 18, alignment: .center) } diff --git a/damus/Views/Zaps/CustomizeZapView.swift b/damus/Views/Zaps/CustomizeZapView.swift index 224a8bee..3d6f27c5 100644 --- a/damus/Views/Zaps/CustomizeZapView.swift +++ b/damus/Views/Zaps/CustomizeZapView.swift @@ -173,7 +173,7 @@ struct CustomizeZapView: View { model.zapping = true }) { HStack { - Text(NSLocalizedString("Zap User", comment: "Button to send a zap.")) + Text("Zap User", comment: "Button to send a zap.") .font(.system(size: 20, weight: .bold)) } .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) diff --git a/damus/de.lproj/Localizable.strings b/damus/de.lproj/Localizable.strings index 84cc10e2..12b6c466 100644 Binary files a/damus/de.lproj/Localizable.strings and b/damus/de.lproj/Localizable.strings differ diff --git a/damus/de.lproj/Localizable.stringsdict b/damus/de.lproj/Localizable.stringsdict index e81c8708..bd7f0d74 100644 --- a/damus/de.lproj/Localizable.stringsdict +++ b/damus/de.lproj/Localizable.stringsdict @@ -226,6 +226,22 @@ geteilte Beiträge + quoted_reposts_count + + NSStringLocalizedFormatKey + %#@QUOTE_REPOSTS@ + QUOTE_REPOSTS + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Zitate + other + Zitat + + sats NSStringLocalizedFormatKey diff --git a/damus/en-US.xcloc/Localized Contents/en-US.xliff b/damus/en-US.xcloc/Localized Contents/en-US.xliff index ab5689c2..855f8aee 100644 --- a/damus/en-US.xcloc/Localized Contents/en-US.xliff +++ b/damus/en-US.xcloc/Localized Contents/en-US.xliff @@ -2,7 +2,7 @@
- +
@@ -44,15 +44,25 @@
- +
%@ %@ %@ %@ - Sentence composed of 2 variables to describe how many people are following a user. In source English, the first variable is the number of followers, and the second variable is 'Follower' or 'Followers'. + Sentence composed of 2 variables to describe how many reposts. In source English, the first variable is the number of reposts, and the second variable is 'Repost' or 'Reposts'. Sentence composed of 2 variables to describe how many imports were performed from loading a NostrScript. In source English, the first variable is the number of imports, and the second variable is 'Import' or 'Imports'. -Sentence composed of 2 variables to describe how many reposts. In source English, the first variable is the number of reposts, and the second variable is 'Repost' or 'Reposts'. +Sentence composed of 2 variables to describe how many people are following a user. In source English, the first variable is the number of followers, and the second variable is 'Follower' or 'Followers'. + + + %@ / %@ + %@ / %@ + Amount of money required to subscribe to the Nostr relay. In English, this would look something like '4,000 sats / 30 days', meaning it costs 4000 sats to subscribe to the Nostr relay for 30 days. + + + %@ / event + %@ / event + Amount of money required to publish to the Nostr relay. In English, this would look something like '10 sats / event', meaning it costs 10 sats to publish one event. %@ has been muted @@ -104,6 +114,26 @@ Sentence composed of 2 variables to describe how many reposts. In source English (Contents are encrypted) Label on push notification indicating that the contents of the message are encrypted + + 1 month + 1 month + A duration of 1 month to be shown to the user. Most likely in the context of how long they want to mute a piece of content for. + + + 1 week + 1 week + A duration of 1 week to be shown to the user. Most likely in the context of how long they want to mute a piece of content for. + + + 24 hours + 24 hours + A duration of 24 hours/1 day to be shown to the user. Most likely in the context of how long they want to mute a piece of content for. + + + ADMIN + ADMIN + Text label indicating the profile picture underneath it is the admin of the Nostr relay. + API Key (optional) API Key (optional) @@ -152,19 +182,13 @@ Sentence composed of 2 variables to describe how many reposts. In source English Add Add - Button to add relay server to list. - Button to confirm adding user inputted emoji. + Button to add relay server to list. Add Bookmark Add Bookmark Button text to add bookmark to a note. - - Add Emoji - Add Emoji - Label for section for adding an emoji to the reactions list. - Add all Add all @@ -180,26 +204,32 @@ Sentence composed of 2 variables to describe how many reposts. In source English Add bookmark Context menu option for adding a note bookmark. + + Add mute item + Add mute item + Title text to indicate user to an add an item to their mutelist. + Add relay Add relay - Title text to indicate user to an add a relay. + Title text to indicate user to an add a relay. +Button text to add a relay Add your first post Add your first post Prompt given to the user during onboarding, suggesting them to write their first post + + Added + Added + Button to show relay server is already added to list. + Additional information Additional information Header text to prompt user to optionally provide additional information when reporting a user or note. - - Admin - Admin - Label to display relay contact user. - All All @@ -262,16 +292,16 @@ Sentence composed of 2 variables to describe how many reposts. In source English Are you lost? Text asking the user if they are lost in the app. - - Are you sure you want to attach this wallet? - Are you sure you want to attach this wallet? - Prompt to ask user if they want to attach their Nostr Wallet Connect lightning wallet. - Are you sure you want to clear the cache? This will free space, but images may take longer to load again. Are you sure you want to clear the cache? This will free space, but images may take longer to load again. Message explaining what it means to clear the cache, asking if user wants to proceed. + + Are you sure you want to connect this wallet? + Are you sure you want to connect this wallet? + Prompt to ask user if they want to attach their Nostr Wallet Connect lightning wallet. + Are you sure you want to delete all of your bookmarks? Are you sure you want to delete all of your bookmarks? @@ -296,36 +326,11 @@ Tip: You can always change this later in Settings → Translations Tip: You can always change this later in Settings → Translations Message notifying the user that they get auto-translations as part of their service - - Attach - Attach - Text for button to attach Nostr Wallet Connect lightning wallet. - - - Attach Alby Wallet - Attach Alby Wallet - Button to attach an Alby Wallet, a service that provides a Lightning wallet for zapping sats. Alby is the name of the service and should not be translated. - - - Attach Wallet - Attach Wallet - Text for button to attach Nostr Wallet Connect lightning wallet. - - - Attach a Wallet - Attach a Wallet - Navigation title for attaching Nostr Wallet Connect lightning wallet. - Authenticated Authenticated Label to display that authentication to a server has succeeded. - - Authentication - Authentication - Header label to display authentication details for a given relay. - Automatic translations Automatic translations @@ -383,6 +388,16 @@ Tip: You can always change this later in Settings → Translations By signing up, you agree to our Ask the user if they already have an account on Nostr + + By subscribing to Damus Purple, you are accepting our [privacy policy](https://damus.io/privacy-policy.txt) and Apple's Standard [EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/) + By subscribing to Damus Purple, you are accepting our [privacy policy](https://damus.io/privacy-policy.txt) and Apple's Standard [EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/) + Text explaining the terms and conditions of subscribing to Damus Purple. EULA stands for End User License Agreement. + + + CONTACT + CONTACT + Text label indicating that the information below is the contact information of the admin of the Nostr relay. + Cache has been cleared Cache has been cleared @@ -395,13 +410,10 @@ Tip: You can always change this later in Settings → Translations Button to cancel a repost. Button to cancel any interaction with the QRCode link. Button to cancel out of alert that creates a new mutelist. - Button to cancel out of posting a note. - Button to cancel out of view adding user inputted emoji. Button to cancel the upload. Cancel deleting bookmarks. Cancel deleting the user. - Cancel out of logging out the user. - Text for button to cancel out of connecting Nostr Wallet Connect lightning ewallet. + Cancel out of logging out the user. Changing this setting will cause the cache to be cleared. This will free space, but images may take longer to load again. Are you sure you want to proceed? @@ -453,21 +465,27 @@ Tip: You can always change this later in Settings → Translations Confirmation Confirmation dialog title - - Connect To Relay - Connect To Relay - Button to connect to the relay. + + Connect + Connect + Text for button to conect to Nostr Wallet Connect lightning wallet. +Button to connect to the relay. + + + Connect to Alby Wallet + Connect to Alby Wallet + Button to attach an Alby Wallet, a service that provides a Lightning wallet for zapping sats. Alby is the name of the service and should not be translated. + + + Connect to Mutiny Wallet + Connect to Mutiny Wallet + Button to attach an Mutiny Wallet, a service that provides a Lightning wallet for zapping sats. Mutiny is the name of the service and should not be translated. Connecting Connecting Relay status label that indicates a relay is connecting. - - Contact - Contact - Label to display relay contact information. - Content filters Content filters @@ -476,10 +494,8 @@ Tip: You can always change this later in Settings → Translations Continue Continue - Button to dismiss suggested users view and continue to the main app - Continue with bookmarks. - Continue with deleting the user. - Prompt to user to continue + Continue with bookmarks. + Continue with deleting the user. Copied @@ -490,7 +506,6 @@ Tip: You can always change this later in Settings → Translations Copy Copy Button to copy a relay server address. - Button to copy an emoji reaction Button to copy the value found. Context menu option for copying the version of damus. @@ -597,6 +612,11 @@ Tip: You can always change this later in Settings → Translations Setting to enable DM Local Notification Toolbar label for DMs view, where DM is the English abbreviation for Direct Message. + + Damus + Damus + Name of the app for the title of an internal notification + Damus Purple Damus Purple @@ -607,6 +627,11 @@ Tip: You can always change this later in Settings → Translations Damus Purple environment Prompt selection of the Damus purple environment (Developer feature to switch between real/production mode to test modes). + + Damus Wallet + Damus Wallet + Title text for Damus Wallet view. + DeepL (Proprietary, Higher Accuracy) DeepL (Proprietary, Higher Accuracy) @@ -636,7 +661,7 @@ Tip: You can always change this later in Settings → Translations Description Description - Label to display relay description. + Description of the specific Nostr relay server. Developer @@ -657,12 +682,8 @@ Tip: You can always change this later in Settings → Translations Disconnect Disconnect - Button to disconnect from a relay server. - - - Disconnect From Relay - Disconnect From Relay - Button to disconnect from the relay. + Button to disconnect from the relay. +Button to disconnect from a relay server. Disconnect Wallet @@ -709,11 +730,6 @@ Tip: You can always change this later in Settings → Translations Edit Button to edit user's profile. - - Emoji Reactions - Emoji Reactions - Section title for emoji reactions that are currently added. - Enable Purple auto-translations Enable Purple auto-translations @@ -747,13 +763,19 @@ Tip: You can always change this later in Settings → Translations Error Error - Label to display that authentication to a server has failed. + Label to display that authentication to a server has failed. +Relay status label that indicates a relay had an error when connecting Error fetching lightning invoice Error fetching lightning invoice Message to display when there was an error fetching a lightning invoice while attempting to zap. + + Error retrieving muted event + Error retrieving muted event + Text for an item that application failed to retrieve the muted event for. + Error: %@ Error: %@ @@ -904,7 +926,7 @@ My side interests include languages and I am striving to be a #polyglot - I am a Hashtags Hashtags - Label for filter for seeing only hashtag follows. + Section header title for a list of hashtags that are muted. Hello everybody! @@ -937,7 +959,7 @@ This is my first post on Damus, I am happy to meet you all 🤙. What’s up? Hide Hide - Button to hide a note from a user who has been muted. + Button to hide a note which has been muted. Hide all 🤙's @@ -983,6 +1005,16 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!Impersonation Description of report type for impersonation. + + Indefinite + Indefinite + Mute a given item indefinitly (until user unmutes it). As opposed to muting the item for a given period of time. + + + Internal app notification + Internal app notification + Badge indicating that a notification is an official internal app notification + Invalid Nostr wallet connection string Invalid Nostr wallet connection string @@ -1089,11 +1121,6 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!Local default Dropdown option label for system default for Lightning wallet. - - Log - Log - Label to display developer mode logs. - Login Login @@ -1115,6 +1142,11 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!Make Default Button label to indicate that tapping it will make the selected zap type be the default for future zaps. + + Make sure the wallet you are connecting to supports NWC. + Make sure the wallet you are connecting to supports NWC. + Hint message when an invalid Nostr wallet connection string is provided. + Make sure your nsec account key is saved before you logout or you will lose access to this account Make sure your nsec account key is saved before you logout or you will lose access to this account @@ -1125,6 +1157,11 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!Manage Manage the damus subscription + + Manage subscription + Manage subscription + Button to take user to manage Damus Purple subscription + Media previews Media previews @@ -1158,14 +1195,18 @@ Hope to meet folks who are on their own journeys to a peaceful and free life! Mute Mute - Alert button to mute a user. - Button to mute a profile. + Alert button to mute a user. Mute %@? Mute %@? Alert message prompt to ask if a user should be muted. + + Mute Hashtag + Mute Hashtag + Label represnting a button that the user can tap to mute a given hashtag so they don't see it in their feed anymore. + Mute User Mute User @@ -1184,17 +1225,15 @@ Hope to meet folks who are on their own journeys to a peaceful and free life! Muted Muted - Sidebar menu label for muted users view. + Navigation title of view to see list of muted users & phrases. + Sidebar menu label for muted users view. - - Muted Users - Muted Users - Navigation title of view to see list of muted users. - - - My Relays - My Relays - Section title for relay servers that the user is connected to. + + N/A + N/A + Text label indicating that there is no NIP-11 relay admin contact information found. In English, N/A stands for not applicable. +Text label indicating that there is no NIP-11 relay description information found. In English, N/A stands for not applicable. +Text label indicating that there is no NIP-11 relay software information found. In English, N/A stands for not applicable. Never @@ -1226,11 +1265,6 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!No User confirm No - - No data available - No data available - Text indicating that there is no data available to show for specific metadata about a relay server. - No logs to display No logs to display @@ -1291,21 +1325,28 @@ Hope to meet folks who are on their own journeys to a peaceful and free life!NostrScript Error Text indicating that there was an error with loading NostrScript. There is a more descriptive error message shown separately underneath. - - Note from a user you've muted - Note from a user you've muted - Text to indicate that what is being shown is a note from a user who has been muted. + + Note from a %@ you've muted + Note from a %@ you've muted + Text to indicate that what is being shown is a note which has been muted. + + + Note you've muted + Note you've muted + Text to indicate that what is being shown is a note which has been muted. Notes Notes - A label indicating that the notes being displayed below it are from a timeline, not search results + Label for filter for seeing only notes (instead of notes and replies). +Label for filter for seeing only your notes (instead of notes and replies). +A label indicating that the notes being displayed below it are from a timeline, not search results Notes & Replies Notes & Replies - Label for filter for seeing your notes and replies (instead of only your notes). -Label for filter for seeing notes and replies (instead of only notes). + Label for filter for seeing notes and replies (instead of only notes). +Label for filter for seeing your notes and replies (instead of only your notes). Notes with the #nsfw tag usually contains adult content or other "Not safe for work" content @@ -1342,7 +1383,7 @@ Label for filter for seeing notes and replies (instead of only notes). OK OK Button label indicating user wants to proceed. - Button label to dismiss an error dialog +Button label to dismiss an error dialog Ok @@ -1392,12 +1433,12 @@ Label for filter for seeing notes and replies (instead of only notes). - - Paste - Paste - Button to paste a Nostr Wallet Connect string to connect the wallet for use in Damus for zaps. + + Paste NWC Address + Paste NWC Address + Text for button to connect a lightning wallet. Pay @@ -1422,8 +1463,7 @@ Label for filter for seeing notes and replies (instead of only notes). Permanently Delete Account Permanently Delete Account - Alert for deleting the users account. - Section title for deleting the user + Alert for deleting the users account. Plan @@ -1520,6 +1560,11 @@ Label for filter for seeing notes and replies (instead of only notes). Purchased! User purchased a subscription + + Purchasing + Purchasing + Loading label indicating the purchase action is in progress + Purple Purple @@ -1535,6 +1580,11 @@ Label for filter for seeing notes and replies (instead of only notes). Quote Button to compose a quoted note + + Quotes + Quotes + Navigation bar title for Quote Reposts view. + Ran to suspension. Ran to suspension. @@ -1547,20 +1597,10 @@ Label for filter for seeing notes and replies (instead of only notes). Section header for reactions settings Title of emoji reactions view - - Recommended Emojis - Recommended Emojis - Section title for recommend emojis - - - Recommended relays - Recommended relays - Title for view of recommended relays. - - - Relay - Relay - Label to display relay address. + + Relay Logs + Relay Logs + Text label indicating that the text below it are developer mode logs. Relays @@ -1589,6 +1629,16 @@ Label for filter for seeing notes and replies (instead of only notes). Remove bookmark Context menu option for removing a note bookmark. + + Renew (1 mo) + Renew (1 mo) + Button to take user to renew subscription for one month + + + Renew (1 yr) + Renew (1 yr) + Button to take user to renew subscription for one year + Renews on Renews on @@ -1692,6 +1742,11 @@ Label for filter for seeing notes and replies (instead of only notes). Runtime error Indication that a runtime error occurred when running a NostrScript. + + SOFTWARE + SOFTWARE + Text label indicating which relay software is used to run this Nostr relay. + Satoshi Nakamoto Satoshi Nakamoto @@ -1727,6 +1782,11 @@ Label for filter for seeing notes and replies (instead of only notes). Scan Code Button to switch to scan QR Code page. + + Scan NWC Address + Scan NWC Address + Text for button to connect a lightning wallet. + Scan Your Private Key QR Scan Your Private Key QR @@ -1774,6 +1834,11 @@ Label for filter for seeing notes and replies (instead of only notes). Secret Account Login Key Section title for user's secret account login key. + + Securely connect your Damus app to your wallet using Nostr Wallet Connect + Securely connect your Damus app to your wallet using Nostr Wallet Connect + Text to prompt user to connect their wallet using 'Nostr Wallet Connect'. + Select a Lightning wallet Select a Lightning wallet @@ -1845,7 +1910,7 @@ Label for filter for seeing notes and replies (instead of only notes). Show Show - Button to show a note from a user who has been muted. + Button to show a note which has been muted. Toggle to show or hide user's secret account login key. @@ -1884,11 +1949,6 @@ Label for filter for seeing notes and replies (instead of only notes). Show profile action sheets Setting to show profile action sheets when clicking on a user's profile picture - - Show recommended relays - Show recommended relays - Button to show recommended relays. - Show wallet selector Show wallet selector @@ -1919,11 +1979,6 @@ Label for filter for seeing notes and replies (instead of only notes). Social media has developed into a key way information flows around the world. Unfortunately, our current social media systems are broken Description about why Nostr is needed. - - Software - Software - Label to display relay software. - Someone posted a note Someone posted a note @@ -1947,8 +2002,7 @@ Label for filter for seeing notes and replies (instead of only notes). Spam Spam - Description of report type for spam. - Section header for Universe/Search spam + Description of report type for spam. Staging @@ -2000,23 +2054,23 @@ Label for filter for seeing notes and replies (instead of only notes). Take Photo Option to take a photo with the camera - - Test (localhost) - Test (localhost) - Label indicating a localhost test environment for Damus Purple functionality (Developer feature) + + Test (local) + Test (local) + Label indicating a local test environment for Damus Purple functionality (Developer feature) Text Truncation Text Truncation Section header for damus text truncation user configuration - - Thank you very much for signing up for Damusu{00A0}Purple. Your contribution helps us continue our fight for a more Open and Freeu{00A0}internet. + + Thank you very much for signing up for Damus Purple. Your contribution helps us continue our fight for a more Open and Free internet. You will also get access to premium features, and a star badge on your profile. Enjoy! - Thank you very much for signing up for Damusu{00A0}Purple. Your contribution helps us continue our fight for a more Open and Freeu{00A0}internet. + Thank you very much for signing up for Damus Purple. Your contribution helps us continue our fight for a more Open and Free internet. You will also get access to premium features, and a star badge on your profile. @@ -2045,15 +2099,20 @@ You're all set! You're all set! An error message that appears when the user attempts to add a relay that has already been added. + + There has been an unexpected error with the in-app purchase. Please try again later or contact support@damus.io. Error: %@ + There has been an unexpected error with the in-app purchase. Please try again later or contact support@damus.io. Error: %@ + In-app purchase error message for the user + There was an error loading your account. Please try again later. If problem persists, please contact us at support@damus.io There was an error loading your account. Please try again later. If problem persists, please contact us at support@damus.io Error label when Purple account information fails to load -
- +
@@ -2659,6 +2764,21 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. %#@IMPORTS@ + + %#@QUOTE_REPOSTS@ + %#@QUOTE_REPOSTS@ + + + + Quote + Quote + + + + Quotes + Quotes + + %#@REACTED@ %#@REACTED@ @@ -2963,7 +3083,7 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
- +
@@ -2985,7 +3105,7 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
- +
@@ -3113,10 +3233,10 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. Staging Label indicating a staging test environment for Damus Purple functionality (Developer feature) - - Test (localhost) - Test (localhost) - Label indicating a localhost test environment for Damus Purple functionality (Developer feature) + + Test (local) + Test (local) + Label indicating a local test environment for Damus Purple functionality (Developer feature) This note contains too many items and cannot be rendered diff --git a/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings b/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings index 90990fb4..5789abcb 100644 --- a/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings +++ b/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings @@ -96,8 +96,8 @@ "Staging" : { "comment" : "Label indicating a staging test environment for Damus Purple functionality (Developer feature)" }, - "Test (localhost)" : { - "comment" : "Label indicating a localhost test environment for Damus Purple functionality (Developer feature)" + "Test (local)" : { + "comment" : "Label indicating a local test environment for Damus Purple functionality (Developer feature)" }, "This note contains too many items and cannot be rendered" : { "comment" : "Error message indicating that a note is too big and cannot be rendered" diff --git a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings index 340b48f3..e8a81cd8 100644 Binary files a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings and b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.strings differ diff --git a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.stringsdict b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.stringsdict index 755c5ace..bef83fac 100644 --- a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.stringsdict +++ b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/Localizable.stringsdict @@ -226,6 +226,22 @@ Reposts
+ quoted_reposts_count + + NSStringLocalizedFormatKey + %#@QUOTE_REPOSTS@ + QUOTE_REPOSTS + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Quote + other + Quotes + + sats NSStringLocalizedFormatKey diff --git a/damus/en-US.xcloc/contents.json b/damus/en-US.xcloc/contents.json index 330efdd4..56234ec4 100644 --- a/damus/en-US.xcloc/contents.json +++ b/damus/en-US.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "damus.xcodeproj", "targetLocale" : "en-US", "toolInfo" : { - "toolBuildNumber" : "15C500b", + "toolBuildNumber" : "15E204a", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "15.2" + "toolVersion" : "15.3" }, "version" : "1.0" } \ No newline at end of file diff --git a/damus/es-ES.lproj/Localizable.stringsdict b/damus/es-ES.lproj/Localizable.stringsdict index eb369ce8..bad5f420 100644 --- a/damus/es-ES.lproj/Localizable.stringsdict +++ b/damus/es-ES.lproj/Localizable.stringsdict @@ -254,6 +254,24 @@ Republicaciones + quoted_reposts_count + + NSStringLocalizedFormatKey + %#@QUOTE_REPOSTS@ + QUOTE_REPOSTS + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Cita + many + Citas + other + Citas + + sats NSStringLocalizedFormatKey diff --git a/damus/fa.lproj/Localizable.strings b/damus/fa.lproj/Localizable.strings index 49f243ce..b568ca7b 100644 Binary files a/damus/fa.lproj/Localizable.strings and b/damus/fa.lproj/Localizable.strings differ diff --git a/damus/ko.lproj/Localizable.strings b/damus/ko.lproj/Localizable.strings index 81838f81..e28b3d68 100644 Binary files a/damus/ko.lproj/Localizable.strings and b/damus/ko.lproj/Localizable.strings differ diff --git a/damus/nl.lproj/Localizable.strings b/damus/nl.lproj/Localizable.strings index e528043b..7bfee55d 100644 Binary files a/damus/nl.lproj/Localizable.strings and b/damus/nl.lproj/Localizable.strings differ diff --git a/damus/nl.lproj/Localizable.stringsdict b/damus/nl.lproj/Localizable.stringsdict index c51e2232..8ca7faa7 100644 --- a/damus/nl.lproj/Localizable.stringsdict +++ b/damus/nl.lproj/Localizable.stringsdict @@ -226,6 +226,22 @@ Herplaatsingen + quoted_reposts_count + + NSStringLocalizedFormatKey + %#@QUOTE_REPOSTS@ + QUOTE_REPOSTS + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Citaat + other + Citaten + + sats NSStringLocalizedFormatKey diff --git a/damus/pl-PL.lproj/Localizable.strings b/damus/pl-PL.lproj/Localizable.strings index a63cbfb2..700dfdaa 100644 Binary files a/damus/pl-PL.lproj/Localizable.strings and b/damus/pl-PL.lproj/Localizable.strings differ