From 8e15f064a5eb033a7f85eeb76faa149fd01dae28 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 --- damus.xcodeproj/project.pbxproj | 33 +++++++++++++++++++ damus/en.lproj/InfoPlist.strings | 4 +++ damus/en.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/es.lproj/InfoPlist.strings | 4 +++ damus/es.lproj/Localizable.strings | Bin 0 -> 6184 bytes damus/es.lproj/Localizable.stringsdict | 42 +++++++++++++++++++++++++ transifex.yml | 22 +++++++++++++ 7 files changed, 105 insertions(+) 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 transifex.yml diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj index 4f99573f..2e2681bf 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,11 @@ 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 = ""; }; + 3AB18053296375CA00FD1BD8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 3AB18055296375CA00FD1BD8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; 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 = ""; }; 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 +602,8 @@ 4CE6DEE827F7A08100C66700 /* ContentView.swift */, 4CE6DEEA27F7A08200C66700 /* Assets.xcassets */, 4CE6DEEC27F7A08200C66700 /* Preview Content */, + 3AB18052296375CA00FD1BD8 /* InfoPlist.strings */, + 3AB18054296375CA00FD1BD8 /* Localizable.strings */, 3A4325AA2961E11400BFCD9D /* Localizable.stringsdict */, ); path = damus; @@ -731,6 +740,7 @@ knownRegions = ( en, Base, + es, ); mainGroup = 4CE6DEDA27F7A08100C66700; packageReferences = ( @@ -756,7 +766,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 +959,29 @@ isa = PBXVariantGroup; children = ( 3A4325A92961E11400BFCD9D /* en */, + 3AB1803D29636FB100FD1BD8 /* es */, ); name = Localizable.stringsdict; sourceTree = ""; }; + 3AB18052296375CA00FD1BD8 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 3AB18053296375CA00FD1BD8 /* en */, + 3AB18058296377E500FD1BD8 /* es */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 3AB18054296375CA00FD1BD8 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 3AB18055296375CA00FD1BD8 /* en */, + 3AB18059296377E700FD1BD8 /* es */, + ); + name = Localizable.strings; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -958,6 +989,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 +1051,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/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/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..69fa736a --- /dev/null +++ b/damus/es.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + replying_to_one_and_others + + NSStringLocalizedFormatKey + Replying to %2$@%#@others@ + others + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + + one + & 1 other + other + & %d others + + + replying_to_two_and_others + + NSStringLocalizedFormatKey + Replying to %2$@, %3$@%#@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..a78e01f7 --- /dev/null +++ b/transifex.yml @@ -0,0 +1,22 @@ +git: + filters: + - filter_type: file + file_format: STRINGS + source_language: en + source_file: damus/en.lproj/InfoPlist.strings + translation_files_expression: damus/.lproj/InfoPlist.strings + + - filter_type: file + file_format: STRINGS + source_language: en + source_file: damus/en.lproj/Localizable.strings + translation_files_expression: damus/.lproj/Localizable.strings + + - filter_type: file + file_format: STRINGSDICT + source_language: en + source_file: damus/en.lproj/Localizable.stringsdict + translation_files_expression: damus/.lproj/Localizable.stringsdict + + settings: + pr_branch_name: tx_translations_ -- 2.49.1 From 18fdc1aaaa04e111d9eaded42d8a362c18f33892 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:17:34 +0000 Subject: [PATCH 2/3] Apply translations in es translated for the source file '/damus/en.lproj/Localizable.strings' on the 'es' language. --- damus/es.lproj/Localizable.strings | Bin 6184 -> 3176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/damus/es.lproj/Localizable.strings b/damus/es.lproj/Localizable.strings index d0abc3b55c869ae3994cec691dba1a2e4dd3249a..7b62bd02bef65222718c6ea874559fefd4317e76 100644 GIT binary patch literal 3176 zcmbtW&2Aev5Wf2Ww>`{pN??eB|GM{Q2?)Ow0^Bhy;VDeuyw94`xOwLd2U0=%Qb# zF$MJE*J5bAoniG_Vjr-ZkKo12z5PS^b05Bk{R^6T-2ZNGk7Jy5rokn3tsn@h1W{Lb zjRkOsmRto1)TM|prVteD66X?6%~U|wiCfp&#;|)_A`EHP*#>?*2AZqEGz}#e3v&M8 zZG~m87NIlHB(BpG;A2liOV(5;oi*S#qeCZv38!|ihWESDKjdiu4k%I7dH2*{2-1p-FVkrp@t%JWi1$XL+?fl@;kY6cLsqGcb7m!!d8)^p*~0q7 z$Ss7(qrlh_Nm4MCh!c!o1z6BCE$FY`e&$mP&vqD=$?3$ptK6czR>Tu0Itr81FG7Y@ zh}iRy&rRyG+-_@EL8r!a)lY+*d2B^Wdh1L}(22tr<86Z-ow+NTx1qcnSotKjRa+q*7&F#W%9WY9 z!V*K*iu^;uZczu}jXbVqbW-t4{)|A<}^4=C2X%*$V<1$i6#@oudr<`Yb&;2y7_k2E%2WAaeUtb)tP-zEEeup#G c_ClfZq3C(NOA+rd1-_7S>gA(A>V{^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 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 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 | 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