Mercurial > public > simoleon
changeset 30:f76d0e26c178
Add localisation
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Localisation/en.xcloc/Localized Contents/en.xliff Fri Jul 23 13:19:28 2021 +0100 @@ -0,0 +1,251 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd"> + <file original="Simoleon/en.lproj/InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <header> + <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="12.5.1" build-num="12E507"/> + </header> + <body> + <trans-unit id="CFBundleDisplayName" xml:space="preserve"> + <source>Simoleon</source> + <target>Simoleon</target> + <note>Bundle display name</note> + </trans-unit> + <trans-unit id="CFBundleName" xml:space="preserve"> + <source>Simoleon</source> + <target>Simoleon</target> + <note>Bundle name</note> + </trans-unit> + </body> + </file> + <file original="Simoleon/en.lproj/Localizable.strings" source-language="en" target-language="en" datatype="plaintext"> + <header> + <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="12.5.1" build-num="12E507"/> + </header> + <body> + <trans-unit id="%.2f" xml:space="preserve"> + <source>%.2f</source> + <target>%.2f</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="%@ (%@)" xml:space="preserve"> + <source>%1$@ (%2$@)</source> + <target>%1$@ (%2$@)</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="-" xml:space="preserve"> + <source>-</source> + <target>-</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="About" xml:space="preserve"> + <source>About</source> + <target>About</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="All currencies" xml:space="preserve"> + <source>All currencies</source> + <target>All currencies</target> + <note>Section header in currency selector</note> + </trans-unit> + <trans-unit id="Cancel" xml:space="preserve"> + <source>Cancel</source> + <target>Cancel</target> + <note>Button to dismiss currency selector + Button to dismiss paywall modal sheet + Button to stop editing textfield</note> + </trans-unit> + <trans-unit id="Categories" xml:space="preserve"> + <source>Categories</source> + <target>Categories</target> + <note>Side bar navigation title</note> + </trans-unit> + <trans-unit id="Contact" xml:space="preserve"> + <source>Contact</source> + <target>Contact</target> + <note>Button to contact in Settings</note> + </trans-unit> + <trans-unit id="Convert" xml:space="preserve"> + <source>Convert</source> + <target>Convert</target> + <note>Navigation title + Tab bar button to show conversion</note> + </trans-unit> + <trans-unit id="Convert your currency between cryptos, gold, and silver." xml:space="preserve"> + <source>Convert your currency between cryptos, gold, and silver.</source> + <target>Convert your currency between cryptos, gold, and silver.</target> + <note>Subscription feature description</note> + </trans-unit> + <trans-unit id="Cryptos and commodities" xml:space="preserve"> + <source>Cryptos and commodities</source> + <target>Cryptos and commodities</target> + <note>Subscription feature title</note> + </trans-unit> + <trans-unit id="Currencies" xml:space="preserve"> + <source>Currencies</source> + <target>Currencies</target> + <note>Navigation title</note> + </trans-unit> + <trans-unit id="Default currency" xml:space="preserve"> + <source>Default currency</source> + <target>Default currency</target> + <note>Label in locked picker + Picker to select default currency</note> + </trans-unit> + <trans-unit id="Developer's Twitter" xml:space="preserve"> + <source>Developer's Twitter</source> + <target>Developer's Twitter</target> + <note>Button to go to Twitter in Settings</note> + </trans-unit> + <trans-unit id="Enter amount" xml:space="preserve"> + <source>Enter amount</source> + <target>Enter amount</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="Expires at %@" xml:space="preserve"> + <source>Expires at %@</source> + <target>Expires at %@</target> + <note>Subscriber information</note> + </trans-unit> + <trans-unit id="Favourite currencies" xml:space="preserve"> + <source>Favourite currencies</source> + <target>Favourite currencies</target> + <note>Subscription feature title</note> + </trans-unit> + <trans-unit id="Favourites" xml:space="preserve"> + <source>Favourites</source> + <target>Favourites</target> + <note>Navigation title + Tab bar button to show favourites</note> + </trans-unit> + <trans-unit id="From %@ to %@" xml:space="preserve"> + <source>From %1$@ to %2$@</source> + <target>From %1$@ to %2$@</target> + <note>Conversion from one currency to another</note> + </trans-unit> + <trans-unit id="Have access to almost every currency of the world." xml:space="preserve"> + <source>Have access to almost every currency of the world.</source> + <target>Have access to almost every currency of the world.</target> + <note>Subscription feature description</note> + </trans-unit> + <trans-unit id="Information" xml:space="preserve"> + <source>Information</source> + <target>Information</target> + <note>Button to show subscription information in settings + Navigation title</note> + </trans-unit> + <trans-unit id="Latest purchase %@" xml:space="preserve"> + <source>Latest purchase %@</source> + <target>Latest purchase %@</target> + <note>Subscriber information</note> + </trans-unit> + <trans-unit id="Member since %@" xml:space="preserve"> + <source>Member since %@</source> + <target>Member since %@</target> + <note>Subscriber information</note> + </trans-unit> + <trans-unit id="Ok" xml:space="preserve"> + <source>Ok</source> + <target>Ok</target> + <note>Button to dismiss alert + Button to stop searching in currency selector + Dismiss alert</note> + </trans-unit> + <trans-unit id="Over 170 currencies" xml:space="preserve"> + <source>Over 170 currencies</source> + <target>Over 170 currencies</target> + <note>Subscription feature title</note> + </trans-unit> + <trans-unit id="Preferences" xml:space="preserve"> + <source>Preferences</source> + <target>Preferences</target> + <note>Section header in settings</note> + </trans-unit> + <trans-unit id="Privacy Policy" xml:space="preserve"> + <source>Privacy Policy</source> + <target>Privacy Policy</target> + <note>Button to go to app privacy policy</note> + </trans-unit> + <trans-unit id="Rate Simoleon" xml:space="preserve"> + <source>Rate Simoleon</source> + <target>Rate Simoleon</target> + <note>Button to rate app in Settings</note> + </trans-unit> + <trans-unit id="Restore purchases" xml:space="preserve"> + <source>Restore purchases</source> + <target>Restore purchases</target> + <note>Button to restore in-App purchases</note> + </trans-unit> + <trans-unit id="Save your favourite currencies to access them quickly." xml:space="preserve"> + <source>Save your favourite currencies to access them quickly.</source> + <target>Save your favourite currencies to access them quickly.</target> + <note>Subscription feature description</note> + </trans-unit> + <trans-unit id="Search ..." xml:space="preserve"> + <source>Search ...</source> + <target>Search ...</target> + <note>No comment provided by engineer.</note> + </trans-unit> + <trans-unit id="Settings" xml:space="preserve"> + <source>Settings</source> + <target>Settings</target> + <note>Navigation title + Tab bar button to show settings</note> + </trans-unit> + <trans-unit id="Simoleon on all your devices" xml:space="preserve"> + <source>Simoleon on all your devices</source> + <target>Simoleon on all your devices</target> + <note>Subscription feature title</note> + </trans-unit> + <trans-unit id="Stay in touch" xml:space="preserve"> + <source>Stay in touch</source> + <target>Stay in touch</target> + <note>Section header in settings</note> + </trans-unit> + <trans-unit id="Subscribe" xml:space="preserve"> + <source>Subscribe</source> + <target>Subscribe</target> + <note>Button to suscribe in settings</note> + </trans-unit> + <trans-unit id="Subscribe for %@ / month" xml:space="preserve"> + <source>Subscribe for %@ / month</source> + <target>Subscribe for %@ / month</target> + <note>Subscribe button</note> + </trans-unit> + <trans-unit id="Subscription" xml:space="preserve"> + <source>Subscription</source> + <target>Subscription</target> + <note>Section header in settings</note> + </trans-unit> + <trans-unit id="Tap " xml:space="preserve"> + <source>Tap </source> + <target>Tap </target> + <note>First line when favourites are empty</note> + </trans-unit> + <trans-unit id="USD/GBP" xml:space="preserve"> + <source>USD/GBP</source> + <target>USD/GBP</target> + <note>Default currency in locked picker</note> + </trans-unit> + <trans-unit id="Unlock all access" xml:space="preserve"> + <source>Unlock all access</source> + <target>Unlock all access</target> + <note>Headline in Subscription paywall</note> + </trans-unit> + <trans-unit id="Website" xml:space="preserve"> + <source>Website</source> + <target>Website</target> + <note>Button to go to Dennis Tech website</note> + </trans-unit> + <trans-unit id="Your settings and favourite currencies in all your devices." xml:space="preserve"> + <source>Your settings and favourite currencies in all your devices.</source> + <target>Your settings and favourite currencies in all your devices.</target> + <note>Subscription feature description</note> + </trans-unit> + <trans-unit id="to add a currency pair to favourites" xml:space="preserve"> + <source>to add a currency pair to favourites</source> + <target>to add a currency pair to favourites</target> + <note>Finish line when favourites are empty</note> + </trans-unit> + </body> + </file> +</xliff>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Localisation/en.xcloc/Source Contents/Simoleon/en.lproj/InfoPlist.strings Fri Jul 23 13:19:28 2021 +0100 @@ -0,0 +1,4 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "Simoleon"; +/* Bundle name */ +"CFBundleName" = "Simoleon";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Localisation/en.xcloc/Source Contents/Simoleon/es.lproj/InfoPlist.strings Fri Jul 23 13:19:28 2021 +0100 @@ -0,0 +1,4 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "Simoleon"; +/* Bundle name */ +"CFBundleName" = "Simoleon";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Localisation/en.xcloc/contents.json Fri Jul 23 13:19:28 2021 +0100 @@ -0,0 +1,12 @@ +{ + "developmentRegion" : "en", + "project" : "Simoleon.xcodeproj", + "targetLocale" : "en", + "toolInfo" : { + "toolBuildNumber" : "12E507", + "toolID" : "com.apple.dt.xcode", + "toolName" : "Xcode", + "toolVersion" : "12.5.1" + }, + "version" : "1.0" +} \ No newline at end of file
--- a/Simoleon.xcodeproj/project.pbxproj Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon.xcodeproj/project.pbxproj Fri Jul 23 13:19:28 2021 +0100 @@ -27,6 +27,10 @@ 95B54F4A26A4A450001DC0D8 /* ConversionBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */; }; 95B54F4F26A4AC52001DC0D8 /* ContentViewPad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F4E26A4AC52001DC0D8 /* ContentViewPad.swift */; }; 95B54F5126A4ACAC001DC0D8 /* Sidebar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */; }; + 95B5F53126AADE4B00BDCE89 /* en.xliff in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52826AADE4B00BDCE89 /* en.xliff */; }; + 95B5F53226AADE4B00BDCE89 /* contents.json in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52A26AADE4B00BDCE89 /* contents.json */; }; + 95B5F53326AADE4B00BDCE89 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52D26AADE4B00BDCE89 /* Localizable.strings */; }; + 95B5F53426AADE4B00BDCE89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95B5F52F26AADE4B00BDCE89 /* InfoPlist.strings */; }; 95C5179126A5DC8E00BC2B24 /* ConditionalWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */; }; 95C5179926A5EC9F00BC2B24 /* FavouriteButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179826A5EC9F00BC2B24 /* FavouriteButton.swift */; }; 95C5179C26A5EFBE00BC2B24 /* Favourite+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5179A26A5EFBE00BC2B24 /* Favourite+CoreDataClass.swift */; }; @@ -41,7 +45,6 @@ 95C5B23F2697752700941585 /* SimoleonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B23E2697752700941585 /* SimoleonTests.swift */; }; 95C5B24A2697752700941585 /* SimoleonUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C5B2492697752700941585 /* SimoleonUITests.swift */; }; 95D8C8C726A95D2900BCC188 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8C626A95D2900BCC188 /* Subscription.swift */; }; - 95D8C8CB26A970F400BCC188 /* SubscriptionFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8CA26A970F400BCC188 /* SubscriptionFeature.swift */; }; 95D8C8CD26A9784500BCC188 /* SubscribeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */; }; 95D8C8CF26A98A7900BCC188 /* RestoreButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */; }; 95D8C8D126A9BC6200BCC188 /* LockedCurrencyPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */; }; @@ -91,6 +94,12 @@ 95B54F4926A4A450001DC0D8 /* ConversionBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversionBox.swift; sourceTree = "<group>"; }; 95B54F4E26A4AC52001DC0D8 /* ContentViewPad.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentViewPad.swift; sourceTree = "<group>"; }; 95B54F5026A4ACAC001DC0D8 /* Sidebar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sidebar.swift; sourceTree = "<group>"; }; + 95B5F52826AADE4B00BDCE89 /* en.xliff */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = en.xliff; sourceTree = "<group>"; }; + 95B5F52A26AADE4B00BDCE89 /* contents.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = contents.json; sourceTree = "<group>"; }; + 95B5F52E26AADE4B00BDCE89 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; }; + 95B5F53026AADE4B00BDCE89 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 95B5F53526AADE5200BDCE89 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; }; + 95B5F53626AADE5500BDCE89 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConditionalWrapper.swift; sourceTree = "<group>"; }; 95C5179826A5EC9F00BC2B24 /* FavouriteButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavouriteButton.swift; sourceTree = "<group>"; }; 95C5179A26A5EFBE00BC2B24 /* Favourite+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Favourite+CoreDataClass.swift"; sourceTree = "<group>"; }; @@ -111,7 +120,6 @@ 95C5B2492697752700941585 /* SimoleonUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonUITests.swift; sourceTree = "<group>"; }; 95C5B24B2697752700941585 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 95D8C8C626A95D2900BCC188 /* Subscription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = "<group>"; }; - 95D8C8CA26A970F400BCC188 /* SubscriptionFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionFeature.swift; sourceTree = "<group>"; }; 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscribeButton.swift; sourceTree = "<group>"; }; 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestoreButton.swift; sourceTree = "<group>"; }; 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LockedCurrencyPicker.swift; sourceTree = "<group>"; }; @@ -192,11 +200,63 @@ path = Tests; sourceTree = "<group>"; }; + 95B5F52526AADE4B00BDCE89 /* Localisation */ = { + isa = PBXGroup; + children = ( + 95B5F52626AADE4B00BDCE89 /* en.xcloc */, + ); + path = Localisation; + sourceTree = "<group>"; + }; + 95B5F52626AADE4B00BDCE89 /* en.xcloc */ = { + isa = PBXGroup; + children = ( + 95B5F52726AADE4B00BDCE89 /* Localized Contents */, + 95B5F52926AADE4B00BDCE89 /* Notes */, + 95B5F52A26AADE4B00BDCE89 /* contents.json */, + 95B5F52B26AADE4B00BDCE89 /* Source Contents */, + ); + path = en.xcloc; + sourceTree = "<group>"; + }; + 95B5F52726AADE4B00BDCE89 /* Localized Contents */ = { + isa = PBXGroup; + children = ( + 95B5F52826AADE4B00BDCE89 /* en.xliff */, + ); + path = "Localized Contents"; + sourceTree = "<group>"; + }; + 95B5F52926AADE4B00BDCE89 /* Notes */ = { + isa = PBXGroup; + children = ( + ); + path = Notes; + sourceTree = "<group>"; + }; + 95B5F52B26AADE4B00BDCE89 /* Source Contents */ = { + isa = PBXGroup; + children = ( + 95B5F52C26AADE4B00BDCE89 /* Simoleon */, + ); + path = "Source Contents"; + sourceTree = "<group>"; + }; + 95B5F52C26AADE4B00BDCE89 /* Simoleon */ = { + isa = PBXGroup; + children = ( + 95B5F52D26AADE4B00BDCE89 /* Localizable.strings */, + 95B5F52F26AADE4B00BDCE89 /* InfoPlist.strings */, + ); + path = Simoleon; + sourceTree = "<group>"; + }; 95C5B21B2697752600941585 = { isa = PBXGroup; children = ( 9585BB1026A6B5ED00E3193E /* ConfigTemplate.xcconfig */, 9585BB0F26A6B58500E3193E /* Config.xcconfig */, + 95B5F52526AADE4B00BDCE89 /* Localisation */, 95C5B2262697752600941585 /* Simoleon */, 95C5B23D2697752700941585 /* SimoleonTests */, 95C5B2482697752700941585 /* SimoleonUITests */, @@ -286,7 +346,6 @@ 95C5179026A5DC8E00BC2B24 /* ConditionalWrapper.swift */, 95C5179826A5EC9F00BC2B24 /* FavouriteButton.swift */, 95C517A026A5F6C000BC2B24 /* ResignKeyboard.swift */, - 95D8C8CA26A970F400BCC188 /* SubscriptionFeature.swift */, 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */, 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */, 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */, @@ -383,6 +442,7 @@ hasScannedForEncodings = 0; knownRegions = ( en, + es, Base, ); mainGroup = 95C5B21B2697752600941585; @@ -409,6 +469,10 @@ 95C5B22F2697752700941585 /* Preview Assets.xcassets in Resources */, 95E76436269DFC1A008E9F31 /* LaunchScreen.storyboard in Resources */, 9555933D269B0E0A000FD726 /* CurrencyMetadata.json in Resources */, + 95B5F53126AADE4B00BDCE89 /* en.xliff in Resources */, + 95B5F53326AADE4B00BDCE89 /* Localizable.strings in Resources */, + 95B5F53226AADE4B00BDCE89 /* contents.json in Resources */, + 95B5F53426AADE4B00BDCE89 /* InfoPlist.strings in Resources */, 95C5B22C2697752700941585 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -440,7 +504,6 @@ 950A377826A820F800CAB175 /* DefaultCurrency+CoreDataClass.swift in Sources */, 95C5B2312697752700941585 /* Persistence.swift in Sources */, 9585BB1226A6B71B00E3193E /* ReadConfig.swift in Sources */, - 95D8C8CB26A970F400BCC188 /* SubscriptionFeature.swift in Sources */, 95AEBC9526A03ECB00613729 /* ContentView.swift in Sources */, 95AEBC9B26A04A4200613729 /* CurrencyMetadataModel.swift in Sources */, 95D8C8D526A9E20F00BCC188 /* SubscriberInfo.swift in Sources */, @@ -501,6 +564,27 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + 95B5F52D26AADE4B00BDCE89 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 95B5F52E26AADE4B00BDCE89 /* en */, + 95B5F53526AADE5200BDCE89 /* es */, + ); + name = Localizable.strings; + sourceTree = "<group>"; + }; + 95B5F52F26AADE4B00BDCE89 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 95B5F53026AADE4B00BDCE89 /* en */, + 95B5F53626AADE5500BDCE89 /* es */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 95C5B24C2697752700941585 /* Debug */ = { isa = XCBuildConfiguration; @@ -629,7 +713,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Simoleon/Simoleon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_ASSET_PATHS = "\"Simoleon/Preview Content\""; DEVELOPMENT_TEAM = MTX83R5H8X; ENABLE_PREVIEWS = YES; @@ -654,7 +738,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Simoleon/Simoleon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_ASSET_PATHS = "\"Simoleon/Preview Content\""; DEVELOPMENT_TEAM = MTX83R5H8X; ENABLE_PREVIEWS = YES;
Binary file Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- a/Simoleon/ContentView.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/ContentView.swift Fri Jul 23 13:19:28 2021 +0100 @@ -59,5 +59,6 @@ struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() + .environment(\.locale, .init(identifier: "es")) } }
--- a/Simoleon/Conversion.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Conversion.swift Fri Jul 23 13:19:28 2021 +0100 @@ -62,7 +62,7 @@ CurrencySelector(currencyPair: $currencyPair, showingCurrencySelector: $showingCurrencySelector) } } - .navigationTitle(Text("Conversion", comment: "Navigation title")) + .navigationTitle(Text("Convert", comment: "Navigation title")) .toolbar { ToolbarItem(placement: .cancellationAction) { if isEditing {
--- a/Simoleon/Favourites.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Favourites.swift Fri Jul 23 13:19:28 2021 +0100 @@ -32,6 +32,7 @@ } .onDelete(perform: removeFromFavourites) } + .listStyle(PlainListStyle()) } } .navigationTitle(Text("Favourites", comment: "Navigation title"))
--- a/Simoleon/Helpers/RestoreButton.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Helpers/RestoreButton.swift Fri Jul 23 13:19:28 2021 +0100 @@ -12,9 +12,9 @@ @Binding var showingSubscriptionPaywall: Bool @EnvironmentObject var subscriptionController: SubscriptionController + @State private var alertTitle: LocalizedStringKey = "" + @State private var alertMessage: LocalizedStringKey = "" @State private var restoringPurchases = false - @State private var alertTitle = Text("") - @State private var alertMessage = Text("") @State private var showingAlert = false var body: some View { @@ -26,7 +26,7 @@ } } .alert(isPresented: $showingAlert) { - Alert(title: alertTitle, message: alertMessage, dismissButton: .default(Text("Ok", comment: "Button to dismiss alert"))) + Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok", comment: "Button to dismiss alert"))) } } @@ -38,15 +38,15 @@ subscriptionController.isActive = true showingSubscriptionPaywall = false } else { - alertTitle = Text("No subscriptions found", comment: "Alert title") - alertMessage = Text("You are not subscripted to Simoleon yet.", comment: "Alert message") + alertTitle = LocalizedStringKey("No subscriptions found") + alertMessage = LocalizedStringKey("You are not subscripted to Simoleon yet.") restoringPurchases = false showingAlert = true } if let error = error as NSError? { - alertTitle = Text(error.localizedDescription) - alertMessage = Text(error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io") + alertTitle = LocalizedStringKey(error.localizedDescription) + alertMessage = LocalizedStringKey(error.localizedFailureReason ?? "") showingAlert = true } }
--- a/Simoleon/Helpers/SubscribeButton.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Helpers/SubscribeButton.swift Fri Jul 23 13:19:28 2021 +0100 @@ -12,11 +12,11 @@ @Binding var showingSubscriptionPaywall: Bool @EnvironmentObject var subscriptionController: SubscriptionController - @State private var subscribeButtonText = "" - @State private var showingPrice = false + @State private var price = "" @State private var alertTitle = "" @State private var alertMessage = "" @State private var showingAlert = false + @State private var showingPrice = false var body: some View { Button(action: purchaseMonthlySubscription) { @@ -25,7 +25,7 @@ .overlay( VStack { if showingPrice { - Text(subscribeButtonText) + Text("Subscribe for \(price) / month", comment: "Subscribe button") .foregroundColor(.white) .fontWeight(.semibold) } else { @@ -43,15 +43,14 @@ private func fetchMonthlySubscription() { Purchases.shared.offerings { (offerings, error) in if let product = offerings?.current?.monthly?.product { - let price = formatCurrency(product.priceLocale, product.price) - subscribeButtonText = "Subscribe for \(price) / month" + self.price = formatCurrency(product.priceLocale, product.price) showingPrice = true } if let error = error as NSError? { alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io" - subscribeButtonText = "-" + alertMessage = error.localizedFailureReason ?? "" + price = "-" showingPrice = true showingAlert = true } @@ -73,7 +72,7 @@ if let error = error as NSError? { alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io" + alertMessage = error.localizedFailureReason ?? "" showingPrice = true showingAlert = true } @@ -81,7 +80,7 @@ if let error = error as NSError? { alertTitle = error.localizedDescription - alertMessage = error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io" + alertMessage = error.localizedFailureReason ?? "" showingPrice = true showingAlert = true }
--- a/Simoleon/Helpers/SubscriberInfo.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Helpers/SubscriberInfo.swift Fri Jul 23 13:19:28 2021 +0100 @@ -13,8 +13,8 @@ @State private var expiration: Date? = nil @State private var latestPurchase: Date? = nil @State private var showingAlert = false - @State private var alertTitle = Text("") - @State private var alertMessage = Text("") + @State private var alertTitle = "" + @State private var alertMessage = "" var body: some View { VStack { @@ -42,7 +42,7 @@ .navigationTitle(Text("Information", comment: "Navigation title")) .onAppear(perform: getInfo) .alert(isPresented: $showingAlert) { - Alert(title: alertTitle, message: alertMessage, dismissButton: .default(Text("Ok", comment: "Dismiss alert"))) + Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("Ok", comment: "Dismiss alert"))) } } @@ -53,8 +53,8 @@ self.latestPurchase = purchaserInfo?.entitlements["all"]?.latestPurchaseDate if let error = error as NSError? { - alertTitle = Text(error.localizedDescription) - alertMessage = Text(error.localizedFailureReason ?? "If the problem persists send an email to dmartin@dennistech.io") + alertTitle = error.localizedDescription + alertMessage = error.localizedFailureReason ?? "" showingAlert = true } }
--- a/Simoleon/Helpers/SubscriptionFeature.swift Thu Jul 22 22:30:54 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// -// SubscriptionFeature.swift -// Simoleon -// -// Created by Dennis Concepción Martín on 22/07/2021. -// - -import SwiftUI - -struct SubscriptionFeature: View { - var symbol: String - var title: LocalizedStringKey - var text: LocalizedStringKey - var colour: Color - - var body: some View { - HStack(alignment:.top) { - Image(systemName: symbol) - .foregroundColor(colour) - .font(.title) - - VStack(alignment: .leading) { - Text(title, comment: "Title of subscription feature") - .font(.headline) - - Text(text, comment: "Description of subscription feature") - } - } - } -} - -struct SubscriptionFeature_Previews: PreviewProvider { - static var previews: some View { - SubscriptionFeature( - symbol: "star.circle.fill", - title: "Favourite currencies", - text: "Save your favourite currencies to access them quickly.", - colour: Color(.systemYellow) - ) - } -}
--- a/Simoleon/Info.plist Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Info.plist Fri Jul 23 13:19:28 2021 +0100 @@ -2,8 +2,6 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> - <key>PURCHASES_KEY</key> - <string>$(PURCHASES_KEY)</string> <key>API_KEY</key> <string>$(API_KEY)</string> <key>API_URL</key> @@ -28,6 +26,8 @@ <string>$(CURRENT_PROJECT_VERSION)</string> <key>LSRequiresIPhoneOS</key> <true/> + <key>PURCHASES_KEY</key> + <string>$(PURCHASES_KEY)</string> <key>UIApplicationSceneManifest</key> <dict> <key>UIApplicationSupportsMultipleScenes</key>
--- a/Simoleon/Subscription.swift Thu Jul 22 22:30:54 2021 +0100 +++ b/Simoleon/Subscription.swift Fri Jul 23 13:19:28 2021 +0100 @@ -34,33 +34,58 @@ Divider() - SubscriptionFeature( - symbol: "star.circle.fill", - title: "Favourite currencies", - text: "Save your favourite currencies to access them quickly.", - colour: Color(.systemYellow) - ) + HStack(alignment:.top) { + Image(systemName: "star.circle.fill") + .foregroundColor(Color(.systemYellow)) + .font(.title) + + VStack(alignment: .leading) { + Text("Favourite currencies", comment: "Subscription feature title") + .font(.headline) + + Text("Save your favourite currencies to access them quickly.", comment: "Subscription feature description") + } + } - SubscriptionFeature( - symbol: "flag.circle.fill", - title: "Over 170 currencies", - text: "Have access to almost every currency of the world.", - colour: Color(.systemRed) - ) + HStack(alignment:.top) { + Image(systemName: "flag.circle.fill") + .foregroundColor(Color(.systemRed)) + .font(.title) + + VStack(alignment: .leading) { + Text("Over 170 currencies", comment: "Subscription feature title") + .font(.headline) + + Text("Have access to almost every currency of the world.", comment: "Subscription feature description") + } + } - SubscriptionFeature( - symbol: "icloud.circle.fill", - title: "Simoleon on all your devices", - text: "Your settings and favourite currencies in all your devices.", - colour: Color(.systemBlue) - ) + HStack(alignment:.top) { + Image(systemName: "icloud.circle.fill") + .foregroundColor(Color(.systemBlue)) + .font(.title) + + VStack(alignment: .leading) { + Text("Simoleon on all your devices", comment: "Subscription feature title") + .font(.headline) + + Text("Your settings and favourite currencies in all your devices.", comment: "Subscription feature description") + } + } - SubscriptionFeature( - symbol: "bitcoinsign.circle.fill", - title: "Cryptos and commodities", - text: "Convert your currency between cryptos, gold, and silver.", - colour: Color(.systemOrange) - ) + HStack(alignment:.top) { + Image(systemName: "bitcoinsign.circle.fill") + .foregroundColor(Color(.systemOrange)) + .font(.title) + + VStack(alignment: .leading) { + Text("Cryptos and commodities", comment: "Subscription feature title") + .font(.headline) + + Text("Convert your currency between cryptos, gold, and silver.", comment: "Subscription feature description") + } + } + Spacer() SubscribeButton(showingSubscriptionPaywall: $showingSubscriptionPaywall) HStack {