From 4aceea91b8aa6a2ba9ad0095deda68d2a54a3db6 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 11:14:25 -0700 Subject: [PATCH 1/9] Tests fix! --- Clocker/Clocker/en.lproj/Localizable.strings | 5 +++++ Clocker/Clocker/hi.lproj/Localizable.strings | 5 +++++ .../ClockerUITests/FloatingWindowTests.swift | 5 +---- Clocker/ClockerUITests/OnboardingTests.swift | 18 +++++++++--------- Clocker/ClockerUITests/PreferencesTest.swift | 9 +++++++-- .../OnboardingWelcomeViewController.swift | 3 +-- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Clocker/Clocker/en.lproj/Localizable.strings b/Clocker/Clocker/en.lproj/Localizable.strings index a3ad658..07af75b 100644 --- a/Clocker/Clocker/en.lproj/Localizable.strings +++ b/Clocker/Clocker/en.lproj/Localizable.strings @@ -149,3 +149,8 @@ "You're offline, maybe?" = "You're offline, maybe?"; "Try again, maybe?" = "Try again, maybe?"; "The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; diff --git a/Clocker/Clocker/hi.lproj/Localizable.strings b/Clocker/Clocker/hi.lproj/Localizable.strings index 6dd92b8..ee055ea 100644 --- a/Clocker/Clocker/hi.lproj/Localizable.strings +++ b/Clocker/Clocker/hi.lproj/Localizable.strings @@ -66,3 +66,8 @@ // Appearance Tab "Panel Theme" = "प्रकटन"; + +// UI Tests +"New Zealand" = "न्यूज़ीलैंड"; +"Florida" = "फ्लोरिडा"; +"San Francisco" = "सान फ्रांसिस्को"; diff --git a/Clocker/ClockerUITests/FloatingWindowTests.swift b/Clocker/ClockerUITests/FloatingWindowTests.swift index 1309da6..f6f7f2c 100644 --- a/Clocker/ClockerUITests/FloatingWindowTests.swift +++ b/Clocker/ClockerUITests/FloatingWindowTests.swift @@ -5,10 +5,7 @@ import XCTest extension String { func localizedString() -> String { let bundle = Bundle(for: AboutUsTests.self) - let deviceLanguage = Locale.preferredLanguages.first - let localizationBundle = Bundle(path: bundle.path(forResource: deviceLanguage, - ofType: "lproj")!) - return NSLocalizedString(self, bundle: localizationBundle!, comment: "") + return NSLocalizedString(self, bundle: bundle, comment: "") } } diff --git a/Clocker/ClockerUITests/OnboardingTests.swift b/Clocker/ClockerUITests/OnboardingTests.swift index de6b6b7..68e4917 100644 --- a/Clocker/ClockerUITests/OnboardingTests.swift +++ b/Clocker/ClockerUITests/OnboardingTests.swift @@ -98,8 +98,8 @@ class OnboardingTests: XCTestCase { let onboardingWindow = app.windows["OnboardingWindow"] // Tests static texts - XCTAssertTrue(onboardingWindow.staticTexts["Clocker"].exists, "Static text Clocker was unexpectedly missing") - XCTAssertTrue(onboardingWindow.staticTexts["It only takes 3 steps to set up Clocker."].exists, "Accessory label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["CFBundleDisplayName".localizedString()].exists, "Static text Clocker was unexpectedly missing") + XCTAssertTrue(onboardingWindow.staticTexts["It only takes 3 steps to set up Clocker.".localizedString()].exists, "Accessory label's static text was unexpectedly wrong.") let button = onboardingWindow.buttons["Forward"] @@ -112,10 +112,10 @@ class OnboardingTests: XCTestCase { private func permissionsControllerTests() { let onboardingWindow = app.windows["OnboardingWindow"] - XCTAssertTrue(onboardingWindow.staticTexts["Permissions"].exists, "Header label's static text was unexpectedly wrong.") - XCTAssertTrue(onboardingWindow.staticTexts["These can be configured later in System Preferences."].exists, "Onboarding Info label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Permissions".localizedString()].exists, "Header label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Later Config Description".localizedString()].exists, "Onboarding Info label's static text was unexpectedly wrong.") - XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Continue", "Forward button title's was unexpectedly wrong") + XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Continue".localizedString(), "Forward button title's was unexpectedly wrong") XCTAssertTrue(onboardingWindow.buttons["Backward"].exists, "Back button was unexpectedly missing") XCTAssertFalse(onboardingWindow.buttons["Alternate"].exists, "Alternate button was unexpectedly present.") } @@ -126,17 +126,17 @@ class OnboardingTests: XCTestCase { XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Open Clocker At Login", "Forward button title's was unexpectedly wrong") XCTAssertTrue(onboardingWindow.buttons["Alternate"].title == "Don't Open", "Alternate button title's was unexpectedly wrong") - XCTAssertTrue(onboardingWindow.staticTexts["Launch at Login"].exists, "Header label's static text was unexpectedly wrong.") - XCTAssertTrue(onboardingWindow.staticTexts["Should Clocker open automatically on startup?"].exists, "Accessory label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Launch at Login".localizedString()].exists, "Header label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Should Clocker open automatically on startup?".localizedString()].exists, "Accessory label's static text was unexpectedly wrong.") } private func searchControllerTests() { let onboardingWindow = app.windows["OnboardingWindow"] XCTAssertFalse(onboardingWindow.buttons["Alternate"].exists, "Alternate button was unexpectedly present.") - XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Continue", "Forward button title's was unexpectedly wrong") + XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Continue".localizedString(), "Forward button title's was unexpectedly wrong") - XCTAssertTrue(onboardingWindow.staticTexts["Quick Add Locations"].exists, "Header label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Quick Add Locations".localizedString()].exists, "Header label's static text was unexpectedly wrong.") XCTAssertTrue(onboardingWindow.staticTexts["More search options in Clocker Preferences."].exists, "Accessory label's static text was unexpectedly wrong.") } diff --git a/Clocker/ClockerUITests/PreferencesTest.swift b/Clocker/ClockerUITests/PreferencesTest.swift index bc3e71d..4a4da59 100644 --- a/Clocker/ClockerUITests/PreferencesTest.swift +++ b/Clocker/ClockerUITests/PreferencesTest.swift @@ -76,7 +76,10 @@ class PreferencesTest: XCTestCase { } } - XCTAssertEqual(actualLabels, ["New Zealand", "Florida", "San Francisco"]) + XCTAssertEqual(actualLabels, + ["New Zealand".localizedString(), + "Florida".localizedString(), + "San Francisco".localizedString()]) app.windows["Clocker"].checkBoxes["Sort by Time Difference".localizedString()].click() @@ -89,7 +92,9 @@ class PreferencesTest: XCTestCase { } } - XCTAssertEqual(actualReversedLabels, ["San Francisco", "Florida", "New Zealand"]) + XCTAssertEqual(actualReversedLabels, ["San Francisco".localizedString(), + "Florida".localizedString(), + "New Zealand".localizedString()]) addAPlace(place: "Omaha", to: app) addAPlace(place: "Mumbai", to: app) diff --git a/Clocker/Onboarding/OnboardingWelcomeViewController.swift b/Clocker/Onboarding/OnboardingWelcomeViewController.swift index 5036042..072fd37 100644 --- a/Clocker/Onboarding/OnboardingWelcomeViewController.swift +++ b/Clocker/Onboarding/OnboardingWelcomeViewController.swift @@ -12,8 +12,7 @@ class OnboardingWelcomeViewController: NSViewController { } private func setup() { - appLabel.stringValue = NSLocalizedString("CFBundleDisplayName", - comment: "App Name") + appLabel.stringValue = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? "Clocker" accessoryLabel.stringValue = NSLocalizedString("It only takes 3 steps to set up Clocker.", comment: "App Setup Description") From c17ee715f6fbdd4b3e0665064339a32e2cde4e01 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 11:21:35 -0700 Subject: [PATCH 2/9] Adding Russian and Chinese Simplified languages. --- Clocker/Clocker.xcodeproj/project.pbxproj | 10 + Clocker/Clocker/ja.lproj/InfoPlist.strings | 10 - Clocker/Clocker/ja.lproj/Localizable.strings | 18 -- Clocker/Clocker/ja.lproj/Panel.xib | 294 ------------------ .../InfoPlist.strings | 4 +- Clocker/Clocker/ru.lproj/Localizable.strings | 156 ++++++++++ .../Clocker/zh-Hans.lproj/InfoPlist.strings | 4 +- .../Clocker/zh-Hans.lproj/Localizable.strings | 155 ++++++++- Clocker/Clocker/zh-Hans.lproj/Panel.xib | 294 ------------------ .../Clocker/zh-Hant.lproj/Localizable.strings | 17 - Clocker/Clocker/zh-Hant.lproj/Panel.xib | 294 ------------------ 11 files changed, 317 insertions(+), 939 deletions(-) delete mode 100644 Clocker/Clocker/ja.lproj/InfoPlist.strings delete mode 100644 Clocker/Clocker/ja.lproj/Localizable.strings delete mode 100755 Clocker/Clocker/ja.lproj/Panel.xib rename Clocker/Clocker/{zh-Hant.lproj => ru.lproj}/InfoPlist.strings (55%) create mode 100644 Clocker/Clocker/ru.lproj/Localizable.strings delete mode 100755 Clocker/Clocker/zh-Hans.lproj/Panel.xib delete mode 100644 Clocker/Clocker/zh-Hant.lproj/Localizable.strings delete mode 100755 Clocker/Clocker/zh-Hant.lproj/Panel.xib diff --git a/Clocker/Clocker.xcodeproj/project.pbxproj b/Clocker/Clocker.xcodeproj/project.pbxproj index af15244..74c1395 100755 --- a/Clocker/Clocker.xcodeproj/project.pbxproj +++ b/Clocker/Clocker.xcodeproj/project.pbxproj @@ -304,6 +304,10 @@ 9A4379231BEC223900F4E27F /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Fabric.framework; sourceTree = ""; }; 9A4379291BEC230A00F4E27F /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 9A43792B1BEC231100F4E27F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 9A4DC4DF2337F2EB00F03FA4 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + 9A4DC4E12337F2EB00F03FA4 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; + 9A4DC4E22337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + 9A4DC4E32337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; 9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = Clocker/MainMenu.xib; sourceTree = ""; }; 9A5951B91C1D0A22009C17AA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = Frameworks/Crashlytics.framework; sourceTree = ""; }; 9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonStrings.m; path = Clocker/Utilities/CommonStrings.m; sourceTree = ""; }; @@ -974,6 +978,8 @@ en, Base, hi, + ru, + "zh-Hans", ); mainGroup = DD4F7BF913C30F9F00825C6E; productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */; @@ -1257,6 +1263,8 @@ children = ( 9A13BAE11CA882FA007C6CBE /* en */, 352AF497232E07B400D96FA7 /* hi */, + 9A4DC4DF2337F2EB00F03FA4 /* ru */, + 9A4DC4E22337F31200F03FA4 /* zh-Hans */, ); name = InfoPlist.strings; path = Clocker; @@ -1267,6 +1275,8 @@ children = ( 9A13BAEB1CA88A76007C6CBE /* en */, 352AF499232E07B400D96FA7 /* hi */, + 9A4DC4E12337F2EB00F03FA4 /* ru */, + 9A4DC4E32337F31200F03FA4 /* zh-Hans */, ); name = Localizable.strings; path = Clocker; diff --git a/Clocker/Clocker/ja.lproj/InfoPlist.strings b/Clocker/Clocker/ja.lproj/InfoPlist.strings deleted file mode 100644 index 2a59f59..0000000 --- a/Clocker/Clocker/ja.lproj/InfoPlist.strings +++ /dev/null @@ -1,10 +0,0 @@ -/* - InfoPlist.strings - Clocker - - Created by Abhishek Banthia on 3/27/16. - -*/ - -"CFBundleDisplayName" = "タイムキーパー"; -"CFBundleName" = "タイムキーパー"; \ No newline at end of file diff --git a/Clocker/Clocker/ja.lproj/Localizable.strings b/Clocker/Clocker/ja.lproj/Localizable.strings deleted file mode 100644 index 3ffce34..0000000 --- a/Clocker/Clocker/ja.lproj/Localizable.strings +++ /dev/null @@ -1,18 +0,0 @@ -/* - Localizable.strings - Clocker - - Created by Abhishek Banthia on 3/27/16. - -*/ - -"Thank you for helping make Clocker even better!" = "ありがとうございました"; -"iRateMessageTitle" = "%@の評価"; -"iRateAppMessage" = "%@をお使いいただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!"; -"iRateGameMessage" = "%@をプレイしていただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!"; -"iRateCancelButton" = "いえ、結構です"; -"iRateRateButton" = "今すぐ評価する"; -"iRateRemindButton" = "後でする"; -"iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "バージョン %@"; -"CLFeedbackAlertTitle" = "ありがとうございました!"; diff --git a/Clocker/Clocker/ja.lproj/Panel.xib b/Clocker/Clocker/ja.lproj/Panel.xib deleted file mode 100755 index a9b78b6..0000000 --- a/Clocker/Clocker/ja.lproj/Panel.xib +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Clocker/Clocker/zh-Hant.lproj/InfoPlist.strings b/Clocker/Clocker/ru.lproj/InfoPlist.strings similarity index 55% rename from Clocker/Clocker/zh-Hant.lproj/InfoPlist.strings rename to Clocker/Clocker/ru.lproj/InfoPlist.strings index 5e7fe62..79d4436 100644 --- a/Clocker/Clocker/zh-Hant.lproj/InfoPlist.strings +++ b/Clocker/Clocker/ru.lproj/InfoPlist.strings @@ -6,5 +6,5 @@ */ -"CFBundleDisplayName" = "计时员"; -"CFBundleName" = "计时员"; \ No newline at end of file +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/ru.lproj/Localizable.strings b/Clocker/Clocker/ru.lproj/Localizable.strings new file mode 100644 index 0000000..07af75b --- /dev/null +++ b/Clocker/Clocker/ru.lproj/Localizable.strings @@ -0,0 +1,156 @@ +/* + Localizable.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; +"iRateMessageTitle" = "Rate %@"; +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateCancelButton" = "No, Thanks"; +"iRateRateButton" = "Rate It Now"; +"iRateRemindButton" = "Remind Me Later"; +"iRateUpdateMessage" = "Update now?"; +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +"app-name" = "Clocker"; +"start-at-login" = "Start At Login"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissions"; +"See your next Calendar event here." = "See your next Calendar event here."; +"Click here to start." = "Click here to start."; +"Reminders Access" = "Reminders Access"; +"Calendar Access" = "Calendar Access"; +"Permissions" = "Permissions"; +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Grant"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferences"; +"Appearance Tab" = "Appearance"; +"Calendar Tab" = "Calendar"; +"About Tab" = "About"; +"Permissions Tab" = "Permissions"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Selected Timezones" = "Selected Timezones"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Sort by Name"; +"Sort by Label" = "Sort by Label"; +"Search Field Placeholder" = "Enter a city, state or country name"; +"No Timezone Selected" = "Please select a timezone!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Only 50 characters allowed!"; +"Add Button Title" = "Add"; +"Close Button Title" = "Close"; + +// Onboarding +"Open Clocker At Login" = "Open Clocker At Login"; +"Launch Clocker" = "Launch Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Permissions +"Calendar Access Title" = "Calendar Access"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Back"; +"Continue" = "Continue"; +"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +"Launch Preferences" = "Launch Preferences"; +"Grant Access" = "Grant Access"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Unexpected"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; +"Search Locations" = "Search Locations"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "You're all set!"; +"Thank you for the details." = "Thank you for the details."; +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +// Appearance Tab +"Panel Theme" = "Panel Theme"; +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; +"Main Panel Options" = "Main Panel Options"; +"Time Format" = "Time Format"; +"Day Display Options" = "Day Display Options"; +"Show Future Slider" = "Show Future Slider"; +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; +"Display the time in seconds" = "Display the time in seconds"; +"Larger Text" = "Larger Text"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Include Date"; +"Include Day" = "Include Day"; +"Include Place Name" = "Include Place Name"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; + +// Empty View +"No places added" = "No places added"; + +// Panel +"No upcoming event." = "No upcoming event."; +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +// Review +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +// App Feedback +"Tell us what you think!" = "Tell us what you think!"; +"Contact Information (Optional)" = "Contact Information (Optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback is always welcome:"; + +// Calendars View +"Upcoming Event View Options" = "Upcoming Event View Options"; +"Show Upcoming Event View" = "Show Upcoming Event View"; +"Show All Day Meetings" = "Show All Day Meetings"; +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; +"Truncate menubar text longer than" = "Truncate menubar text longer than"; +"characters" = "characters"; +"Show events from" = "Show events from"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +// Notes Popover +"Reminder Set" = "Reminder Set"; +"Successfully set." = "Successfully set."; + +// Errors +"You're offline, maybe?" = "You're offline, maybe?"; +"Try again, maybe?" = "Try again, maybe?"; +"The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; diff --git a/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings b/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings index 5e7fe62..79d4436 100644 --- a/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings +++ b/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings @@ -6,5 +6,5 @@ */ -"CFBundleDisplayName" = "计时员"; -"CFBundleName" = "计时员"; \ No newline at end of file +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings index 22be386..07af75b 100644 --- a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings +++ b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings @@ -6,12 +6,151 @@ */ -"Thank you for helping make Clocker even better!" = "谢谢!"; -"iRateMessageTitle" = "为“%@”评分"; -"iRateAppMessage" = "如果您觉得“%@”很好用,可否为其评一个分数?评分过程只需花费很少的时间。感谢您的支持!"; -"iRateGameMessage" = "如果您觉得“%@”很好玩,可否为其评一个分数?评分过程只需花费很少的时间。感谢您的支持!"; -"iRateCancelButton" = "不了,谢谢"; -"iRateRateButton" = "现在去评分"; -"iRateRemindButton" = "稍后再说"; +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; +"iRateMessageTitle" = "Rate %@"; +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateCancelButton" = "No, Thanks"; +"iRateRateButton" = "Rate It Now"; +"iRateRemindButton" = "Remind Me Later"; "iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "版 %@"; \ No newline at end of file +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +"app-name" = "Clocker"; +"start-at-login" = "Start At Login"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissions"; +"See your next Calendar event here." = "See your next Calendar event here."; +"Click here to start." = "Click here to start."; +"Reminders Access" = "Reminders Access"; +"Calendar Access" = "Calendar Access"; +"Permissions" = "Permissions"; +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Grant"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferences"; +"Appearance Tab" = "Appearance"; +"Calendar Tab" = "Calendar"; +"About Tab" = "About"; +"Permissions Tab" = "Permissions"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Selected Timezones" = "Selected Timezones"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Sort by Name"; +"Sort by Label" = "Sort by Label"; +"Search Field Placeholder" = "Enter a city, state or country name"; +"No Timezone Selected" = "Please select a timezone!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Only 50 characters allowed!"; +"Add Button Title" = "Add"; +"Close Button Title" = "Close"; + +// Onboarding +"Open Clocker At Login" = "Open Clocker At Login"; +"Launch Clocker" = "Launch Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Permissions +"Calendar Access Title" = "Calendar Access"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Back"; +"Continue" = "Continue"; +"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +"Launch Preferences" = "Launch Preferences"; +"Grant Access" = "Grant Access"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Unexpected"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; +"Search Locations" = "Search Locations"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "You're all set!"; +"Thank you for the details." = "Thank you for the details."; +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +// Appearance Tab +"Panel Theme" = "Panel Theme"; +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; +"Main Panel Options" = "Main Panel Options"; +"Time Format" = "Time Format"; +"Day Display Options" = "Day Display Options"; +"Show Future Slider" = "Show Future Slider"; +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; +"Display the time in seconds" = "Display the time in seconds"; +"Larger Text" = "Larger Text"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Include Date"; +"Include Day" = "Include Day"; +"Include Place Name" = "Include Place Name"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; + +// Empty View +"No places added" = "No places added"; + +// Panel +"No upcoming event." = "No upcoming event."; +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +// Review +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +// App Feedback +"Tell us what you think!" = "Tell us what you think!"; +"Contact Information (Optional)" = "Contact Information (Optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback is always welcome:"; + +// Calendars View +"Upcoming Event View Options" = "Upcoming Event View Options"; +"Show Upcoming Event View" = "Show Upcoming Event View"; +"Show All Day Meetings" = "Show All Day Meetings"; +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; +"Truncate menubar text longer than" = "Truncate menubar text longer than"; +"characters" = "characters"; +"Show events from" = "Show events from"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +// Notes Popover +"Reminder Set" = "Reminder Set"; +"Successfully set." = "Successfully set."; + +// Errors +"You're offline, maybe?" = "You're offline, maybe?"; +"Try again, maybe?" = "Try again, maybe?"; +"The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; diff --git a/Clocker/Clocker/zh-Hans.lproj/Panel.xib b/Clocker/Clocker/zh-Hans.lproj/Panel.xib deleted file mode 100755 index 0b85f9d..0000000 --- a/Clocker/Clocker/zh-Hans.lproj/Panel.xib +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Clocker/Clocker/zh-Hant.lproj/Localizable.strings b/Clocker/Clocker/zh-Hant.lproj/Localizable.strings deleted file mode 100644 index 22be386..0000000 --- a/Clocker/Clocker/zh-Hant.lproj/Localizable.strings +++ /dev/null @@ -1,17 +0,0 @@ -/* - Localizable.strings - Clocker - - Created by Abhishek Banthia on 3/27/16. - -*/ - -"Thank you for helping make Clocker even better!" = "谢谢!"; -"iRateMessageTitle" = "为“%@”评分"; -"iRateAppMessage" = "如果您觉得“%@”很好用,可否为其评一个分数?评分过程只需花费很少的时间。感谢您的支持!"; -"iRateGameMessage" = "如果您觉得“%@”很好玩,可否为其评一个分数?评分过程只需花费很少的时间。感谢您的支持!"; -"iRateCancelButton" = "不了,谢谢"; -"iRateRateButton" = "现在去评分"; -"iRateRemindButton" = "稍后再说"; -"iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "版 %@"; \ No newline at end of file diff --git a/Clocker/Clocker/zh-Hant.lproj/Panel.xib b/Clocker/Clocker/zh-Hant.lproj/Panel.xib deleted file mode 100755 index 7067c60..0000000 --- a/Clocker/Clocker/zh-Hant.lproj/Panel.xib +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From de111a7949980f8150ad9f95032b40081a9a94d0 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 11:31:09 -0700 Subject: [PATCH 3/9] Adding the crowdin localization link! --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 287cbcd..01e1b49 100644 --- a/Readme.md +++ b/Readme.md @@ -5,7 +5,7 @@ ![Clocker](https://raw.githubusercontent.com/n0shake/Clocker/master/New%20Icons/Github.png "Clocker") -**Clocker** is an OSX menubar utility designed to help you keep track of your friends in different time zones. It's written using ~~Objective-C~~ Swift 5 and is completely ad-free. +**Clocker** is an macOS menubar utility designed to help you keep track of your friends in different time zones. It's written using ~~Objective-C~~ Swift 5 and is completely ad-free. If you'd like to help translate Clocker in your language, [here's the invite link](https://crwd.in/clocker). If you'd like to donate, you can do so [here](https://www.paypal.me/AbhishekBanthia). You can find a review of the app by SoftPedia [here](http://mac.softpedia.com/get/Utilities/Clocker-Banthia.shtml). Need any help? Open an issue! From a23ff458172abaf7ecce549538e751cd732be6cd Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 11:33:09 -0700 Subject: [PATCH 4/9] Adding other popular languages. --- Clocker/Clocker.xcodeproj/project.pbxproj | 15 ++ Clocker/Clocker/de.lproj/InfoPlist.strings | 10 ++ Clocker/Clocker/de.lproj/Localizable.strings | 156 +++++++++++++++++++ Clocker/Clocker/ja.lproj/InfoPlist.strings | 10 ++ Clocker/Clocker/ja.lproj/Localizable.strings | 156 +++++++++++++++++++ Clocker/Clocker/ko.lproj/InfoPlist.strings | 10 ++ Clocker/Clocker/ko.lproj/Localizable.strings | 156 +++++++++++++++++++ 7 files changed, 513 insertions(+) create mode 100644 Clocker/Clocker/de.lproj/InfoPlist.strings create mode 100644 Clocker/Clocker/de.lproj/Localizable.strings create mode 100644 Clocker/Clocker/ja.lproj/InfoPlist.strings create mode 100644 Clocker/Clocker/ja.lproj/Localizable.strings create mode 100644 Clocker/Clocker/ko.lproj/InfoPlist.strings create mode 100644 Clocker/Clocker/ko.lproj/Localizable.strings diff --git a/Clocker/Clocker.xcodeproj/project.pbxproj b/Clocker/Clocker.xcodeproj/project.pbxproj index 74c1395..bf0ab17 100755 --- a/Clocker/Clocker.xcodeproj/project.pbxproj +++ b/Clocker/Clocker.xcodeproj/project.pbxproj @@ -308,6 +308,12 @@ 9A4DC4E12337F2EB00F03FA4 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 9A4DC4E22337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 9A4DC4E32337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; + 9A4DC4E42337F5BC00F03FA4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 9A4DC4E52337F5BC00F03FA4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + 9A4DC4E62337F5C800F03FA4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; + 9A4DC4E72337F5C800F03FA4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; + 9A4DC4E82337F5D600F03FA4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = ""; }; + 9A4DC4E92337F5D600F03FA4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; 9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = Clocker/MainMenu.xib; sourceTree = ""; }; 9A5951B91C1D0A22009C17AA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = Frameworks/Crashlytics.framework; sourceTree = ""; }; 9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonStrings.m; path = Clocker/Utilities/CommonStrings.m; sourceTree = ""; }; @@ -980,6 +986,9 @@ hi, ru, "zh-Hans", + de, + ja, + ko, ); mainGroup = DD4F7BF913C30F9F00825C6E; productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */; @@ -1265,6 +1274,9 @@ 352AF497232E07B400D96FA7 /* hi */, 9A4DC4DF2337F2EB00F03FA4 /* ru */, 9A4DC4E22337F31200F03FA4 /* zh-Hans */, + 9A4DC4E42337F5BC00F03FA4 /* de */, + 9A4DC4E62337F5C800F03FA4 /* ja */, + 9A4DC4E82337F5D600F03FA4 /* ko */, ); name = InfoPlist.strings; path = Clocker; @@ -1277,6 +1289,9 @@ 352AF499232E07B400D96FA7 /* hi */, 9A4DC4E12337F2EB00F03FA4 /* ru */, 9A4DC4E32337F31200F03FA4 /* zh-Hans */, + 9A4DC4E52337F5BC00F03FA4 /* de */, + 9A4DC4E72337F5C800F03FA4 /* ja */, + 9A4DC4E92337F5D600F03FA4 /* ko */, ); name = Localizable.strings; path = Clocker; diff --git a/Clocker/Clocker/de.lproj/InfoPlist.strings b/Clocker/Clocker/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/Clocker/Clocker/de.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ +/* + InfoPlist.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/de.lproj/Localizable.strings b/Clocker/Clocker/de.lproj/Localizable.strings new file mode 100644 index 0000000..07af75b --- /dev/null +++ b/Clocker/Clocker/de.lproj/Localizable.strings @@ -0,0 +1,156 @@ +/* + Localizable.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; +"iRateMessageTitle" = "Rate %@"; +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateCancelButton" = "No, Thanks"; +"iRateRateButton" = "Rate It Now"; +"iRateRemindButton" = "Remind Me Later"; +"iRateUpdateMessage" = "Update now?"; +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +"app-name" = "Clocker"; +"start-at-login" = "Start At Login"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissions"; +"See your next Calendar event here." = "See your next Calendar event here."; +"Click here to start." = "Click here to start."; +"Reminders Access" = "Reminders Access"; +"Calendar Access" = "Calendar Access"; +"Permissions" = "Permissions"; +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Grant"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferences"; +"Appearance Tab" = "Appearance"; +"Calendar Tab" = "Calendar"; +"About Tab" = "About"; +"Permissions Tab" = "Permissions"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Selected Timezones" = "Selected Timezones"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Sort by Name"; +"Sort by Label" = "Sort by Label"; +"Search Field Placeholder" = "Enter a city, state or country name"; +"No Timezone Selected" = "Please select a timezone!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Only 50 characters allowed!"; +"Add Button Title" = "Add"; +"Close Button Title" = "Close"; + +// Onboarding +"Open Clocker At Login" = "Open Clocker At Login"; +"Launch Clocker" = "Launch Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Permissions +"Calendar Access Title" = "Calendar Access"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Back"; +"Continue" = "Continue"; +"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +"Launch Preferences" = "Launch Preferences"; +"Grant Access" = "Grant Access"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Unexpected"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; +"Search Locations" = "Search Locations"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "You're all set!"; +"Thank you for the details." = "Thank you for the details."; +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +// Appearance Tab +"Panel Theme" = "Panel Theme"; +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; +"Main Panel Options" = "Main Panel Options"; +"Time Format" = "Time Format"; +"Day Display Options" = "Day Display Options"; +"Show Future Slider" = "Show Future Slider"; +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; +"Display the time in seconds" = "Display the time in seconds"; +"Larger Text" = "Larger Text"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Include Date"; +"Include Day" = "Include Day"; +"Include Place Name" = "Include Place Name"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; + +// Empty View +"No places added" = "No places added"; + +// Panel +"No upcoming event." = "No upcoming event."; +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +// Review +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +// App Feedback +"Tell us what you think!" = "Tell us what you think!"; +"Contact Information (Optional)" = "Contact Information (Optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback is always welcome:"; + +// Calendars View +"Upcoming Event View Options" = "Upcoming Event View Options"; +"Show Upcoming Event View" = "Show Upcoming Event View"; +"Show All Day Meetings" = "Show All Day Meetings"; +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; +"Truncate menubar text longer than" = "Truncate menubar text longer than"; +"characters" = "characters"; +"Show events from" = "Show events from"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +// Notes Popover +"Reminder Set" = "Reminder Set"; +"Successfully set." = "Successfully set."; + +// Errors +"You're offline, maybe?" = "You're offline, maybe?"; +"Try again, maybe?" = "Try again, maybe?"; +"The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; diff --git a/Clocker/Clocker/ja.lproj/InfoPlist.strings b/Clocker/Clocker/ja.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/Clocker/Clocker/ja.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ +/* + InfoPlist.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/ja.lproj/Localizable.strings b/Clocker/Clocker/ja.lproj/Localizable.strings new file mode 100644 index 0000000..07af75b --- /dev/null +++ b/Clocker/Clocker/ja.lproj/Localizable.strings @@ -0,0 +1,156 @@ +/* + Localizable.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; +"iRateMessageTitle" = "Rate %@"; +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateCancelButton" = "No, Thanks"; +"iRateRateButton" = "Rate It Now"; +"iRateRemindButton" = "Remind Me Later"; +"iRateUpdateMessage" = "Update now?"; +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +"app-name" = "Clocker"; +"start-at-login" = "Start At Login"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissions"; +"See your next Calendar event here." = "See your next Calendar event here."; +"Click here to start." = "Click here to start."; +"Reminders Access" = "Reminders Access"; +"Calendar Access" = "Calendar Access"; +"Permissions" = "Permissions"; +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Grant"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferences"; +"Appearance Tab" = "Appearance"; +"Calendar Tab" = "Calendar"; +"About Tab" = "About"; +"Permissions Tab" = "Permissions"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Selected Timezones" = "Selected Timezones"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Sort by Name"; +"Sort by Label" = "Sort by Label"; +"Search Field Placeholder" = "Enter a city, state or country name"; +"No Timezone Selected" = "Please select a timezone!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Only 50 characters allowed!"; +"Add Button Title" = "Add"; +"Close Button Title" = "Close"; + +// Onboarding +"Open Clocker At Login" = "Open Clocker At Login"; +"Launch Clocker" = "Launch Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Permissions +"Calendar Access Title" = "Calendar Access"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Back"; +"Continue" = "Continue"; +"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +"Launch Preferences" = "Launch Preferences"; +"Grant Access" = "Grant Access"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Unexpected"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; +"Search Locations" = "Search Locations"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "You're all set!"; +"Thank you for the details." = "Thank you for the details."; +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +// Appearance Tab +"Panel Theme" = "Panel Theme"; +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; +"Main Panel Options" = "Main Panel Options"; +"Time Format" = "Time Format"; +"Day Display Options" = "Day Display Options"; +"Show Future Slider" = "Show Future Slider"; +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; +"Display the time in seconds" = "Display the time in seconds"; +"Larger Text" = "Larger Text"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Include Date"; +"Include Day" = "Include Day"; +"Include Place Name" = "Include Place Name"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; + +// Empty View +"No places added" = "No places added"; + +// Panel +"No upcoming event." = "No upcoming event."; +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +// Review +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +// App Feedback +"Tell us what you think!" = "Tell us what you think!"; +"Contact Information (Optional)" = "Contact Information (Optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback is always welcome:"; + +// Calendars View +"Upcoming Event View Options" = "Upcoming Event View Options"; +"Show Upcoming Event View" = "Show Upcoming Event View"; +"Show All Day Meetings" = "Show All Day Meetings"; +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; +"Truncate menubar text longer than" = "Truncate menubar text longer than"; +"characters" = "characters"; +"Show events from" = "Show events from"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +// Notes Popover +"Reminder Set" = "Reminder Set"; +"Successfully set." = "Successfully set."; + +// Errors +"You're offline, maybe?" = "You're offline, maybe?"; +"Try again, maybe?" = "Try again, maybe?"; +"The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; diff --git a/Clocker/Clocker/ko.lproj/InfoPlist.strings b/Clocker/Clocker/ko.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/Clocker/Clocker/ko.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ +/* + InfoPlist.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/ko.lproj/Localizable.strings b/Clocker/Clocker/ko.lproj/Localizable.strings new file mode 100644 index 0000000..07af75b --- /dev/null +++ b/Clocker/Clocker/ko.lproj/Localizable.strings @@ -0,0 +1,156 @@ +/* + Localizable.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; +"iRateMessageTitle" = "Rate %@"; +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; +"iRateCancelButton" = "No, Thanks"; +"iRateRateButton" = "Rate It Now"; +"iRateRemindButton" = "Remind Me Later"; +"iRateUpdateMessage" = "Update now?"; +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +"app-name" = "Clocker"; +"start-at-login" = "Start At Login"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissions"; +"See your next Calendar event here." = "See your next Calendar event here."; +"Click here to start." = "Click here to start."; +"Reminders Access" = "Reminders Access"; +"Calendar Access" = "Calendar Access"; +"Permissions" = "Permissions"; +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Grant"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferences"; +"Appearance Tab" = "Appearance"; +"Calendar Tab" = "Calendar"; +"About Tab" = "About"; +"Permissions Tab" = "Permissions"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Selected Timezones" = "Selected Timezones"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Sort by Name"; +"Sort by Label" = "Sort by Label"; +"Search Field Placeholder" = "Enter a city, state or country name"; +"No Timezone Selected" = "Please select a timezone!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Only 50 characters allowed!"; +"Add Button Title" = "Add"; +"Close Button Title" = "Close"; + +// Onboarding +"Open Clocker At Login" = "Open Clocker At Login"; +"Launch Clocker" = "Launch Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; +"Get Started" = "Get Started"; + +// Permissions +"Calendar Access Title" = "Calendar Access"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Back"; +"Continue" = "Continue"; +"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +"Launch Preferences" = "Launch Preferences"; +"Grant Access" = "Grant Access"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Unexpected"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; +"Search Locations" = "Search Locations"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "You're all set!"; +"Thank you for the details." = "Thank you for the details."; +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +// Appearance Tab +"Panel Theme" = "Panel Theme"; +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; +"Main Panel Options" = "Main Panel Options"; +"Time Format" = "Time Format"; +"Day Display Options" = "Day Display Options"; +"Show Future Slider" = "Show Future Slider"; +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; +"Display the time in seconds" = "Display the time in seconds"; +"Larger Text" = "Larger Text"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Include Date"; +"Include Day" = "Include Day"; +"Include Place Name" = "Include Place Name"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; + +// Empty View +"No places added" = "No places added"; + +// Panel +"No upcoming event." = "No upcoming event."; +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +// Review +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +// App Feedback +"Tell us what you think!" = "Tell us what you think!"; +"Contact Information (Optional)" = "Contact Information (Optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback is always welcome:"; + +// Calendars View +"Upcoming Event View Options" = "Upcoming Event View Options"; +"Show Upcoming Event View" = "Show Upcoming Event View"; +"Show All Day Meetings" = "Show All Day Meetings"; +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; +"Truncate menubar text longer than" = "Truncate menubar text longer than"; +"characters" = "characters"; +"Show events from" = "Show events from"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +// Notes Popover +"Reminder Set" = "Reminder Set"; +"Successfully set." = "Successfully set."; + +// Errors +"You're offline, maybe?" = "You're offline, maybe?"; +"Try again, maybe?" = "Try again, maybe?"; +"The Internet connection appears to be offline." = "The Internet connection appears to be offline."; + +// UI Tests +"New Zealand" = "New Zealand"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; From 18352309bf71185d8deb798657458590d0bf2b32 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 14:22:46 -0700 Subject: [PATCH 5/9] Hiding email link. --- Clocker/AppDelegate.swift | 4 +- .../FinalOnboardingViewController.swift | 38 ++++++++++++++++++- Clocker/Onboarding/Onboarding.storyboard | 33 ++++++++-------- .../About/AboutViewController.swift | 1 + 4 files changed, 58 insertions(+), 18 deletions(-) diff --git a/Clocker/AppDelegate.swift b/Clocker/AppDelegate.swift index b627833..dc2c249 100644 --- a/Clocker/AppDelegate.swift +++ b/Clocker/AppDelegate.swift @@ -41,6 +41,8 @@ open class AppDelegate: NSObject, NSApplicationDelegate { } public func applicationDidFinishLaunching(_: Notification) { + UserDefaults.standard.wipe() + // Initializing the event store takes really long EventCenter.sharedCenter() @@ -106,7 +108,7 @@ open class AppDelegate: NSObject, NSApplicationDelegate { let shouldLaunchOnboarding = (DataStore.shared().retrieve(key: CLShowOnboardingFlow) == nil && DataStore.shared().timezones().isEmpty) || ProcessInfo.processInfo.arguments.contains(CLOnboaringTestsLaunchArgument) - shouldLaunchOnboarding ? controller?.launch() : continueUsually() + shouldLaunchOnboarding ? controller?.launch() : controller?.launch() } func continueUsually() { diff --git a/Clocker/Onboarding/FinalOnboardingViewController.swift b/Clocker/Onboarding/FinalOnboardingViewController.swift index 5746887..d77b05f 100644 --- a/Clocker/Onboarding/FinalOnboardingViewController.swift +++ b/Clocker/Onboarding/FinalOnboardingViewController.swift @@ -17,7 +17,7 @@ class FinalOnboardingViewController: NSViewController { @IBOutlet var accesoryLabel: NSTextField! @IBOutlet var accessoryImageView: NSImageView! @IBOutlet var emailTextField: NSTextField! - @IBOutlet var emailExplanationLabel: NSTextField! + @IBOutlet var localizationButton: UnderlinedButton! private let emailValidator = EmailTextFieldValidator() @@ -43,7 +43,41 @@ class FinalOnboardingViewController: NSViewController { subtitleLabel.stringValue = "Thank you for the details.".localized() accesoryLabel.stringValue = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences.".localized() accessoryImageView.image = Themer.shared().menubarOnboardingImage() - emailExplanationLabel.stringValue = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!".localized() + emailTextField.isHidden = true + setupLocalizationButton() + } + + private func setupLocalizationButton() { + let mutableParaghStyle = NSMutableParagraphStyle() + mutableParaghStyle.alignment = .center + + let underlineRange = NSRange(location: 42, length: 14) + let originalText = NSMutableAttributedString(string: "Help localize Clocker in your language by clicking here!") + originalText.addAttribute(NSAttributedString.Key.underlineStyle, + value: NSNumber(value: Int8(NSUnderlineStyle.single.rawValue)), + range: underlineRange) + originalText.addAttribute(NSAttributedString.Key.foregroundColor, + value: Themer.shared().mainTextColor(), + range: NSRange(location: 0, length: localizationButton.attributedTitle.string.count)) + originalText.addAttribute(NSAttributedString.Key.font, + value: (localizationButton?.font)!, + range: NSRange(location: 0, length: localizationButton.attributedTitle.string.count)) + originalText.addAttribute(NSAttributedString.Key.paragraphStyle, + value: mutableParaghStyle, + range: NSRange(location: 0, length: localizationButton.attributedTitle.string.count)) + + localizationButton.attributedTitle = originalText + } + + @IBAction func localizationAction(_: Any) { + guard let localizationURL = URL(string: AboutUsConstants.CrowdInLocalizationLink), + let languageCode = Locale.preferredLanguages.first else { return } + + NSWorkspace.shared.open(localizationURL) + + // Log this + let custom: [String: Any] = ["Language": languageCode] + Logger.log(object: custom, for: "Opened Localization Link") } override func viewWillAppear() { diff --git a/Clocker/Onboarding/Onboarding.storyboard b/Clocker/Onboarding/Onboarding.storyboard index 2b96e41..1a24731 100644 --- a/Clocker/Onboarding/Onboarding.storyboard +++ b/Clocker/Onboarding/Onboarding.storyboard @@ -1,6 +1,7 @@ + @@ -464,7 +465,7 @@ DQ - + @@ -651,28 +652,31 @@ DQ - + - - - - - - - - + + - + @@ -680,18 +684,17 @@ DQ + - - - + @@ -702,7 +705,7 @@ DQ - + diff --git a/Clocker/Preferences/About/AboutViewController.swift b/Clocker/Preferences/About/AboutViewController.swift index 24cda8b..e398a59 100644 --- a/Clocker/Preferences/About/AboutViewController.swift +++ b/Clocker/Preferences/About/AboutViewController.swift @@ -9,6 +9,7 @@ struct AboutUsConstants { static let TwitterLink = "https://twitter.com/n0shake/?ref=ClockerApp" static let PersonalWebsite = "http://abhishekbanthia.com/?ref=ClockerApp" static let AppStoreLink = "macappstore://itunes.apple.com/us/app/clocker/id1056643111?action=write-review" + static let CrowdInLocalizationLink = "https://crwd.in/clocker" } class AboutViewController: ParentViewController { From bedea4c5bda8941c9d748816d3e2af50ed820946 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 22 Sep 2019 14:30:26 -0700 Subject: [PATCH 6/9] More info about localizing app! --- Clocker/AppDelegate.swift | 4 +--- .../FinalOnboardingViewController.swift | 3 +++ .../OnboardingParentViewController.swift | 2 +- .../Preferences/About/AboutViewController.swift | 15 ++++++++------- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Clocker/AppDelegate.swift b/Clocker/AppDelegate.swift index dc2c249..b627833 100644 --- a/Clocker/AppDelegate.swift +++ b/Clocker/AppDelegate.swift @@ -41,8 +41,6 @@ open class AppDelegate: NSObject, NSApplicationDelegate { } public func applicationDidFinishLaunching(_: Notification) { - UserDefaults.standard.wipe() - // Initializing the event store takes really long EventCenter.sharedCenter() @@ -108,7 +106,7 @@ open class AppDelegate: NSObject, NSApplicationDelegate { let shouldLaunchOnboarding = (DataStore.shared().retrieve(key: CLShowOnboardingFlow) == nil && DataStore.shared().timezones().isEmpty) || ProcessInfo.processInfo.arguments.contains(CLOnboaringTestsLaunchArgument) - shouldLaunchOnboarding ? controller?.launch() : controller?.launch() + shouldLaunchOnboarding ? controller?.launch() : continueUsually() } func continueUsually() { diff --git a/Clocker/Onboarding/FinalOnboardingViewController.swift b/Clocker/Onboarding/FinalOnboardingViewController.swift index d77b05f..8b3d643 100644 --- a/Clocker/Onboarding/FinalOnboardingViewController.swift +++ b/Clocker/Onboarding/FinalOnboardingViewController.swift @@ -78,6 +78,9 @@ class FinalOnboardingViewController: NSViewController { // Log this let custom: [String: Any] = ["Language": languageCode] Logger.log(object: custom, for: "Opened Localization Link") + + guard let parentVC = parent as? OnboardingParentViewController else { return } + parentVC.performFinalStepsBeforeFinishing() } override func viewWillAppear() { diff --git a/Clocker/Onboarding/OnboardingParentViewController.swift b/Clocker/Onboarding/OnboardingParentViewController.swift index cf7bf17..4f65315 100644 --- a/Clocker/Onboarding/OnboardingParentViewController.swift +++ b/Clocker/Onboarding/OnboardingParentViewController.swift @@ -186,7 +186,7 @@ class OnboardingParentViewController: NSViewController { } } - private func performFinalStepsBeforeFinishing() { + func performFinalStepsBeforeFinishing() { finalOnboardingVC?.sendUpEmailIfValid() positiveButton.tag = OnboardingType.complete.rawValue diff --git a/Clocker/Preferences/About/AboutViewController.swift b/Clocker/Preferences/About/AboutViewController.swift index e398a59..1bcd9e6 100644 --- a/Clocker/Preferences/About/AboutViewController.swift +++ b/Clocker/Preferences/About/AboutViewController.swift @@ -50,7 +50,7 @@ class AboutViewController: ParentViewController { let rangesInOrder = [NSRange(location: 3, length: 8), NSRange(location: 7, length: privateFeedback.attributedTitle.length - 7), NSRange(location: 27, length: 33), - NSRange(location: 32, length: 30)] + NSRange(location: 42, length: 14)] let buttonsInOrder = [quickCommentAction, privateFeedback, @@ -60,7 +60,7 @@ class AboutViewController: ParentViewController { let localizedKeys = ["1. @n0shake on Twitter for quick comments", "2. For Private Feedback", "You can support Clocker by leaving a review on the App Store! :)", - "Clocker is Open Source. You can check out the source code here."] + "Help localize Clocker in your language by clicking here!"] zip(buttonsInOrder, localizedKeys).forEach { arg in let (button, title) = arg @@ -129,13 +129,14 @@ class AboutViewController: ParentViewController { } @IBAction func openGitHub(_: Any) { - guard let githubURL = URL(string: AboutUsConstants.GitHubURL), - let countryCode = Locale.autoupdatingCurrent.regionCode else { return } + guard let localizationURL = URL(string: AboutUsConstants.CrowdInLocalizationLink), + let languageCode = Locale.preferredLanguages.first else { return } - NSWorkspace.shared.open(githubURL) + NSWorkspace.shared.open(localizationURL) - let custom: [String: Any] = ["Country": countryCode] - Logger.log(object: custom, for: "Opened GitHub") + // Log this + let custom: [String: Any] = ["Language": languageCode] + Logger.log(object: custom, for: "Opened Localization Link") } @IBOutlet var feedbackLabel: NSTextField! From c0caf1ee8681282f024b92981d1fb3a136fc8d64 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Thu, 26 Sep 2019 11:14:31 -0700 Subject: [PATCH 7/9] Fix truncation crash! --- Clocker/Panel/Data Layer/TimezoneDataOperations.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Clocker/Panel/Data Layer/TimezoneDataOperations.swift b/Clocker/Panel/Data Layer/TimezoneDataOperations.swift index 0b5b3f4..4089554 100644 --- a/Clocker/Panel/Data Layer/TimezoneDataOperations.swift +++ b/Clocker/Panel/Data Layer/TimezoneDataOperations.swift @@ -86,8 +86,11 @@ extension TimezoneDataOperations { if shouldDayBeShown { var substring = date(with: 0, displayType: CLDateDisplayType.menuDisplay) - let endIndex = substring.index(substring.startIndex, offsetBy: 2) - substring = String(substring[substring.startIndex ... endIndex]) + + if (substring.count > 3) { + let endIndex = substring.index(substring.startIndex, offsetBy: 2) + substring = String(substring[substring.startIndex ... endIndex]) + } if menuTitle.isEmpty == false { menuTitle.append(" \(substring.capitalized)") From 0c2ed72decce4e4100d235bb7d0d98827940d9c2 Mon Sep 17 00:00:00 2001 From: Abhishek Date: Sun, 29 Sep 2019 15:37:21 -0700 Subject: [PATCH 8/9] New changes. --- Clocker/Clocker.xcodeproj/project.pbxproj | 38 ++ Clocker/Clocker/Clocker-Info.plist | 4 +- Clocker/Clocker/de.lproj/InfoPlist.strings | 26 +- Clocker/Clocker/de.lproj/Localizable.strings | 416 +++++++++++++----- Clocker/Clocker/en.lproj/Localizable.strings | 1 + Clocker/Clocker/ru.lproj/InfoPlist.strings | 26 +- Clocker/Clocker/ru.lproj/Localizable.strings | 408 ++++++++++++----- .../Clocker/zh-Hans.lproj/InfoPlist.strings | 26 +- .../Clocker/zh-Hans.lproj/Localizable.strings | 408 ++++++++++++----- .../ClockerHelper/de.lproj/InfoPlist.strings | 3 + Clocker/ClockerHelper/de.lproj/Main.strings | 393 +++++++++++++++++ .../ClockerHelper/ru.lproj/InfoPlist.strings | 3 + Clocker/ClockerHelper/ru.lproj/Main.strings | 393 +++++++++++++++++ .../zh-Hans.lproj/InfoPlist.strings | 3 + .../ClockerHelper/zh-Hans.lproj/Main.strings | 393 +++++++++++++++++ Clocker/ClockerUITests/AboutUsTests.swift | 2 +- Clocker/ClockerUITests/OnboardingTests.swift | 2 +- .../ClockerUITests/de.lproj/InfoPlist.strings | 3 + .../ClockerUITests/ru.lproj/InfoPlist.strings | 3 + .../zh-Hans.lproj/InfoPlist.strings | 3 + Clocker/Onboarding/Onboarding.storyboard | 3 +- .../OnboardingPermissionsViewController.swift | 2 +- .../Data Layer/TimezoneDataOperations.swift | 4 +- .../Calendar/CalendarViewController.swift | 2 +- Clocker/Preferences/Preferences.storyboard | 38 +- 25 files changed, 2205 insertions(+), 398 deletions(-) create mode 100644 Clocker/ClockerHelper/de.lproj/InfoPlist.strings create mode 100644 Clocker/ClockerHelper/de.lproj/Main.strings create mode 100644 Clocker/ClockerHelper/ru.lproj/InfoPlist.strings create mode 100644 Clocker/ClockerHelper/ru.lproj/Main.strings create mode 100644 Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings create mode 100644 Clocker/ClockerHelper/zh-Hans.lproj/Main.strings create mode 100644 Clocker/ClockerUITests/de.lproj/InfoPlist.strings create mode 100644 Clocker/ClockerUITests/ru.lproj/InfoPlist.strings create mode 100644 Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings diff --git a/Clocker/Clocker.xcodeproj/project.pbxproj b/Clocker/Clocker.xcodeproj/project.pbxproj index bf0ab17..f98d313 100755 --- a/Clocker/Clocker.xcodeproj/project.pbxproj +++ b/Clocker/Clocker.xcodeproj/project.pbxproj @@ -108,6 +108,8 @@ 9A8B256A232EFAD300204CAD /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9A13BAEC1CA88A76007C6CBE /* Localizable.strings */; }; 9A9E87621C1FEDB500A7A2DF /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A9E87611C1FEDB500A7A2DF /* CFNetwork.framework */; }; 9A9E876A1C1FEDDB00A7A2DF /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A9E87691C1FEDDB00A7A2DF /* SystemConfiguration.framework */; }; + 9AA522C023415BDD00C9E005 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9AA522BE23415BDD00C9E005 /* InfoPlist.strings */; }; + 9AA522C323415BDD00C9E005 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9AA522C123415BDD00C9E005 /* InfoPlist.strings */; }; 9AB6F1562259CF3900A44663 /* CalendarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB6F1552259CF3900A44663 /* CalendarViewController.swift */; }; 9AB6F1582259CFFC00A44663 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB6F1572259CFFC00A44663 /* AboutViewController.swift */; }; 9AB6F15D2259D08300A44663 /* iVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AB6F15A2259D08300A44663 /* iVersion.m */; }; @@ -339,6 +341,15 @@ 9A9E87671C1FEDD300A7A2DF /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 9A9E87691C1FEDDB00A7A2DF /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 9A9E876B1C1FEDE700A7A2DF /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; + 9AA522BF23415BDD00C9E005 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522C223415BDD00C9E005 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522C423415BDD00C9E005 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; + 9AA522C623415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522C723415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522C823415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Main.strings; sourceTree = ""; }; + 9AA522C923415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + 9AA522CA23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + 9AA522CB23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; 9AB6F1552259CF3900A44663 /* CalendarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalendarViewController.swift; sourceTree = ""; }; 9AB6F1572259CFFC00A44663 /* AboutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; 9AB6F15A2259D08300A44663 /* iVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iVersion.m; sourceTree = ""; }; @@ -624,6 +635,7 @@ 9A7547DB1F184DC3004705EF /* Assets.xcassets */, 9A7547DD1F184DC3004705EF /* Main.storyboard */, 9A7547E01F184DC3004705EF /* Info.plist */, + 9AA522C123415BDD00C9E005 /* InfoPlist.strings */, 9A7547D51F184DC3004705EF /* Supporting Files */, ); path = ClockerHelper; @@ -771,6 +783,7 @@ children = ( C2BFE3E52049F82300825BE5 /* ClockerUITests.m */, C2BFE3E72049F82300825BE5 /* Info.plist */, + 9AA522BE23415BDD00C9E005 /* InfoPlist.strings */, C213713320B4FD920024D5A4 /* FloatingWindowTests.swift */, C213713220B4FD920024D5A4 /* ClockerUITests-Bridging-Header.h */, C2F7821A20B70E3700B6CD07 /* AboutUsTests.swift */, @@ -1039,6 +1052,7 @@ buildActionMask = 2147483647; files = ( 9A7547DC1F184DC3004705EF /* Assets.xcassets in Resources */, + 9AA522C323415BDD00C9E005 /* InfoPlist.strings in Resources */, 9A7547DF1F184DC3004705EF /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1055,6 +1069,7 @@ buildActionMask = 2147483647; files = ( 9A8B256A232EFAD300204CAD /* Localizable.strings in Resources */, + 9AA522C023415BDD00C9E005 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1301,10 +1316,33 @@ isa = PBXVariantGroup; children = ( 9A7547DE1F184DC3004705EF /* Base */, + 9AA522C423415BDD00C9E005 /* de */, + 9AA522C823415BF600C9E005 /* ru */, + 9AA522CB23415C4F00C9E005 /* zh-Hans */, ); name = Main.storyboard; sourceTree = ""; }; + 9AA522BE23415BDD00C9E005 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 9AA522BF23415BDD00C9E005 /* de */, + 9AA522C723415BF600C9E005 /* ru */, + 9AA522C923415C4F00C9E005 /* zh-Hans */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 9AA522C123415BDD00C9E005 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 9AA522C223415BDD00C9E005 /* de */, + 9AA522C623415BF600C9E005 /* ru */, + 9AA522CA23415C4F00C9E005 /* zh-Hans */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ diff --git a/Clocker/Clocker/Clocker-Info.plist b/Clocker/Clocker/Clocker-Info.plist index f5a7934..5246004 100755 --- a/Clocker/Clocker/Clocker-Info.plist +++ b/Clocker/Clocker/Clocker-Info.plist @@ -13,11 +13,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.6.15 + 1.6.17 CFBundleSignature ???? CFBundleVersion - 70 + 72 Fabric APIKey diff --git a/Clocker/Clocker/de.lproj/InfoPlist.strings b/Clocker/Clocker/de.lproj/InfoPlist.strings index 79d4436..91bbed6 100644 --- a/Clocker/Clocker/de.lproj/InfoPlist.strings +++ b/Clocker/Clocker/de.lproj/InfoPlist.strings @@ -1,10 +1,24 @@ -/* - InfoPlist.strings +/* InfoPlist.strings Clocker - Created by Abhishek Banthia on 3/27/16. + Created by Abhishek Banthia on 3/27/16. */ +"CFBundleDisplayName" = "Clocker"; -*/ +/* (No Comment) */ +"CFBundleName" = "Clocker"; + +/* Privacy - Calendars Usage Description */ +"NSCalendarsUsageDescription" = "Clocker kann nützlicher sein, wenn es kommende Termine von Ihren Kalender anzeigen kann. Sie können diese Einstellung in Systemeinstellungen › Sicherheit Privatsphäre › Privatsphäre ändern"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2016, Abhishek Banthia"; + +/* Privacy - Location Always and When In Use Usage Description */ +"NSLocationAlwaysAndWhenInUseUsageDescription" = "Clocker kann nützlicher sein, wenn es Ihren Standort zur Bestimmung Ihrer aktuellen Zeitzone verwenden kann."; + +/* Privacy - Location Usage Description */ +"NSLocationUsageDescription" = "Clocker kann nützlicher sein, wenn es Ihren Standort zur Bestimmung Ihrer aktuellen Zeitzone verwenden kann."; + +/* Privacy - Reminders Usage Description */ +"NSRemindersUsageDescription" = "Clocker kann nützlicher sein, wenn es Erinnerungen für Ihre ausgewählte Zeitzone(n) setzen kann. Sie können diese Einstellung in Systemeinstellungen › Sicherheit und Privatsphäre › Privatsphäre ändern."; -"CFBundleDisplayName" = "Clocker"; -"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/de.lproj/Localizable.strings b/Clocker/Clocker/de.lproj/Localizable.strings index 07af75b..df1a520 100644 --- a/Clocker/Clocker/de.lproj/Localizable.strings +++ b/Clocker/Clocker/de.lproj/Localizable.strings @@ -1,156 +1,332 @@ -/* - Localizable.strings - Clocker +/* (No Comment) */ +"About Tab" = "Über Clocker"; - Created by Abhishek Banthia on 3/27/16. +"CFBundleDisplayName" = "Clocker"; -*/ +/* Button to add a location */ +"Add Button Title" = "Hinzufügen"; -"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; -"iRateMessageTitle" = "Rate %@"; +/* (No Comment) */ +"app-name" = "Clocker"; + +/* (No Comment) */ +"Appearance Tab" = "Darstellungen"; + +/* Button title for going back to the previous screen */ +"Back" = "Zurück"; + +/* Calendar Permission Title */ +"Calendar Access" = "Kalender-Zugriff"; + +/* Title for Calendar access label */ +"Calendar Access Title" = "Kalender-Zugriff"; + +/* Calendar Detail Text */ +"Calendar Detail" = "Die nächsten Termine Ihrer persönlichen und geteilten Kalender können in der Menüleiste und im Panel angezeigt werden."; + +/* (No Comment) */ +"Calendar Tab" = "Kalender"; + +/* (No Comment) */ +"characters" = "characters"; + +/* (No Comment) */ +"CLFeedbackAlertTitle" = "Vielen Dank, dass Sie Clocker noch besser machen!"; + +/* Button Title for no Calendar access */ +"Click here to start." = "Klicken Sie hier, um zu starten."; + +/* (No Comment) */ +"Clocker is more useful when it can display events from your calendars." = "Clocker ist nützlicher, wenn es Ereignisse von Ihren Kalender anzeigen kann."; + +/* (No Comment) */ +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker ist nützlicher, wenn es Ereignisse von Ihren Kalender anzeigen kann. Sie können diese Einstellung in Systemeinstellungen › Sicherheit und Privatsphäre › Privatsphäre ändern."; + +/* (No Comment) */ +"ClockerVersion" = "Version %@"; + +/* Button to close the panel */ +"Close Button Title" = "Schließen"; + +/* (No Comment) */ +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Kontaktfelder sind optional! Ihre Kontaktinformationen läßt uns Sie kontaktieren, falls wir weitere Informationen benötigen oder helfen können!"; + +/* (No Comment) */ +"Contact Information (Optional)" = "Kontaktinformationen (optional)"; + +/* Continue Button Title */ +"Continue" = "Fortfahren"; + +/* (No Comment) */ +"Day Display Options" = "Tagesanzeige Optionen"; + +/* (No Comment) */ +"Denied" = "Abgelehnt"; + +/* Denied Button Text */ +"Denied Button Text" = "Abgelehnt"; + +/* (No Comment) */ +"Display the time in seconds" = "Zeit in Sekunden anzeigen"; + +/* Title asking users if they like the app */ +"Enjoy using Clocker" = "Gefällt Ihnen Clocker"; + +/* Review */ +"Enjoy using Clocker?" = "Gefällt Ihnen Clocker?"; + +/* (No Comment) */ +"Favourite a timezone to enable menubar display options." = "Favorisieren Sie eine Zeitzone, um die Menüleiste-Anzeigeoptionen zu aktivieren."; + +/* About View Screen */ +"Feedback is always welcome:" = "Feedback ist immer willkommen:"; + +/* (No Comment) */ +"Florida" = "Florida"; + +/* (No Comment) */ +"Future Slider Range" = "Zukünftige Slider-Bereich"; + +/* Title for Welcome View Controller's Continue Button */ +"Get Started" = "Jetzt Anfangen"; + +/* (No Comment) */ +"Grant" = "Gewähren"; + +/* (No Comment) */ +"Grant Access" = "Zugriff gewähren"; + +/* Grant Button Text */ +"Grant Button Text" = "Zulassen"; + +/* (No Comment) */ +"Granted" = "Zugelassen"; + +/* Granted Button Text */ +"Granted Button Text" = "Zugelassen"; + +/* (No Comment) */ +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "Wenn der Besprechung Titel \"Meeting with Neel\" ist und die Kurzlänge auf fünf gesetzt ist, erscheint der Text in der Menüleiste als \"Meeti...\""; + +/* (No Comment) */ +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "Wenn Sie uns helfen möchten, die App in Ihrer Sprache zu lokalisieren oder seltene app-bezogene Nachrichten erhalten wollen, geben Sie bitte Ihre E-Mail ein!"; + +/* (No Comment) */ +"Include Date" = "Datum Anzeigen"; + +/* (No Comment) */ +"Include Day" = "Tag Anzeigen"; + +/* (No Comment) */ +"Include Place Name" = "Ortsname Anzeigen"; + +/* (No Comment) */ "iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; -"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ "iRateCancelButton" = "No, Thanks"; + +/* (No Comment) */ +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ +"iRateMessageTitle" = "Rate %@"; + +/* (No Comment) */ "iRateRateButton" = "Rate It Now"; + +/* (No Comment) */ "iRateRemindButton" = "Remind Me Later"; + +/* (No Comment) */ "iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "Version %@"; -"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; -"app-name" = "Clocker"; -"start-at-login" = "Start At Login"; -"setup-steps" = "It only takes 3 steps to set up Clocker"; -"Permissions-Header" = "Permissions"; -"See your next Calendar event here." = "See your next Calendar event here."; -"Click here to start." = "Click here to start."; -"Reminders Access" = "Reminders Access"; -"Calendar Access" = "Calendar Access"; -"Permissions" = "Permissions"; -"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; -"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; -"Granted Button Text" = "Granted"; -"Denied Button Text" = "Denied"; -"Grant Button Text" = "Grant"; -// Welcome Onboarding -"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* App Setup Description */ +"It only takes 3 steps to set up Clocker." = "Es sind nur 3 Schritte Clocker einzurichten."; -// Tab Item Titles -"Preferences Tab" = "Preferences"; -"Appearance Tab" = "Appearance"; -"Calendar Tab" = "Calendar"; -"About Tab" = "About"; -"Permissions Tab" = "Permissions"; +/* Welcome Onboarding */ +"It only takes 3 steps to setup Clocker." = "Es sind nur 3 Schritte Clocker einzurichten."; -// General Preferences Screen -"Start at Login" = "Start Clocker at Login"; -"Selected Timezones" = "Selected Timezones"; -"Sort by Time Difference" = "Sort by Time Difference"; -"Sort by Name" = "Sort by Name"; -"Sort by Label" = "Sort by Label"; -"Search Field Placeholder" = "Enter a city, state or country name"; -"No Timezone Selected" = "Please select a timezone!"; -"Max Timezones Selected" = "Maximum 100 timezones allowed!"; -"Max Search Characters" = "Only 50 characters allowed!"; -"Add Button Title" = "Add"; -"Close Button Title" = "Close"; +/* (No Comment) */ +"Larger Text" = "Größerer Text"; -// Onboarding -"Open Clocker At Login" = "Open Clocker At Login"; -"Launch Clocker" = "Launch Clocker"; +/* Describing we can change the options later in System Preferences */ +"Later Config Description" = "Diese können später in Systemeinstellungen konfiguriert werden."; -// Welcome Onboarding -"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* Start at Login */ +"Launch at Login" = "Launch at Login"; -// Permissions -"Calendar Access Title" = "Calendar Access"; -"Reminders Access Title" = "Reminders Access"; -"Later Config Description" = "These can be configured later in System Preferences."; -"Back" = "Back"; -"Continue" = "Continue"; -"Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; -"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; +/* (No Comment) */ +"Launch Clocker" = "Clocker Starten"; + +/* (No Comment) */ "Launch Preferences" = "Launch Preferences"; -"Grant Access" = "Grant Access"; -"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Granted" = "Granted"; -"Denied" = "Denied"; -"Grant" = "Grant"; -"Unexpected" = "Unexpected"; -// Onboarding Search -"Quick Add Locations" = "Quick Add Locations"; -"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; -"Search Locations" = "Search Locations"; +/* (No Comment) */ +"Main Panel Options" = "Main Panel Options"; -// Start at Login -"Launch at Login" = "Launch at Login"; -"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; -"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; +/* Max Character Count Allowed Error Message */ +"Max Search Characters" = "Only 50 characters allowed!"; -// Final Onboarding Screen -"You're all set!" = "You're all set!"; -"Thank you for the details." = "Thank you for the details."; -"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; -"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; +/* Max Timezones Error Message */ +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; -// Appearance Tab -"Panel Theme" = "Panel Theme"; -"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; -"Main Panel Options" = "Main Panel Options"; -"Time Format" = "Time Format"; -"Day Display Options" = "Day Display Options"; -"Show Future Slider" = "Show Future Slider"; -"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; -"Display the time in seconds" = "Display the time in seconds"; -"Larger Text" = "Larger Text"; -"Future Slider Range" = "Future Slider Range"; -"Include Date" = "Include Date"; -"Include Day" = "Include Day"; -"Include Place Name" = "Include Place Name"; +/* (No Comment) */ "Menubar Display Options" = "Menubar Display Options"; + +/* (No Comment) */ "Menubar Mode" = "Menubar Mode"; -// Empty View +/* (No Comment) */ +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; + +/* UI Tests */ +"New Zealand" = "Neuseeland"; + +/* Subtitle for no places added */ "No places added" = "No places added"; -// Panel +/* Message shown when the user taps on Add without selecting a timezone */ +"No Timezone Selected" = "Please select a timezone!"; + +/* Title when there's no upcoming event */ "No upcoming event." = "No upcoming event."; -"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; -// Review -"Enjoy using Clocker?" = "Enjoy using Clocker?"; +/* Onboarding */ +"Open Clocker At Login" = "Open Clocker At Login"; + +/* Appearance Tab */ +"Panel Theme" = "Panel Theme"; -// App Feedback -"Tell us what you think!" = "Tell us what you think!"; -"Contact Information (Optional)" = "Contact Information (Optional)"; -"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; +/* Permissions Tab Titles */ +"Permissions" = "Permissions"; -// About View Screen -"Feedback is always welcome:" = "Feedback is always welcome:"; +/* Title for Permissions screen */ +"Permissions Tab" = "Permissions"; -// Calendars View -"Upcoming Event View Options" = "Upcoming Event View Options"; -"Show Upcoming Event View" = "Show Upcoming Event View"; +/* (No Comment) */ +"Permissions-Header" = "Permissions"; + +/* Tab Item Titles */ +"Preferences Tab" = "Preferences"; + +/* Text explaining options can be changed in the future through System Preferences */ +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; + +/* Onboarding Search */ +"Quick Add Locations" = "Quick Add Locations"; + +/* Notes Popover */ +"Reminder Set" = "Reminder Set"; + +/* Reminders Permission Title */ +"Reminders Access" = "Reminders Access"; + +/* Title for Reminders Access Label */ +"Reminders Access Title" = "Reminders Access"; + +/* Reminders Detail Text */ +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; + +/* (No Comment) */ +"San Francisco" = "San Francisco"; + +/* Search Field Placeholder */ +"Search Field Placeholder" = "Enter a city, state or country name"; + +/* (No Comment) */ +"Search Locations" = "Search Locations"; + +/* Next Event Label for no Calendar access */ +"See your next Calendar event here." = "See your next Calendar event here."; + +/* Start at Login */ +"Selected Timezones" = "Selected Timezones"; + +/* (No Comment) */ +"setup-steps" = "It only takes 3 steps to set up Clocker"; + +/* (No Comment) */ +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +/* (No Comment) */ "Show All Day Meetings" = "Show All Day Meetings"; -"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; -"Truncate menubar text longer than" = "Truncate menubar text longer than"; -"characters" = "characters"; + +/* (No Comment) */ "Show events from" = "Show events from"; -"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; -// Notes Popover -"Reminder Set" = "Reminder Set"; +/* (No Comment) */ +"Show Future Slider" = "Show Future Slider"; + +/* (No Comment) */ +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; + +/* (No Comment) */ +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; + +/* (No Comment) */ +"Show Upcoming Event View" = "Show Upcoming Event View"; + +/* Start at Login */ +"Sort by Label" = "Sort by Label"; + +/* Start at Login */ +"Sort by Name" = "Sort by Name"; + +/* Start at Login */ +"Sort by Time Difference" = "Sort by Time Difference"; + +/* Start at Login */ +"Start at Login" = "Start Clocker at Login"; + +/* (No Comment) */ +"start-at-login" = "Start At Login"; + +/* (No Comment) */ "Successfully set." = "Successfully set."; -// Errors -"You're offline, maybe?" = "You're offline, maybe?"; -"Try again, maybe?" = "Try again, maybe?"; +/* App Feedback */ +"Tell us what you think!" = "Tell us what you think!"; + +/* (No Comment) */ +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; + +/* (No Comment) */ +"Thank you for the details." = "Thank you for the details."; + +/* (No Comment) */ "The Internet connection appears to be offline." = "The Internet connection appears to be offline."; -// UI Tests -"New Zealand" = "New Zealand"; -"Florida" = "Florida"; -"San Francisco" = "San Francisco"; +/* (No Comment) */ +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; + +/* (No Comment) */ +"Time Format" = "Time Format"; + +/* (No Comment) */ +"Truncate menubar text longer than" = "Menüleisten Text kürzen länger als"; + +/* (No Comment) */ +"Try again, maybe?" = "Vielleicht erneut versuchen?"; + +/* (No Comment) */ +"Unexpected" = "Unerwartet"; + +/* Calendars View */ +"Upcoming Event View Options" = "Kommende Ereignis Anzeige Optionen"; + +/* (No Comment) */ +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; + +/* Title when there's no event scheduled for tomorrow */ +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +/* (No Comment) */ +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; + +/* Final Onboarding Screen */ +"You're all set!" = "You're all set!"; + +/* Errors */ +"You're offline, maybe?" = "You're offline, maybe?"; + diff --git a/Clocker/Clocker/en.lproj/Localizable.strings b/Clocker/Clocker/en.lproj/Localizable.strings index 07af75b..8788d9d 100644 --- a/Clocker/Clocker/en.lproj/Localizable.strings +++ b/Clocker/Clocker/en.lproj/Localizable.strings @@ -6,6 +6,7 @@ */ +"CFBundleDisplayName" = "Clocker"; "Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; "iRateMessageTitle" = "Rate %@"; "iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; diff --git a/Clocker/Clocker/ru.lproj/InfoPlist.strings b/Clocker/Clocker/ru.lproj/InfoPlist.strings index 79d4436..1a079f8 100644 --- a/Clocker/Clocker/ru.lproj/InfoPlist.strings +++ b/Clocker/Clocker/ru.lproj/InfoPlist.strings @@ -1,10 +1,24 @@ -/* - InfoPlist.strings +/* InfoPlist.strings Clocker - Created by Abhishek Banthia on 3/27/16. + Created by Abhishek Banthia on 3/27/16. */ +"CFBundleDisplayName" = "Clocker"; -*/ +/* (No Comment) */ +"CFBundleName" = "Clocker"; + +/* Privacy - Calendars Usage Description */ +"NSCalendarsUsageDescription" = "Clocker can be more useful when it can display upcoming events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Авторское право © 2016, Абхишек Бантия"; + +/* Privacy - Location Always and When In Use Usage Description */ +"NSLocationAlwaysAndWhenInUseUsageDescription" = "Clocker can be more useful when it can use your location to determine your current timezone."; + +/* Privacy - Location Usage Description */ +"NSLocationUsageDescription" = "Clocker can be more useful when it can use your location to determine your current timezone."; + +/* Privacy - Reminders Usage Description */ +"NSRemindersUsageDescription" = "Clocker can be more useful when it can set reminders for your selected timezone(s). You can change this setting in System Preferences › Security & Privacy › Privacy."; -"CFBundleDisplayName" = "Clocker"; -"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/ru.lproj/Localizable.strings b/Clocker/Clocker/ru.lproj/Localizable.strings index 07af75b..5630702 100644 --- a/Clocker/Clocker/ru.lproj/Localizable.strings +++ b/Clocker/Clocker/ru.lproj/Localizable.strings @@ -1,156 +1,332 @@ -/* - Localizable.strings - Clocker +/* (No Comment) */ +"About Tab" = "О программе"; - Created by Abhishek Banthia on 3/27/16. +/* Button to add a location */ +"Add Button Title" = "Добавить"; -*/ +"CFBundleDisplayName" = "Clocker"; -"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; -"iRateMessageTitle" = "Rate %@"; -"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; -"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; -"iRateCancelButton" = "No, Thanks"; -"iRateRateButton" = "Rate It Now"; -"iRateRemindButton" = "Remind Me Later"; -"iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "Version %@"; -"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +/* (No Comment) */ "app-name" = "Clocker"; -"start-at-login" = "Start At Login"; -"setup-steps" = "It only takes 3 steps to set up Clocker"; -"Permissions-Header" = "Permissions"; -"See your next Calendar event here." = "See your next Calendar event here."; -"Click here to start." = "Click here to start."; -"Reminders Access" = "Reminders Access"; + +/* (No Comment) */ +"Appearance Tab" = "Appearance"; + +/* Button title for going back to the previous screen */ +"Back" = "Назад"; + +/* Calendar Permission Title */ "Calendar Access" = "Calendar Access"; -"Permissions" = "Permissions"; -"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; -"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; -"Granted Button Text" = "Granted"; -"Denied Button Text" = "Denied"; -"Grant Button Text" = "Grant"; -// Welcome Onboarding -"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* Title for Calendar access label */ +"Calendar Access Title" = "Calendar Access"; -// Tab Item Titles -"Preferences Tab" = "Preferences"; -"Appearance Tab" = "Appearance"; -"Calendar Tab" = "Calendar"; -"About Tab" = "About"; -"Permissions Tab" = "Permissions"; +/* Calendar Detail Text */ +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -// General Preferences Screen -"Start at Login" = "Start Clocker at Login"; -"Selected Timezones" = "Selected Timezones"; -"Sort by Time Difference" = "Sort by Time Difference"; -"Sort by Name" = "Sort by Name"; -"Sort by Label" = "Sort by Label"; -"Search Field Placeholder" = "Enter a city, state or country name"; -"No Timezone Selected" = "Please select a timezone!"; -"Max Timezones Selected" = "Maximum 100 timezones allowed!"; -"Max Search Characters" = "Only 50 characters allowed!"; -"Add Button Title" = "Add"; -"Close Button Title" = "Close"; +/* (No Comment) */ +"Calendar Tab" = "Календарь"; -// Onboarding -"Open Clocker At Login" = "Open Clocker At Login"; -"Launch Clocker" = "Launch Clocker"; +/* (No Comment) */ +"characters" = "characters"; -// Welcome Onboarding -"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* (No Comment) */ +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; -// Permissions -"Calendar Access Title" = "Calendar Access"; -"Reminders Access Title" = "Reminders Access"; -"Later Config Description" = "These can be configured later in System Preferences."; -"Back" = "Back"; -"Continue" = "Continue"; +/* Button Title for no Calendar access */ +"Click here to start." = "Нажмите здесь, чтобы начать."; + +/* (No Comment) */ "Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; + +/* (No Comment) */ "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; -"Launch Preferences" = "Launch Preferences"; -"Grant Access" = "Grant Access"; -"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Granted" = "Granted"; -"Denied" = "Denied"; -"Grant" = "Grant"; -"Unexpected" = "Unexpected"; -// Onboarding Search -"Quick Add Locations" = "Quick Add Locations"; -"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; -"Search Locations" = "Search Locations"; +/* (No Comment) */ +"ClockerVersion" = "Версия %@"; -// Start at Login -"Launch at Login" = "Launch at Login"; -"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; -"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; +/* Button to close the panel */ +"Close Button Title" = "Закрыть"; -// Final Onboarding Screen -"You're all set!" = "You're all set!"; -"Thank you for the details." = "Thank you for the details."; -"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; -"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; +/* (No Comment) */ +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; -// Appearance Tab -"Panel Theme" = "Panel Theme"; -"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; -"Main Panel Options" = "Main Panel Options"; -"Time Format" = "Time Format"; +/* (No Comment) */ +"Contact Information (Optional)" = "Contact Information (Optional)"; + +/* Continue Button Title */ +"Continue" = "Продолжить"; + +/* (No Comment) */ "Day Display Options" = "Day Display Options"; -"Show Future Slider" = "Show Future Slider"; -"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; + +/* (No Comment) */ +"Denied" = "Denied"; + +/* Denied Button Text */ +"Denied Button Text" = "Denied"; + +/* (No Comment) */ "Display the time in seconds" = "Display the time in seconds"; -"Larger Text" = "Larger Text"; + +/* Title asking users if they like the app */ +"Enjoy using Clocker" = "Наслаждайтесь использованием Clocker"; + +/* Review */ +"Enjoy using Clocker?" = "Понравилось приложение Clocker?"; + +/* (No Comment) */ +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; + +/* About View Screen */ +"Feedback is always welcome:" = "Feedback is always welcome:"; + +/* (No Comment) */ +"Florida" = "Флорида"; + +/* (No Comment) */ "Future Slider Range" = "Future Slider Range"; + +/* Title for Welcome View Controller's Continue Button */ +"Get Started" = "Начать"; + +/* (No Comment) */ +"Grant" = "Grant"; + +/* (No Comment) */ +"Grant Access" = "Grant Access"; + +/* Grant Button Text */ +"Grant Button Text" = "Grant"; + +/* (No Comment) */ +"Granted" = "Granted"; + +/* Granted Button Text */ +"Granted Button Text" = "Granted"; + +/* (No Comment) */ +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +/* (No Comment) */ +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +/* (No Comment) */ "Include Date" = "Include Date"; + +/* (No Comment) */ "Include Day" = "Include Day"; + +/* (No Comment) */ "Include Place Name" = "Include Place Name"; + +/* (No Comment) */ +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ +"iRateCancelButton" = "Нет, спасибо"; + +/* (No Comment) */ +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ +"iRateMessageTitle" = "Rate %@"; + +/* (No Comment) */ +"iRateRateButton" = "Rate It Now"; + +/* (No Comment) */ +"iRateRemindButton" = "Remind Me Later"; + +/* (No Comment) */ +"iRateUpdateMessage" = "Update now?"; + +/* App Setup Description */ +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; + +/* Welcome Onboarding */ +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; + +/* (No Comment) */ +"Larger Text" = "Larger Text"; + +/* Describing we can change the options later in System Preferences */ +"Later Config Description" = "These can be configured later in System Preferences."; + +/* Start at Login */ +"Launch at Login" = "Launch at Login"; + +/* (No Comment) */ +"Launch Clocker" = "Запустить Clocker"; + +/* (No Comment) */ +"Launch Preferences" = "Параметры запуска"; + +/* (No Comment) */ +"Main Panel Options" = "Main Panel Options"; + +/* Max Character Count Allowed Error Message */ +"Max Search Characters" = "Only 50 characters allowed!"; + +/* Max Timezones Error Message */ +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; + +/* (No Comment) */ "Menubar Display Options" = "Menubar Display Options"; + +/* (No Comment) */ "Menubar Mode" = "Menubar Mode"; -// Empty View +/* (No Comment) */ +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; + +/* UI Tests */ +"New Zealand" = "Новая Зеландия"; + +/* Subtitle for no places added */ "No places added" = "No places added"; -// Panel +/* Message shown when the user taps on Add without selecting a timezone */ +"No Timezone Selected" = "Пожалуйста, выберите часовой пояс!"; + +/* Title when there's no upcoming event */ "No upcoming event." = "No upcoming event."; -"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; -// Review -"Enjoy using Clocker?" = "Enjoy using Clocker?"; +/* Onboarding */ +"Open Clocker At Login" = "Open Clocker At Login"; -// App Feedback -"Tell us what you think!" = "Tell us what you think!"; -"Contact Information (Optional)" = "Contact Information (Optional)"; -"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; +/* Appearance Tab */ +"Panel Theme" = "Panel Theme"; -// About View Screen -"Feedback is always welcome:" = "Feedback is always welcome:"; +/* Permissions Tab Titles */ +"Permissions" = "Permissions"; -// Calendars View -"Upcoming Event View Options" = "Upcoming Event View Options"; -"Show Upcoming Event View" = "Show Upcoming Event View"; +/* Title for Permissions screen */ +"Permissions Tab" = "Permissions"; + +/* (No Comment) */ +"Permissions-Header" = "Permissions"; + +/* Tab Item Titles */ +"Preferences Tab" = "Preferences"; + +/* Text explaining options can be changed in the future through System Preferences */ +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; + +/* Onboarding Search */ +"Quick Add Locations" = "Quick Add Locations"; + +/* Notes Popover */ +"Reminder Set" = "Reminder Set"; + +/* Reminders Permission Title */ +"Reminders Access" = "Reminders Access"; + +/* Title for Reminders Access Label */ +"Reminders Access Title" = "Reminders Access"; + +/* Reminders Detail Text */ +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; + +/* (No Comment) */ +"San Francisco" = "Сан-Франциско"; + +/* Search Field Placeholder */ +"Search Field Placeholder" = "Enter a city, state or country name"; + +/* (No Comment) */ +"Search Locations" = "Search Locations"; + +/* Next Event Label for no Calendar access */ +"See your next Calendar event here." = "See your next Calendar event here."; + +/* Start at Login */ +"Selected Timezones" = "Selected Timezones"; + +/* (No Comment) */ +"setup-steps" = "It only takes 3 steps to set up Clocker"; + +/* (No Comment) */ +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +/* (No Comment) */ "Show All Day Meetings" = "Show All Day Meetings"; -"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; -"Truncate menubar text longer than" = "Truncate menubar text longer than"; -"characters" = "characters"; + +/* (No Comment) */ "Show events from" = "Show events from"; -"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; -// Notes Popover -"Reminder Set" = "Reminder Set"; +/* (No Comment) */ +"Show Future Slider" = "Show Future Slider"; + +/* (No Comment) */ +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; + +/* (No Comment) */ +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; + +/* (No Comment) */ +"Show Upcoming Event View" = "Show Upcoming Event View"; + +/* Start at Login */ +"Sort by Label" = "Sort by Label"; + +/* Start at Login */ +"Sort by Name" = "Сортировка по названию"; + +/* Start at Login */ +"Sort by Time Difference" = "Sort by Time Difference"; + +/* Start at Login */ +"Start at Login" = "Start Clocker at Login"; + +/* (No Comment) */ +"start-at-login" = "Start At Login"; + +/* (No Comment) */ "Successfully set." = "Successfully set."; -// Errors -"You're offline, maybe?" = "You're offline, maybe?"; -"Try again, maybe?" = "Try again, maybe?"; +/* App Feedback */ +"Tell us what you think!" = "Tell us what you think!"; + +/* (No Comment) */ +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; + +/* (No Comment) */ +"Thank you for the details." = "Thank you for the details."; + +/* (No Comment) */ "The Internet connection appears to be offline." = "The Internet connection appears to be offline."; -// UI Tests -"New Zealand" = "New Zealand"; -"Florida" = "Florida"; -"San Francisco" = "San Francisco"; +/* (No Comment) */ +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; + +/* (No Comment) */ +"Time Format" = "Формат времени"; + +/* (No Comment) */ +"Truncate menubar text longer than" = "Truncate menubar text longer than"; + +/* (No Comment) */ +"Try again, maybe?" = "Может, попробуем еще раз?"; + +/* (No Comment) */ +"Unexpected" = "Unexpected"; + +/* Calendars View */ +"Upcoming Event View Options" = "Upcoming Event View Options"; + +/* (No Comment) */ +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; + +/* Title when there's no event scheduled for tomorrow */ +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +/* (No Comment) */ +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; + +/* Final Onboarding Screen */ +"You're all set!" = "Все готово!"; + +/* Errors */ +"You're offline, maybe?" = "You're offline, maybe?"; + diff --git a/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings b/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings index 79d4436..86fee5e 100644 --- a/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings +++ b/Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings @@ -1,10 +1,24 @@ -/* - InfoPlist.strings +/* InfoPlist.strings Clocker - Created by Abhishek Banthia on 3/27/16. + Created by Abhishek Banthia on 3/27/16. */ +"CFBundleDisplayName" = "Clocker"; -*/ +/* (No Comment) */ +"CFBundleName" = "Clocker"; + +/* Privacy - Calendars Usage Description */ +"NSCalendarsUsageDescription" = "Clocker在展示你即将到来的日程时非常有用。你可以在 系统设置› 安全和隐私› 隐私 中更改设置。"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "版权所有© 2016, Abhishek Banthia"; + +/* Privacy - Location Always and When In Use Usage Description */ +"NSLocationAlwaysAndWhenInUseUsageDescription" = "Clocker can be more useful when it can use your location to determine your current timezone."; + +/* Privacy - Location Usage Description */ +"NSLocationUsageDescription" = "Clocker can be more useful when it can use your location to determine your current timezone."; + +/* Privacy - Reminders Usage Description */ +"NSRemindersUsageDescription" = "Clocker can be more useful when it can set reminders for your selected timezone(s). You can change this setting in System Preferences › Security & Privacy › Privacy."; -"CFBundleDisplayName" = "Clocker"; -"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings index 07af75b..84acced 100644 --- a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings +++ b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings @@ -1,156 +1,332 @@ -/* - Localizable.strings - Clocker +/* (No Comment) */ +"About Tab" = "About"; - Created by Abhishek Banthia on 3/27/16. +"CFBundleDisplayName" = "Clocker"; -*/ +/* Button to add a location */ +"Add Button Title" = "Add"; -"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; -"iRateMessageTitle" = "Rate %@"; -"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; -"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; -"iRateCancelButton" = "No, Thanks"; -"iRateRateButton" = "Rate It Now"; -"iRateRemindButton" = "Remind Me Later"; -"iRateUpdateMessage" = "Update now?"; -"ClockerVersion" = "Version %@"; -"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; +/* (No Comment) */ "app-name" = "Clocker"; -"start-at-login" = "Start At Login"; -"setup-steps" = "It only takes 3 steps to set up Clocker"; -"Permissions-Header" = "Permissions"; -"See your next Calendar event here." = "See your next Calendar event here."; -"Click here to start." = "Click here to start."; -"Reminders Access" = "Reminders Access"; + +/* (No Comment) */ +"Appearance Tab" = "Appearance"; + +/* Button title for going back to the previous screen */ +"Back" = "Back"; + +/* Calendar Permission Title */ "Calendar Access" = "Calendar Access"; -"Permissions" = "Permissions"; -"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; -"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; -"Granted Button Text" = "Granted"; -"Denied Button Text" = "Denied"; -"Grant Button Text" = "Grant"; -// Welcome Onboarding -"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* Title for Calendar access label */ +"Calendar Access Title" = "Calendar Access"; -// Tab Item Titles -"Preferences Tab" = "Preferences"; -"Appearance Tab" = "Appearance"; +/* Calendar Detail Text */ +"Calendar Detail" = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; + +/* (No Comment) */ "Calendar Tab" = "Calendar"; -"About Tab" = "About"; -"Permissions Tab" = "Permissions"; -// General Preferences Screen -"Start at Login" = "Start Clocker at Login"; -"Selected Timezones" = "Selected Timezones"; -"Sort by Time Difference" = "Sort by Time Difference"; -"Sort by Name" = "Sort by Name"; -"Sort by Label" = "Sort by Label"; -"Search Field Placeholder" = "Enter a city, state or country name"; -"No Timezone Selected" = "Please select a timezone!"; -"Max Timezones Selected" = "Maximum 100 timezones allowed!"; -"Max Search Characters" = "Only 50 characters allowed!"; -"Add Button Title" = "Add"; -"Close Button Title" = "Close"; +/* (No Comment) */ +"characters" = "characters"; -// Onboarding -"Open Clocker At Login" = "Open Clocker At Login"; -"Launch Clocker" = "Launch Clocker"; +/* (No Comment) */ +"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!"; -// Welcome Onboarding -"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; -"Get Started" = "Get Started"; +/* Button Title for no Calendar access */ +"Click here to start." = "Click here to start."; -// Permissions -"Calendar Access Title" = "Calendar Access"; -"Reminders Access Title" = "Reminders Access"; -"Later Config Description" = "These can be configured later in System Preferences."; -"Back" = "Back"; -"Continue" = "Continue"; +/* (No Comment) */ "Clocker is more useful when it can display events from your calendars." = "Clocker is more useful when it can display events from your calendars."; + +/* (No Comment) */ "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy."; -"Launch Preferences" = "Launch Preferences"; -"Grant Access" = "Grant Access"; -"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; -"Granted" = "Granted"; -"Denied" = "Denied"; -"Grant" = "Grant"; -"Unexpected" = "Unexpected"; -// Onboarding Search -"Quick Add Locations" = "Quick Add Locations"; -"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; -"Search Locations" = "Search Locations"; +/* (No Comment) */ +"ClockerVersion" = "Version %@"; -// Start at Login -"Launch at Login" = "Launch at Login"; -"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; -"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; +/* Button to close the panel */ +"Close Button Title" = "Close"; -// Final Onboarding Screen -"You're all set!" = "You're all set!"; -"Thank you for the details." = "Thank you for the details."; -"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; -"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; +/* (No Comment) */ +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; -// Appearance Tab -"Panel Theme" = "Panel Theme"; -"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; -"Main Panel Options" = "Main Panel Options"; -"Time Format" = "Time Format"; +/* (No Comment) */ +"Contact Information (Optional)" = "Contact Information (Optional)"; + +/* Continue Button Title */ +"Continue" = "Continue"; + +/* (No Comment) */ "Day Display Options" = "Day Display Options"; -"Show Future Slider" = "Show Future Slider"; -"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; + +/* (No Comment) */ +"Denied" = "Denied"; + +/* Denied Button Text */ +"Denied Button Text" = "Denied"; + +/* (No Comment) */ "Display the time in seconds" = "Display the time in seconds"; -"Larger Text" = "Larger Text"; + +/* Title asking users if they like the app */ +"Enjoy using Clocker" = "Enjoy using Clocker"; + +/* Review */ +"Enjoy using Clocker?" = "Enjoy using Clocker?"; + +/* (No Comment) */ +"Favourite a timezone to enable menubar display options." = "Favourite a timezone to enable menubar display options."; + +/* About View Screen */ +"Feedback is always welcome:" = "Feedback is always welcome:"; + +/* (No Comment) */ +"Florida" = "Florida"; + +/* (No Comment) */ "Future Slider Range" = "Future Slider Range"; -"Include Date" = "Include Date"; + +/* Title for Welcome View Controller's Continue Button */ +"Get Started" = "立刻开始!"; + +/* (No Comment) */ +"Grant" = "授权"; + +/* (No Comment) */ +"Grant Access" = "授予访问权限"; + +/* Grant Button Text */ +"Grant Button Text" = "授权"; + +/* (No Comment) */ +"Granted" = "已授权"; + +/* Granted Button Text */ +"Granted Button Text" = "已授权"; + +/* (No Comment) */ +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; + +/* (No Comment) */ +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!"; + +/* (No Comment) */ +"Include Date" = "包含日期"; + +/* (No Comment) */ "Include Day" = "Include Day"; + +/* (No Comment) */ "Include Place Name" = "Include Place Name"; + +/* (No Comment) */ +"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ +"iRateCancelButton" = "No, Thanks"; + +/* (No Comment) */ +"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!"; + +/* (No Comment) */ +"iRateMessageTitle" = "Rate %@"; + +/* (No Comment) */ +"iRateRateButton" = "Rate It Now"; + +/* (No Comment) */ +"iRateRemindButton" = "稍后提醒"; + +/* (No Comment) */ +"iRateUpdateMessage" = "立即更新"; + +/* App Setup Description */ +"It only takes 3 steps to set up Clocker." = "It only takes 3 steps to setup Clocker."; + +/* Welcome Onboarding */ +"It only takes 3 steps to setup Clocker." = "It only takes 3 steps to setup Clocker."; + +/* (No Comment) */ +"Larger Text" = "Larger Text"; + +/* Describing we can change the options later in System Preferences */ +"Later Config Description" = "These can be configured later in System Preferences."; + +/* Start at Login */ +"Launch at Login" = "登录时启动"; + +/* (No Comment) */ +"Launch Clocker" = "Launch Clocker"; + +/* (No Comment) */ +"Launch Preferences" = "Launch Preferences"; + +/* (No Comment) */ +"Main Panel Options" = "Main Panel Options"; + +/* Max Character Count Allowed Error Message */ +"Max Search Characters" = "Only 50 characters allowed!"; + +/* Max Timezones Error Message */ +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; + +/* (No Comment) */ "Menubar Display Options" = "Menubar Display Options"; + +/* (No Comment) */ "Menubar Mode" = "Menubar Mode"; -// Empty View +/* (No Comment) */ +"More search options in Clocker Preferences." = "More search options in Clocker Preferences."; + +/* UI Tests */ +"New Zealand" = "New Zealand"; + +/* Subtitle for no places added */ "No places added" = "No places added"; -// Panel +/* Message shown when the user taps on Add without selecting a timezone */ +"No Timezone Selected" = "Please select a timezone!"; + +/* Title when there's no upcoming event */ "No upcoming event." = "No upcoming event."; -"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; -// Review -"Enjoy using Clocker?" = "Enjoy using Clocker?"; +/* Onboarding */ +"Open Clocker At Login" = "Open Clocker At Login"; -// App Feedback -"Tell us what you think!" = "Tell us what you think!"; -"Contact Information (Optional)" = "Contact Information (Optional)"; -"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!"; +/* Appearance Tab */ +"Panel Theme" = "Panel Theme"; -// About View Screen -"Feedback is always welcome:" = "Feedback is always welcome:"; +/* Permissions Tab Titles */ +"Permissions" = "Permissions"; -// Calendars View -"Upcoming Event View Options" = "Upcoming Event View Options"; -"Show Upcoming Event View" = "Show Upcoming Event View"; +/* Title for Permissions screen */ +"Permissions Tab" = "Permissions"; + +/* (No Comment) */ +"Permissions-Header" = "Permissions"; + +/* Tab Item Titles */ +"Preferences Tab" = "Preferences"; + +/* Text explaining options can be changed in the future through System Preferences */ +"Privacy Text" = "You can change this later in the Privacy section of the System Preferences."; + +/* Onboarding Search */ +"Quick Add Locations" = "Quick Add Locations"; + +/* Notes Popover */ +"Reminder Set" = "Reminder Set"; + +/* Reminders Permission Title */ +"Reminders Access" = "Reminders Access"; + +/* Title for Reminders Access Label */ +"Reminders Access Title" = "Reminders Access"; + +/* Reminders Detail Text */ +"Reminders Detail" = "Set reminders in the timezone of the location of your choice. Your reminders are stored in the default Reminders app."; + +/* (No Comment) */ +"San Francisco" = "San Francisco"; + +/* Search Field Placeholder */ +"Search Field Placeholder" = "Enter a city, state or country name"; + +/* (No Comment) */ +"Search Locations" = "Search Locations"; + +/* Next Event Label for no Calendar access */ +"See your next Calendar event here." = "See your next Calendar event here."; + +/* Start at Login */ +"Selected Timezones" = "Selected Timezones"; + +/* (No Comment) */ +"setup-steps" = "It only takes 3 steps to set up Clocker"; + +/* (No Comment) */ +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +/* (No Comment) */ "Show All Day Meetings" = "Show All Day Meetings"; -"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; -"Truncate menubar text longer than" = "Truncate menubar text longer than"; -"characters" = "characters"; + +/* (No Comment) */ "Show events from" = "Show events from"; -"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\""; -// Notes Popover -"Reminder Set" = "Reminder Set"; +/* (No Comment) */ +"Show Future Slider" = "Show Future Slider"; + +/* (No Comment) */ +"Show Next Meeting Title in Menubar" = "Show Next Meeting Title in Menubar"; + +/* (No Comment) */ +"Show Sunrise/Sunset" = "Show Sunrise/Sunset"; + +/* (No Comment) */ +"Show Upcoming Event View" = "Show Upcoming Event View"; + +/* Start at Login */ +"Sort by Label" = "Sort by Label"; + +/* Start at Login */ +"Sort by Name" = "Sort by Name"; + +/* Start at Login */ +"Sort by Time Difference" = "Sort by Time Difference"; + +/* Start at Login */ +"Start at Login" = "Start Clocker at Login"; + +/* (No Comment) */ +"start-at-login" = "登录时启动"; + +/* (No Comment) */ "Successfully set." = "Successfully set."; -// Errors -"You're offline, maybe?" = "You're offline, maybe?"; -"Try again, maybe?" = "Try again, maybe?"; +/* App Feedback */ +"Tell us what you think!" = "Tell us what you think!"; + +/* (No Comment) */ +"Thank you for helping make Clocker even better!" = "Thank you for helping make Clocker even better!"; + +/* (No Comment) */ +"Thank you for the details." = "Thank you for the details."; + +/* (No Comment) */ "The Internet connection appears to be offline." = "The Internet connection appears to be offline."; -// UI Tests -"New Zealand" = "New Zealand"; -"Florida" = "Florida"; -"San Francisco" = "San Francisco"; +/* (No Comment) */ +"This can be configured later in Clocker Preferences." = "This can be configured later in Clocker Preferences."; + +/* (No Comment) */ +"Time Format" = "Time Format"; + +/* (No Comment) */ +"Truncate menubar text longer than" = "Truncate menubar text longer than"; + +/* (No Comment) */ +"Try again, maybe?" = "Try again, maybe?"; + +/* (No Comment) */ +"Unexpected" = "Unexpected"; + +/* Calendars View */ +"Upcoming Event View Options" = "Upcoming Event View Options"; + +/* (No Comment) */ +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel."; + +/* Title when there's no event scheduled for tomorrow */ +"You have no events scheduled for tomorrow." = "You have no events scheduled for tomorrow."; + +/* (No Comment) */ +"You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences." = "You'll see a clock icon in your Menu Bar when you launch the app. If you'd like to see a dock icon, go to Preferences."; + +/* Final Onboarding Screen */ +"You're all set!" = "You're all set!"; + +/* Errors */ +"You're offline, maybe?" = "You're offline, maybe?"; + diff --git a/Clocker/ClockerHelper/de.lproj/InfoPlist.strings b/Clocker/ClockerHelper/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..c4026b8 --- /dev/null +++ b/Clocker/ClockerHelper/de.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerHelper"; + diff --git a/Clocker/ClockerHelper/de.lproj/Main.strings b/Clocker/ClockerHelper/de.lproj/Main.strings new file mode 100644 index 0000000..af0ab7e --- /dev/null +++ b/Clocker/ClockerHelper/de.lproj/Main.strings @@ -0,0 +1,393 @@ +/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ +"1b7-l0-nxx.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Lower"; ObjectID = "1tx-W0-xDw"; */ +"1tx-W0-xDw.title" = "Lower"; + +/* Class = "NSMenuItem"; title = "Customize Toolbar…"; ObjectID = "1UK-8n-QPP"; */ +"1UK-8n-QPP.title" = "Customize Toolbar…"; + +/* Class = "NSMenuItem"; title = "ClockerHelper"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Raise"; ObjectID = "2h7-ER-AoG"; */ +"2h7-ER-AoG.title" = "Raise"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ +"2oI-Rn-ZJC.title" = "Transformations"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ +"3IN-sU-3Bg.title" = "Spelling"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "3Om-Ey-2VK"; */ +"3Om-Ey-2VK.title" = "Use Default"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ +"3rS-ZA-NoH.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ +"4EN-yA-p0u.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Enter Full Screen"; + +/* Class = "NSMenuItem"; title = "Quit ClockerHelper"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Quit ClockerHelper"; + +/* Class = "NSMenuItem"; title = "About ClockerHelper"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "About ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ +"5QF-Oa-p0T.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Copy Style"; ObjectID = "5Vv-lz-BsD"; */ +"5Vv-lz-BsD.title" = "Copy Style"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ +"6dh-zS-Vam.title" = "Redo"; + +/* Class = "NSMenu"; title = "Writing Direction"; ObjectID = "8mr-sm-Yjd"; */ +"8mr-sm-Yjd.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ +"9ic-FL-obx.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ +"9yt-4B-nSM.title" = "Smart Copy/Paste"; + +/* Class = "NSMenuItem"; title = "Tighten"; ObjectID = "46P-cB-AYj"; */ +"46P-cB-AYj.title" = "Tighten"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ +"78Y-hA-62v.title" = "Correct Spelling Automatically"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "agt-UL-0e3"; */ +"agt-UL-0e3.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Print…"; ObjectID = "aTl-1u-JFS"; */ +"aTl-1u-JFS.title" = "Print…"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Window"; + +/* Class = "NSMenu"; title = "Font"; ObjectID = "aXa-aM-Jaq"; */ +"aXa-aM-Jaq.title" = "Font"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Main Menu"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "BgM-ve-c93"; */ +"BgM-ve-c93.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Show Colors"; ObjectID = "bgn-CT-cEk"; */ +"bgn-CT-cEk.title" = "Show Colors"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "File"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Preferences…"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ +"buJ-ug-pKt.title" = "Use Selection for Find"; + +/* Class = "NSMenuItem"; title = "Save As…"; ObjectID = "Bw7-FT-i3A"; */ +"Bw7-FT-i3A.title" = "Save As…"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ +"c8a-y6-VQd.title" = "Transformations"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "cDB-IK-hbR"; */ +"cDB-IK-hbR.title" = "Use None"; + +/* Class = "NSMenuItem"; title = "Selection"; ObjectID = "cqv-fj-IhA"; */ +"cqv-fj-IhA.title" = "Selection"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ +"cwL-P1-jid.title" = "Smart Links"; + +/* Class = "NSMenu"; title = "Text"; ObjectID = "d9c-me-L2H"; */ +"d9c-me-L2H.title" = "Text"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ +"d9M-CD-aMd.title" = "Make Lower Case"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "File"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ +"dRJ-4n-Yzg.title" = "Undo"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ +"Dv1-io-Yv7.title" = "Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Close"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Text"; ObjectID = "Fal-I4-PZk"; */ +"Fal-I4-PZk.title" = "Text"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ +"FeM-D8-WVr.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "ClockerHelper Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "ClockerHelper Help"; + +/* Class = "NSMenuItem"; title = "Bold"; ObjectID = "GB9-OM-e27"; */ +"GB9-OM-e27.title" = "Bold"; + +/* Class = "NSMenu"; title = "Format"; ObjectID = "GEO-Iw-cKr"; */ +"GEO-Iw-cKr.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Font"; ObjectID = "Gi5-1S-RQB"; */ +"Gi5-1S-RQB.title" = "Font"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "GUa-eO-cwY"; */ +"GUa-eO-cwY.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ +"gVA-U4-sdL.title" = "Paste"; + +/* Class = "NSMenuItem"; title = "Writing Direction"; ObjectID = "H1b-Si-o9J"; */ +"H1b-Si-o9J.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "View"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ +"HFo-cy-zxI.title" = "Show Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ +"HFQ-gK-NFA.title" = "Text Replacement"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ +"hQb-2v-fYv.title" = "Smart Quotes"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "View"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ +"hz2-CU-CR7.title" = "Check Document Now"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Subscript"; ObjectID = "I0S-gh-46l"; */ +"I0S-gh-46l.title" = "Subscript"; + +/* Class = "NSMenuItem"; title = "Smaller"; ObjectID = "i1d-Er-qST"; */ +"i1d-Er-qST.title" = "Smaller"; + +/* Class = "NSMenuItem"; title = "Open…"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Open…"; + +/* Class = "NSMenu"; title = "Baseline"; ObjectID = "ijk-EB-dga"; */ +"ijk-EB-dga.title" = "Baseline"; + +/* Class = "NSMenuItem"; title = "Justify"; ObjectID = "J5U-5w-g23"; */ +"J5U-5w-g23.title" = "Justify"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "J7y-lM-qPV"; */ +"J7y-lM-qPV.title" = "Use None"; + +/* Class = "NSMenuItem"; title = "Kern"; ObjectID = "jBQ-r6-VK2"; */ +"jBQ-r6-VK2.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "jFq-tB-4Kx"; */ +"jFq-tB-4Kx.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Format"; ObjectID = "jxT-CU-nIS"; */ +"jxT-CU-nIS.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Revert to Saved"; ObjectID = "KaW-ft-85H"; */ +"KaW-ft-85H.title" = "Revert to Saved"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Show All"; + +/* Class = "NSMenuItem"; title = "Show Sidebar"; ObjectID = "kIP-vf-haE"; */ +"kIP-vf-haE.title" = "Show Sidebar"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "Lbh-J2-qVU"; */ +"Lbh-J2-qVU.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring All to Front"; + +/* Class = "NSMenuItem"; title = "Paste Ruler"; ObjectID = "LVM-kO-fVI"; */ +"LVM-kO-fVI.title" = "Paste Ruler"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ +"mK6-2p-4JG.title" = "Check Grammar With Spelling"; + +/* Class = "NSMenuItem"; title = "Copy Ruler"; ObjectID = "MkV-Pr-PK5"; */ +"MkV-Pr-PK5.title" = "Copy Ruler"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Services"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "Nop-cj-93Q"; */ +"Nop-cj-93Q.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Ligatures"; ObjectID = "o6e-r0-MWq"; */ +"o6e-r0-MWq.title" = "Ligatures"; + +/* Class = "NSMenuItem"; title = "Baseline"; ObjectID = "OaQ-X3-Vso"; */ +"OaQ-X3-Vso.title" = "Baseline"; + +/* Class = "NSMenu"; title = "Open Recent"; ObjectID = "oas-Oc-fiZ"; */ +"oas-Oc-fiZ.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Loosen"; ObjectID = "ogc-rX-tC1"; */ +"ogc-rX-tC1.title" = "Loosen"; + +/* Class = "NSMenuItem"; title = "Hide ClockerHelper"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Hide ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ +"OwM-mh-QMV.title" = "Find Previous"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimize"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ +"Oyz-dy-DGm.title" = "Stop Speaking"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ +"pa3-QI-u2k.title" = "Delete"; + +/* Class = "NSMenuItem"; title = "Bigger"; ObjectID = "Ptp-SP-VEL"; */ +"Ptp-SP-VEL.title" = "Bigger"; + +/* Class = "NSMenuItem"; title = "Save…"; ObjectID = "pxx-59-PXV"; */ +"pxx-59-PXV.title" = "Save…"; + +/* Class = "NSMenuItem"; title = "Show Fonts"; ObjectID = "Q5e-8K-NDq"; */ +"Q5e-8K-NDq.title" = "Show Fonts"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ +"q09-fT-Sye.title" = "Find Next"; + +/* Class = "NSMenuItem"; title = "Page Setup…"; ObjectID = "qIS-W8-SiK"; */ +"qIS-W8-SiK.title" = "Page Setup…"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "RB4-Sm-HuC"; */ +"RB4-Sm-HuC.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ +"rbD-Rh-wIN.title" = "Check Spelling While Typing"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ +"rgM-f4-ycn.title" = "Smart Dashes"; + +/* Class = "NSMenuItem"; title = "Superscript"; ObjectID = "Rqc-34-cIF"; */ +"Rqc-34-cIF.title" = "Superscript"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ +"Ruw-6m-B2m.title" = "Select All"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ +"S0p-oC-mLd.title" = "Jump to Selection"; + +/* Class = "NSMenuItem"; title = "Show Toolbar"; ObjectID = "snW-S8-Cw5"; */ +"snW-S8-Cw5.title" = "Show Toolbar"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Window"; + +/* Class = "NSMenu"; title = "Kern"; ObjectID = "tlD-Oa-oAM"; */ +"tlD-Oa-oAM.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ +"tRr-pd-1PS.title" = "Data Detectors"; + +/* Class = "NSMenuItem"; title = "Open Recent"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ +"UEZ-Bs-lqG.title" = "Capitalize"; + +/* Class = "NSMenu"; title = "ClockerHelper"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ +"uRl-iY-unG.title" = "Cut"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Hide Others"; + +/* Class = "NSMenuItem"; title = "Center"; ObjectID = "VIY-Ag-zcb"; */ +"VIY-Ag-zcb.title" = "Center"; + +/* Class = "NSMenuItem"; title = "Italic"; ObjectID = "Vjx-xi-njq"; */ +"Vjx-xi-njq.title" = "Italic"; + +/* Class = "NSMenuItem"; title = "Paste Style"; ObjectID = "vKC-jM-MkH"; */ +"vKC-jM-MkH.title" = "Paste Style"; + +/* Class = "NSMenuItem"; title = "Show Ruler"; ObjectID = "vLm-3I-IUL"; */ +"vLm-3I-IUL.title" = "Show Ruler"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ +"vmV-6d-7jI.title" = "Make Upper Case"; + +/* Class = "NSMenuItem"; title = "Clear Menu"; ObjectID = "vNY-rz-j42"; */ +"vNY-rz-j42.title" = "Clear Menu"; + +/* Class = "NSMenu"; title = "Ligatures"; ObjectID = "w0m-vy-SC9"; */ +"w0m-vy-SC9.title" = "Ligatures"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ +"W48-6f-4Dl.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "New"; ObjectID = "Was-JA-tGl"; */ +"Was-JA-tGl.title" = "New"; + +/* Class = "NSMenuItem"; title = "Align Right"; ObjectID = "wb2-vD-lq4"; */ +"wb2-vD-lq4.title" = "Align Right"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ +"WeT-3V-zwk.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Underline"; ObjectID = "WRG-CD-K1S"; */ +"WRG-CD-K1S.title" = "Underline"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ +"x3v-GG-iWU.title" = "Copy"; + +/* Class = "NSMenuItem"; title = "Use All"; ObjectID = "xQD-1f-W4t"; */ +"xQD-1f-W4t.title" = "Use All"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ +"xrE-MZ-jX0.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ +"Xz5-n4-O0W.title" = "Find…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ +"YEy-JH-Tfz.title" = "Find and Replace…"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "YGs-j5-SAR"; */ +"YGs-j5-SAR.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ +"Ynk-f8-cLZ.title" = "Start Speaking"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ +"z6F-FW-3nz.title" = "Show Substitutions"; + +/* Class = "NSMenuItem"; title = "Align Left"; ObjectID = "ZM1-6Q-yy1"; */ +"ZM1-6Q-yy1.title" = "Align Left"; + +/* Class = "NSMenuItem"; title = "Paragraph"; ObjectID = "ZvO-Gk-QUH"; */ +"ZvO-Gk-QUH.title" = "Paragraph"; + diff --git a/Clocker/ClockerHelper/ru.lproj/InfoPlist.strings b/Clocker/ClockerHelper/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000..c4026b8 --- /dev/null +++ b/Clocker/ClockerHelper/ru.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerHelper"; + diff --git a/Clocker/ClockerHelper/ru.lproj/Main.strings b/Clocker/ClockerHelper/ru.lproj/Main.strings new file mode 100644 index 0000000..53256d4 --- /dev/null +++ b/Clocker/ClockerHelper/ru.lproj/Main.strings @@ -0,0 +1,393 @@ +/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ +"1b7-l0-nxx.title" = "Найти"; + +/* Class = "NSMenuItem"; title = "Lower"; ObjectID = "1tx-W0-xDw"; */ +"1tx-W0-xDw.title" = "Lower"; + +/* Class = "NSMenuItem"; title = "Customize Toolbar…"; ObjectID = "1UK-8n-QPP"; */ +"1UK-8n-QPP.title" = "Customize Toolbar…"; + +/* Class = "NSMenuItem"; title = "ClockerHelper"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Raise"; ObjectID = "2h7-ER-AoG"; */ +"2h7-ER-AoG.title" = "Raise"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ +"2oI-Rn-ZJC.title" = "Transformations"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ +"3IN-sU-3Bg.title" = "Spelling"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "3Om-Ey-2VK"; */ +"3Om-Ey-2VK.title" = "Use Default"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ +"3rS-ZA-NoH.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ +"4EN-yA-p0u.title" = "Найти"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Enter Full Screen"; + +/* Class = "NSMenuItem"; title = "Quit ClockerHelper"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Quit ClockerHelper"; + +/* Class = "NSMenuItem"; title = "About ClockerHelper"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "About ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ +"5QF-Oa-p0T.title" = "Изменить"; + +/* Class = "NSMenuItem"; title = "Copy Style"; ObjectID = "5Vv-lz-BsD"; */ +"5Vv-lz-BsD.title" = "Copy Style"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ +"6dh-zS-Vam.title" = "Redo"; + +/* Class = "NSMenu"; title = "Writing Direction"; ObjectID = "8mr-sm-Yjd"; */ +"8mr-sm-Yjd.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ +"9ic-FL-obx.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ +"9yt-4B-nSM.title" = "Smart Copy/Paste"; + +/* Class = "NSMenuItem"; title = "Tighten"; ObjectID = "46P-cB-AYj"; */ +"46P-cB-AYj.title" = "Tighten"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ +"78Y-hA-62v.title" = "Correct Spelling Automatically"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "agt-UL-0e3"; */ +"agt-UL-0e3.title" = "Использовать значение по умолчанию"; + +/* Class = "NSMenuItem"; title = "Print…"; ObjectID = "aTl-1u-JFS"; */ +"aTl-1u-JFS.title" = "Print…"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Окно"; + +/* Class = "NSMenu"; title = "Font"; ObjectID = "aXa-aM-Jaq"; */ +"aXa-aM-Jaq.title" = "Шрифт"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Main Menu"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "BgM-ve-c93"; */ +"BgM-ve-c93.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Show Colors"; ObjectID = "bgn-CT-cEk"; */ +"bgn-CT-cEk.title" = "Показать цвета"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "File"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Preferences…"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ +"buJ-ug-pKt.title" = "Use Selection for Find"; + +/* Class = "NSMenuItem"; title = "Save As…"; ObjectID = "Bw7-FT-i3A"; */ +"Bw7-FT-i3A.title" = "Сохранить как…"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ +"c8a-y6-VQd.title" = "Transformations"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "cDB-IK-hbR"; */ +"cDB-IK-hbR.title" = "Не использовать"; + +/* Class = "NSMenuItem"; title = "Selection"; ObjectID = "cqv-fj-IhA"; */ +"cqv-fj-IhA.title" = "Selection"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ +"cwL-P1-jid.title" = "Smart Links"; + +/* Class = "NSMenu"; title = "Text"; ObjectID = "d9c-me-L2H"; */ +"d9c-me-L2H.title" = "Текст"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ +"d9M-CD-aMd.title" = "Make Lower Case"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "File"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ +"dRJ-4n-Yzg.title" = "Отменить"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ +"Dv1-io-Yv7.title" = "Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Закрыть"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Text"; ObjectID = "Fal-I4-PZk"; */ +"Fal-I4-PZk.title" = "Текст"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ +"FeM-D8-WVr.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "ClockerHelper Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "ClockerHelper Help"; + +/* Class = "NSMenuItem"; title = "Bold"; ObjectID = "GB9-OM-e27"; */ +"GB9-OM-e27.title" = "Жирный"; + +/* Class = "NSMenu"; title = "Format"; ObjectID = "GEO-Iw-cKr"; */ +"GEO-Iw-cKr.title" = "Формат"; + +/* Class = "NSMenuItem"; title = "Font"; ObjectID = "Gi5-1S-RQB"; */ +"Gi5-1S-RQB.title" = "Шрифт"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "GUa-eO-cwY"; */ +"GUa-eO-cwY.title" = "Использовать значение по умолчанию"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ +"gVA-U4-sdL.title" = "Вставить"; + +/* Class = "NSMenuItem"; title = "Writing Direction"; ObjectID = "H1b-Si-o9J"; */ +"H1b-Si-o9J.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "View"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ +"HFo-cy-zxI.title" = "Show Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ +"HFQ-gK-NFA.title" = "Text Replacement"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ +"hQb-2v-fYv.title" = "Smart Quotes"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "View"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ +"hz2-CU-CR7.title" = "Check Document Now"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Subscript"; ObjectID = "I0S-gh-46l"; */ +"I0S-gh-46l.title" = "Subscript"; + +/* Class = "NSMenuItem"; title = "Smaller"; ObjectID = "i1d-Er-qST"; */ +"i1d-Er-qST.title" = "Smaller"; + +/* Class = "NSMenuItem"; title = "Open…"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Открыть…"; + +/* Class = "NSMenu"; title = "Baseline"; ObjectID = "ijk-EB-dga"; */ +"ijk-EB-dga.title" = "Baseline"; + +/* Class = "NSMenuItem"; title = "Justify"; ObjectID = "J5U-5w-g23"; */ +"J5U-5w-g23.title" = "Justify"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "J7y-lM-qPV"; */ +"J7y-lM-qPV.title" = "Не использовать"; + +/* Class = "NSMenuItem"; title = "Kern"; ObjectID = "jBQ-r6-VK2"; */ +"jBQ-r6-VK2.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "jFq-tB-4Kx"; */ +"jFq-tB-4Kx.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Format"; ObjectID = "jxT-CU-nIS"; */ +"jxT-CU-nIS.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Revert to Saved"; ObjectID = "KaW-ft-85H"; */ +"KaW-ft-85H.title" = "Revert to Saved"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Показать всё"; + +/* Class = "NSMenuItem"; title = "Show Sidebar"; ObjectID = "kIP-vf-haE"; */ +"kIP-vf-haE.title" = "Show Sidebar"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "Lbh-J2-qVU"; */ +"Lbh-J2-qVU.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring All to Front"; + +/* Class = "NSMenuItem"; title = "Paste Ruler"; ObjectID = "LVM-kO-fVI"; */ +"LVM-kO-fVI.title" = "Paste Ruler"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ +"mK6-2p-4JG.title" = "Check Grammar With Spelling"; + +/* Class = "NSMenuItem"; title = "Copy Ruler"; ObjectID = "MkV-Pr-PK5"; */ +"MkV-Pr-PK5.title" = "Copy Ruler"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Services"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "Nop-cj-93Q"; */ +"Nop-cj-93Q.title" = "\tПо умолчанию"; + +/* Class = "NSMenuItem"; title = "Ligatures"; ObjectID = "o6e-r0-MWq"; */ +"o6e-r0-MWq.title" = "Ligatures"; + +/* Class = "NSMenuItem"; title = "Baseline"; ObjectID = "OaQ-X3-Vso"; */ +"OaQ-X3-Vso.title" = "Baseline"; + +/* Class = "NSMenu"; title = "Open Recent"; ObjectID = "oas-Oc-fiZ"; */ +"oas-Oc-fiZ.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Loosen"; ObjectID = "ogc-rX-tC1"; */ +"ogc-rX-tC1.title" = "Loosen"; + +/* Class = "NSMenuItem"; title = "Hide ClockerHelper"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Hide ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ +"OwM-mh-QMV.title" = "Find Previous"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimize"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ +"Oyz-dy-DGm.title" = "Stop Speaking"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ +"pa3-QI-u2k.title" = "Удалить"; + +/* Class = "NSMenuItem"; title = "Bigger"; ObjectID = "Ptp-SP-VEL"; */ +"Ptp-SP-VEL.title" = "Bigger"; + +/* Class = "NSMenuItem"; title = "Save…"; ObjectID = "pxx-59-PXV"; */ +"pxx-59-PXV.title" = "Сохранить…"; + +/* Class = "NSMenuItem"; title = "Show Fonts"; ObjectID = "Q5e-8K-NDq"; */ +"Q5e-8K-NDq.title" = "Показать шрифты"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ +"q09-fT-Sye.title" = "Find Next"; + +/* Class = "NSMenuItem"; title = "Page Setup…"; ObjectID = "qIS-W8-SiK"; */ +"qIS-W8-SiK.title" = "Page Setup…"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Масштабирование"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "RB4-Sm-HuC"; */ +"RB4-Sm-HuC.title" = "\tСправа налево"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ +"rbD-Rh-wIN.title" = "Check Spelling While Typing"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ +"rgM-f4-ycn.title" = "Smart Dashes"; + +/* Class = "NSMenuItem"; title = "Superscript"; ObjectID = "Rqc-34-cIF"; */ +"Rqc-34-cIF.title" = "Superscript"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ +"Ruw-6m-B2m.title" = "Выбрать всё"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ +"S0p-oC-mLd.title" = "Jump to Selection"; + +/* Class = "NSMenuItem"; title = "Show Toolbar"; ObjectID = "snW-S8-Cw5"; */ +"snW-S8-Cw5.title" = "Show Toolbar"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Окно"; + +/* Class = "NSMenu"; title = "Kern"; ObjectID = "tlD-Oa-oAM"; */ +"tlD-Oa-oAM.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ +"tRr-pd-1PS.title" = "Data Detectors"; + +/* Class = "NSMenuItem"; title = "Open Recent"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ +"UEZ-Bs-lqG.title" = "Capitalize"; + +/* Class = "NSMenu"; title = "ClockerHelper"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ +"uRl-iY-unG.title" = "Вырезать"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Hide Others"; + +/* Class = "NSMenuItem"; title = "Center"; ObjectID = "VIY-Ag-zcb"; */ +"VIY-Ag-zcb.title" = "По центру"; + +/* Class = "NSMenuItem"; title = "Italic"; ObjectID = "Vjx-xi-njq"; */ +"Vjx-xi-njq.title" = "Курсив"; + +/* Class = "NSMenuItem"; title = "Paste Style"; ObjectID = "vKC-jM-MkH"; */ +"vKC-jM-MkH.title" = "Paste Style"; + +/* Class = "NSMenuItem"; title = "Show Ruler"; ObjectID = "vLm-3I-IUL"; */ +"vLm-3I-IUL.title" = "Show Ruler"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ +"vmV-6d-7jI.title" = "Make Upper Case"; + +/* Class = "NSMenuItem"; title = "Clear Menu"; ObjectID = "vNY-rz-j42"; */ +"vNY-rz-j42.title" = "Clear Menu"; + +/* Class = "NSMenu"; title = "Ligatures"; ObjectID = "w0m-vy-SC9"; */ +"w0m-vy-SC9.title" = "Ligatures"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ +"W48-6f-4Dl.title" = "Изменить"; + +/* Class = "NSMenuItem"; title = "New"; ObjectID = "Was-JA-tGl"; */ +"Was-JA-tGl.title" = "New"; + +/* Class = "NSMenuItem"; title = "Align Right"; ObjectID = "wb2-vD-lq4"; */ +"wb2-vD-lq4.title" = "Align Right"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ +"WeT-3V-zwk.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Справка"; + +/* Class = "NSMenuItem"; title = "Underline"; ObjectID = "WRG-CD-K1S"; */ +"WRG-CD-K1S.title" = "Underline"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ +"x3v-GG-iWU.title" = "Копировать"; + +/* Class = "NSMenuItem"; title = "Use All"; ObjectID = "xQD-1f-W4t"; */ +"xQD-1f-W4t.title" = "Использовать всё"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ +"xrE-MZ-jX0.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ +"Xz5-n4-O0W.title" = "Найти…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ +"YEy-JH-Tfz.title" = "Find and Replace…"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "YGs-j5-SAR"; */ +"YGs-j5-SAR.title" = "\tПо умолчанию"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ +"Ynk-f8-cLZ.title" = "Start Speaking"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ +"z6F-FW-3nz.title" = "Show Substitutions"; + +/* Class = "NSMenuItem"; title = "Align Left"; ObjectID = "ZM1-6Q-yy1"; */ +"ZM1-6Q-yy1.title" = "Align Left"; + +/* Class = "NSMenuItem"; title = "Paragraph"; ObjectID = "ZvO-Gk-QUH"; */ +"ZvO-Gk-QUH.title" = "Paragraph"; + diff --git a/Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings b/Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 0000000..c4026b8 --- /dev/null +++ b/Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerHelper"; + diff --git a/Clocker/ClockerHelper/zh-Hans.lproj/Main.strings b/Clocker/ClockerHelper/zh-Hans.lproj/Main.strings new file mode 100644 index 0000000..d492e6e --- /dev/null +++ b/Clocker/ClockerHelper/zh-Hans.lproj/Main.strings @@ -0,0 +1,393 @@ +/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ +"1b7-l0-nxx.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Lower"; ObjectID = "1tx-W0-xDw"; */ +"1tx-W0-xDw.title" = "Lower"; + +/* Class = "NSMenuItem"; title = "Customize Toolbar…"; ObjectID = "1UK-8n-QPP"; */ +"1UK-8n-QPP.title" = "自定义工具栏…"; + +/* Class = "NSMenuItem"; title = "ClockerHelper"; ObjectID = "1Xt-HY-uBw"; */ +"1Xt-HY-uBw.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Raise"; ObjectID = "2h7-ER-AoG"; */ +"2h7-ER-AoG.title" = "Raise"; + +/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ +"2oI-Rn-ZJC.title" = "Transformations"; + +/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ +"3IN-sU-3Bg.title" = "Spelling"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "3Om-Ey-2VK"; */ +"3Om-Ey-2VK.title" = "Use Default"; + +/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ +"3rS-ZA-NoH.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ +"4EN-yA-p0u.title" = "Find"; + +/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ +"4J7-dP-txa.title" = "Enter Full Screen"; + +/* Class = "NSMenuItem"; title = "Quit ClockerHelper"; ObjectID = "4sb-4s-VLi"; */ +"4sb-4s-VLi.title" = "Quit ClockerHelper"; + +/* Class = "NSMenuItem"; title = "About ClockerHelper"; ObjectID = "5kV-Vb-QxS"; */ +"5kV-Vb-QxS.title" = "About ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ +"5QF-Oa-p0T.title" = "编辑"; + +/* Class = "NSMenuItem"; title = "Copy Style"; ObjectID = "5Vv-lz-BsD"; */ +"5Vv-lz-BsD.title" = "Copy Style"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ +"6dh-zS-Vam.title" = "Redo"; + +/* Class = "NSMenu"; title = "Writing Direction"; ObjectID = "8mr-sm-Yjd"; */ +"8mr-sm-Yjd.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ +"9ic-FL-obx.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ +"9yt-4B-nSM.title" = "Smart Copy/Paste"; + +/* Class = "NSMenuItem"; title = "Tighten"; ObjectID = "46P-cB-AYj"; */ +"46P-cB-AYj.title" = "Tighten"; + +/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ +"78Y-hA-62v.title" = "Correct Spelling Automatically"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "agt-UL-0e3"; */ +"agt-UL-0e3.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Print…"; ObjectID = "aTl-1u-JFS"; */ +"aTl-1u-JFS.title" = "Print…"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ +"aUF-d1-5bR.title" = "Window"; + +/* Class = "NSMenu"; title = "Font"; ObjectID = "aXa-aM-Jaq"; */ +"aXa-aM-Jaq.title" = "Font"; + +/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ +"AYu-sK-qS6.title" = "Main Menu"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "BgM-ve-c93"; */ +"BgM-ve-c93.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Show Colors"; ObjectID = "bgn-CT-cEk"; */ +"bgn-CT-cEk.title" = "Show Colors"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "bib-Uj-vzu"; */ +"bib-Uj-vzu.title" = "File"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ +"BOF-NM-1cW.title" = "Preferences…"; + +/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ +"buJ-ug-pKt.title" = "Use Selection for Find"; + +/* Class = "NSMenuItem"; title = "Save As…"; ObjectID = "Bw7-FT-i3A"; */ +"Bw7-FT-i3A.title" = "Save As…"; + +/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ +"c8a-y6-VQd.title" = "Transformations"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "cDB-IK-hbR"; */ +"cDB-IK-hbR.title" = "Use None"; + +/* Class = "NSMenuItem"; title = "Selection"; ObjectID = "cqv-fj-IhA"; */ +"cqv-fj-IhA.title" = "Selection"; + +/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ +"cwL-P1-jid.title" = "Smart Links"; + +/* Class = "NSMenu"; title = "Text"; ObjectID = "d9c-me-L2H"; */ +"d9c-me-L2H.title" = "Text"; + +/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ +"d9M-CD-aMd.title" = "Make Lower Case"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "dMs-cI-mzQ"; */ +"dMs-cI-mzQ.title" = "File"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ +"dRJ-4n-Yzg.title" = "Undo"; + +/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ +"Dv1-io-Yv7.title" = "Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "DVo-aG-piG"; */ +"DVo-aG-piG.title" = "Close"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "F2S-fz-NVQ"; */ +"F2S-fz-NVQ.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Text"; ObjectID = "Fal-I4-PZk"; */ +"Fal-I4-PZk.title" = "Text"; + +/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ +"FeM-D8-WVr.title" = "Substitutions"; + +/* Class = "NSMenuItem"; title = "ClockerHelper Help"; ObjectID = "FKE-Sm-Kum"; */ +"FKE-Sm-Kum.title" = "ClockerHelper Help"; + +/* Class = "NSMenuItem"; title = "Bold"; ObjectID = "GB9-OM-e27"; */ +"GB9-OM-e27.title" = "Bold"; + +/* Class = "NSMenu"; title = "Format"; ObjectID = "GEO-Iw-cKr"; */ +"GEO-Iw-cKr.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Font"; ObjectID = "Gi5-1S-RQB"; */ +"Gi5-1S-RQB.title" = "Font"; + +/* Class = "NSMenuItem"; title = "Use Default"; ObjectID = "GUa-eO-cwY"; */ +"GUa-eO-cwY.title" = "Use Default"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ +"gVA-U4-sdL.title" = "Paste"; + +/* Class = "NSMenuItem"; title = "Writing Direction"; ObjectID = "H1b-Si-o9J"; */ +"H1b-Si-o9J.title" = "Writing Direction"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ +"H8h-7b-M4v.title" = "View"; + +/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ +"HFo-cy-zxI.title" = "Show Spelling and Grammar"; + +/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ +"HFQ-gK-NFA.title" = "Text Replacement"; + +/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ +"hQb-2v-fYv.title" = "Smart Quotes"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ +"HyV-fh-RgO.title" = "View"; + +/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ +"hz2-CU-CR7.title" = "Check Document Now"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ +"hz9-B4-Xy5.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Subscript"; ObjectID = "I0S-gh-46l"; */ +"I0S-gh-46l.title" = "Subscript"; + +/* Class = "NSMenuItem"; title = "Smaller"; ObjectID = "i1d-Er-qST"; */ +"i1d-Er-qST.title" = "Smaller"; + +/* Class = "NSMenuItem"; title = "Open…"; ObjectID = "IAo-SY-fd9"; */ +"IAo-SY-fd9.title" = "Open…"; + +/* Class = "NSMenu"; title = "Baseline"; ObjectID = "ijk-EB-dga"; */ +"ijk-EB-dga.title" = "Baseline"; + +/* Class = "NSMenuItem"; title = "Justify"; ObjectID = "J5U-5w-g23"; */ +"J5U-5w-g23.title" = "Justify"; + +/* Class = "NSMenuItem"; title = "Use None"; ObjectID = "J7y-lM-qPV"; */ +"J7y-lM-qPV.title" = "Use None"; + +/* Class = "NSMenuItem"; title = "Kern"; ObjectID = "jBQ-r6-VK2"; */ +"jBQ-r6-VK2.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "jFq-tB-4Kx"; */ +"jFq-tB-4Kx.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Format"; ObjectID = "jxT-CU-nIS"; */ +"jxT-CU-nIS.title" = "Format"; + +/* Class = "NSMenuItem"; title = "Revert to Saved"; ObjectID = "KaW-ft-85H"; */ +"KaW-ft-85H.title" = "Revert to Saved"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ +"Kd2-mp-pUS.title" = "Show All"; + +/* Class = "NSMenuItem"; title = "Show Sidebar"; ObjectID = "kIP-vf-haE"; */ +"kIP-vf-haE.title" = "Show Sidebar"; + +/* Class = "NSMenuItem"; title = "\tLeft to Right"; ObjectID = "Lbh-J2-qVU"; */ +"Lbh-J2-qVU.title" = "\tLeft to Right"; + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ +"LE2-aR-0XJ.title" = "Bring All to Front"; + +/* Class = "NSMenuItem"; title = "Paste Ruler"; ObjectID = "LVM-kO-fVI"; */ +"LVM-kO-fVI.title" = "Paste Ruler"; + +/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ +"mK6-2p-4JG.title" = "Check Grammar With Spelling"; + +/* Class = "NSMenuItem"; title = "Copy Ruler"; ObjectID = "MkV-Pr-PK5"; */ +"MkV-Pr-PK5.title" = "Copy Ruler"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ +"NMo-om-nkz.title" = "Services"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "Nop-cj-93Q"; */ +"Nop-cj-93Q.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Ligatures"; ObjectID = "o6e-r0-MWq"; */ +"o6e-r0-MWq.title" = "Ligatures"; + +/* Class = "NSMenuItem"; title = "Baseline"; ObjectID = "OaQ-X3-Vso"; */ +"OaQ-X3-Vso.title" = "Baseline"; + +/* Class = "NSMenu"; title = "Open Recent"; ObjectID = "oas-Oc-fiZ"; */ +"oas-Oc-fiZ.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Loosen"; ObjectID = "ogc-rX-tC1"; */ +"ogc-rX-tC1.title" = "Loosen"; + +/* Class = "NSMenuItem"; title = "Hide ClockerHelper"; ObjectID = "Olw-nP-bQN"; */ +"Olw-nP-bQN.title" = "Hide ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ +"OwM-mh-QMV.title" = "Find Previous"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ +"OY7-WF-poV.title" = "Minimize"; + +/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ +"Oyz-dy-DGm.title" = "Stop Speaking"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ +"pa3-QI-u2k.title" = "Delete"; + +/* Class = "NSMenuItem"; title = "Bigger"; ObjectID = "Ptp-SP-VEL"; */ +"Ptp-SP-VEL.title" = "Bigger"; + +/* Class = "NSMenuItem"; title = "Save…"; ObjectID = "pxx-59-PXV"; */ +"pxx-59-PXV.title" = "Save…"; + +/* Class = "NSMenuItem"; title = "Show Fonts"; ObjectID = "Q5e-8K-NDq"; */ +"Q5e-8K-NDq.title" = "Show Fonts"; + +/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ +"q09-fT-Sye.title" = "Find Next"; + +/* Class = "NSMenuItem"; title = "Page Setup…"; ObjectID = "qIS-W8-SiK"; */ +"qIS-W8-SiK.title" = "Page Setup…"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ +"R4o-n2-Eq4.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "\tRight to Left"; ObjectID = "RB4-Sm-HuC"; */ +"RB4-Sm-HuC.title" = "\tRight to Left"; + +/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ +"rbD-Rh-wIN.title" = "Check Spelling While Typing"; + +/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ +"rgM-f4-ycn.title" = "Smart Dashes"; + +/* Class = "NSMenuItem"; title = "Superscript"; ObjectID = "Rqc-34-cIF"; */ +"Rqc-34-cIF.title" = "Superscript"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ +"Ruw-6m-B2m.title" = "Select All"; + +/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ +"S0p-oC-mLd.title" = "Jump to Selection"; + +/* Class = "NSMenuItem"; title = "Show Toolbar"; ObjectID = "snW-S8-Cw5"; */ +"snW-S8-Cw5.title" = "Show Toolbar"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ +"Td7-aD-5lo.title" = "Window"; + +/* Class = "NSMenu"; title = "Kern"; ObjectID = "tlD-Oa-oAM"; */ +"tlD-Oa-oAM.title" = "Kern"; + +/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ +"tRr-pd-1PS.title" = "Data Detectors"; + +/* Class = "NSMenuItem"; title = "Open Recent"; ObjectID = "tXI-mr-wws"; */ +"tXI-mr-wws.title" = "Open Recent"; + +/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ +"UEZ-Bs-lqG.title" = "Capitalize"; + +/* Class = "NSMenu"; title = "ClockerHelper"; ObjectID = "uQy-DD-JDr"; */ +"uQy-DD-JDr.title" = "ClockerHelper"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ +"uRl-iY-unG.title" = "Cut"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ +"Vdr-fp-XzO.title" = "Hide Others"; + +/* Class = "NSMenuItem"; title = "Center"; ObjectID = "VIY-Ag-zcb"; */ +"VIY-Ag-zcb.title" = "Center"; + +/* Class = "NSMenuItem"; title = "Italic"; ObjectID = "Vjx-xi-njq"; */ +"Vjx-xi-njq.title" = "Italic"; + +/* Class = "NSMenuItem"; title = "Paste Style"; ObjectID = "vKC-jM-MkH"; */ +"vKC-jM-MkH.title" = "Paste Style"; + +/* Class = "NSMenuItem"; title = "Show Ruler"; ObjectID = "vLm-3I-IUL"; */ +"vLm-3I-IUL.title" = "Show Ruler"; + +/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ +"vmV-6d-7jI.title" = "Make Upper Case"; + +/* Class = "NSMenuItem"; title = "Clear Menu"; ObjectID = "vNY-rz-j42"; */ +"vNY-rz-j42.title" = "Clear Menu"; + +/* Class = "NSMenu"; title = "Ligatures"; ObjectID = "w0m-vy-SC9"; */ +"w0m-vy-SC9.title" = "Ligatures"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ +"W48-6f-4Dl.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "New"; ObjectID = "Was-JA-tGl"; */ +"Was-JA-tGl.title" = "New"; + +/* Class = "NSMenuItem"; title = "Align Right"; ObjectID = "wb2-vD-lq4"; */ +"wb2-vD-lq4.title" = "Align Right"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ +"WeT-3V-zwk.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "wpr-3q-Mcd"; */ +"wpr-3q-Mcd.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Underline"; ObjectID = "WRG-CD-K1S"; */ +"WRG-CD-K1S.title" = "Underline"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ +"x3v-GG-iWU.title" = "Copy"; + +/* Class = "NSMenuItem"; title = "Use All"; ObjectID = "xQD-1f-W4t"; */ +"xQD-1f-W4t.title" = "Use All"; + +/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ +"xrE-MZ-jX0.title" = "Speech"; + +/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ +"Xz5-n4-O0W.title" = "Find…"; + +/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ +"YEy-JH-Tfz.title" = "Find and Replace…"; + +/* Class = "NSMenuItem"; title = "\tDefault"; ObjectID = "YGs-j5-SAR"; */ +"YGs-j5-SAR.title" = "\tDefault"; + +/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ +"Ynk-f8-cLZ.title" = "Start Speaking"; + +/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ +"z6F-FW-3nz.title" = "Show Substitutions"; + +/* Class = "NSMenuItem"; title = "Align Left"; ObjectID = "ZM1-6Q-yy1"; */ +"ZM1-6Q-yy1.title" = "Align Left"; + +/* Class = "NSMenuItem"; title = "Paragraph"; ObjectID = "ZvO-Gk-QUH"; */ +"ZvO-Gk-QUH.title" = "Paragraph"; + diff --git a/Clocker/ClockerUITests/AboutUsTests.swift b/Clocker/ClockerUITests/AboutUsTests.swift index 6c18478..794628a 100644 --- a/Clocker/ClockerUITests/AboutUsTests.swift +++ b/Clocker/ClockerUITests/AboutUsTests.swift @@ -33,7 +33,7 @@ class AboutUsTests: XCTestCase { tapAboutTab() let appDisplayName = "CFBundleDisplayName".localizedString() - let expectedVersion = "\(appDisplayName) 1.6.15 (70)" + let expectedVersion = "\(appDisplayName) 1.6.17 (72)" guard let presentVersion = app.windows["Clocker"].staticTexts["ClockerVersion"].value as? String else { XCTFail("Present version not present") return diff --git a/Clocker/ClockerUITests/OnboardingTests.swift b/Clocker/ClockerUITests/OnboardingTests.swift index 68e4917..ddb6fcd 100644 --- a/Clocker/ClockerUITests/OnboardingTests.swift +++ b/Clocker/ClockerUITests/OnboardingTests.swift @@ -148,6 +148,6 @@ class OnboardingTests: XCTestCase { XCTAssertTrue(onboardingWindow.staticTexts["Thank you for the details."].exists, "Accessory label's static text was unexpectedly wrong.") XCTAssertFalse(onboardingWindow.buttons["Alternate"].exists, "Alternate button was unexpectedly present.") - XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Launch Clocker", "Forward button's title was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Launch Clocker".localizedString(), "Forward button's title was unexpectedly wrong.") } } diff --git a/Clocker/ClockerUITests/de.lproj/InfoPlist.strings b/Clocker/ClockerUITests/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..11b652c --- /dev/null +++ b/Clocker/ClockerUITests/de.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerUITests"; + diff --git a/Clocker/ClockerUITests/ru.lproj/InfoPlist.strings b/Clocker/ClockerUITests/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000..11b652c --- /dev/null +++ b/Clocker/ClockerUITests/ru.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerUITests"; + diff --git a/Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings b/Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 0000000..11b652c --- /dev/null +++ b/Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Bundle name */ +"CFBundleName" = "ClockerUITests"; + diff --git a/Clocker/Onboarding/Onboarding.storyboard b/Clocker/Onboarding/Onboarding.storyboard index 1a24731..54e7e48 100644 --- a/Clocker/Onboarding/Onboarding.storyboard +++ b/Clocker/Onboarding/Onboarding.storyboard @@ -286,7 +286,7 @@ DQ - + @@ -318,6 +318,7 @@ DQ + diff --git a/Clocker/Onboarding/OnboardingPermissionsViewController.swift b/Clocker/Onboarding/OnboardingPermissionsViewController.swift index 6d0820e..639f2b5 100644 --- a/Clocker/Onboarding/OnboardingPermissionsViewController.swift +++ b/Clocker/Onboarding/OnboardingPermissionsViewController.swift @@ -46,7 +46,7 @@ class OnboardingPermissionsViewController: NSViewController { calendarHeaderLabel.stringValue = NSLocalizedString("Calendar Access Title", comment: "Title for Calendar access label") - calendarDetailLabel.stringValue = "Upcoming events from your personal and shared calendars can be shown in the menubar and the panel.".localized() + calendarDetailLabel.stringValue = "Calendar Detail".localized() privacyLabel.stringValue = CLEmptyString diff --git a/Clocker/Panel/Data Layer/TimezoneDataOperations.swift b/Clocker/Panel/Data Layer/TimezoneDataOperations.swift index 4089554..3b68f1d 100644 --- a/Clocker/Panel/Data Layer/TimezoneDataOperations.swift +++ b/Clocker/Panel/Data Layer/TimezoneDataOperations.swift @@ -86,8 +86,8 @@ extension TimezoneDataOperations { if shouldDayBeShown { var substring = date(with: 0, displayType: CLDateDisplayType.menuDisplay) - - if (substring.count > 3) { + + if substring.count > 3 { let endIndex = substring.index(substring.startIndex, offsetBy: 2) substring = String(substring[substring.startIndex ... endIndex]) } diff --git a/Clocker/Preferences/Calendar/CalendarViewController.swift b/Clocker/Preferences/Calendar/CalendarViewController.swift index a8ff8c4..caee100 100644 --- a/Clocker/Preferences/Calendar/CalendarViewController.swift +++ b/Clocker/Preferences/Calendar/CalendarViewController.swift @@ -135,7 +135,7 @@ class CalendarViewController: ParentViewController { } @IBAction func grantAccess(_: Any) { - if grantAccessButton.title == "Grant Access" { + if grantAccessButton.title == "Grant Access".localized() { OneWindowController.shared().openPermissions() NSApp.activate(ignoringOtherApps: true) } else if grantAccessButton.title == "Launch Preferences" { diff --git a/Clocker/Preferences/Preferences.storyboard b/Clocker/Preferences/Preferences.storyboard index d31c7f3..0c176a3 100644 --- a/Clocker/Preferences/Preferences.storyboard +++ b/Clocker/Preferences/Preferences.storyboard @@ -315,9 +315,9 @@ - + - + @@ -802,10 +802,10 @@ - + - + @@ -843,10 +843,10 @@ - + - + @@ -1062,9 +1062,9 @@ - + - + @@ -1074,7 +1074,7 @@ - + @@ -1085,7 +1085,7 @@ - + @@ -1364,7 +1364,7 @@