localization: add support for purple strings
Add string localizations so the purple landing pages can have multi language support. LNURL1DP68GURN8GHJ7EM9W3SKCCNE9E3K7MF0D3H82UNVWQHKWUN9V4HXGCTHDC6RZVGR8SW3G Closes: https://github.com/damus-io/damus/issues/1816 Signed-off-by: kernelkind <kernelkind@gmail.com> Reviewed-by: William Casarin <jb55@jb55.com> Reviewed-by: Daniel D’Aquino <daniel@daquino.me> Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
committed by
William Casarin
parent
692146fe00
commit
548af2bf9d
@@ -105,10 +105,10 @@ struct DamusPurpleView: View {
|
|||||||
isPresented: $show_settings_change_confirmation_dialog,
|
isPresented: $show_settings_change_confirmation_dialog,
|
||||||
titleVisibility: .visible
|
titleVisibility: .visible
|
||||||
) {
|
) {
|
||||||
Button("Yes") {
|
Button(NSLocalizedString("Yes", comment: "User confirm Yes")) {
|
||||||
set_translation_settings_to_purple()
|
set_translation_settings_to_purple()
|
||||||
}.keyboardShortcut(.defaultAction)
|
}.keyboardShortcut(.defaultAction)
|
||||||
Button("No", role: .cancel) {}
|
Button(NSLocalizedString("No", comment: "User confirm No"), role: .cancel) {}
|
||||||
}
|
}
|
||||||
.manageSubscriptionsSheet(isPresented: $show_manage_subscriptions)
|
.manageSubscriptionsSheet(isPresented: $show_manage_subscriptions)
|
||||||
}
|
}
|
||||||
@@ -200,12 +200,12 @@ struct DamusPurpleView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ProductLoadError: some View {
|
var ProductLoadError: some View {
|
||||||
Text("Ah dang there was an error loading subscription information from the AppStore. Please try again later :(")
|
Text(NSLocalizedString("Subscription Error", comment: "Ah dang there was an error loading subscription information from the AppStore. Please try again later :("))
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
}
|
}
|
||||||
|
|
||||||
var SaveText: Text {
|
var SaveText: Text {
|
||||||
Text("Save 14%")
|
Text(NSLocalizedString("Save 14%", comment: "Percentage of purchase price the user will save"))
|
||||||
.font(.callout)
|
.font(.callout)
|
||||||
.italic()
|
.italic()
|
||||||
.foregroundColor(DamusColors.green)
|
.foregroundColor(DamusColors.green)
|
||||||
@@ -250,7 +250,7 @@ struct DamusPurpleView: View {
|
|||||||
return (
|
return (
|
||||||
AnyView(
|
AnyView(
|
||||||
HStack(spacing: 10) {
|
HStack(spacing: 10) {
|
||||||
Text("Anually")
|
Text(NSLocalizedString("Annually", comment: "Annual renewal of purple subscription"))
|
||||||
Spacer()
|
Spacer()
|
||||||
Text(verbatim: non_discounted_price(product)).strikethrough().foregroundColor(DamusColors.white.opacity(0.5))
|
Text(verbatim: non_discounted_price(product)).strikethrough().foregroundColor(DamusColors.white.opacity(0.5))
|
||||||
Text(verbatim: product.displayPrice).fontWeight(.bold)
|
Text(verbatim: product.displayPrice).fontWeight(.bold)
|
||||||
@@ -261,7 +261,7 @@ struct DamusPurpleView: View {
|
|||||||
return (
|
return (
|
||||||
AnyView(
|
AnyView(
|
||||||
HStack(spacing: 10) {
|
HStack(spacing: 10) {
|
||||||
Text("Monthly")
|
Text(NSLocalizedString("Monthly", comment: "Monthly renewal of purple subscription"))
|
||||||
Spacer()
|
Spacer()
|
||||||
Text(verbatim: product.displayPrice).fontWeight(.bold)
|
Text(verbatim: product.displayPrice).fontWeight(.bold)
|
||||||
}
|
}
|
||||||
@@ -272,7 +272,7 @@ struct DamusPurpleView: View {
|
|||||||
|
|
||||||
func ProductsView(_ products: [Product]) -> some View {
|
func ProductsView(_ products: [Product]) -> some View {
|
||||||
VStack(spacing: 10) {
|
VStack(spacing: 10) {
|
||||||
Text("Save 20% off on an annual subscription")
|
Text(NSLocalizedString("Save 20% off on an annual subscription", comment: "Savings for purchasing an annual subscription"))
|
||||||
.font(.callout.bold())
|
.font(.callout.bold())
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
ForEach(products) { product in
|
ForEach(products) { product in
|
||||||
@@ -295,21 +295,21 @@ struct DamusPurpleView: View {
|
|||||||
|
|
||||||
func PurchasedView(_ purchased: PurchasedProduct) -> some View {
|
func PurchasedView(_ purchased: PurchasedProduct) -> some View {
|
||||||
VStack(spacing: 10) {
|
VStack(spacing: 10) {
|
||||||
Text("Purchased!")
|
Text(NSLocalizedString("Purchased!", comment: "User purchased a subscription"))
|
||||||
.font(.title2)
|
.font(.title2)
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
price_description(product: purchased.product)
|
price_description(product: purchased.product)
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
.opacity(0.65)
|
.opacity(0.65)
|
||||||
.frame(width: 200)
|
.frame(width: 200)
|
||||||
Text("Purchased on")
|
Text(NSLocalizedString("Purchased on", comment: "Indicating when the user purchased the subscription"))
|
||||||
.font(.title2)
|
.font(.title2)
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
Text(format_date(UInt32(purchased.tx.purchaseDate.timeIntervalSince1970)))
|
Text(format_date(UInt32(purchased.tx.purchaseDate.timeIntervalSince1970)))
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
.opacity(0.65)
|
.opacity(0.65)
|
||||||
if let expiry = purchased.tx.expirationDate {
|
if let expiry = purchased.tx.expirationDate {
|
||||||
Text("Renews on")
|
Text(NSLocalizedString("Renews on", comment: "Indicating when the subscription will renew"))
|
||||||
.font(.title2)
|
.font(.title2)
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
Text(format_date(UInt32(expiry.timeIntervalSince1970)))
|
Text(format_date(UInt32(expiry.timeIntervalSince1970)))
|
||||||
@@ -319,7 +319,7 @@ struct DamusPurpleView: View {
|
|||||||
Button(action: {
|
Button(action: {
|
||||||
show_manage_subscriptions = true
|
show_manage_subscriptions = true
|
||||||
}, label: {
|
}, label: {
|
||||||
Text("Manage")
|
Text(NSLocalizedString("Manage", comment: "Manage the damus subscription"))
|
||||||
})
|
})
|
||||||
.buttonStyle(GradientButtonStyle())
|
.buttonStyle(GradientButtonStyle())
|
||||||
}
|
}
|
||||||
@@ -360,7 +360,7 @@ struct DamusPurpleView: View {
|
|||||||
.shadow(radius: 5)
|
.shadow(radius: 5)
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("Purple")
|
Text(NSLocalizedString("Purple", comment: "Subscription service name"))
|
||||||
.font(.system(size: 60.0).weight(.bold))
|
.font(.system(size: 60.0).weight(.bold))
|
||||||
.foregroundStyle(
|
.foregroundStyle(
|
||||||
LinearGradient(
|
LinearGradient(
|
||||||
@@ -376,16 +376,16 @@ struct DamusPurpleView: View {
|
|||||||
.padding(.bottom, 30)
|
.padding(.bottom, 30)
|
||||||
|
|
||||||
VStack(alignment: .leading, spacing: 30) {
|
VStack(alignment: .leading, spacing: 30) {
|
||||||
Subtitle("Help us stay independent in our mission for Freedom tech with our Purple subscription, and look cool doing it!")
|
Subtitle(NSLocalizedString("Help us stay independent in our mission for Freedom tech with our Purple subscription, and look cool doing it!", comment: "Damus purple subscription pitch"))
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
|
|
||||||
HStack(spacing: 20) {
|
HStack(spacing: 20) {
|
||||||
IconOnBox("heart.fill")
|
IconOnBox("heart.fill")
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Title("Help Build The Future")
|
Title(NSLocalizedString("Help Build The Future", comment: "Title for funding future damus development"))
|
||||||
|
|
||||||
Subtitle("Support Damus development to help build the future of decentralized communication on the web.")
|
Subtitle(NSLocalizedString("Support Damus development to help build the future of decentralized communication on the web.", comment: "Reason for supporting damus development"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ struct DamusPurpleView: View {
|
|||||||
IconOnBox("ai-3-stars.fill")
|
IconOnBox("ai-3-stars.fill")
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Title("Exclusive features")
|
Title(NSLocalizedString("Exclusive features", comment: "Features only available on subscription service"))
|
||||||
.padding(.bottom, -3)
|
.padding(.bottom, -3)
|
||||||
|
|
||||||
HStack(spacing: 3) {
|
HStack(spacing: 3) {
|
||||||
@@ -401,7 +401,7 @@ struct DamusPurpleView: View {
|
|||||||
.resizable()
|
.resizable()
|
||||||
.frame(width: 15, height: 15)
|
.frame(width: 15, height: 15)
|
||||||
|
|
||||||
Text("Coming soon")
|
Text(NSLocalizedString("Coming soon", comment: "Feature is still in development and will be available soon"))
|
||||||
.font(.caption)
|
.font(.caption)
|
||||||
.bold()
|
.bold()
|
||||||
}
|
}
|
||||||
@@ -411,7 +411,7 @@ struct DamusPurpleView: View {
|
|||||||
.background(DamusColors.lightBackgroundPink)
|
.background(DamusColors.lightBackgroundPink)
|
||||||
.cornerRadius(30.0)
|
.cornerRadius(30.0)
|
||||||
|
|
||||||
Subtitle("Be the first to access upcoming premium features: Automatic translations, longer note storage, and more")
|
Subtitle(NSLocalizedString("Be the first to access upcoming premium features: Automatic translations, longer note storage, and more", comment: "Description of new features to be expected"))
|
||||||
.padding(.top, 3)
|
.padding(.top, 3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -420,9 +420,9 @@ struct DamusPurpleView: View {
|
|||||||
IconOnBox("badge")
|
IconOnBox("badge")
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Title("Supporter Badge")
|
Title(NSLocalizedString("Supporter Badge", comment: "Title for supporter badge"))
|
||||||
|
|
||||||
Subtitle("Get a special badge on your profile to show everyone your contribution to Freedom tech")
|
Subtitle(NSLocalizedString("Get a special badge on your profile to show everyone your contribution to Freedom tech", comment: "Supporter badge description"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ struct DamusPurpleWelcomeView: View {
|
|||||||
.opacity(start ? 1.0 : 0.0)
|
.opacity(start ? 1.0 : 0.0)
|
||||||
.animation(.content(), value: start)
|
.animation(.content(), value: start)
|
||||||
|
|
||||||
Text("Welcome to Purple")
|
Text(NSLocalizedString("Welcome to Purple", comment: "Greeting to subscription service"))
|
||||||
.font(.largeTitle)
|
.font(.largeTitle)
|
||||||
.fontWeight(.bold)
|
.fontWeight(.bold)
|
||||||
.foregroundStyle(
|
.foregroundStyle(
|
||||||
@@ -69,7 +69,7 @@ struct DamusPurpleWelcomeView: View {
|
|||||||
.opacity(start ? 1.0 : 0.0)
|
.opacity(start ? 1.0 : 0.0)
|
||||||
.animation(Animation.snappy(duration: 2).delay(0), value: start)
|
.animation(Animation.snappy(duration: 2).delay(0), value: start)
|
||||||
|
|
||||||
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!")
|
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"))
|
||||||
.lineSpacing(5)
|
.lineSpacing(5)
|
||||||
.multilineTextAlignment(.center)
|
.multilineTextAlignment(.center)
|
||||||
.foregroundStyle(.white.opacity(0.8))
|
.foregroundStyle(.white.opacity(0.8))
|
||||||
@@ -84,7 +84,7 @@ struct DamusPurpleWelcomeView: View {
|
|||||||
}, label: {
|
}, label: {
|
||||||
HStack {
|
HStack {
|
||||||
Spacer()
|
Spacer()
|
||||||
Text("Continue")
|
Text(NSLocalizedString("Continue", comment: "Prompt to user to continue"))
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user