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 00000000..d0abc3b5 Binary files /dev/null and b/damus/en.lproj/Localizable.strings differ diff --git a/damus/es.lproj/InfoPlist.strings b/damus/es.lproj/InfoPlist.strings new file mode 100644 index 00000000..864fe7b8 --- /dev/null +++ b/damus/es.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "damus"; +/* Bundle name */ +"CFBundleName" = "damus"; diff --git a/damus/es.lproj/Localizable.strings b/damus/es.lproj/Localizable.strings new file mode 100644 index 00000000..d0abc3b5 Binary files /dev/null and b/damus/es.lproj/Localizable.strings differ diff --git a/damus/es.lproj/Localizable.stringsdict b/damus/es.lproj/Localizable.stringsdict new file mode 100644 index 00000000..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_