From 9d42715d76c985b14283c49ab5749e4623865a5f Mon Sep 17 00:00:00 2001
From: Terry Yiu <963907+tyiu@users.noreply.github.com>
Date: Thu, 7 Dec 2023 14:49:07 -0800
Subject: [PATCH] Fix localization issues and export strings for translation
---
damus/Views/LoginView.swift | 2 +-
damus/Views/NoteContentView.swift | 2 +-
damus/Views/Search/PullDownSearch.swift | 4 +-
.../Settings/DeveloperSettingsView.swift | 6 +-
damus/Views/SuggestedHashtagsView.swift | 9 +-
damus/Views/Video/DamusVideoPlayer.swift | 2 +-
damus/en-US.lproj/Localizable.stringsdict | 16 +
.../Localized Contents/en-US.xliff | 366 ++++++++++++++++--
.../InfoPlist.xcstrings | 42 ++
.../Localizable.xcstrings | 33 ++
.../damus/en-US.lproj/InfoPlist.strings | 4 +-
.../damus/en-US.lproj/Localizable.strings | Bin 213328 -> 119040 bytes
.../damus/en-US.lproj/Localizable.stringsdict | 16 +
damus/en-US.xcloc/contents.json | 4 +-
14 files changed, 463 insertions(+), 43 deletions(-)
create mode 100644 damus/en-US.xcloc/Source Contents/DamusNotificationService/InfoPlist.xcstrings
create mode 100644 damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings
diff --git a/damus/Views/LoginView.swift b/damus/Views/LoginView.swift
index cd9e741e..d264b904 100644
--- a/damus/Views/LoginView.swift
+++ b/damus/Views/LoginView.swift
@@ -361,7 +361,7 @@ struct SignInEntry: View {
shouldSaveKey: shouldSaveKey,
privKeyFound: $privKeyFound)
if privKeyFound {
- Toggle("Save Key in Secure Keychain", isOn: shouldSaveKey)
+ Toggle(NSLocalizedString("Save Key in Secure Keychain", comment: "Toggle to save private key to the Apple secure keychain."), isOn: shouldSaveKey)
}
}
}
diff --git a/damus/Views/NoteContentView.swift b/damus/Views/NoteContentView.swift
index 6aed0b05..d46b0565 100644
--- a/damus/Views/NoteContentView.swift
+++ b/damus/Views/NoteContentView.swift
@@ -188,7 +188,7 @@ struct NoteContentView: View {
.frame(height: 1)
switch artifacts.media[index] {
case .image(let url), .video(let url):
- Text("\(url)")
+ Text(url.absoluteString)
.font(eventviewsize_to_font(size, font_size: damus_state.settings.font_size))
.foregroundStyle(DamusColors.neutral6)
.multilineTextAlignment(.leading)
diff --git a/damus/Views/Search/PullDownSearch.swift b/damus/Views/Search/PullDownSearch.swift
index fc1c75a6..e23ba1dd 100644
--- a/damus/Views/Search/PullDownSearch.swift
+++ b/damus/Views/Search/PullDownSearch.swift
@@ -55,7 +55,7 @@ struct PullDownSearchView: View {
var body: some View {
VStack(alignment: .leading) {
HStack {
- TextField("Search", text: $search_text)
+ TextField(NSLocalizedString("Search", comment: "Title of the text field for searching."), text: $search_text)
.textFieldStyle(RoundedBorderTextFieldStyle())
.onChange(of: search_text) { query in
debouncer.debounce {
@@ -75,7 +75,7 @@ struct PullDownSearchView: View {
end_editing()
on_cancel()
}, label: {
- Text("Cancel")
+ Text("Cancel", comment: "Button to cancel out of search text entry mode.")
})
}
}
diff --git a/damus/Views/Settings/DeveloperSettingsView.swift b/damus/Views/Settings/DeveloperSettingsView.swift
index 8ed6c119..110fa3e4 100644
--- a/damus/Views/Settings/DeveloperSettingsView.swift
+++ b/damus/Views/Settings/DeveloperSettingsView.swift
@@ -17,12 +17,12 @@ struct DeveloperSettingsView: View {
Toggle(NSLocalizedString("Developer Mode", comment: "Setting to enable developer mode"), isOn: $settings.developer_mode)
.toggleStyle(.switch)
if settings.developer_mode {
- Toggle("Always show onboarding", isOn: $settings.always_show_onboarding_suggestions)
+ Toggle(NSLocalizedString("Always show onboarding", comment: "Developer mode setting to always show onboarding suggestions."), isOn: $settings.always_show_onboarding_suggestions)
- Toggle("Enable experimental push notifications", isOn: $settings.enable_experimental_push_notifications)
+ Toggle(NSLocalizedString("Enable experimental push notifications", comment: "Developer mode setting to enable experimental push notifications."), isOn: $settings.enable_experimental_push_notifications)
.toggleStyle(.switch)
- Toggle("Send device token to localhost", isOn: $settings.send_device_token_to_localhost)
+ Toggle(NSLocalizedString("Send device token to localhost", comment: "Developer mode setting to send device token metadata to a local server instead of the damus.io server."), isOn: $settings.send_device_token_to_localhost)
.toggleStyle(.switch)
}
}
diff --git a/damus/Views/SuggestedHashtagsView.swift b/damus/Views/SuggestedHashtagsView.swift
index dfccd86b..84bcb4d9 100644
--- a/damus/Views/SuggestedHashtagsView.swift
+++ b/damus/Views/SuggestedHashtagsView.swift
@@ -102,14 +102,11 @@ struct SuggestedHashtagsView: View {
SingleCharacterAvatar(character: "#")
VStack(alignment: .leading, spacing: 10) {
- Text("#\(hashtag)")
+ Text(verbatim: "#\(hashtag)")
.bold()
- Text(self.count != 1 ? String(
- format: NSLocalizedString("%d users talking about it", comment: "A label indicating how many users have been talking about a hashtag"),
- self.count
- ) : NSLocalizedString("1 user talking about it", comment: "A label indicating 1 user has been talking about a hashtag"))
- .foregroundStyle(.secondary)
+ Text(pluralizedString(key: "users_talking_about_it", count: self.count))
+ .foregroundStyle(.secondary)
}
Spacer()
diff --git a/damus/Views/Video/DamusVideoPlayer.swift b/damus/Views/Video/DamusVideoPlayer.swift
index 9e6ab57f..f27253de 100644
--- a/damus/Views/Video/DamusVideoPlayer.swift
+++ b/damus/Views/Video/DamusVideoPlayer.swift
@@ -100,7 +100,7 @@ struct DamusVideoPlayer: View {
private var live_indicator: some View {
VStack {
HStack {
- Text("LIVE")
+ Text("LIVE", comment: "Text indicator that the video is a livestream.")
.bold()
.foregroundColor(.red)
.padding(.horizontal)
diff --git a/damus/en-US.lproj/Localizable.stringsdict b/damus/en-US.lproj/Localizable.stringsdict
index fd4cc98f..755c5ace 100644
--- a/damus/en-US.lproj/Localizable.stringsdict
+++ b/damus/en-US.lproj/Localizable.stringsdict
@@ -258,6 +258,22 @@
%2$@ sats
+ users_talking_about_it
+
+ NSStringLocalizedFormatKey
+ %#@USERS@
+ USERS
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ one
+ %d user talking about it
+ other
+ %d users talking about it
+
+ word_countNSStringLocalizedFormatKey
diff --git a/damus/en-US.xcloc/Localized Contents/en-US.xliff b/damus/en-US.xcloc/Localized Contents/en-US.xliff
index ec028eaa..75cc32ea 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 @@
-
+
@@ -21,8 +21,8 @@
Privacy - Media Library Usage Description
-
- Damus needs access to your camera if you want to scan QR codes and upload photos
+
+ Damus needs access to your camera in order to upload photos and scan QR codes.Privacy - Camera Usage Description
@@ -31,8 +31,8 @@
Privacy - Face ID Usage Description
-
- Damus needs access to your microphone if you want to upload recorded videos from it
+
+ Damus needs access to your microphone for creating video recording postsPrivacy - Microphone Usage Description
@@ -44,7 +44,7 @@
-
+
@@ -160,6 +160,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Add allButton label to re-add all original participants as profiles to reply to in a note
+
+
+ Add an external link
+ Placeholder as an example of what the user could set so that the link is opened when the status is tapped.
+ Add bookmark
@@ -170,6 +175,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Add relayTitle text to indicate user to an add a relay.
+
+
+ Add your first post
+ Prompt given to the user during onboarding, suggesting them to write their first post
+ Additional information
@@ -185,6 +195,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
AllLabel for filter for all notifications.
+
+
+ All recent notes
+ A label indicating that the notes being displayed below it are all recent notes
+ Already on Nostr?
@@ -195,6 +210,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Always show imagesSetting to always show and never blur images
+
+
+ Always show onboarding
+ Developer mode setting to always show onboarding suggestions.
+ An additional percentage of each zap will be sent to support Damus development
@@ -237,6 +257,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
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.
+ Message explaining what it means to clear the cache, asking if user wants to proceed.
+ Are you sure you want to delete all of your bookmarks?
@@ -309,11 +334,17 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Broadcast music playing on Apple MusicToggle to enable or disable broadcasting what music is being played on Apple Music in their profile status.
+
+
+ Cache has been cleared
+ Message indicating that the cache was successfully cleared.
+ CancelAlert button to cancel out of alert for muting a user.
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.
@@ -323,6 +354,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Cancel out of logging out the user.
Text for button to cancel out of connecting Nostr Wallet Connect lightning ewallet.
+
+
+ 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?
+ Message explaining consequences of changing the 'enable animation' setting
+ Choose from Library
@@ -343,6 +379,16 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Clear statusLabel to prompt user to select an expiration time for the profile status to clear.
+
+
+ Clearing Cache
+ Loading message indicating that the cache is being cleared.
+
+
+
+ Confirmation
+ Confirmation dialog title
+ Connect To Relay
@@ -380,6 +426,7 @@ Sentence composed of 2 variables to describe how many reposts. In source English
CopyButton 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.
@@ -547,6 +594,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Disconnect WalletText for button to disconnect from Nostr Wallet Connect lightning wallet.
+
+
+ Dismiss
+ Button to dismiss alert
+ Display name
@@ -587,6 +639,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Emoji ReactionsSection title for emoji reactions that are currently added.
+
+
+ Enable experimental push notifications
+ Developer mode setting to enable experimental push notifications.
+ Encrypted
@@ -632,11 +689,6 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Failed to parseNostrScript error message when it fails to parse a script.
-
-
- Filter
- Button label text for filtering relay servers.
- Follow
@@ -707,6 +759,22 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Font SizeSection label for font size settings.
+
+
+ For #Introductions! I’m a software developer.
+
+My side interests include languages and I am striving to be a #polyglot - I am a native English speaker and can speak French, German and Japanese.
+ First post example given to the user during onboarding, as a suggestion as to what they could post first
+
+
+
+ Found
+ (qrCodeValue)
+ Alert message asking if the user wants to open the link.
+ Free
@@ -720,13 +788,27 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Get API Key with BTC/Lightning
- Button to navigate to nokyctranslate website to get a translation API key.
+ Button to navigate to nokyctranslate website to get a translation API key.
+ Button to navigate to translate.nostr.wine to get a translation API key.HashtagsLabel for filter for seeing only hashtag follows.
+
+
+ Hello everybody!
+
+This is my first post on Damus, I am happy to meet you all 🤙. What’s up?
+
+#introductions
+ First post example given to the user during onboarding, as a suggestion as to what they could post first
+ Help build the future of decentralized communication on the web.
@@ -752,6 +834,15 @@ Sentence composed of 2 variables to describe how many reposts. In source English
HomeNavigation bar title for Home view where notes and replies appear from those who the user is following.
+
+
+ Howdy! I’m a graphic designer during the day and coder at night, but I’m also trying to spend more time outdoors.
+
+Hope to meet folks who are on their own journeys to a peaceful and free life!
+ First post example given to the user during onboarding, as a suggestion as to what they could post first
+ Illegal Content
@@ -798,6 +889,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Navigation title for managing keys.
Settings section for managing keys
+
+
+ LIVE
+ Text indicator that the video is a livestream.
+ Learn more about Nostr
@@ -843,6 +939,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
LikesSetting to enable Like Local Notification
+
+
+ Load media
+ Button to show media in note.
+ Local Notifications
@@ -889,6 +990,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Make sure your nsec account key is saved before you logout or you will lose access to this accountReminder message in alert to get customer to verify that their private security account key is saved saved before logging out.
+
+
+ Media previews
+ Setting to show media
+ Mentioned by %@
@@ -899,6 +1005,16 @@ Sentence composed of 2 variables to describe how many reposts. In source English
MentionsSetting to enable Mention Local Notification
+
+
+ Merch
+ Sidebar menu label for merch store link.
+
+
+
+ Message
+ Button label that allows the user to start a direct message conversation with the user shown on-screen
+ Mute
@@ -980,6 +1096,11 @@ Sentence composed of 2 variables to describe how many reposts. In source English
No one will see that you zappedDescription of anonymous zap type where the zap is sent anonymously and does not identify the user who sent it.
+
+
+ No results
+ A label indicating that note search resulted in no results
+ No zaps will be sent, only a lightning payment.
@@ -1028,8 +1149,7 @@ Sentence composed of 2 variables to describe how many reposts. In source English
Notes
- Label for filter for seeing only your notes (instead of notes and replies).
-Label for filter for seeing only notes (instead of notes and replies).
+ A label indicating that the notes being displayed below it are from a timeline, not search results
@@ -1068,6 +1188,12 @@ Label for filter for seeing notes and replies (instead of only notes).
NudityDescription of report type for nudity.
+
+
+ OK
+ Button label indicating user wants to proceed.
+ Button label to dismiss an error dialog
+ Ok
@@ -1098,6 +1224,16 @@ Label for filter for seeing notes and replies (instead of only notes).
OnlyZaps modeSetting toggle to hide reactions.
+
+
+ Open in browser
+ Button to open the value found in browser.
+
+
+
+ Open in wallet
+ Button to open the value found in browser.
+ Optional
@@ -1184,6 +1320,16 @@ Label for filter for seeing notes and replies (instead of only notes).
Profile PictureLabel for Profile Picture section of user profile form.
+
+
+ Profile action sheets allow you to follow, zap, or DM profiles more quickly without having to view their full profile
+ Section footer clarifying what the profile action sheet feature does
+
+
+
+ Profiles
+ Section title for profile view configuration.
+ Public
@@ -1386,21 +1532,41 @@ Label for filter for seeing notes and replies (instead of only notes).
Save ImageContext menu option to save an image.
+
+
+ Save Key in Secure Keychain
+ Toggle to save private key to the Apple secure keychain.
+ Scan CodeButton to switch to scan QR Code page.
+
+
+ Scan Your Private Key QR
+ Text to prompt scanning a QR code of a user's privkey to login to their profile.
+ Scan a user's pubkeyText to prompt scanning a QR code of a user's pubkey to open their profile.
+
+
+ Scan for QR Code
+ Context menu option to scan image for a QR Code.
+ Scan the codeText on QR code view to prompt viewer to scan the QR code on screen with their device camera.
+
+
+ Search
+ Title of the text field for searching.
+ Search hashtag: #%@
@@ -1447,6 +1613,11 @@ Label for filter for seeing notes and replies (instead of only notes).
Send a message with your zap...Placeholder text for a comment to send as part of a zap to the user.
+
+
+ Send device token to localhost
+ Developer mode setting to send device token metadata to a local server instead of the damus.io server.
+ Server
@@ -1522,6 +1693,16 @@ Label for filter for seeing notes and replies (instead of only notes).
Show only preferred languages on Universe feedToggle to show notes that are only in the device's preferred languages on the Universe feed and hide notes that are in other languages.
+
+
+ Show profile action sheets
+ Setting to show profile action sheets when clicking on a user's profile picture
+
+
+
+ Show recommended relays
+ Button to show recommended relays.
+ Show wallet selector
@@ -1563,6 +1744,16 @@ Label for filter for seeing notes and replies (instead of only notes).
Description of report type for spam.
Section header for Universe/Search spam
+
+
+ Staying humble...
+ Placeholder as an example of what the user could set as their profile status.
+
+
+
+ Suggested hashtags
+ A label indicating that the items below it are suggested hashtags
+ Support Damus
@@ -1615,6 +1806,15 @@ You're all set!
This is a public key, you will not be able to make notes or interact in any way. This is used for viewing accounts from their perspective.Warning that the inputted account key is a public key and the result of what happens because of it.
+
+
+ This is my first post on Nostr 💜. I love drawing and folding Origami!
+
+Nice to meet you all! #introductions #plebchain
+ First post example given to the user during onboarding, as a suggestion as to what they could post first
+ This is your account ID, you can give this to your friends so that they can follow you. Tap to copy.
@@ -1635,6 +1835,11 @@ You're all set!
Top ZapText indicating that this zap is the one with the highest amount of sats.
+
+
+ Top hits
+ A label indicating that the notes being displayed below it are all top note search results
+ Translate DMs
@@ -1686,6 +1891,11 @@ You're all set!
URLExample URL to LibreTranslate server
+
+
+ Unable to find a QR Code
+ Alert message letting user know a QR Code was not found.
+ Unfollow
@@ -1757,6 +1967,11 @@ You're all set!
View QR CodeButton to switch to view users QR Code
+
+
+ View full profile
+ A button label that allows the user to see the full profile of the profile they are previewing
+ View multiple events per user
@@ -1870,6 +2085,7 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
ZapAccessibility label for zap button
+ Button label that allows the user to zap (i.e. send a Bitcoin tip via the lightning network) the user shown on-screen
Title of notification when a non-private zap is received.
@@ -1892,11 +2108,27 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
Zap attempt from connected wallet was canceled.Message to display when a zap from the user's connected wallet was canceled.
+
+
+ Zap failed
+ Button label indicating that a zap action was unsuccessful (i.e. the user was unable to send a Bitcoin tip via the lightning network to the user shown on-screen)
+ Title of an alert indicating that a zap action failed
+ Zap typeText to indicate that the buttons below it is for choosing the type of zap to send.
+
+
+ Zapped!
+ Button label indicating that a zap action was successful (i.e. the user is successfully sent a Bitcoin tip via the lightning network to the user shown on-screen)
+
+
+
+ Zapping
+ Button label indicating that a zap action is in progress (i.e. the user is currently sending a Bitcoin tip via the lightning network to the user shown on-screen)
+ Zapping...
@@ -1911,11 +2143,6 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
Setting to enable Zap Local Notification
Title for section in zap settings that controls general zap preferences.
-
-
- https://example.com
- Placeholder as an example of what the user could set so that the link is opened when the status is tapped.
- https://example.com/pic.jpg
@@ -2026,6 +2253,11 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
selfPart of a larger sentence 'Replying to self' in US English. 'self' indicates that the user is replying to themself and no one else.
+
+
+ translate.nostr.wine (DeepL, Pay with BTC)
+ Dropdown option for selecting translate.nostr.wine as the translation service.
+ wallet
@@ -2076,16 +2308,11 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
⚡Placeholder example for an emoji reaction
-
-
- 📋 Working
- Placeholder as an example of what the user could set as their profile status.
-
-
+
@@ -2328,6 +2555,21 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
%2$@ sats
+
+
+ %#@USERS@
+
+
+
+
+ %d user talking about it
+
+
+
+
+ %d users talking about it
+
+ %#@WORDS@
@@ -2435,4 +2677,78 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY.
+
+
+
+
+
+
+
+ DamusNotificationService
+ Bundle display name
+
+
+
+ DamusNotificationService
+ Bundle name
+
+
+
+
+ Copyright (human-readable)
+
+
+
+
+
+
+
+
+
+
+ (Contents are encrypted)
+ Label on push notification indicating that the contents of the message are encrypted
+
+
+
+ Anonymous
+ Placeholder display name of anonymous user.
+
+
+
+ Any
+ Any amount of sats
+
+
+
+ New message
+ Title label for push notifications where a direct message was sent to the user
+
+
+
+ New note reaction
+ Title label for push notifications where someone reacted to the user's post with a specific emoji
+
+
+
+ Someone posted a note
+ Title label for push notification where someone posted a note
+
+
+
+ Someone reacted to your note
+ Generic title label for push notifications where someone reacted to the user's post
+
+
+
+ Someone reacted to your note with %@
+ Body label for push notifications where someone reacted to the user's post with a specific emoji
+
+
+
+ Someone zapped you ⚡️
+ Title label for a push notification where someone zapped the user
+
+
+
diff --git a/damus/en-US.xcloc/Source Contents/DamusNotificationService/InfoPlist.xcstrings b/damus/en-US.xcloc/Source Contents/DamusNotificationService/InfoPlist.xcstrings
new file mode 100644
index 00000000..12b79d00
--- /dev/null
+++ b/damus/en-US.xcloc/Source Contents/DamusNotificationService/InfoPlist.xcstrings
@@ -0,0 +1,42 @@
+{
+ "sourceLanguage" : "en-US",
+ "strings" : {
+ "CFBundleDisplayName" : {
+ "comment" : "Bundle display name",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en-US" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "DamusNotificationService"
+ }
+ }
+ }
+ },
+ "CFBundleName" : {
+ "comment" : "Bundle name",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en-US" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "DamusNotificationService"
+ }
+ }
+ }
+ },
+ "NSHumanReadableCopyright" : {
+ "comment" : "Copyright (human-readable)",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en-US" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : ""
+ }
+ }
+ }
+ }
+ },
+ "version" : "1.0"
+}
\ No newline at end of file
diff --git a/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings b/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings
new file mode 100644
index 00000000..3ede2e3a
--- /dev/null
+++ b/damus/en-US.xcloc/Source Contents/DamusNotificationService/Localizable.xcstrings
@@ -0,0 +1,33 @@
+{
+ "sourceLanguage" : "en-US",
+ "strings" : {
+ "(Contents are encrypted)" : {
+ "comment" : "Label on push notification indicating that the contents of the message are encrypted"
+ },
+ "Anonymous" : {
+ "comment" : "Placeholder display name of anonymous user."
+ },
+ "Any" : {
+ "comment" : "Any amount of sats"
+ },
+ "New message" : {
+ "comment" : "Title label for push notifications where a direct message was sent to the user"
+ },
+ "New note reaction" : {
+ "comment" : "Title label for push notifications where someone reacted to the user's post with a specific emoji"
+ },
+ "Someone posted a note" : {
+ "comment" : "Title label for push notification where someone posted a note"
+ },
+ "Someone reacted to your note" : {
+ "comment" : "Generic title label for push notifications where someone reacted to the user's post"
+ },
+ "Someone reacted to your note with %@" : {
+ "comment" : "Body label for push notifications where someone reacted to the user's post with a specific emoji"
+ },
+ "Someone zapped you ⚡️" : {
+ "comment" : "Title label for a push notification where someone zapped the user"
+ }
+ },
+ "version" : "1.0"
+}
\ No newline at end of file
diff --git a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/InfoPlist.strings b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/InfoPlist.strings
index a2d5814b..89a491dc 100644
--- a/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/InfoPlist.strings
+++ b/damus/en-US.xcloc/Source Contents/damus/en-US.lproj/InfoPlist.strings
@@ -5,10 +5,10 @@
/* Privacy - Media Library Usage Description */
"NSAppleMusicUsageDescription" = "Damus needs access to your media library for playback statuses";
/* Privacy - Camera Usage Description */
-"NSCameraUsageDescription" = "Damus needs access to your camera if you want to upload photos from it";
+"NSCameraUsageDescription" = "Damus needs access to your camera in order to upload photos and scan QR codes.";
/* Privacy - Face ID Usage Description */
"NSFaceIDUsageDescription" = "Local authentication to access private key";
/* Privacy - Microphone Usage Description */
-"NSMicrophoneUsageDescription" = "Damus needs access to your microphone if you want to upload recorded videos from it";
+"NSMicrophoneUsageDescription" = "Damus needs access to your microphone for creating video recording posts";
/* Privacy - Photo Library Additions Usage Description */
"NSPhotoLibraryAddUsageDescription" = "Granting Damus access to your photos allows you to save images.";
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 91518b9d30175c177dbc4b3e64ac8fa879fc8118..a94f7f5a5d3695eaeac014a32d92d6a498996abe 100644
GIT binary patch
delta 2656
zcmbVOZA?>V6n@|LmbP5lQs@^ID3|#$bqJ{2{D_<4*!Dx`K*Sj(ThZ3Ej!MwkOD=R9~`{bVRcxu^3BiRt8s>R~&eF9rwbu
z`t#7e#ew29_hz+_We7``^HK=bJET(L@a8`R^c-^HgCXwKi+-`|E`IOorF%ghQ`!i~Ih%28ye(25NU3r72r3QQSOUZf2j~7%zNAD>(U;
z3)cL&N_SR>jioTwSHNSKw@C5eEjKsMmHuNCGir=rBmI&c>!i2sG;B176uSlcYQ#&}
ze^UhP61Wg)NX;nlsDJT#vTvk!ngME3HZhG;NE09Eec2H2Her8|=VSRDq1I=*P0##W
z8KL4vDxDNK%(^JGi2yTbLE9l$B5?5sjwb{!*CP$0(h5gIHmqJC+?LcvQqxQ9T`WS5
zWwo?caBQdq2766-wvc<#d4OASWSOEu|9vao4be^nhcq}fR5Ycl>~U9kZ&0{klQkf%
z$%P`!JdTTdxQjQ!=v7a4m;j5h_gNH2L$pDybm)M8mU`gIH>!PuQK&}qka~*?k8np~
zU}(^StIqLCiyqRE6eNPTojDM^V8iPx6|dg>ktnjD
zI-fhA*J!q;THbW_+bQ!H>w=5uTK%@MuCk_NWhoi8U-oJu>uL0`HYhwWQtSTTk?oT_
zV(It7|JbX(a$byQEX0c=MckwZj)*NQ;M&T3OFLCZ+XJ;<`&Vd$z3fGYFx|dw^6Ms$iekD8oY*RC(k#rxSUqpY{xP*J2!E9dz
zU#16M{>K13vh;$)@+(l}k(i1$J|yFaQ7m
delta 1830
zcmbVMYfMx}6rQuLmt|eH*JXK#y1gh8Tyb5slDZ16(V&S4NDZ|{VDV93WTgtRrdGH1
z@ke6F9>Zx&B@}HXDOKvUjv<6tni~3ywWKjd?N$@hHm#ASY5ieL&%J`8ef#6ioilUh
z%$)B#=Zm!`o!ghvH82eghaGiQESF9%(&CLlJTxbU#tNO>A#mf5PsC7(DrsKs=oEW$}r;gL$wmjtV
zGsR=2_H}bICO)=H-{tclV+pU#M6Tpo1cNX7IQtwdJ?6y3)%keyN>E<9wtbY0{BS0T
z>Z`zxk-jW>dvITh2`nZq=U~qP=Lb!okHOfRn%d)nr5ZJ7aiXQ)X>`#G7pN;A@~J!-
z>{RK6dJ0y8PUSPftJ5-d
zi&sIGs*6GoQ+gNf5Z!tn;?{#>FTgJ@t}d^N><6!AmTmxV#5L6#hu^pu7$J8HoYKr0
zg8Bm=nvEF^&`+IEp~~NZDBQ310y-XGaN_U6`BYWe2a~w1mN>EP
zh+lQ~L$?K(Wwm|*Ye!*!z{k~ALBH;T(6qt}pItJ<(+>b~zla~$#hU)K;hs&KET)L?
zh;p}V%C3Y|ESRuK-u8qt&=}0cobjHdMuwG}gT5+&aeEs?EqBW><_249`SM1_-JBa@
z6OTK1H2pTR?H4nIlP{XW92o3ph2qh$JpL}yX5PJ@#)z}IO!$8|Otn><3HJ+y3&1W{
z`FAr#gSjx1P8@~DA32GcBU1Q32|RSp$JqQs<~Y`oIwY(UbgO{y^}@xFk1xGCak82G
zPR4f||D#OH1`F2)%QiKPI{*iJGUS!Q4&x!wj660%D%)~~#qs*MIfhsx^2BqD?II4e
zp2L(_4YO5D7nO;6UXAjlbwfJ~FuN=55l=4MyNrdjB73+TarODUk%2$@ sats
+ users_talking_about_it
+
+ NSStringLocalizedFormatKey
+ %#@USERS@
+ USERS
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ one
+ %d user talking about it
+ other
+ %d users talking about it
+
+ word_countNSStringLocalizedFormatKey
diff --git a/damus/en-US.xcloc/contents.json b/damus/en-US.xcloc/contents.json
index cbdca296..baba11ab 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" : "15A240d",
+ "toolBuildNumber" : "15A507",
"toolID" : "com.apple.dt.xcode",
"toolName" : "Xcode",
- "toolVersion" : "15.0"
+ "toolVersion" : "15.0.1"
},
"version" : "1.0"
}
\ No newline at end of file