diff --git a/damus Localizations/en.xcloc/Localized Contents/en.xliff b/damus Localizations/en.xcloc/Localized Contents/en.xliff
new file mode 100644
index 00000000..68cdff8e
--- /dev/null
+++ b/damus Localizations/en.xcloc/Localized Contents/en.xliff
@@ -0,0 +1,804 @@
+
+
+
+
+
+
+
+
+ Damus
+ Damus
+ Bundle display name
+
+
+ damus
+ damus
+ Bundle name
+
+
+
+
+
+
+
+
+
+
+
+ No comment provided by engineer.
+
+
+ %@
+ %@
+ No comment provided by engineer.
+
+
+ %@ following
+ %@ following
+ No comment provided by engineer.
+
+
+ %@'s Followers
+ %@'s Followers
+ No comment provided by engineer.
+
+
+ %@. Creating an account doesn't require a phone number, email or name. Get started right away with zero friction.
+ %@. Creating an account doesn't require a phone number, email or name. Get started right away with zero friction.
+ No comment provided by engineer.
+
+
+ %@. End-to-End encrypted private messaging. Keep Big Tech out of your DMs
+ %@. End-to-End encrypted private messaging. Keep Big Tech out of your DMs
+ No comment provided by engineer.
+
+
+ %@. Tip your friend's posts and stack sats with Bitcoin⚡️, the native currency of the internet.
+ %@. Tip your friend's posts and stack sats with Bitcoin⚡️, the native currency of the internet.
+ No comment provided by engineer.
+
+
+ %lld
+ %lld
+ No comment provided by engineer.
+
+
+ %lld/%lld
+ %lld/%lld
+ No comment provided by engineer.
+
+
+
+
+ No comment provided by engineer.
+
+
+ +
+ +
+ No comment provided by engineer.
+
+
+ < e >
+ < e >
+ No comment provided by engineer.
+
+
+ @
+ @
+ No comment provided by engineer.
+
+
+ About
+ About
+ Label to prompt for about text entry for user to describe about themself.
+
+
+ About Me
+ About Me
+ No comment provided by engineer.
+
+
+ Absolute Boss
+ Absolute Boss
+ Placeholder text for About Me description.
+
+
+ Account ID
+ Account ID
+ Label to indicate the public ID of the account.
+
+
+ Add
+ Add
+ No comment provided by engineer.
+
+
+ Add Relay
+ Add Relay
+ No comment provided by engineer.
+
+
+ Are you sure you want to boost this post?
+ Are you sure you want to boost this post?
+ No comment provided by engineer.
+
+
+ Before we get started, you'll need to save your account info, otherwise you won't be able to login in the future if you ever uninstall Damus.
+ Before we get started, you'll need to save your account info, otherwise you won't be able to login in the future if you ever uninstall Damus.
+ No comment provided by engineer.
+
+
+ Bitcoin Beach
+ Bitcoin Beach
+ Dropdown option label for Lightning wallet, Bitcoin Beach.
+
+
+ Bitcoin Lightning Tips
+ Bitcoin Lightning Tips
+ No comment provided by engineer.
+
+
+ Blixt Wallet
+ Blixt Wallet
+ Dropdown option label for Lightning wallet, Blixt Wallet
+
+
+ Blue Wallet
+ Blue Wallet
+ Dropdown option label for Lightning wallet, Blue Wallet.
+
+
+ Boost
+ Boost
+ No comment provided by engineer.
+
+
+ Boosted
+ Boosted
+ No comment provided by engineer.
+
+
+ Breez
+ Breez
+ Dropdown option label for Lightning wallet, Breez.
+
+
+ Broadcast
+ Broadcast
+ No comment provided by engineer.
+
+
+ Cancel
+ Cancel
+ No comment provided by engineer.
+
+
+ Cash App
+ Cash App
+ Dropdown option label for Lightning wallet, Cash App.
+
+
+ Copied
+ Copied
+ No comment provided by engineer.
+
+
+ Copy
+ Copy
+ No comment provided by engineer.
+
+
+ Copy Account ID
+ Copy Account ID
+ No comment provided by engineer.
+
+
+ Copy Image
+ Copy Image
+ No comment provided by engineer.
+
+
+ Copy Image URL
+ Copy Image URL
+ No comment provided by engineer.
+
+
+ Copy LNURL
+ Copy LNURL
+ No comment provided by engineer.
+
+
+ Copy Note ID
+ Copy Note ID
+ No comment provided by engineer.
+
+
+ Copy Note JSON
+ Copy Note JSON
+ No comment provided by engineer.
+
+
+ Copy Text
+ Copy Text
+ No comment provided by engineer.
+
+
+ Copy User ID
+ Copy User ID
+ No comment provided by engineer.
+
+
+ Copy invoice
+ Copy invoice
+ No comment provided by engineer.
+
+
+ Create
+ Create
+ Button to create account.
+
+
+ Create Account
+ Create Account
+ Button to create an account.
+
+
+ Creator(s) of Bitcoin. Absolute legend.
+ Creator(s) of Bitcoin. Absolute legend.
+ Example description about Bitcoin creator(s), Satoshi Nakamoto.
+
+
+ DM
+ DM
+ No comment provided by engineer.
+
+
+ Damus
+ Damus
+ No comment provided by engineer.
+
+
+ Default Wallet
+ Default Wallet
+ No comment provided by engineer.
+
+
+ Delete
+ Delete
+ No comment provided by engineer.
+
+
+ Dismiss
+ Dismiss
+ No comment provided by engineer.
+
+
+ Display Name
+ Display Name
+ Label to prompt display name entry.
+
+
+ Done
+ Done
+ No comment provided by engineer.
+
+
+ Earn Money
+ Earn Money
+ No comment provided by engineer.
+
+
+ Edit
+ Edit
+ No comment provided by engineer.
+
+
+ Edit Profile
+ Edit Profile
+ No comment provided by engineer.
+
+
+ Encrypted
+ Encrypted
+ No comment provided by engineer.
+
+
+ Encrypted DMs
+ Encrypted DMs
+ No comment provided by engineer.
+
+
+ Enter your account key to login:
+ Enter your account key to login:
+ No comment provided by engineer.
+
+
+ Error: %@
+ Error: %@
+ No comment provided by engineer.
+
+
+ Filter State
+ Filter State
+ No comment provided by engineer.
+
+
+ Follow
+ Follow
+ Button to follow a user.
+
+
+ Followers
+ Followers
+ No comment provided by engineer.
+
+
+ Following
+ Following
+ No comment provided by engineer.
+
+
+ Following...
+ Following...
+ Label to indicate that the user is in the process of following another user.
+
+
+ Follows
+ Follows
+ No comment provided by engineer.
+
+
+ Global
+ Global
+ No comment provided by engineer.
+
+
+ Goto post %@
+ Goto post %@
+ No comment provided by engineer.
+
+
+ Goto profile %@
+ Goto profile %@
+ No comment provided by engineer.
+
+
+ Home
+ Home
+ No comment provided by engineer.
+
+
+ LNLink
+ LNLink
+ Dropdown option label for Lightning wallet, LNLink.
+
+
+ Let's go!
+ Let's go!
+ Button to complete account creation and start using the app.
+
+
+ Lightning Address or LNURL
+ Lightning Address or LNURL
+ No comment provided by engineer.
+
+
+ Lightning Invoice
+ Lightning Invoice
+ No comment provided by engineer.
+
+
+ Local default
+ Local default
+ Dropdown option label for system default for Lightning wallet.
+
+
+ Login
+ Login
+ No comment provided by engineer.
+
+
+ Logout
+ Logout
+ No comment provided by engineer.
+
+
+ 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
+ No comment provided by engineer.
+
+
+ Muun
+ Muun
+ Dropdown option label for Lightning wallet, Muun.
+
+
+ NIP-05 Verification
+ NIP-05 Verification
+ No comment provided by engineer.
+
+
+ Nothing to see here. Check back later!
+ Nothing to see here. Check back later!
+ No comment provided by engineer.
+
+
+ Notifications
+ Notifications
+ No comment provided by engineer.
+
+
+ Pay
+ Pay
+ No comment provided by engineer.
+
+
+ Pay the lightning invoice
+ Pay the lightning invoice
+ No comment provided by engineer.
+
+
+ Phoenix
+ Phoenix
+ Dropdown option label for Lightning wallet, Phoenix.
+
+
+ Post
+ Post
+ No comment provided by engineer.
+
+
+ Posts
+ Posts
+ No comment provided by engineer.
+
+
+ Posts & Replies
+ Posts & Replies
+ No comment provided by engineer.
+
+
+ Private
+ Private
+ No comment provided by engineer.
+
+
+ Private Key
+ Private Key
+ No comment provided by engineer.
+
+
+ PrivateKey
+ PrivateKey
+ No comment provided by engineer.
+
+
+ Profile Picture
+ Profile Picture
+ No comment provided by engineer.
+
+
+ Public Account ID
+ Public Account ID
+ No comment provided by engineer.
+
+
+ Public Key
+ Public Key
+ No comment provided by engineer.
+
+
+ Public Key?
+ Public Key?
+ No comment provided by engineer.
+
+
+ Recommended Relays
+ Recommended Relays
+ No comment provided by engineer.
+
+
+ Relay
+ Relay
+ No comment provided by engineer.
+
+
+ Relays
+ Relays
+ No comment provided by engineer.
+
+
+ Reply to self
+ Reply to self
+ Label to indicate that the user is replying to themself.
+
+
+ Replying to:
+ Replying to:
+ No comment provided by engineer.
+
+
+ Reset
+ Reset
+ No comment provided by engineer.
+
+
+ River
+ River
+ Dropdown option label for Lightning wallet, River
+
+
+ Satoshi Nakamoto
+ Satoshi Nakamoto
+ Name of Bitcoin creator(s).
+
+
+ Save
+ Save
+ No comment provided by engineer.
+
+
+ Search hashtag: #%@
+ Search hashtag: #%@
+ No comment provided by engineer.
+
+
+ Search...
+ Search...
+ No comment provided by engineer.
+
+
+ Secret Account Login Key
+ Secret Account Login Key
+ No comment provided by engineer.
+
+
+ Select a lightning wallet
+ Select a lightning wallet
+ No comment provided by engineer.
+
+
+ Select default wallet
+ Select default wallet
+ No comment provided by engineer.
+
+
+ Send a message to start the conversation...
+ Send a message to start the conversation...
+ No comment provided by engineer.
+
+
+ Settings
+ Settings
+ No comment provided by engineer.
+
+
+ Share
+ Share
+ No comment provided by engineer.
+
+
+ Show
+ Show
+ No comment provided by engineer.
+
+
+ Show wallet selector
+ Show wallet selector
+ No comment provided by engineer.
+
+
+ Strike
+ Strike
+ Dropdown option label for Lightning wallet, Strike.
+
+
+ This is a public key, you will not be able to make posts or interact in any way. This is used for viewing accounts from their perspective.
+ This is a public key, you will not be able to make posts or interact in any way. This is used for viewing accounts from their perspective.
+ No comment provided by engineer.
+
+
+ This is an old-style nostr key. We're not sure if it's a pubkey or private key. Please toggle the button below if this a public key.
+ This is an old-style nostr key. We're not sure if it's a pubkey or private key. Please toggle the button below if this a public key.
+ No comment provided by engineer.
+
+
+ This is your account ID, you can give this to your friends so that they can follow you. Click to copy.
+ This is your account ID, you can give this to your friends so that they can follow you. Click to copy.
+ No comment provided by engineer.
+
+
+ This is your secret account key. You need this to access your account. Don't share this with anyone! Save it in a password manager and keep it safe!
+ This is your secret account key. You need this to access your account. Don't share this with anyone! Save it in a password manager and keep it safe!
+ No comment provided by engineer.
+
+
+ Thread
+ Thread
+ No comment provided by engineer.
+
+
+ Type your post here...
+ Type your post here...
+ Text box prompt to ask user to type their post.
+
+
+ Unfollow
+ Unfollow
+ Button to unfollow a user.
+
+
+ Unfollowing
+ Unfollowing
+ No comment provided by engineer.
+
+
+ Unfollowing...
+ Unfollowing...
+ Label to indicate that the user is in the process of unfollowing another user.
+
+
+ Unfollows
+ Unfollows
+ No comment provided by engineer.
+
+
+ Username
+ Username
+ Label to prompt username entry.
+
+
+ Wallet Of Satoshi
+ Wallet Of Satoshi
+ Dropdown option label for Lightning wallet, Wallet Of Satoshi.
+
+
+ Wallet Selector
+ Wallet Selector
+ No comment provided by engineer.
+
+
+ Website
+ Website
+ No comment provided by engineer.
+
+
+ Welcome to the social network %@ control.
+ Welcome to the social network %@ control.
+ No comment provided by engineer.
+
+
+ Welcome, %@!
+ Welcome, %@!
+ No comment provided by engineer.
+
+
+ Your Name
+ Your Name
+ No comment provided by engineer.
+
+
+ Zebedee
+ Zebedee
+ Dropdown option label for Lightning wallet, Zebedee.
+
+
+ Zeus LN
+ Zeus LN
+ Dropdown option label for Lightning wallet, Zeus LN.
+
+
+ https://example.com/pic.jpg
+ https://example.com/pic.jpg
+ No comment provided by engineer.
+
+
+ https://jb55.com
+ https://jb55.com
+ No comment provided by engineer.
+
+
+ jb55@jb55.com
+ jb55@jb55.com
+ No comment provided by engineer.
+
+
+ none
+ none
+ No comment provided by engineer.
+
+
+ now
+ now
+ String indicating that a given timestamp just occurred
+
+
+ optional
+ optional
+ No comment provided by engineer.
+
+
+ replying_to_one_and_others
+ replying_to_one_and_others
+ Label to indicate that the user is replying to 1 user and others. (Key in .stringsdict)
+
+
+ replying_to_two_and_others
+ replying_to_two_and_others
+ Label to indicate that the user is replying to 2 users and others. (Key in .stringsdict)
+
+
+ satoshi
+ satoshi
+ Example username of Bitcoin creator(s), Satoshi Nakamoto.
+
+
+ wss://some.relay.com
+ wss://some.relay.com
+ No comment provided by engineer.
+
+
+ you
+ you
+ No comment provided by engineer.
+
+
+ ··· %lld other notes ···
+ ··· %lld other notes ···
+ No comment provided by engineer.
+
+
+ 🤙
+ 🤙
+ No comment provided by engineer.
+
+
+
+
+
+
+
+
+
+ Replying to %@%#@others@
+ Replying to %@%#@others@
+ Label to indicate that the user is replying to 1 user and others.
+
+
+ & 1 other
+ & 1 other
+ Label to indicate that the user is replying to 1 user and others.
+
+
+ & %d others
+ & %d others
+ Label to indicate that the user is replying to 1 user and others.
+
+
+
+
+ Label to indicate that the user is replying to 1 user and others.
+
+
+ Replying to %@, %@%#@others@
+ Replying to %@, %@%#@others@
+ Label to indicate that the user is replying to 2 users and others.
+
+
+ & 1 other
+ & 1 other
+ Label to indicate that the user is replying to 2 users and others.
+
+
+ & %d others
+ & %d others
+ Label to indicate that the user is replying to 2 users and others.
+
+
+
+
+ Label to indicate that the user is replying to 2 users and others.
+
+
+
+
diff --git a/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings
new file mode 100644
index 00000000..b5e9b532
--- /dev/null
+++ b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings
@@ -0,0 +1,4 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Damus";
+/* Bundle name */
+"CFBundleName" = "damus";
diff --git a/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings
new file mode 100644
index 00000000..d0abc3b5
Binary files /dev/null and b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings differ
diff --git a/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict
new file mode 100644
index 00000000..53570fc5
--- /dev/null
+++ b/damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict
@@ -0,0 +1,42 @@
+
+
+
+
+ replying_to_one_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+ replying_to_two_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@, %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+
+
diff --git a/damus Localizations/en.xcloc/contents.json b/damus Localizations/en.xcloc/contents.json
new file mode 100644
index 00000000..5004efaf
--- /dev/null
+++ b/damus Localizations/en.xcloc/contents.json
@@ -0,0 +1,12 @@
+{
+ "developmentRegion" : "en",
+ "project" : "damus.xcodeproj",
+ "targetLocale" : "en",
+ "toolInfo" : {
+ "toolBuildNumber" : "14C18",
+ "toolID" : "com.apple.dt.xcode",
+ "toolName" : "Xcode",
+ "toolVersion" : "14.2"
+ },
+ "version" : "1.0"
+}
\ No newline at end of file
diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj
index 4f99573f..9546243b 100644
--- a/damus.xcodeproj/project.pbxproj
+++ b/damus.xcodeproj/project.pbxproj
@@ -12,6 +12,8 @@
3169CAED294FCCFC00EE4006 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3169CAEC294FCCFC00EE4006 /* Constants.swift */; };
31D2E847295218AF006D67F8 /* Shimmer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31D2E846295218AF006D67F8 /* Shimmer.swift */; };
3A4325A82961E11400BFCD9D /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = 3A4325AA2961E11400BFCD9D /* Localizable.stringsdict */; };
+ 3AB18056296375CA00FD1BD8 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3AB18052296375CA00FD1BD8 /* InfoPlist.strings */; };
+ 3AB18057296375CA00FD1BD8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3AB18054296375CA00FD1BD8 /* Localizable.strings */; };
3ACBCB78295FE5C70037388A /* TimeAgoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ACBCB77295FE5C70037388A /* TimeAgoTests.swift */; };
4C06670128FC7C5900038D2A /* RelayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C06670028FC7C5900038D2A /* RelayView.swift */; };
4C06670428FC7EC500038D2A /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 4C06670328FC7EC500038D2A /* Kingfisher */; };
@@ -166,6 +168,12 @@
3169CAEC294FCCFC00EE4006 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Constants.swift; path = damus/Util/Constants.swift; sourceTree = SOURCE_ROOT; };
31D2E846295218AF006D67F8 /* Shimmer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shimmer.swift; sourceTree = ""; };
3A4325A92961E11400BFCD9D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; };
+ 3AB1803D29636FB100FD1BD8 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Localizable.stringsdict; sourceTree = ""; };
+ 3AB18058296377E500FD1BD8 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ 3AB18059296377E700FD1BD8 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; };
+ 3AB1805A2963EF7E00FD1BD8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ 3AB1805B2963EF7E00FD1BD8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; };
+ 3AB1805C2963EF7E00FD1BD8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = ""; };
3ACBCB77295FE5C70037388A /* TimeAgoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeAgoTests.swift; sourceTree = ""; };
4C06670028FC7C5900038D2A /* RelayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayView.swift; sourceTree = ""; };
4C06670528FCB08600038D2A /* ImageCarousel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageCarousel.swift; sourceTree = ""; };
@@ -595,6 +603,8 @@
4CE6DEE827F7A08100C66700 /* ContentView.swift */,
4CE6DEEA27F7A08200C66700 /* Assets.xcassets */,
4CE6DEEC27F7A08200C66700 /* Preview Content */,
+ 3AB18052296375CA00FD1BD8 /* InfoPlist.strings */,
+ 3AB18054296375CA00FD1BD8 /* Localizable.strings */,
3A4325AA2961E11400BFCD9D /* Localizable.stringsdict */,
);
path = damus;
@@ -731,6 +741,8 @@
knownRegions = (
en,
Base,
+ es,
+ fr,
);
mainGroup = 4CE6DEDA27F7A08100C66700;
packageReferences = (
@@ -756,7 +768,9 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 3AB18057296375CA00FD1BD8 /* Localizable.strings in Resources */,
4CE6DEEE27F7A08200C66700 /* Preview Assets.xcassets in Resources */,
+ 3AB18056296375CA00FD1BD8 /* InfoPlist.strings in Resources */,
4CE6DEEB27F7A08200C66700 /* Assets.xcassets in Resources */,
3A4325A82961E11400BFCD9D /* Localizable.stringsdict in Resources */,
);
@@ -947,10 +961,30 @@
isa = PBXVariantGroup;
children = (
3A4325A92961E11400BFCD9D /* en */,
+ 3AB1803D29636FB100FD1BD8 /* es */,
+ 3AB1805C2963EF7E00FD1BD8 /* fr */,
);
name = Localizable.stringsdict;
sourceTree = "";
};
+ 3AB18052296375CA00FD1BD8 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3AB18058296377E500FD1BD8 /* es */,
+ 3AB1805A2963EF7E00FD1BD8 /* fr */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "";
+ };
+ 3AB18054296375CA00FD1BD8 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 3AB18059296377E700FD1BD8 /* es */,
+ 3AB1805B2963EF7E00FD1BD8 /* fr */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -958,6 +992,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
@@ -1019,6 +1054,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
diff --git a/damus/Views/EventView.swift b/damus/Views/EventView.swift
index 26f79080..66d26568 100644
--- a/damus/Views/EventView.swift
+++ b/damus/Views/EventView.swift
@@ -412,13 +412,13 @@ func reply_desc(profiles: Profiles, event: NostrEvent) -> String {
if names.count == 2 {
if n > 2 {
let othersCount = n - pubkeys.count
- return String(format: NSLocalizedString("replying_to_two_and_others", comment: "Label to indicate that the user is replying to 2 users and others."), othersCount, names[0], names[1])
+ return String(format: NSLocalizedString("replying_to_two_and_others", comment: "Label to indicate that the user is replying to 2 users and others."), names[0], names[1], othersCount)
}
return String.localizedStringWithFormat("Replying to %@ & %@", names[0], names[1])
}
let othersCount = n - pubkeys.count
- return String(format: NSLocalizedString("replying_to_one_and_others", comment: "Label to indicate that the user is replying to 1 user and others."), othersCount, names[0])
+ return String(format: NSLocalizedString("replying_to_one_and_others", comment: "Label to indicate that the user is replying to 1 user and others."), names[0], othersCount)
}
diff --git a/damus/en.lproj/InfoPlist.strings b/damus/en.lproj/InfoPlist.strings
new file mode 100644
index 00000000..b5e9b532
--- /dev/null
+++ b/damus/en.lproj/InfoPlist.strings
@@ -0,0 +1,4 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Damus";
+/* Bundle name */
+"CFBundleName" = "damus";
diff --git a/damus/en.lproj/Localizable.strings b/damus/en.lproj/Localizable.strings
new file mode 100644
index 00000000..d0abc3b5
Binary files /dev/null and b/damus/en.lproj/Localizable.strings differ
diff --git a/damus/en.lproj/Localizable.stringsdict b/damus/en.lproj/Localizable.stringsdict
index 69fa736a..53570fc5 100644
--- a/damus/en.lproj/Localizable.stringsdict
+++ b/damus/en.lproj/Localizable.stringsdict
@@ -5,7 +5,7 @@
replying_to_one_and_othersNSStringLocalizedFormatKey
- Replying to %2$@%#@others@
+ Replying to %@%#@others@othersNSStringFormatSpecTypeKey
@@ -23,7 +23,7 @@
replying_to_two_and_othersNSStringLocalizedFormatKey
- Replying to %2$@, %3$@%#@others@
+ Replying to %@, %@%#@others@othersNSStringFormatSpecTypeKey
diff --git a/damus/es.lproj/InfoPlist.strings b/damus/es.lproj/InfoPlist.strings
new file mode 100644
index 00000000..b5e9b532
--- /dev/null
+++ b/damus/es.lproj/InfoPlist.strings
@@ -0,0 +1,4 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Damus";
+/* Bundle name */
+"CFBundleName" = "damus";
diff --git a/damus/es.lproj/Localizable.strings b/damus/es.lproj/Localizable.strings
new file mode 100644
index 00000000..d0abc3b5
Binary files /dev/null and b/damus/es.lproj/Localizable.strings differ
diff --git a/damus/es.lproj/Localizable.stringsdict b/damus/es.lproj/Localizable.stringsdict
new file mode 100644
index 00000000..53570fc5
--- /dev/null
+++ b/damus/es.lproj/Localizable.stringsdict
@@ -0,0 +1,42 @@
+
+
+
+
+ replying_to_one_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+ replying_to_two_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@, %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+
+
diff --git a/damus/fr.lproj/InfoPlist.strings b/damus/fr.lproj/InfoPlist.strings
new file mode 100644
index 00000000..b5e9b532
--- /dev/null
+++ b/damus/fr.lproj/InfoPlist.strings
@@ -0,0 +1,4 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Damus";
+/* Bundle name */
+"CFBundleName" = "damus";
diff --git a/damus/fr.lproj/Localizable.strings b/damus/fr.lproj/Localizable.strings
new file mode 100644
index 00000000..5458e3f3
--- /dev/null
+++ b/damus/fr.lproj/Localizable.strings
@@ -0,0 +1,102 @@
+/* Label to prompt for about text entry for user to describe about themself. */
+"About" = "À propos";
+
+/* Placeholder text for About Me description. */
+"Absolute Boss" = "Patron absolu";
+
+/* Label to indicate the public ID of the account. */
+"Account ID" = "identifiant de compte";
+
+/* Dropdown option label for Lightning wallet, Bitcoin Beach. */
+"Bitcoin Beach" = "Plage Bitcoin";
+
+/* Dropdown option label for Lightning wallet, Blixt Wallet */
+"Blixt Wallet" = "Portefeuille Blixt";
+
+/* Dropdown option label for Lightning wallet, Blue Wallet. */
+"Blue Wallet" = "Portefeuille bleu";
+
+/* Dropdown option label for Lightning wallet, Breez. */
+"Breez" = "Brise";
+
+/* Dropdown option label for Lightning wallet, Cash App. */
+"Cash App" = "Application de trésorerie";
+
+/* Button to create account. */
+"Create" = "Créer";
+
+/* Button to create an account. */
+"Create Account" = "Créer un compte";
+
+/* Example description about Bitcoin creator(s), Satoshi Nakamoto. */
+"Creator(s) of Bitcoin. Absolute legend." = "Créateur(s) de Bitcoin. Légende absolue.";
+
+/* Label to prompt display name entry. */
+"Display Name" = "Afficher un nom";
+
+/* Button to follow a user. */
+"Follow" = "Suivre";
+
+/* Label to indicate that the user is in the process of following another user. */
+"Following..." = "Suivant...";
+
+/* Button to complete account creation and start using the app. */
+"Let's go!" = "Allons-y!";
+
+/* Dropdown option label for Lightning wallet, LNLink. */
+"LNLink" = "LNLink";
+
+/* Dropdown option label for system default for Lightning wallet. */
+"Local default" = "Valeur locale par défaut";
+
+/* Dropdown option label for Lightning wallet, Muun. */
+"Muun" = "Muun";
+
+/* String indicating that a given timestamp just occurred */
+"now" = "maintenant";
+
+/* Dropdown option label for Lightning wallet, Phoenix. */
+"Phoenix" = "Phénix";
+
+/* Label to indicate that the user is replying to themself. */
+"Reply to self" = "Répondre à soi-même";
+
+/* Label to indicate that the user is replying to 1 user and others. */
+"replying_to_one_and_others" = "répondre_à_l'un_et_aux_autres";
+
+/* Label to indicate that the user is replying to 2 users and others. */
+"replying_to_two_and_others" = "répondre_à_deux_et_autres";
+
+/* Dropdown option label for Lightning wallet, River */
+"River" = "Rivière";
+
+/* Example username of Bitcoin creator(s), Satoshi Nakamoto. */
+"satoshi" = "satoshi";
+
+/* Name of Bitcoin creator(s). */
+"Satoshi Nakamoto" = "Satoshi Nakamoto";
+
+/* Dropdown option label for Lightning wallet, Strike. */
+"Strike" = "Frapper";
+
+/* Text box prompt to ask user to type their post. */
+"Type your post here..." = "Tapez votre message ici...";
+
+/* Button to unfollow a user. */
+"Unfollow" = "Ne plus suivre";
+
+/* Label to indicate that the user is in the process of unfollowing another user. */
+"Unfollowing..." = "Désabonnement...";
+
+/* Label to prompt username entry. */
+"Username" = "Nom d'utilisateur";
+
+/* Dropdown option label for Lightning wallet, Wallet Of Satoshi. */
+"Wallet Of Satoshi" = "Portefeuille de Satoshi";
+
+/* Dropdown option label for Lightning wallet, Zebedee. */
+"Zebedee" = "Zébédée";
+
+/* Dropdown option label for Lightning wallet, Zeus LN. */
+"Zeus LN" = "Zeus L.N.";
+
diff --git a/damus/fr.lproj/Localizable.stringsdict b/damus/fr.lproj/Localizable.stringsdict
new file mode 100644
index 00000000..53570fc5
--- /dev/null
+++ b/damus/fr.lproj/Localizable.stringsdict
@@ -0,0 +1,42 @@
+
+
+
+
+ replying_to_one_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+ replying_to_two_and_others
+
+ NSStringLocalizedFormatKey
+ Replying to %@, %@%#@others@
+ others
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ d
+ zero
+
+ one
+ & 1 other
+ other
+ & %d others
+
+
+
+
diff --git a/transifex.yml b/transifex.yml
new file mode 100644
index 00000000..61984088
--- /dev/null
+++ b/transifex.yml
@@ -0,0 +1,18 @@
+git:
+ filters:
+ - filter_type: dir
+ file_format: STRINGS
+ source_file_extensions: strings
+ source_language: en
+ source_file_dir: damus Localizations/en.xcloc/Source Contents/damus/en.lproj
+ translation_files_expression: damus/.lproj
+
+ - filter_type: dir
+ file_format: STRINGSDICT
+ source_file_extensions: stringsdict
+ source_language: en
+ source_file_dir: damus Localizations/en.xcloc/Source Contents/damus/en.lproj
+ translation_files_expression: damus/.lproj
+
+ settings:
+ pr_branch_name: tx_translations_