diff --git a/damus/Models/UserSettingsStore.swift b/damus/Models/UserSettingsStore.swift index 0b12879a..af64c213 100644 --- a/damus/Models/UserSettingsStore.swift +++ b/damus/Models/UserSettingsStore.swift @@ -138,6 +138,17 @@ class UserSettingsStore: ObservableObject { @Setting(key: "disable_animation", default_value: UIAccessibility.isReduceMotionEnabled) var disable_animation: Bool + + // Helper for inverse of disable_animation. + // disable_animation was introduced as a setting first, but it's more natural for the settings UI to show the inverse. + var enable_animation: Bool { + get { + !disable_animation + } + set { + disable_animation = !newValue + } + } @StringSetting(key: "friend_filter", default_value: .all) var friend_filter: FriendFilter diff --git a/damus/Views/Settings/AppearanceSettingsView.swift b/damus/Views/Settings/AppearanceSettingsView.swift index ea72188b..2ab2a91a 100644 --- a/damus/Views/Settings/AppearanceSettingsView.swift +++ b/damus/Views/Settings/AppearanceSettingsView.swift @@ -27,15 +27,15 @@ struct AppearanceSettingsView: View { } Section(NSLocalizedString("Images", comment: "Section title for images configuration.")) { - Toggle(NSLocalizedString("Disable animations", comment: "Button to disable image animation"), isOn: $settings.disable_animation) + Toggle(NSLocalizedString("Animations", comment: "Toggle to enable or disable image animation"), isOn: $settings.enable_animation) .toggleStyle(.switch) - .onChange(of: settings.disable_animation) { _ in + .onChange(of: settings.enable_animation) { _ in clear_kingfisher_cache() } Toggle(NSLocalizedString("Always show images", comment: "Setting to always show and never blur images"), isOn: $settings.always_show_images) .toggleStyle(.switch) - Picker(NSLocalizedString("Select image uploader", comment: "Prompt selection of user's image uploader"), + Picker(NSLocalizedString("Image uploader", comment: "Prompt selection of user's image uploader"), selection: $settings.default_media_uploader) { ForEach(MediaUploader.allCases, id: \.self) { uploader in Text(uploader.model.displayName) diff --git a/damus/Views/Settings/ZapSettingsView.swift b/damus/Views/Settings/ZapSettingsView.swift index dfa53653..403ef5df 100644 --- a/damus/Views/Settings/ZapSettingsView.swift +++ b/damus/Views/Settings/ZapSettingsView.swift @@ -25,10 +25,10 @@ struct ZapSettingsView: 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")) + footer: Text(NSLocalizedString("Hide all 🤙's", comment: "Section footer describing OnlyZaps mode")) ) { - Toggle(NSLocalizedString("Enable OnlyZaps mode", comment: "Setting toggle to hide reactions."), isOn: $settings.onlyzaps_mode) + Toggle(NSLocalizedString("OnlyZaps mode", comment: "Setting toggle to hide reactions."), isOn: $settings.onlyzaps_mode) .toggleStyle(.switch) .onChange(of: settings.onlyzaps_mode) { newVal in notify(.onlyzaps_mode, newVal) diff --git a/damus/Views/Zaps/CustomizeZapView.swift b/damus/Views/Zaps/CustomizeZapView.swift index 83c36e2f..e36ebeb4 100644 --- a/damus/Views/Zaps/CustomizeZapView.swift +++ b/damus/Views/Zaps/CustomizeZapView.swift @@ -115,7 +115,7 @@ struct CustomizeZapView: View { func ZapAmountButton(zapAmountItem: ZapAmountItem, action: @escaping () -> ()) -> some View { Button(action: action) { let fmt = format_msats_abbrev(Int64(zapAmountItem.amount) * 1000) - Text("\(zapAmountItem.icon)\n\(fmt)") + Text(verbatim: "\(zapAmountItem.icon)\n\(fmt)") .contentShape(Rectangle()) .font(.headline) .frame(width: 70, height: 70) @@ -147,7 +147,7 @@ struct CustomizeZapView: View { self.custom_amount_sats = nil } } - Text("sats") + Text("sats", comment: "Shortened form of satoshi, display unit of measure where 1,000,000,000 satoshis is 1 Bitcoin. Used to indicate how many sats will be zapped to a note, configured through the custom zap view.") .font(.system(size: 18, weight: .heavy)) } } @@ -253,16 +253,16 @@ struct CustomizeZapView: View { switch zap_type { case .pub: Image(systemName: "person.2") - Text("Public") + Text("Public", comment: "Button text to indicate that the zap type is a public zap.") case .anon: Image(systemName: "person.fill.questionmark") - Text("Anonymous") + Text("Anonymous", comment: "Button text to indicate that the zap type is a anonymous zap.") case .priv: Image(systemName: "lock") - Text("Private") + Text("Private", comment: "Button text to indicate that the zap type is a private zap.") case .non_zap: Image(systemName: "bolt") - Text("None") + Text("None", comment: "Button text to indicate that the zap type is a private zap.") } } .font(.headline) diff --git a/damus/Views/Zaps/ZapTypePicker.swift b/damus/Views/Zaps/ZapTypePicker.swift index edfa822e..515a3877 100644 --- a/damus/Views/Zaps/ZapTypePicker.swift +++ b/damus/Views/Zaps/ZapTypePicker.swift @@ -50,14 +50,14 @@ struct ZapTypePicker: View { var body: some View { VStack(spacing: 20) { HStack { - Text("Zap type") + Text("Zap type", comment: "Text to indicate that the buttons below it is for choosing the type of zap to send.") .font(.system(size: 25, weight: .heavy)) Spacer() if !is_default { Button(action: { settings.default_zap_type = zap_type }) { - Label("Make Default", image: "checkmark.circle.fill") + Label(NSLocalizedString("Make Default", comment: "Button label to indicate that tapping it will make the selected zap type be the default for future zaps."), image: "checkmark.circle.fill") } } } diff --git a/damus/ar.lproj/Localizable.strings b/damus/ar.lproj/Localizable.strings index a35305c4..44e00ae0 100644 Binary files a/damus/ar.lproj/Localizable.strings and b/damus/ar.lproj/Localizable.strings differ diff --git a/damus/el-GR.lproj/Localizable.strings b/damus/el-GR.lproj/Localizable.strings index c818e639..d50fddbf 100644 Binary files a/damus/el-GR.lproj/Localizable.strings and b/damus/el-GR.lproj/Localizable.strings differ diff --git a/damus/en-US.xcloc/Localized Contents/en-US.xliff b/damus/en-US.xcloc/Localized Contents/en-US.xliff index 0066a0ca..a3273fe7 100644 --- a/damus/en-US.xcloc/Localized Contents/en-US.xliff +++ b/damus/en-US.xcloc/Localized Contents/en-US.xliff @@ -174,6 +174,11 @@ Sentence composed of 2 variables to describe how many people are following a use Always show images Setting to always show and never blur images + + Animations + Animations + Toggle to enable or disable image animation + Anonymous Anonymous @@ -206,11 +211,6 @@ Sentence composed of 2 variables to describe how many people are following a use Automatically translate notes Toggle to automatically translate notes. - - Awesome post! - Awesome post! - Placeholder text for a comment to send as part of a zap to the user. - - - Comment - Comment - Header text to indicate that the text field below it is a comment that will be used to send as part of a zap to the user. - Connect Connect @@ -405,11 +400,6 @@ Sentence composed of 2 variables to describe how many people are following a use Custom Dropdown option for selecting a custom translation server. - - Custom Zap Amount - Custom Zap Amount - Header text to indicate that the text field below it is to enter a custom zap amount. - DMs DMs @@ -459,11 +449,6 @@ Sentence composed of 2 variables to describe how many people are following a use Description Label to display relay description. - - Disable animations - Disable animations - Button to disable image animation - Disconnect Disconnect @@ -504,11 +489,6 @@ Sentence composed of 2 variables to describe how many people are following a use Edit Button to edit user's profile. - - Enable OnlyZaps mode - Enable OnlyZaps mode - Setting toggle to hide reactions. - Encrypted Encrypted @@ -529,9 +509,9 @@ Sentence composed of 2 variables to describe how many people are following a use Error: %@ Error message indicating why saving keys failed. - - Everyone on can see that you zapped - Everyone on can see that you zapped + + Everyone will see that you zapped + Everyone will see that you zapped Description of public zap type where the zap is sent publicly and identifies the user who sent it. @@ -598,7 +578,7 @@ Sentence composed of 2 variables to describe how many people are following a use Hide all 🤙's Hide all 🤙's - Section footer describing onlyzaps mode + Section footer describing OnlyZaps mode Home @@ -610,6 +590,11 @@ Sentence composed of 2 variables to describe how many people are following a use Illegal content Button for user to report that the account or content has illegal content. + + Image uploader + Image uploader + Prompt selection of user's image uploader + Images Images @@ -719,6 +704,11 @@ Sentence composed of 2 variables to describe how many people are following a use Looking for %@... Label that appears when searching for note or profile + + Make Default + Make Default + Button label to indicate that tapping it will make the selected zap type be the default for future zaps. + 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 @@ -786,16 +776,21 @@ Sentence composed of 2 variables to describe how many people are following a use No mute list found, create a new one? This will overwrite any previous mute lists. Alert message prompt that asks if the user wants to create a new mute list, overwriting previous mute lists. - - No one can see that you zapped - No one can see that you zapped + + No one will see that you zapped + No one will see that you zapped Description of anonymous zap type where the zap is sent anonymously and does not identify the user who sent it. - - No zaps are sent, only a lightning payment. - No zaps are sent, only a lightning payment. + + No zaps will be sent, only a lightning payment. + No zaps will be sent, only a lightning payment. Description of non-zap type where sats are sent to the user's wallet as a regular Lightning payment, not as a zap. + + None + None + Button text to indicate that the zap type is a private zap. + Note contains "nsec1" private key. Are you sure? Note contains "nsec1" private key. Are you sure? @@ -847,6 +842,11 @@ Sentence composed of 2 variables to describe how many people are following a use OnlyZaps Enabled Non-tappable text in context menu that shows up when the zap button on profile is long pressed to indicate that the user has enabled OnlyZaps, meaning that they would like to be only zapped and not accept reactions to their notes. + + OnlyZaps mode + OnlyZaps mode + Setting toggle to hide reactions. + Private Key @@ -934,7 +934,7 @@ Picker option to indicate that a zap should be sent privately and not identify t Public Public - Picker option to indicate that a zap should be sent publicly and identify the user as who sent it. + Button text to indicate that the zap type is a public zap. Public Account ID @@ -1127,16 +1127,16 @@ Picker option to indicate that a zap should be sent privately and not identify t Select default wallet Prompt selection of user's default wallet - - Select image uploader - Select image uploader - Prompt selection of user's image uploader - Send a message to start the conversation... Send a message to start the conversation... Text prompt for user to send a message to the other user. + + Send a reply with your zap... + Send a reply with your zap... + Placeholder text for a comment to send as part of a zap to the user. + Server Server @@ -1470,26 +1470,16 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. Button to send a zap. Title of notification when a non-private zap is received. - - Zap Amount - Zap Amount - Title of picker that allows selection of predefined amounts to zap. - - - Zap Amount in sats - Zap Amount in sats - Header text to indicate that the picker below it is to choose a pre-defined amount of sats to zap. - - - Zap Type - Zap Type - Header text to indicate that the picker below it is to choose the type of zap to send. - Zap Vibration Zap Vibration Setting to enable vibration on zap + + Zap type + Zap type + Text to indicate that the buttons below it is for choosing the type of zap to send. + Zapping... Zapping... @@ -1529,11 +1519,6 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. None Dropdown option for selecting no translation service. - - None - None - Picker option to indicate that sats should be sent to the user's wallet as a regular Lightning payment, not as a zap. - now now @@ -1550,8 +1535,8 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. Label indicating that a form input is optional. - Only '%@' can see that you zapped them - Only '%@' can see that you zapped them + Only '%@' will see that you zapped them + Only '%@' will see that you zapped them Description of private zap type where the zap is sent privately and does not identify the user to the public. @@ -1619,6 +1604,11 @@ YOU WILL NO LONGER BE ABLE TO LOG INTO DAMUS USING THIS ACCOUNT KEY. satoshi Example username of Bitcoin creator(s), Satoshi Nakamoto. + + sats + sats + Shortened form of satoshi, display unit of measure where 1,000,000,000 satoshis is 1 Bitcoin. Used to indicate how many sats will be zapped to a note, configured through the custom zap view. + self self 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 a2e688a2..d88d1957 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/es-419.lproj/Localizable.strings b/damus/es-419.lproj/Localizable.strings index 035c6e23..38538e85 100644 Binary files a/damus/es-419.lproj/Localizable.strings and b/damus/es-419.lproj/Localizable.strings differ diff --git a/damus/nl.lproj/Localizable.strings b/damus/nl.lproj/Localizable.strings index e06dde0a..123b6b7e 100644 Binary files a/damus/nl.lproj/Localizable.strings and b/damus/nl.lproj/Localizable.strings differ