From 0d3c1a225b1746a9070105a555c22d79e87134b4 Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:38:44 -0500 Subject: [PATCH 1/3] Export localizations and add transifex.yml config file --- .../en.xcloc/Localized Contents/en.xliff | 804 ++++++++++++++++++ .../damus/en.lproj/InfoPlist.strings | 4 + .../damus/en.lproj/Localizable.strings | Bin 0 -> 6184 bytes .../damus/en.lproj/Localizable.stringsdict | 42 + damus Localizations/en.xcloc/contents.json | 12 + damus.xcodeproj/project.pbxproj | 36 + damus/Views/EventView.swift | 4 +- damus/en.lproj/InfoPlist.strings | 4 + damus/en.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/en.lproj/Localizable.stringsdict | 4 +- damus/es.lproj/InfoPlist.strings | 4 + damus/es.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/es.lproj/Localizable.stringsdict | 42 + damus/fr.lproj/InfoPlist.strings | 4 + damus/fr.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/fr.lproj/Localizable.stringsdict | 42 + transifex.yml | 18 + 17 files changed, 1016 insertions(+), 4 deletions(-) create mode 100644 damus Localizations/en.xcloc/Localized Contents/en.xliff create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict create mode 100644 damus Localizations/en.xcloc/contents.json create mode 100644 damus/en.lproj/InfoPlist.strings create mode 100644 damus/en.lproj/Localizable.strings create mode 100644 damus/es.lproj/InfoPlist.strings create mode 100644 damus/es.lproj/Localizable.strings create mode 100644 damus/es.lproj/Localizable.stringsdict create mode 100644 damus/fr.lproj/InfoPlist.strings create mode 100644 damus/fr.lproj/Localizable.strings create mode 100644 damus/fr.lproj/Localizable.stringsdict create mode 100644 transifex.yml 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. + + + &nbsp; + &nbsp; + 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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_others NSStringLocalizedFormatKey - Replying to %2$@%#@others@ + Replying to %@%#@others@ others NSStringFormatSpecTypeKey @@ -23,7 +23,7 @@ replying_to_two_and_others NSStringLocalizedFormatKey - Replying to %2$@, %3$@%#@others@ + Replying to %@, %@%#@others@ others NSStringFormatSpecTypeKey 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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_ -- 2.49.1 From 3b6387ffef07049fe2660900199c7b883c7d6361 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 3 Jan 2023 05:21:59 +0000 Subject: [PATCH 2/3] Apply translations in fr translated for the source file '/damus/en.lproj/Localizable.strings' on the 'fr' language. --- damus/fr.lproj/Localizable.strings | Bin 6184 -> 3216 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/damus/fr.lproj/Localizable.strings b/damus/fr.lproj/Localizable.strings index d0abc3b55c869ae3994cec691dba1a2e4dd3249a..5458e3f36a89ff85714136d25ec587405943a758 100644 GIT binary patch literal 3216 zcmbtW&2Aev5Wf22-NOKV$CHN{IRW^`Y1V8eT5!! z*azw>bY{ri$X1-z>R|!yko@L{-+biXe|>uW5+-Vn2BL%3yQYn>a30j$r3ex4BcP3b zEyfhk^ST;C<@FrAQYf4csw6c++fQpNN1^$c@sNJ0fCy{}XT5;eLy!&Kd<#zj|B<}hUilfLX5QG=B>GPp!rkA^TP&%}6Kl413v+wdxGZQh2X zlIzfBMI&k*TBFurRfAa}au8?5J|%mu{bHf36?HtNY+bWcx`i{w-GKrYmyGdNOtSkj z>095Q(h$Q|t1A*I>UU8l9e}z|+TXhhL*P1Od~Q=^9nDc7j~vn5Xq3ys?nnjrH%r#m z5tAxVmk-p)OkqYTTSJJ-M?z*l9DwS1IKg-nVCi1uVokzS_qh6?FvhqF_umbHWW%_mE;TJ{S?ZNN_DXa2OcN>C=wWI@9u++CmC#xHzLN_h^mO=zqRmpp-MFp+96SPKY8`07s?h)Pj z%AwWwxe(2Y zNzIc>@=Rafr4MHo-OO2>(flmWO9UipIf7aDab}K^onf4*bWdOO*k9kz z4CQ+XB}jWb6-&HxUyY?k3PNJpisNaLKW6kXTo7@*5JX0~-uhN|e+;V9OE1fUsM%-n z%su{9(G6LO1-KvQlVb(k65=had?t@YTp)Ig|JK*LDRUFuVDTYiL4NB=lZLD7il1L| zci%txh>t4VWb)8Bu3LFWX%F;#E3c+2Hm)5>0o#D26novgQZ0UfTSun^)T4o)IJ(kb z($QqUp!n~LQ6im^$e0u${BP~=eQ_i1s(_Elkju+1NF=8H*iJX z#<|w-3x9GBj(g5+}#H7akspBMdopZ)BZ#o_t(qmQodLZm(1UgI2VECeb) i;^Mm7%)1R~f3Ho?X~b)!6P-+R3gsuG%EV|YH|{_CxiLTh literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 -- 2.49.1 From 3c9bba2e7f0257695761666b4f724297a2e787ad Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:38:44 -0500 Subject: [PATCH 3/3] Export localizations and add transifex.yml config file --- .../en.xcloc/Localized Contents/en.xliff | 804 ++++++++++++++++++ .../damus/en.lproj/InfoPlist.strings | 4 + .../damus/en.lproj/Localizable.strings | Bin 0 -> 6184 bytes .../damus/en.lproj/Localizable.stringsdict | 42 + damus Localizations/en.xcloc/contents.json | 12 + damus.xcodeproj/project.pbxproj | 36 + damus/Views/EventView.swift | 4 +- damus/en.lproj/InfoPlist.strings | 4 + damus/en.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/en.lproj/Localizable.stringsdict | 4 +- damus/es.lproj/InfoPlist.strings | 4 + damus/es.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/es.lproj/Localizable.stringsdict | 42 + damus/fr.lproj/InfoPlist.strings | 4 + damus/fr.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/fr.lproj/Localizable.stringsdict | 42 + transifex.yml | 22 + 17 files changed, 1020 insertions(+), 4 deletions(-) create mode 100644 damus Localizations/en.xcloc/Localized Contents/en.xliff create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings create mode 100644 damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict create mode 100644 damus Localizations/en.xcloc/contents.json create mode 100644 damus/en.lproj/InfoPlist.strings create mode 100644 damus/en.lproj/Localizable.strings create mode 100644 damus/es.lproj/InfoPlist.strings create mode 100644 damus/es.lproj/Localizable.strings create mode 100644 damus/es.lproj/Localizable.stringsdict create mode 100644 damus/fr.lproj/InfoPlist.strings create mode 100644 damus/fr.lproj/Localizable.strings create mode 100644 damus/fr.lproj/Localizable.stringsdict create mode 100644 transifex.yml 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. + + + &nbsp; + &nbsp; + 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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_others NSStringLocalizedFormatKey - Replying to %2$@%#@others@ + Replying to %@%#@others@ others NSStringFormatSpecTypeKey @@ -23,7 +23,7 @@ replying_to_two_and_others NSStringLocalizedFormatKey - Replying to %2$@, %3$@%#@others@ + Replying to %@, %@%#@others@ others NSStringFormatSpecTypeKey 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d0abc3b55c869ae3994cec691dba1a2e4dd3249a GIT binary patch literal 6184 zcmcgwO;6iE5ZyDs!sXHyRiO4-^+2GNDg}z5s8TN|gpj0!7{yM3{`j`^WK(|>%({hDBYb+0zQcVBBc;bo4c_R`_cV*&dJ!$CYQ*^K#@B;> z0_;8aC-EGST9hhV2eLhQLxDKR+%96~Cc>AFDaz`I#oF@OmpPSD6LKrFDx)W4jpkgi zXY}lTIy?5aW%eS9<#r?sHrv!AsA^g3KO@dMzA7=3H0A8Lwxsz%*I&s(Ow#Vw%0l7;$Y`w{rEPSo&Oi1!9UUvday5>k^DkaT>P2Uer0osB@ecyQ*|O zYeTcnb1hngm0jKeEM!k=af?h*s>EVC0W*AB2>m0k+8v9O{uiQ^Iie5k-(Yx*|LotH zje_UW?=$zy#~k@4D_z`8yvNhS*g}EvBsim>je5+$060gzRQU5G<3a{Z) zh3Hw<(-FJ>s$$H(N6Oqc|E@BQe(N)fwbht6o_xa`=aG0sk*D%?p`;J- S4gX=3RftAMVw6@MQ2qzsxb&$2 literal 0 HcmV?d00001 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..152dfafd --- /dev/null +++ b/transifex.yml @@ -0,0 +1,22 @@ +git: + filters: + - filter_type: file + file_format: STRINGS + source_language: en + source_file: damus Localizations/en.xcloc/Source Contents/damus/en.lproj/InfoPlist.strings + translation_files_expression: damus/.lproj/InfoPlist.strings + + - filter_type: file + file_format: STRINGS + source_language: en + source_file: damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.strings + translation_files_expression: damus/.lproj/Localizable.strings + + - filter_type: file + file_format: STRINGSDICT + source_language: en + source_file: damus Localizations/en.xcloc/Source Contents/damus/en.lproj/Localizable.stringsdict + translation_files_expression: damus/.lproj/Localizable.stringsdict + + settings: + pr_branch_name: tx_translations_ -- 2.49.1