diff --git a/.buildkite/commands/build-and-test-app-store.sh b/.buildkite/commands/build-and-test-app-store.sh index b76de579d..4e49b6e9c 100644 --- a/.buildkite/commands/build-and-test-app-store.sh +++ b/.buildkite/commands/build-and-test-app-store.sh @@ -1,6 +1,4 @@ -#! /bin/bash - -set -eu +#! /bin/bash -eu echo "--- :rubygems: Setting up Gems" install_gems diff --git a/.buildkite/commands/build-and-test.sh b/.buildkite/commands/build-and-test.sh index 0f14b59fa..0db9c85c9 100644 --- a/.buildkite/commands/build-and-test.sh +++ b/.buildkite/commands/build-and-test.sh @@ -1,6 +1,4 @@ -#! /bin/bash - -set -eu +#! /bin/bash -eu echo "--- :rubygems: Setting up Gems" install_gems diff --git a/.buildkite/commands/build-and-upload-release.sh b/.buildkite/commands/build-and-upload-release.sh index 8a984c67e..ae3d45e7c 100644 --- a/.buildkite/commands/build-and-upload-release.sh +++ b/.buildkite/commands/build-and-upload-release.sh @@ -1,6 +1,4 @@ -#! /bin/bash - -set -eu +#! /bin/bash -eu echo "--- :rubygems: Setting up Gems" install_gems diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 712f0f3cb..a392465d7 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -2,10 +2,10 @@ common_params: # Common plugin settings to use with the `plugins` key. - &common_plugins - - automattic/a8c-ci-toolkit#2.15.0 + - automattic/a8c-ci-toolkit#3.0.1 # Common environment values to use with the `env` key. - &common_env - IMAGE_ID: xcode-14.3.1 + IMAGE_ID: xcode-15.2-xl # This is the default pipeline – it will build and test the app steps: diff --git a/.buildkite/release-builds.yml b/.buildkite/release-builds.yml index b958e3a28..e6cb70ac8 100644 --- a/.buildkite/release-builds.yml +++ b/.buildkite/release-builds.yml @@ -2,10 +2,10 @@ common_params: # Common plugin settings to use with the `plugins` key. - &common_plugins - - automattic/a8c-ci-toolkit#2.15.0 + - automattic/a8c-ci-toolkit#3.0.1 # Common environment values to use with the `env` key. - &common_env - IMAGE_ID: xcode-14.3.1 + IMAGE_ID: xcode-15.2-xl # This is the default pipeline – it will build and test the app steps: diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 65bd9614e..2416934a4 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,3 +1,7 @@ +2.21 +----- + + 2.20 ----- - [Internal] Updated release-toolkit to 9.1.0 diff --git a/Simplenote.xcodeproj/project.pbxproj b/Simplenote.xcodeproj/project.pbxproj index ec7f8162a..c7fb6b47c 100644 --- a/Simplenote.xcodeproj/project.pbxproj +++ b/Simplenote.xcodeproj/project.pbxproj @@ -21,7 +21,8 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1E077730C2108B885911E3B5 /* Pods_Automattic_Simplenote_AppStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86F72E095CFE66DE228AE8CA /* Pods_Automattic_Simplenote_AppStore.framework */; }; + 24CB911B2B75601F00C9490F /* Pods_Automattic_Simplenote_AppStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86F72E095CFE66DE228AE8CA /* Pods_Automattic_Simplenote_AppStore.framework */; }; + 24CB911C2B75601F00C9490F /* Pods_Automattic_Simplenote_AppStore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 86F72E095CFE66DE228AE8CA /* Pods_Automattic_Simplenote_AppStore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 2614F1DF1405A0B10031AE94 /* Note.m in Sources */ = {isa = PBXBuildFile; fileRef = 2614F1DC1405A0B10031AE94 /* Note.m */; }; 2614F1E01405A0B10031AE94 /* Tag.m in Sources */ = {isa = PBXBuildFile; fileRef = 2614F1DE1405A0B10031AE94 /* Tag.m */; }; 2614F1E51405A0C60031AE94 /* Simplenote.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 2614F1E21405A0C60031AE94 /* Simplenote.xcdatamodeld */; }; @@ -512,6 +513,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 24CB911D2B75601F00C9490F /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 24CB911C2B75601F00C9490F /* Pods_Automattic_Simplenote_AppStore.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; 71881504155F487D001F2E30 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -900,9 +912,9 @@ 466FFEE117CC10A800399652 /* Cocoa.framework in Frameworks */, B55E98FD1BE03E3F0087CA48 /* Security.framework in Frameworks */, B5609AE824EEC9860097777A /* SimplenoteSearch in Frameworks */, + 24CB911B2B75601F00C9490F /* Pods_Automattic_Simplenote_AppStore.framework in Frameworks */, BA78AF712B5B2BC300DCF896 /* AutomatticTracks in Frameworks */, B5609AF024EF171D0097777A /* SimplenoteFoundation in Frameworks */, - 1E077730C2108B885911E3B5 /* Pods_Automattic_Simplenote_AppStore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1714,8 +1726,8 @@ 466FFEA717CC10A800399652 /* Sources */, 466FFEDC17CC10A800399652 /* Frameworks */, 466FFEE517CC10A800399652 /* Resources */, - B51D44821945EF7900496889 /* Set copyright year */, 4E51756AEE6CFE89EAD49829 /* [CP] Embed Pods Frameworks */, + 24CB911D2B75601F00C9490F /* Embed Frameworks */, ); buildRules = ( ); @@ -2000,20 +2012,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - B51D44821945EF7900496889 /* Set copyright year */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Set copyright year"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Set the copyright year to the current year in the Info.plist\nplist=\"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}\"\nyear=$(date \"+%Y\")\ncopyright=\"Copyright © $year Automattic. All rights reserved.\"\n\n/usr/libexec/PlistBuddy -c \"Set :NSHumanReadableCopyright $copyright\" $plist\n"; - }; B51D44911945FEFD00496889 /* Sparkle XPC Code Sign For Sandbox */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -2809,12 +2807,13 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Simplenote.entitlements; CODE_SIGN_IDENTITY = "Mac Developer"; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = PZYM8XX95Q; + "DEVELOPMENT_TEAM[sdk=macosx*]" = ""; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -2836,7 +2835,6 @@ LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 12.0; OTHER_CFLAGS = "${inherited}"; - OTHER_CODE_SIGN_FLAGS = "--deep"; OTHER_LDFLAGS = ( "-ObjC", "-all_load", @@ -2847,6 +2845,7 @@ PRODUCT_NAME = Simplenote; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SDKROOT = macosx; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -2888,7 +2887,6 @@ LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 12.0; OTHER_CFLAGS = "${inherited}"; - OTHER_CODE_SIGN_FLAGS = "--deep"; OTHER_LDFLAGS = ( "-ObjC", "-all_load", diff --git a/Simplenote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Simplenote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 862001aea..7f3cf68a9 100644 --- a/Simplenote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Simplenote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,34 +1,68 @@ { - "object": { - "pins": [ - { - "package": "SimplenoteFoundation", - "repositoryURL": "git@github.com:Automattic/SimplenoteFoundation-Swift.git", - "state": { - "branch": null, - "revision": "2731e4d28c42d394ddc62cd864d9f7ff96759228", - "version": "1.3.0" - } - }, - { - "package": "SimplenoteInterlinks", - "repositoryURL": "git@github.com:Automattic/SimplenoteInterlinks-Swift.git", - "state": { - "branch": null, - "revision": "be3827a5bf05c5349ed62126c3e1dc60a2a6cee6", - "version": "1.1.0" - } - }, - { - "package": "SimplenoteSearch", - "repositoryURL": "git@github.com:Automattic/SimplenoteSearch-Swift.git", - "state": { - "branch": null, - "revision": "499d2809d169fcbeb9ff75568d9f1f937f290ffc", - "version": "1.3.0" - } + "pins" : [ + { + "identity" : "automattic-tracks-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Automattic/Automattic-Tracks-iOS", + "state" : { + "revision" : "b6979ef69b4b094c8809ba83661222dcd0d7667e", + "version" : "3.2.0" } - ] - }, - "version": 1 + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "b847a202a517a90763e8fd0656d8028aeee7b78d", + "version" : "8.20.0" + } + }, + { + "identity" : "simplenotefoundation-swift", + "kind" : "remoteSourceControl", + "location" : "git@github.com:Automattic/SimplenoteFoundation-Swift.git", + "state" : { + "revision" : "2731e4d28c42d394ddc62cd864d9f7ff96759228", + "version" : "1.3.0" + } + }, + { + "identity" : "simplenoteinterlinks-swift", + "kind" : "remoteSourceControl", + "location" : "git@github.com:Automattic/SimplenoteInterlinks-Swift.git", + "state" : { + "revision" : "be3827a5bf05c5349ed62126c3e1dc60a2a6cee6", + "version" : "1.1.0" + } + }, + { + "identity" : "simplenotesearch-swift", + "kind" : "remoteSourceControl", + "location" : "git@github.com:Automattic/SimplenoteSearch-Swift.git", + "state" : { + "revision" : "499d2809d169fcbeb9ff75568d9f1f937f290ffc", + "version" : "1.3.0" + } + }, + { + "identity" : "swift-sodium", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jedisct1/swift-sodium", + "state" : { + "revision" : "4f9164a0a2c9a6a7ff53a2833d54a5c79c957342", + "version" : "0.9.1" + } + }, + { + "identity" : "uideviceidentifier", + "kind" : "remoteSourceControl", + "location" : "https://github.com/squarefrog/UIDeviceIdentifier", + "state" : { + "revision" : "4699794b08bb79a4d77785edaba6ea739e298e4b", + "version" : "2.3.0" + } + } + ], + "version" : 2 } diff --git a/Simplenote/Resources/AppStoreStrings.pot b/Simplenote/Resources/AppStoreStrings.pot index 5ef0f7ec9..edc1db29b 100644 --- a/Simplenote/Resources/AppStoreStrings.pot +++ b/Simplenote/Resources/AppStoreStrings.pot @@ -46,9 +46,8 @@ msgctxt "app_store_keywords" msgid "simplenote,note,notes,sync,syncing,list,todo,simple,markdown,ideas" msgstr "" -msgctxt "v2.19-whats-new" +msgctxt "v2.20-whats-new" msgid "" -"- Fixed an issue with horizontal clipping where the last character at the end of the line wasn't displayed completely\n" -"- Font size step has been decreased to 1pt\n" +"• Behind-the-scenes reliability improvements\n" msgstr "" diff --git a/Simplenote/Resources/release_notes.txt b/Simplenote/Resources/release_notes.txt index 65bbbaacd..81d1894ea 100644 --- a/Simplenote/Resources/release_notes.txt +++ b/Simplenote/Resources/release_notes.txt @@ -1,2 +1 @@ -- Fixed an issue with horizontal clipping where the last character at the end of the line wasn't displayed completely -- Font size step has been decreased to 1pt +• Behind-the-scenes reliability improvements diff --git a/Simplenote/cy.lproj/Localizable.strings b/Simplenote/cy.lproj/Localizable.strings index 29e1427cf..57278dfbe 100644 --- a/Simplenote/cy.lproj/Localizable.strings +++ b/Simplenote/cy.lproj/Localizable.strings @@ -3,471 +3,46 @@ /* Generator: GlotPress/2.4.0-alpha */ /* Language: cy_GB */ -/* Presented when there are multiple selected notes */ -"%d Selected" = "%d Selected"; - -/* Password Requirement: Length */ -"- Minimum of 8 characters" = "- Minimum of 8 characters"; - -/* Password Requirement: Special Characters */ -"- Neither tabs nor newlines are allowed" = "- Neither tabs nor newlines are allowed"; - -/* Password Requirement: Email Match */ -"- Password cannot match email" = "- Password cannot match email"; - -/* A link to more information about our privacy policy */ -"About Analytics and Privacy" = "About Analytics and Privacy"; - -/* Email verification required alert title */ -"Account Verification Required" = "Account Verification Required"; - -/* Account label */ -"Account:" = "Account:"; - -/* Text presented when sharing a Note */ -"Add an email address as a tag to share this note with someone. Then you can both make changes to it." = "Add an email address as a tag to share this note with someone. Then you can both make changes to it."; - -/* Title of the all notes filter - Title of the view that displays all your notes */ -"All Notes" = "All Notes"; - -/* Link to sign in to an account */ -"Already have an account?" = "Already have an account?"; - -/* Delete account confirmation instructions */ -"An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation." = "An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation."; - -/* Deletion error message */ -"An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help." = "An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help."; - -/* Sign in error message */ -"An error was encountered while signing in." = "An error was encountered while signing in."; - -/* Hiring Details */ -"Are you a developer? Automattic is Hiring." = "Are you a developer? Automattic is Hiring."; - -/* Error for authorization failure */ -"Authorization failed" = "Authorization failed"; - -/* Error for bad email or password */ -"Bad email or password" = "Bad email or password"; - -/* Delete account confirmation alert message */ -"By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible." = "By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible."; - -/* Cancel button title - Cancel the action - Dismiss change password alert action - Password Reset: Cancel */ -"Cancel" = "Cancel"; - -/* Error message title. Review you account screen */ -"Cannot Confirm Account" = "Cannot Confirm Account"; - -/* Error message title. Verify your email screen */ -"Cannot Send Verification Email" = "Cannot Send Verification Email"; - -/* Change email button -> Review you account screen */ -"Change Account Email" = "Change Account Email"; - -/* Change password action */ -"Change Password" = "Change Password"; - -/* Number of characters in the note */ -"Characters" = "Characters"; - -/* Title for delete account succes alert */ -"Check Your Email" = "Check Your Email"; - -/* Vefification sent alert title */ -"Check your Email" = "Check your Email"; - /* Collaborate Menu Action */ "Collaborate" = "Cydweithredu"; -/* Analytics Toggle Text */ -"Collect Information" = "Collect Information"; - -/* Compromised passsword alert title */ -"Compromised Password" = "Compromised Password"; - /* Condensed note list button label */ "Condensed Note List" = "Rhestr Gryno o Nodiadau"; /* Confirm button -> Review you account screen */ "Confirm" = "Cadarnhau"; -/* Placeholder text for confirmation field */ -"Confirm Password" = "Confirm Password"; - -/* Copy Link Menu Action */ -"Copy Internal Link" = "Copy Internal Link"; - -/* Alert dialog title displayed on sign in error */ -"Couldn't Sign In" = "Couldn't Sign In"; - -/* Note Creation Date */ -"Created" = "Created"; - -/* Sort Mode: Creation Date, descending */ -"Created: Newest" = "Created: Newest"; - -/* Sort Mode: Creation Date, ascending */ -"Created: Oldest" = "Created: Oldest"; - -/* Dark theme name */ -"Dark" = "Dark"; - -/* Delete account button label - Delete account title and action */ -"Delete Account" = "Delete Account"; - -/* Delete Forever List Action */ -"Delete Forever" = "Delete Forever"; - -/* Delete notes and sign out of the app */ -"Delete Notes" = "Delete Notes"; - /* Delete Tag Action */ "Delete Tag" = "Dileu tag"; -/* Signup Support Text */ -"Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help." = "Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help."; - -/* Closes the Privacy View */ -"Dismiss" = "Dismiss"; - -/* Duplicate Note List Action */ -"Duplicate Note" = "Duplicate Note"; - /* Placeholder text for login field */ "Email" = "E-bost"; -/* Empty Trash Action */ -"Empty Trash" = "Empty Trash"; - /* Deletion Error Title */ "Error" = "Gwall"; -/* Export All Notes Action */ -"Export Everything" = "Export Everything"; - -/* Get Help Description Label */ -"FAQ or contact us" = "FAQ or contact us"; - -/* Forgot Password Button */ -"Forgot your Password?" = "Forgot your Password?"; - -/* Full line length button label */ -"Full" = "Full"; - -/* FAQ or contact us */ -"Get Help" = "Get Help"; - -/* Back Button Title */ -"Go Back" = "Go Back"; - -/* A description about how we use anayltics */ -"Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information." = "Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information."; - -/* macOS MenuItem that causes the Tag List to be hidden */ -"Hide Sidebar" = "Hide Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be hidden */ -"Hide Status Bar" = "Hide Status Bar"; - /* History Menu Action */ "History" = "Hanes"; -/* Note Metrics Title */ -"Information" = "Information"; - -/* Tooltip: Insert Checklist */ -"Insert Checklist" = "Insert Checklist"; - -/* Reference Last Modification Date */ -"Last modified" = "Last modified"; - -/* Light theme name */ -"Light" = "Light"; - -/* Title of button for logging in - Title of button for login */ -"Log In" = "Log In"; - -/* Log out button label */ -"Log Out" = "Log Out"; - -/* button title for wp.com sign in button */ -"Log in with WordPress.com" = "Log in with WordPress.com"; - -/* Displayed temporarily while logging in */ -"Logging In..." = "Logging In..."; - -/* Markdown Menu Action */ -"Markdown" = "Markdown"; - -/* Tooltip: Markdown Preview */ -"Markdown Preview" = "Markdown Preview"; - -/* Tooltip: Note Metrics */ -"Metrics" = "Metrics"; - -/* Note Modification Date */ -"Modified" = "Modified"; - -/* Sort Mode: Modified Date, descending */ -"Modified: Newest" = "Modified: Newest"; - -/* Sort Mode: Modified Date, ascending */ -"Modified: Oldest" = "Modified: Oldest"; - -/* Tooltip: More Actions */ -"More" = "More"; - -/* Move to Trash List Action - Trash Menu Action */ -"Move to Trash" = "Move to Trash"; - -/* Sort Mode: Alphabetically, ascending */ -"Name: A-Z" = "Name: A-Z"; - -/* Sort Mode: Alphabetically, descending */ -"Name: Z-A" = "Name: Z-A"; - -/* Narrow line length button label */ -"Narrow" = "Narrow"; - -/* Link to create an account */ -"Need an account?" = "Need an account?"; - -/* Empty Note Placeholder */ -"New note..." = "New note..."; - -/* No Notes Available */ -"No Notes" = "No Notes"; - /* No Search Results */ "No Results" = "Dim Canlyniadau"; -/* Placeholder displayed when a note hasn't been published. */ -"Not Published" = "Not Published"; - -/* Error when you enter a bad email address */ -"Not a valid email address" = "Not a valid email address"; - -/* Note line length label */ -"Note line length:" = "Note line length:"; - -/* Note Sort Order label */ -"Note sort order:" = "Note sort order:"; - -/* Dismisses an AlertController - OK button in error alert dialog */ -"OK" = "OK"; - -/* Email unverified alert dismiss */ -"Ok" = "Ok"; - /* Placeholder text for password field */ "Password" = "Cyfrinair"; -/* Message displayed when password is invalid (Signup) */ -"Password cannot match email" = "Password cannot match email"; - /* Message displayed when password is too short. The %%d is a placeholder for a numeral. Please preserve it! */ "Password must contain at least %d characters" = "Rhaid i'r cyfrinair gynnwys o leiaf %d nod.\n\nRhaid i'r cyfrinair gynnwys o leiaf %d nod."; -/* Message displayed when a password contains a disallowed character */ -"Password must not contain tabs nor newlines" = "Password must not contain tabs nor newlines"; - -/* Password Validation: Confirmation doesn't match */ -"Passwords do not match" = "Passwords do not match"; - /* List Pin Action Pin to Top Menu Action */ "Pin to Top" = "Pinio'r i'r top"; -/* Error message displayed when user has not verified their WordPress.com account */ -"Please activate your WordPress.com account via email and try again." = "Please activate your WordPress.com account via email and try again."; - -/* Error message. Account verification */ -"Please check your network settings and try again." = "Please check your network settings and try again."; - -/* Privacy Policy's Title */ -"Privacy Policy" = "Privacy Policy"; - /* Publish Menu Action */ "Publish" = "Cyhoeddi"; -/* Text presented when the note is about to be published */ -"Publish this note to a web page. The page will stay updated with the contents of your note." = "Publish this note to a web page. The page will stay updated with the contents of your note."; - -/* Publish to WebPage Action */ -"Publish to Web Page" = "Publish to Web Page"; - -/* Displayed during a Publish Operation */ -"Publishing..." = "Publishing..."; - /* References Title */ "References" = "Cyfeiriadau"; -/* Rename Tag Action */ -"Rename Tag" = "Rename Tag"; - -/* Title for account deletion confirm button */ -"Request Account Deletion" = "Request Account Deletion"; - -/* Request error alert title */ -"Request Error" = "Request Error"; - -/* Resend email button -> Verify your email screen */ -"Resend Email" = "Resend Email"; - -/* Send email verificaiton action */ -"Resend Verification Email" = "Resend Verification Email"; - -/* Password Reset: Proceed */ -"Reset" = "Reset"; - -/* Restore List Action - Tooltip: Restore a trashed note */ -"Restore" = "Restore"; - -/* Title -> Review you account screen */ -"Review Your Account" = "Review Your Account"; - -/* Search Field Placeholder */ -"Search notes" = "Search notes"; - -/* StatusBar Search Indicator */ -"Searching" = "Searching"; - -/* Share Menu Action */ -"Share" = "Share"; - -/* Share analytics checkbox label */ -"Share Analytics" = "Share Analytics"; - -/* Cookie Policy Legend */ -"Share information with our analytics tool about your use of services while logged into your Simplenote.com account." = "Share information with our analytics tool about your use of services while logged into your Simplenote.com account."; - -/* macOS MenuItem that causes the Tag List to be presented */ -"Show Sidebar" = "Show Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be visible */ -"Show Status Bar" = "Show Status Bar"; - /* Title of button for signing up */ "Sign Up" = "Cofrestru"; -/* Displayed temoprarily while signing up */ -"Signing Up..." = "Signing Up..."; - -/* Alert message displayed when an account has unsynced notes */ -"Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App." = "Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App."; - -/* Text to display on OSX cancel button */ -"Skip" = "Skip"; - -/* Sort tags alphabetically checkbox label */ -"Sort Tags Alphabetically" = "Sort Tags Alphabetically"; - -/* Default system theme name */ -"System Appearance" = "System Appearance"; - -/* Placeholder text in the Tags View */ -"Tag..." = "Tag..."; - -/* Tags Section Name */ -"Tags" = "Tags"; - -/* Text size control label */ -"Text size:" = "Text size:"; - -/* Error when address is in use */ -"That email is already being used" = "That email is already being used"; - -/* Theme label */ -"Theme:" = "Theme:"; - -/* Request error alert message */ -"There was an preparing your verification email, please try again later" = "There was an preparing your verification email, please try again later"; - -/* Privacy Policy */ -"This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy." = "This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy."; - -/* Compromised password alert message */ -"This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again." = "This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again."; - -/* Tooltip: Restore a trashed note */ -"Toggle Sidebar" = "Toggle Sidebar"; - -/* Error for too many login attempts */ -"Too many log in attempts. Try again later." = "Too many log in attempts. Try again later."; - -/* Title for the Trash filter - Title of the view that displays all your deleted notes */ -"Trash" = "Trash"; - -/* Title for Tag with no Name */ -"Unnamed Tag" = "Unnamed Tag"; - -/* Unpublish Note Action */ -"Unpublish" = "Unpublish"; - -/* Displayed during an Unpublish Operation */ -"Unpublishing..." = "Unpublishing..."; - -/* Alert title displayed in when an account has unsynced notes */ -"Unsynced Notes Detected" = "Unsynced Notes Detected"; - -/* Untagged Notes Title */ -"Untagged" = "Untagged"; - -/* Untagged Notes Filter */ -"Untagged Notes" = "Untagged Notes"; - -/* Title -> Verify your email screen */ -"Verify Your Email" = "Verify Your Email"; - -/* Label for the current version of a note */ -"Version" = "Version"; - -/* Version displayed in the about screen */ -"Version %@" = "Version %@"; - -/* Visit app.simplenote.com in the browser */ -"Visit Web App" = "Visit Web App"; - -/* Generic error */ -"We're having problems. Please try again soon." = "We're having problems. Please try again soon."; - -/* Confirmation that an email has been sent - Message -> Verify your email screen. Parameter: %1$@ - email address */ -"We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions."; - -/* Signup Body Text */ -"We’ve sent an email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent an email to %1$@. Please check your inbox and follow the instructions."; - -/* Number of words in the note */ -"Words" = "Words"; - -/* Hiring Title */ -"Work with Us" = "Work with Us"; - -/* Message -> Review you account screen. Parameter: %1$@ - email address */ -"You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address." = "You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address."; - -/* Erro for un verified email */ -"You must verify your email before being able to login." = "You must verify your email before being able to login."; - -/* Error when you're not connected */ -"You're not connected to the internet" = "You're not connected to the internet"; - -/* Password Requirements: Title */ -"Your password is insecure and must be reset. The password requirements are:" = "Your password is insecure and must be reset. The password requirements are:"; - -/* Search Operator for tags. Please preserve the semicolons */ -"tag:" = "tag:"; - diff --git a/Simplenote/el.lproj/Localizable.strings b/Simplenote/el.lproj/Localizable.strings index 446413147..4d65bf568 100644 --- a/Simplenote/el.lproj/Localizable.strings +++ b/Simplenote/el.lproj/Localizable.strings @@ -3,471 +3,28 @@ /* Generator: GlotPress/2.4.0-alpha */ /* Language: el_GR */ -/* Presented when there are multiple selected notes */ -"%d Selected" = "%d Selected"; - -/* Password Requirement: Length */ -"- Minimum of 8 characters" = "- Minimum of 8 characters"; - -/* Password Requirement: Special Characters */ -"- Neither tabs nor newlines are allowed" = "- Neither tabs nor newlines are allowed"; - -/* Password Requirement: Email Match */ -"- Password cannot match email" = "- Password cannot match email"; - -/* A link to more information about our privacy policy */ -"About Analytics and Privacy" = "About Analytics and Privacy"; - -/* Email verification required alert title */ -"Account Verification Required" = "Account Verification Required"; - -/* Account label */ -"Account:" = "Account:"; - -/* Text presented when sharing a Note */ -"Add an email address as a tag to share this note with someone. Then you can both make changes to it." = "Add an email address as a tag to share this note with someone. Then you can both make changes to it."; - -/* Title of the all notes filter - Title of the view that displays all your notes */ -"All Notes" = "All Notes"; - -/* Link to sign in to an account */ -"Already have an account?" = "Already have an account?"; - -/* Delete account confirmation instructions */ -"An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation." = "An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation."; - -/* Deletion error message */ -"An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help." = "An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help."; - -/* Sign in error message */ -"An error was encountered while signing in." = "An error was encountered while signing in."; - -/* Hiring Details */ -"Are you a developer? Automattic is Hiring." = "Are you a developer? Automattic is Hiring."; - -/* Error for authorization failure */ -"Authorization failed" = "Authorization failed"; - -/* Error for bad email or password */ -"Bad email or password" = "Bad email or password"; - -/* Delete account confirmation alert message */ -"By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible." = "By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible."; - -/* Cancel button title - Cancel the action - Dismiss change password alert action - Password Reset: Cancel */ -"Cancel" = "Cancel"; - -/* Error message title. Review you account screen */ -"Cannot Confirm Account" = "Cannot Confirm Account"; - -/* Error message title. Verify your email screen */ -"Cannot Send Verification Email" = "Cannot Send Verification Email"; - -/* Change email button -> Review you account screen */ -"Change Account Email" = "Change Account Email"; - -/* Change password action */ -"Change Password" = "Change Password"; - -/* Number of characters in the note */ -"Characters" = "Characters"; - -/* Title for delete account succes alert */ -"Check Your Email" = "Check Your Email"; - -/* Vefification sent alert title */ -"Check your Email" = "Check your Email"; - /* Collaborate Menu Action */ "Collaborate" = "Συνεργασία"; -/* Analytics Toggle Text */ -"Collect Information" = "Collect Information"; - -/* Compromised passsword alert title */ -"Compromised Password" = "Compromised Password"; - -/* Condensed note list button label */ -"Condensed Note List" = "Condensed Note List"; - /* Confirm button -> Review you account screen */ "Confirm" = "Επιβεβαίωση"; -/* Placeholder text for confirmation field */ -"Confirm Password" = "Confirm Password"; - -/* Copy Link Menu Action */ -"Copy Internal Link" = "Copy Internal Link"; - -/* Alert dialog title displayed on sign in error */ -"Couldn't Sign In" = "Couldn't Sign In"; - -/* Note Creation Date */ -"Created" = "Created"; - -/* Sort Mode: Creation Date, descending */ -"Created: Newest" = "Created: Newest"; - -/* Sort Mode: Creation Date, ascending */ -"Created: Oldest" = "Created: Oldest"; - -/* Dark theme name */ -"Dark" = "Dark"; - -/* Delete account button label - Delete account title and action */ -"Delete Account" = "Delete Account"; - -/* Delete Forever List Action */ -"Delete Forever" = "Delete Forever"; - -/* Delete notes and sign out of the app */ -"Delete Notes" = "Delete Notes"; - -/* Delete Tag Action */ -"Delete Tag" = "Delete Tag"; - -/* Signup Support Text */ -"Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help." = "Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help."; - -/* Closes the Privacy View */ -"Dismiss" = "Dismiss"; - -/* Duplicate Note List Action */ -"Duplicate Note" = "Duplicate Note"; - -/* Placeholder text for login field */ -"Email" = "Email"; - -/* Empty Trash Action */ -"Empty Trash" = "Empty Trash"; - -/* Deletion Error Title */ -"Error" = "Error"; - -/* Export All Notes Action */ -"Export Everything" = "Export Everything"; - -/* Get Help Description Label */ -"FAQ or contact us" = "FAQ or contact us"; - -/* Forgot Password Button */ -"Forgot your Password?" = "Forgot your Password?"; - -/* Full line length button label */ -"Full" = "Full"; - -/* FAQ or contact us */ -"Get Help" = "Get Help"; - -/* Back Button Title */ -"Go Back" = "Go Back"; - -/* A description about how we use anayltics */ -"Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information." = "Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information."; - -/* macOS MenuItem that causes the Tag List to be hidden */ -"Hide Sidebar" = "Hide Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be hidden */ -"Hide Status Bar" = "Hide Status Bar"; - /* History Menu Action */ "History" = "Ιστορικό"; -/* Note Metrics Title */ -"Information" = "Information"; - -/* Tooltip: Insert Checklist */ -"Insert Checklist" = "Insert Checklist"; - -/* Reference Last Modification Date */ -"Last modified" = "Last modified"; - -/* Light theme name */ -"Light" = "Light"; - -/* Title of button for logging in - Title of button for login */ -"Log In" = "Log In"; - -/* Log out button label */ -"Log Out" = "Log Out"; - -/* button title for wp.com sign in button */ -"Log in with WordPress.com" = "Log in with WordPress.com"; - -/* Displayed temporarily while logging in */ -"Logging In..." = "Logging In..."; - -/* Markdown Menu Action */ -"Markdown" = "Markdown"; - -/* Tooltip: Markdown Preview */ -"Markdown Preview" = "Markdown Preview"; - -/* Tooltip: Note Metrics */ -"Metrics" = "Metrics"; - -/* Note Modification Date */ -"Modified" = "Modified"; - -/* Sort Mode: Modified Date, descending */ -"Modified: Newest" = "Modified: Newest"; - -/* Sort Mode: Modified Date, ascending */ -"Modified: Oldest" = "Modified: Oldest"; - -/* Tooltip: More Actions */ -"More" = "More"; - -/* Move to Trash List Action - Trash Menu Action */ -"Move to Trash" = "Move to Trash"; - -/* Sort Mode: Alphabetically, ascending */ -"Name: A-Z" = "Name: A-Z"; - -/* Sort Mode: Alphabetically, descending */ -"Name: Z-A" = "Name: Z-A"; - -/* Narrow line length button label */ -"Narrow" = "Narrow"; - -/* Link to create an account */ -"Need an account?" = "Need an account?"; - -/* Empty Note Placeholder */ -"New note..." = "New note..."; - -/* No Notes Available */ -"No Notes" = "No Notes"; - /* No Search Results */ "No Results" = "Δεν βρέθηκε"; -/* Placeholder displayed when a note hasn't been published. */ -"Not Published" = "Not Published"; - -/* Error when you enter a bad email address */ -"Not a valid email address" = "Not a valid email address"; - -/* Note line length label */ -"Note line length:" = "Note line length:"; - -/* Note Sort Order label */ -"Note sort order:" = "Note sort order:"; - -/* Dismisses an AlertController - OK button in error alert dialog */ -"OK" = "OK"; - -/* Email unverified alert dismiss */ -"Ok" = "Ok"; - /* Placeholder text for password field */ "Password" = "Κωδικός"; -/* Message displayed when password is invalid (Signup) */ -"Password cannot match email" = "Password cannot match email"; - -/* Message displayed when password is too short. The %%d is a placeholder for a numeral. Please preserve it! */ -"Password must contain at least %d characters" = "Password must contain at least %d characters"; - -/* Message displayed when a password contains a disallowed character */ -"Password must not contain tabs nor newlines" = "Password must not contain tabs nor newlines"; - -/* Password Validation: Confirmation doesn't match */ -"Passwords do not match" = "Passwords do not match"; - /* List Pin Action Pin to Top Menu Action */ "Pin to Top" = "Επισ\/νση"; -/* Error message displayed when user has not verified their WordPress.com account */ -"Please activate your WordPress.com account via email and try again." = "Please activate your WordPress.com account via email and try again."; - -/* Error message. Account verification */ -"Please check your network settings and try again." = "Please check your network settings and try again."; - -/* Privacy Policy's Title */ -"Privacy Policy" = "Privacy Policy"; - /* Publish Menu Action */ "Publish" = "Αποστολή"; -/* Text presented when the note is about to be published */ -"Publish this note to a web page. The page will stay updated with the contents of your note." = "Publish this note to a web page. The page will stay updated with the contents of your note."; - -/* Publish to WebPage Action */ -"Publish to Web Page" = "Publish to Web Page"; - -/* Displayed during a Publish Operation */ -"Publishing..." = "Publishing..."; - -/* References Title */ -"References" = "References"; - -/* Rename Tag Action */ -"Rename Tag" = "Rename Tag"; - -/* Title for account deletion confirm button */ -"Request Account Deletion" = "Request Account Deletion"; - -/* Request error alert title */ -"Request Error" = "Request Error"; - -/* Resend email button -> Verify your email screen */ -"Resend Email" = "Resend Email"; - -/* Send email verificaiton action */ -"Resend Verification Email" = "Resend Verification Email"; - -/* Password Reset: Proceed */ -"Reset" = "Reset"; - -/* Restore List Action - Tooltip: Restore a trashed note */ -"Restore" = "Restore"; - -/* Title -> Review you account screen */ -"Review Your Account" = "Review Your Account"; - -/* Search Field Placeholder */ -"Search notes" = "Search notes"; - -/* StatusBar Search Indicator */ -"Searching" = "Searching"; - -/* Share Menu Action */ -"Share" = "Share"; - -/* Share analytics checkbox label */ -"Share Analytics" = "Share Analytics"; - -/* Cookie Policy Legend */ -"Share information with our analytics tool about your use of services while logged into your Simplenote.com account." = "Share information with our analytics tool about your use of services while logged into your Simplenote.com account."; - -/* macOS MenuItem that causes the Tag List to be presented */ -"Show Sidebar" = "Show Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be visible */ -"Show Status Bar" = "Show Status Bar"; - /* Title of button for signing up */ "Sign Up" = "Εγγραφή"; -/* Displayed temoprarily while signing up */ -"Signing Up..." = "Signing Up..."; - -/* Alert message displayed when an account has unsynced notes */ -"Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App." = "Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App."; - -/* Text to display on OSX cancel button */ -"Skip" = "Skip"; - -/* Sort tags alphabetically checkbox label */ -"Sort Tags Alphabetically" = "Sort Tags Alphabetically"; - -/* Default system theme name */ -"System Appearance" = "System Appearance"; - -/* Placeholder text in the Tags View */ -"Tag..." = "Tag..."; - -/* Tags Section Name */ -"Tags" = "Tags"; - -/* Text size control label */ -"Text size:" = "Text size:"; - -/* Error when address is in use */ -"That email is already being used" = "That email is already being used"; - -/* Theme label */ -"Theme:" = "Theme:"; - -/* Request error alert message */ -"There was an preparing your verification email, please try again later" = "There was an preparing your verification email, please try again later"; - -/* Privacy Policy */ -"This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy." = "This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy."; - -/* Compromised password alert message */ -"This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again." = "This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again."; - -/* Tooltip: Restore a trashed note */ -"Toggle Sidebar" = "Toggle Sidebar"; - -/* Error for too many login attempts */ -"Too many log in attempts. Try again later." = "Too many log in attempts. Try again later."; - -/* Title for the Trash filter - Title of the view that displays all your deleted notes */ -"Trash" = "Trash"; - -/* Title for Tag with no Name */ -"Unnamed Tag" = "Unnamed Tag"; - -/* Unpublish Note Action */ -"Unpublish" = "Unpublish"; - -/* Displayed during an Unpublish Operation */ -"Unpublishing..." = "Unpublishing..."; - -/* Alert title displayed in when an account has unsynced notes */ -"Unsynced Notes Detected" = "Unsynced Notes Detected"; - -/* Untagged Notes Title */ -"Untagged" = "Untagged"; - -/* Untagged Notes Filter */ -"Untagged Notes" = "Untagged Notes"; - -/* Title -> Verify your email screen */ -"Verify Your Email" = "Verify Your Email"; - -/* Label for the current version of a note */ -"Version" = "Version"; - -/* Version displayed in the about screen */ -"Version %@" = "Version %@"; - -/* Visit app.simplenote.com in the browser */ -"Visit Web App" = "Visit Web App"; - -/* Generic error */ -"We're having problems. Please try again soon." = "We're having problems. Please try again soon."; - -/* Confirmation that an email has been sent - Message -> Verify your email screen. Parameter: %1$@ - email address */ -"We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions."; - -/* Signup Body Text */ -"We’ve sent an email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent an email to %1$@. Please check your inbox and follow the instructions."; - -/* Number of words in the note */ -"Words" = "Words"; - -/* Hiring Title */ -"Work with Us" = "Work with Us"; - -/* Message -> Review you account screen. Parameter: %1$@ - email address */ -"You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address." = "You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address."; - -/* Erro for un verified email */ -"You must verify your email before being able to login." = "You must verify your email before being able to login."; - -/* Error when you're not connected */ -"You're not connected to the internet" = "You're not connected to the internet"; - -/* Password Requirements: Title */ -"Your password is insecure and must be reset. The password requirements are:" = "Your password is insecure and must be reset. The password requirements are:"; - -/* Search Operator for tags. Please preserve the semicolons */ -"tag:" = "tag:"; - diff --git a/Simplenote/fa.lproj/Localizable.strings b/Simplenote/fa.lproj/Localizable.strings index d78a146cc..9bd503efa 100644 --- a/Simplenote/fa.lproj/Localizable.strings +++ b/Simplenote/fa.lproj/Localizable.strings @@ -3,9 +3,6 @@ /* Generator: GlotPress/2.4.0-alpha */ /* Language: fa */ -/* Presented when there are multiple selected notes */ -"%d Selected" = "%d Selected"; - /* Password Requirement: Length */ "- Minimum of 8 characters" = "- دست‌ِکم ۸ نویسه"; @@ -15,100 +12,6 @@ /* Password Requirement: Email Match */ "- Password cannot match email" = "- گذرواژه نمی‌تواند مطابقِ ایمیل باشد"; -/* A link to more information about our privacy policy */ -"About Analytics and Privacy" = "About Analytics and Privacy"; - -/* Email verification required alert title */ -"Account Verification Required" = "Account Verification Required"; - -/* Account label */ -"Account:" = "Account:"; - -/* Text presented when sharing a Note */ -"Add an email address as a tag to share this note with someone. Then you can both make changes to it." = "Add an email address as a tag to share this note with someone. Then you can both make changes to it."; - -/* Title of the all notes filter - Title of the view that displays all your notes */ -"All Notes" = "All Notes"; - -/* Link to sign in to an account */ -"Already have an account?" = "Already have an account?"; - -/* Delete account confirmation instructions */ -"An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation." = "An email has been sent to %@. Check your inbox and follow the instructions to confirm account deletion.\n\nYour account won't be deleted until we receive your confirmation."; - -/* Deletion error message */ -"An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help." = "An error occured. Please, try again. If the problem continues, contact us at support@simplenote.com for help."; - -/* Sign in error message */ -"An error was encountered while signing in." = "An error was encountered while signing in."; - -/* Hiring Details */ -"Are you a developer? Automattic is Hiring." = "Are you a developer? Automattic is Hiring."; - -/* Error for authorization failure */ -"Authorization failed" = "Authorization failed"; - -/* Error for bad email or password */ -"Bad email or password" = "Bad email or password"; - -/* Delete account confirmation alert message */ -"By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible." = "By deleting the account for %@, all notes created with this account will be permanently deleted. This action is not reversible."; - -/* Cancel button title - Cancel the action - Dismiss change password alert action - Password Reset: Cancel */ -"Cancel" = "Cancel"; - -/* Error message title. Review you account screen */ -"Cannot Confirm Account" = "Cannot Confirm Account"; - -/* Error message title. Verify your email screen */ -"Cannot Send Verification Email" = "Cannot Send Verification Email"; - -/* Change email button -> Review you account screen */ -"Change Account Email" = "Change Account Email"; - -/* Change password action */ -"Change Password" = "Change Password"; - -/* Number of characters in the note */ -"Characters" = "Characters"; - -/* Title for delete account succes alert */ -"Check Your Email" = "Check Your Email"; - -/* Vefification sent alert title */ -"Check your Email" = "Check your Email"; - -/* Collaborate Menu Action */ -"Collaborate" = "Collaborate"; - -/* Analytics Toggle Text */ -"Collect Information" = "Collect Information"; - -/* Compromised passsword alert title */ -"Compromised Password" = "Compromised Password"; - -/* Condensed note list button label */ -"Condensed Note List" = "Condensed Note List"; - -/* Confirm button -> Review you account screen */ -"Confirm" = "Confirm"; - -/* Placeholder text for confirmation field */ -"Confirm Password" = "Confirm Password"; - -/* Copy Link Menu Action */ -"Copy Internal Link" = "Copy Internal Link"; - -/* Alert dialog title displayed on sign in error */ -"Couldn't Sign In" = "Couldn't Sign In"; - -/* Note Creation Date */ -"Created" = "Created"; - /* Sort Mode: Creation Date, descending */ "Created: Newest" = "ایجادشده: جدیدترین"; @@ -118,76 +21,9 @@ /* Dark theme name */ "Dark" = "تاریک"; -/* Delete account button label - Delete account title and action */ -"Delete Account" = "Delete Account"; - -/* Delete Forever List Action */ -"Delete Forever" = "Delete Forever"; - -/* Delete notes and sign out of the app */ -"Delete Notes" = "Delete Notes"; - -/* Delete Tag Action */ -"Delete Tag" = "Delete Tag"; - -/* Signup Support Text */ -"Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help." = "Didn't get an email? There may already be an account associated with this email address. Contact %1$@ for help."; - -/* Closes the Privacy View */ -"Dismiss" = "Dismiss"; - -/* Duplicate Note List Action */ -"Duplicate Note" = "Duplicate Note"; - /* Placeholder text for login field */ "Email" = "ایمیل"; -/* Empty Trash Action */ -"Empty Trash" = "Empty Trash"; - -/* Deletion Error Title */ -"Error" = "Error"; - -/* Export All Notes Action */ -"Export Everything" = "Export Everything"; - -/* Get Help Description Label */ -"FAQ or contact us" = "FAQ or contact us"; - -/* Forgot Password Button */ -"Forgot your Password?" = "Forgot your Password?"; - -/* Full line length button label */ -"Full" = "Full"; - -/* FAQ or contact us */ -"Get Help" = "Get Help"; - -/* Back Button Title */ -"Go Back" = "Go Back"; - -/* A description about how we use anayltics */ -"Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information." = "Help us to improve Simplenote by automatically sending analytics data from this device. This includes data about general usage in the app and does not include any personal information."; - -/* macOS MenuItem that causes the Tag List to be hidden */ -"Hide Sidebar" = "Hide Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be hidden */ -"Hide Status Bar" = "Hide Status Bar"; - -/* History Menu Action */ -"History" = "History"; - -/* Note Metrics Title */ -"Information" = "Information"; - -/* Tooltip: Insert Checklist */ -"Insert Checklist" = "Insert Checklist"; - -/* Reference Last Modification Date */ -"Last modified" = "Last modified"; - /* Light theme name */ "Light" = "روشن"; @@ -195,80 +31,6 @@ Title of button for login */ "Log In" = "ثبتِ ورود"; -/* Log out button label */ -"Log Out" = "Log Out"; - -/* button title for wp.com sign in button */ -"Log in with WordPress.com" = "Log in with WordPress.com"; - -/* Displayed temporarily while logging in */ -"Logging In..." = "Logging In..."; - -/* Markdown Menu Action */ -"Markdown" = "Markdown"; - -/* Tooltip: Markdown Preview */ -"Markdown Preview" = "Markdown Preview"; - -/* Tooltip: Note Metrics */ -"Metrics" = "Metrics"; - -/* Note Modification Date */ -"Modified" = "Modified"; - -/* Sort Mode: Modified Date, descending */ -"Modified: Newest" = "Modified: Newest"; - -/* Sort Mode: Modified Date, ascending */ -"Modified: Oldest" = "Modified: Oldest"; - -/* Tooltip: More Actions */ -"More" = "More"; - -/* Move to Trash List Action - Trash Menu Action */ -"Move to Trash" = "Move to Trash"; - -/* Sort Mode: Alphabetically, ascending */ -"Name: A-Z" = "Name: A-Z"; - -/* Sort Mode: Alphabetically, descending */ -"Name: Z-A" = "Name: Z-A"; - -/* Narrow line length button label */ -"Narrow" = "Narrow"; - -/* Link to create an account */ -"Need an account?" = "Need an account?"; - -/* Empty Note Placeholder */ -"New note..." = "New note..."; - -/* No Notes Available */ -"No Notes" = "No Notes"; - -/* No Search Results */ -"No Results" = "No Results"; - -/* Placeholder displayed when a note hasn't been published. */ -"Not Published" = "Not Published"; - -/* Error when you enter a bad email address */ -"Not a valid email address" = "Not a valid email address"; - -/* Note line length label */ -"Note line length:" = "Note line length:"; - -/* Note Sort Order label */ -"Note sort order:" = "Note sort order:"; - -/* Dismisses an AlertController - OK button in error alert dialog */ -"OK" = "OK"; - -/* Email unverified alert dismiss */ -"Ok" = "Ok"; - /* Placeholder text for password field */ "Password" = "گذرواژه"; @@ -281,190 +43,22 @@ /* Message displayed when a password contains a disallowed character */ "Password must not contain tabs nor newlines" = "گذرواژه نمی‌باید حاوی جهش (tab) و سرخط باشد"; -/* Password Validation: Confirmation doesn't match */ -"Passwords do not match" = "Passwords do not match"; - /* List Pin Action Pin to Top Menu Action */ "Pin to Top" = "سنجاق به بالا"; -/* Error message displayed when user has not verified their WordPress.com account */ -"Please activate your WordPress.com account via email and try again." = "Please activate your WordPress.com account via email and try again."; - -/* Error message. Account verification */ -"Please check your network settings and try again." = "Please check your network settings and try again."; - -/* Privacy Policy's Title */ -"Privacy Policy" = "Privacy Policy"; - -/* Publish Menu Action */ -"Publish" = "Publish"; - -/* Text presented when the note is about to be published */ -"Publish this note to a web page. The page will stay updated with the contents of your note." = "Publish this note to a web page. The page will stay updated with the contents of your note."; - -/* Publish to WebPage Action */ -"Publish to Web Page" = "Publish to Web Page"; - -/* Displayed during a Publish Operation */ -"Publishing..." = "Publishing..."; - -/* References Title */ -"References" = "References"; - -/* Rename Tag Action */ -"Rename Tag" = "Rename Tag"; - -/* Title for account deletion confirm button */ -"Request Account Deletion" = "Request Account Deletion"; - -/* Request error alert title */ -"Request Error" = "Request Error"; - -/* Resend email button -> Verify your email screen */ -"Resend Email" = "Resend Email"; - -/* Send email verificaiton action */ -"Resend Verification Email" = "Resend Verification Email"; - /* Password Reset: Proceed */ "Reset" = "بازنشانی"; -/* Restore List Action - Tooltip: Restore a trashed note */ -"Restore" = "Restore"; - -/* Title -> Review you account screen */ -"Review Your Account" = "Review Your Account"; - -/* Search Field Placeholder */ -"Search notes" = "Search notes"; - -/* StatusBar Search Indicator */ -"Searching" = "Searching"; - -/* Share Menu Action */ -"Share" = "Share"; - -/* Share analytics checkbox label */ -"Share Analytics" = "Share Analytics"; - -/* Cookie Policy Legend */ -"Share information with our analytics tool about your use of services while logged into your Simplenote.com account." = "Share information with our analytics tool about your use of services while logged into your Simplenote.com account."; - -/* macOS MenuItem that causes the Tag List to be presented */ -"Show Sidebar" = "Show Sidebar"; - -/* macOS MenuItem that causes the Status Bar to be visible */ -"Show Status Bar" = "Show Status Bar"; - /* Title of button for signing up */ "Sign Up" = "نام‌نویسی"; -/* Displayed temoprarily while signing up */ -"Signing Up..." = "Signing Up..."; - -/* Alert message displayed when an account has unsynced notes */ -"Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App." = "Signing out will delete any unsynced notes. Check your connection and verify your synced notes by signing in to the Web App."; - -/* Text to display on OSX cancel button */ -"Skip" = "Skip"; - -/* Sort tags alphabetically checkbox label */ -"Sort Tags Alphabetically" = "Sort Tags Alphabetically"; - -/* Default system theme name */ -"System Appearance" = "System Appearance"; - -/* Placeholder text in the Tags View */ -"Tag..." = "Tag..."; - -/* Tags Section Name */ -"Tags" = "Tags"; - -/* Text size control label */ -"Text size:" = "Text size:"; - -/* Error when address is in use */ -"That email is already being used" = "That email is already being used"; - -/* Theme label */ -"Theme:" = "Theme:"; - -/* Request error alert message */ -"There was an preparing your verification email, please try again later" = "There was an preparing your verification email, please try again later"; - -/* Privacy Policy */ -"This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy." = "This information helps us improve our products, make marketing to you more relevant, personalize your Simplenote.com experience, and more as detailed in our privacy policy."; - -/* Compromised password alert message */ -"This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again." = "This password has appeared in a data breach, which puts your account at high risk of compromise. To protect your data, you'll need to update your password before being able to log in again."; - -/* Tooltip: Restore a trashed note */ -"Toggle Sidebar" = "Toggle Sidebar"; - -/* Error for too many login attempts */ -"Too many log in attempts. Try again later." = "Too many log in attempts. Try again later."; - -/* Title for the Trash filter - Title of the view that displays all your deleted notes */ -"Trash" = "Trash"; - -/* Title for Tag with no Name */ -"Unnamed Tag" = "Unnamed Tag"; - -/* Unpublish Note Action */ -"Unpublish" = "Unpublish"; - -/* Displayed during an Unpublish Operation */ -"Unpublishing..." = "Unpublishing..."; - -/* Alert title displayed in when an account has unsynced notes */ -"Unsynced Notes Detected" = "Unsynced Notes Detected"; - /* Untagged Notes Title */ "Untagged" = "برچسب‌نخورده"; -/* Untagged Notes Filter */ -"Untagged Notes" = "Untagged Notes"; - -/* Title -> Verify your email screen */ -"Verify Your Email" = "Verify Your Email"; - -/* Label for the current version of a note */ -"Version" = "Version"; - -/* Version displayed in the about screen */ -"Version %@" = "Version %@"; - -/* Visit app.simplenote.com in the browser */ -"Visit Web App" = "Visit Web App"; - /* Generic error */ "We're having problems. Please try again soon." = "در حالِ حاضر با مشکلاتی مواجه هستیم. لطفاً به‌زودی دوباره امتحان کنید."; -/* Confirmation that an email has been sent - Message -> Verify your email screen. Parameter: %1$@ - email address */ -"We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent a verification email to %1$@. Please check your inbox and follow the instructions."; - -/* Signup Body Text */ -"We’ve sent an email to %1$@. Please check your inbox and follow the instructions." = "We’ve sent an email to %1$@. Please check your inbox and follow the instructions."; - -/* Number of words in the note */ -"Words" = "Words"; - -/* Hiring Title */ -"Work with Us" = "Work with Us"; - -/* Message -> Review you account screen. Parameter: %1$@ - email address */ -"You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address." = "You are registered with Simplenote using the email %1$@.\n\nImprovements to account security may result in account loss if you no longer have access to this email address."; - -/* Erro for un verified email */ -"You must verify your email before being able to login." = "You must verify your email before being able to login."; - -/* Error when you're not connected */ -"You're not connected to the internet" = "You're not connected to the internet"; - /* Password Requirements: Title */ "Your password is insecure and must be reset. The password requirements are:" = "گذرواژهٔ شما ایمن نیست و باید بازنشانی شود. ملزوماتِ گذرواژه از این قرارند:"; diff --git a/config/Version.public.xcconfig b/config/Version.public.xcconfig index 55ad6d432..ba4f24071 100644 --- a/config/Version.public.xcconfig +++ b/config/Version.public.xcconfig @@ -1,9 +1,9 @@ -VERSION_SHORT=2.19 +VERSION_SHORT=2.20 // Public long version. Example: 2.0.0.0. The last 0 means the first build for // version 2.0.0 -VERSION_LONG=2.19.0.1 +VERSION_LONG=2.20.0.3 // This is the value for the CFBundleVersion it should be incremented on every // build that gets distributed -BUILD_NUMBER=11253 +BUILD_NUMBER=11257 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 35546d712..1428fccfe 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -60,21 +60,16 @@ def build_simplenote(codesign:, archive_path: nil) build_mac_app( workspace: WORKSPACE, scheme: APP_STORE_SCHEME, - configuration: 'Release', clean: true, output_directory: BUILD_FOLDER, archive_path: archive_path, skip_archive: skip_archive, - export_method: 'app-store', export_team_id: CredentialsManager::AppfileConfig.try_fetch_value(:team_id), xcargs: xcargs, - # When exporting for the App Store, we need a .pkg file because that's the - # only format upload_to_app_store supports. - # - # Note for the future readers: this might need to be disabled for the - # developer-id export, see - # https://github.com/fastlane/fastlane/issues/15963#issuecomment-593649185 - skip_package_pkg: false, + export_options: { + method: 'app-store', + manageAppVersionAndBuildNumber: false + } ) end @@ -121,9 +116,15 @@ end lane :code_freeze do | options | old_version = ios_codefreeze_prechecks(options) - ios_bump_version_release(skip_deliver: true, skip_glotpress: true) + ios_bump_version_release new_version = ios_get_app_version(public_version_xcconfig_file: VERSION_FILE_PATH) ios_update_release_notes(new_version: new_version) + + UI.important('Pushing changes to remote and configuring the release on GitHub') + UI.user_error!("Terminating as requested. Don't forget to run the remainder of this automation manually.") unless options[:skip_confirm] || UI.confirm('Do you want to continue?') + + push_to_git_remote(tags: false) + setbranchprotection(repository:GHHELPER_REPO, branch: "release/#{new_version}") setfrozentag(repository:GHHELPER_REPO, milestone: new_version) @@ -308,39 +309,25 @@ end sh("rake dependencies:pod:clean") cocoapods() - # This allows code signing to work on CircleCI. It is skipped if this isn't - # running on CI. - # - # See https://circleci.com/docs/2.0/ios-codesigning/ - setup_circle_ci + setup_ci sync_code_signing( + storage_mode: 'google_cloud', + google_cloud_bucket_name: 'a8c-fastlane-match', + google_cloud_keys_file: File.join(Dir.home, '.configure', 'simplenote-macos', 'secrets', 'google_cloud_keys.json'), type: 'appstore', platform: 'macos', # This Mac app also needs a Mac Installer Distribution certificate - additional_cert_types: ['mac_installer_distribution'], + additional_cert_types: 'mac_installer_distribution', readonly: true, app_identifier: 'com.automattic.SimplenoteMac', api_key_path: APP_STORE_CONNECT_API_KEY_PATH ) archive_path = File.join(BUILD_FOLDER, 'Simplenote-Mac.xcarchive') - build_simplenote(codesign: true, archive_path: archive_path) - - # TestFlight does not suport macOS but we can use deliver to upload the - # binary to the App Store by telling it to skip all the metadata, - # screenshots, etc. - upload_to_app_store( - pkg: File.join(BUILD_FOLDER, 'Simplenote.pkg'), - skip_screenshots: true, - overwrite_screenshots: false, - skip_metadata: true, - skip_app_version_update: true, - run_precheck_before_submit: false, - precheck_include_in_app_purchases: false, - skip_binary_upload: false, - force: true, # Skip verification of HTML preview file - api_key_path: APP_STORE_CONNECT_API_KEY_PATH + build_simplenote( + codesign: true, + archive_path: archive_path ) sentry_upload_dsym( @@ -366,6 +353,8 @@ end prerelease: options[:prerelease], ) end + + upload_to_testflight(api_key_path: APP_STORE_CONNECT_API_KEY_PATH) end # Upload the localized metadata (from `fastlane/metadata/`) to App Store Connect diff --git a/fastlane/Matchfile b/fastlane/Matchfile deleted file mode 100644 index 985d06ccf..000000000 --- a/fastlane/Matchfile +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -storage_mode('google_cloud') -google_cloud_bucket_name('a8c-fastlane-match') - -secrets_directory = File.join(Dir.home, '.configure', 'simplenote-macos', 'secrets') -google_cloud_keys_file(File.join(secrets_directory, 'google_cloud_keys.json'))