Browse Source

Merge branch 'master' of https://github.com/n0shake/Clocker

pull/92/head
Abhishek 5 years ago
parent
commit
8242841ce8
  1. 10
      Clocker/AppDelegate.swift
  2. 86
      Clocker/Clocker.xcodeproj/project.pbxproj
  3. 4
      Clocker/Clocker/Clocker-Info.plist
  4. 4
      Clocker/Clocker/ca.lproj/InfoPlist.strings
  5. 157
      Clocker/Clocker/ca.lproj/Localizable.strings
  6. 24
      Clocker/Clocker/de.lproj/InfoPlist.strings
  7. 332
      Clocker/Clocker/de.lproj/Localizable.strings
  8. 6
      Clocker/Clocker/en.lproj/Localizable.strings
  9. 10
      Clocker/Clocker/es.lproj/InfoPlist.strings
  10. 157
      Clocker/Clocker/es.lproj/Localizable.strings
  11. 10
      Clocker/Clocker/fr.lproj/InfoPlist.strings
  12. 157
      Clocker/Clocker/fr.lproj/Localizable.strings
  13. 5
      Clocker/Clocker/hi.lproj/Localizable.strings
  14. 4
      Clocker/Clocker/ja.lproj/InfoPlist.strings
  15. 156
      Clocker/Clocker/ja.lproj/Localizable.strings
  16. 294
      Clocker/Clocker/ja.lproj/Panel.xib
  17. 10
      Clocker/Clocker/ko.lproj/InfoPlist.strings
  18. 156
      Clocker/Clocker/ko.lproj/Localizable.strings
  19. 10
      Clocker/Clocker/nl.lproj/InfoPlist.strings
  20. 157
      Clocker/Clocker/nl.lproj/Localizable.strings
  21. 10
      Clocker/Clocker/pt-PT.lproj/InfoPlist.strings
  22. 24
      Clocker/Clocker/ru.lproj/InfoPlist.strings
  23. 332
      Clocker/Clocker/ru.lproj/Localizable.strings
  24. 26
      Clocker/Clocker/zh-Hans.lproj/InfoPlist.strings
  25. 349
      Clocker/Clocker/zh-Hans.lproj/Localizable.strings
  26. 294
      Clocker/Clocker/zh-Hans.lproj/Panel.xib
  27. 17
      Clocker/Clocker/zh-Hant.lproj/Localizable.strings
  28. 294
      Clocker/Clocker/zh-Hant.lproj/Panel.xib
  29. 3
      Clocker/ClockerHelper/de.lproj/InfoPlist.strings
  30. 393
      Clocker/ClockerHelper/de.lproj/Main.strings
  31. 3
      Clocker/ClockerHelper/ru.lproj/InfoPlist.strings
  32. 393
      Clocker/ClockerHelper/ru.lproj/Main.strings
  33. 3
      Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings
  34. 393
      Clocker/ClockerHelper/zh-Hans.lproj/Main.strings
  35. 2
      Clocker/ClockerUITests/AboutUsTests.swift
  36. 5
      Clocker/ClockerUITests/FloatingWindowTests.swift
  37. 20
      Clocker/ClockerUITests/OnboardingTests.swift
  38. 9
      Clocker/ClockerUITests/PreferencesTest.swift
  39. 3
      Clocker/ClockerUITests/de.lproj/InfoPlist.strings
  40. 3
      Clocker/ClockerUITests/ru.lproj/InfoPlist.strings
  41. 3
      Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings
  42. 41
      Clocker/Onboarding/FinalOnboardingViewController.swift
  43. 36
      Clocker/Onboarding/Onboarding.storyboard
  44. 2
      Clocker/Onboarding/OnboardingParentViewController.swift
  45. 2
      Clocker/Onboarding/OnboardingPermissionsViewController.swift
  46. 3
      Clocker/Onboarding/OnboardingWelcomeViewController.swift
  47. 7
      Clocker/Panel/Data Layer/TimezoneDataOperations.swift
  48. 1
      Clocker/Panel/ParentPanelController.swift
  49. 16
      Clocker/Preferences/About/AboutViewController.swift
  50. 2
      Clocker/Preferences/Calendar/CalendarViewController.swift
  51. 38
      Clocker/Preferences/Preferences.storyboard
  52. 2
      Readme.md

10
Clocker/AppDelegate.swift

@ -63,9 +63,17 @@ open class AppDelegate: NSObject, NSApplicationDelegate {
// Help us priortize our localization efforts
private func logCurrentLanguagePreferences() {
let firstLanguage = Locale.preferredLanguages.first ?? "en-US"
// We don't care if the language is English!
if firstLanguage.contains("en") {
return
}
let annotations = [
"Language": Locale.preferredLanguages.first ?? "en-US",
"Language": firstLanguage,
]
Logger.log(object: annotations, for: "Locale")
}

86
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 */; };
@ -304,6 +306,16 @@
9A4379231BEC223900F4E27F /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Fabric.framework; sourceTree = "<group>"; };
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 = "<group>"; };
9A4DC4E12337F2EB00F03FA4 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
9A4DC4E22337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
9A4DC4E32337F31200F03FA4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
9A4DC4E42337F5BC00F03FA4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9A4DC4E52337F5BC00F03FA4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
9A4DC4E62337F5C800F03FA4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9A4DC4E72337F5C800F03FA4 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
9A4DC4E82337F5D600F03FA4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9A4DC4E92337F5D600F03FA4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainMenu.xib; path = Clocker/MainMenu.xib; sourceTree = "<group>"; };
9A5951B91C1D0A22009C17AA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = Frameworks/Crashlytics.framework; sourceTree = "<group>"; };
9A5951BB1C1D0A8D009C17AA /* CommonStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonStrings.m; path = Clocker/Utilities/CommonStrings.m; sourceTree = "<group>"; };
@ -329,6 +341,24 @@
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 = "<group>"; };
9AA522C223415BDD00C9E005 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522C423415BDD00C9E005 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = "<group>"; };
9AA522C623415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522C723415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522C823415BF600C9E005 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Main.strings; sourceTree = "<group>"; };
9AA522C923415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
9AA522CA23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
9AA522CB23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = "<group>"; };
9AA522CC234169E400C9E005 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522CD234169E400C9E005 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
9AA522CE234169F200C9E005 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522CF234169F200C9E005 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
9AA522D023416A0E00C9E005 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522D123416A0E00C9E005 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
9AA522D323416A1B00C9E005 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
9AA522D423416A6000C9E005 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
9AA522D523416A6000C9E005 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = "<group>"; };
9AB6F1552259CF3900A44663 /* CalendarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalendarViewController.swift; sourceTree = "<group>"; };
9AB6F1572259CFFC00A44663 /* AboutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = "<group>"; };
9AB6F15A2259D08300A44663 /* iVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iVersion.m; sourceTree = "<group>"; };
@ -614,6 +644,7 @@
9A7547DB1F184DC3004705EF /* Assets.xcassets */,
9A7547DD1F184DC3004705EF /* Main.storyboard */,
9A7547E01F184DC3004705EF /* Info.plist */,
9AA522C123415BDD00C9E005 /* InfoPlist.strings */,
9A7547D51F184DC3004705EF /* Supporting Files */,
);
path = ClockerHelper;
@ -761,6 +792,7 @@
children = (
C2BFE3E52049F82300825BE5 /* ClockerUITests.m */,
C2BFE3E72049F82300825BE5 /* Info.plist */,
9AA522BE23415BDD00C9E005 /* InfoPlist.strings */,
C213713320B4FD920024D5A4 /* FloatingWindowTests.swift */,
C213713220B4FD920024D5A4 /* ClockerUITests-Bridging-Header.h */,
C2F7821A20B70E3700B6CD07 /* AboutUsTests.swift */,
@ -974,6 +1006,16 @@
en,
Base,
hi,
ru,
"zh-Hans",
de,
ja,
ko,
fr,
ca,
es,
"pt-PT",
nl,
);
mainGroup = DD4F7BF913C30F9F00825C6E;
productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */;
@ -1024,6 +1066,7 @@
buildActionMask = 2147483647;
files = (
9A7547DC1F184DC3004705EF /* Assets.xcassets in Resources */,
9AA522C323415BDD00C9E005 /* InfoPlist.strings in Resources */,
9A7547DF1F184DC3004705EF /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -1040,6 +1083,7 @@
buildActionMask = 2147483647;
files = (
9A8B256A232EFAD300204CAD /* Localizable.strings in Resources */,
9AA522C023415BDD00C9E005 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1257,6 +1301,16 @@
children = (
9A13BAE11CA882FA007C6CBE /* en */,
352AF497232E07B400D96FA7 /* hi */,
9A4DC4DF2337F2EB00F03FA4 /* ru */,
9A4DC4E22337F31200F03FA4 /* zh-Hans */,
9A4DC4E42337F5BC00F03FA4 /* de */,
9A4DC4E62337F5C800F03FA4 /* ja */,
9A4DC4E82337F5D600F03FA4 /* ko */,
9AA522CC234169E400C9E005 /* fr */,
9AA522CE234169F200C9E005 /* ca */,
9AA522D023416A0E00C9E005 /* es */,
9AA522D323416A1B00C9E005 /* pt-PT */,
9AA522D423416A6000C9E005 /* nl */,
);
name = InfoPlist.strings;
path = Clocker;
@ -1267,6 +1321,15 @@
children = (
9A13BAEB1CA88A76007C6CBE /* en */,
352AF499232E07B400D96FA7 /* hi */,
9A4DC4E12337F2EB00F03FA4 /* ru */,
9A4DC4E32337F31200F03FA4 /* zh-Hans */,
9A4DC4E52337F5BC00F03FA4 /* de */,
9A4DC4E72337F5C800F03FA4 /* ja */,
9A4DC4E92337F5D600F03FA4 /* ko */,
9AA522CD234169E400C9E005 /* fr */,
9AA522CF234169F200C9E005 /* ca */,
9AA522D123416A0E00C9E005 /* es */,
9AA522D523416A6000C9E005 /* nl */,
);
name = Localizable.strings;
path = Clocker;
@ -1276,10 +1339,33 @@
isa = PBXVariantGroup;
children = (
9A7547DE1F184DC3004705EF /* Base */,
9AA522C423415BDD00C9E005 /* de */,
9AA522C823415BF600C9E005 /* ru */,
9AA522CB23415C4F00C9E005 /* zh-Hans */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
9AA522BE23415BDD00C9E005 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9AA522BF23415BDD00C9E005 /* de */,
9AA522C723415BF600C9E005 /* ru */,
9AA522C923415C4F00C9E005 /* zh-Hans */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
9AA522C123415BDD00C9E005 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
9AA522C223415BDD00C9E005 /* de */,
9AA522C623415BF600C9E005 /* ru */,
9AA522CA23415C4F00C9E005 /* zh-Hans */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */

4
Clocker/Clocker/Clocker-Info.plist

@ -13,11 +13,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.6.15</string>
<string>1.6.17</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>70</string>
<string>72</string>
<key>Fabric</key>
<dict>
<key>APIKey</key>

4
Clocker/Clocker/zh-Hant.lproj/InfoPlist.strings → Clocker/Clocker/ca.lproj/InfoPlist.strings

@ -6,5 +6,5 @@
*/
"CFBundleDisplayName" = "计时员";
"CFBundleName" = "计时员";
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

157
Clocker/Clocker/ca.lproj/Localizable.strings

@ -0,0 +1,157 @@
/*
Localizable.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"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!";
"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";

24
Clocker/Clocker/de.lproj/InfoPlist.strings

@ -0,0 +1,24 @@
/* InfoPlist.strings
Clocker
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.";

332
Clocker/Clocker/de.lproj/Localizable.strings

@ -0,0 +1,332 @@
/* (No Comment) */
"About Tab" = "Über Clocker";
"CFBundleDisplayName" = "Clocker";
/* Button to add a location */
"Add Button Title" = "Hinzufügen";
/* (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!";
/* (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?";
/* App Setup Description */
"It only takes 3 steps to set up Clocker." = "Es sind nur 3 Schritte Clocker einzurichten.";
/* Welcome Onboarding */
"It only takes 3 steps to setup Clocker." = "Es sind nur 3 Schritte Clocker einzurichten.";
/* (No Comment) */
"Larger Text" = "Größerer Text";
/* Describing we can change the options later in System Preferences */
"Later Config Description" = "Diese können später in Systemeinstellungen konfiguriert werden.";
/* Start at Login */
"Launch at Login" = "Launch at Login";
/* (No Comment) */
"Launch Clocker" = "Clocker Starten";
/* (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";
/* (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";
/* 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.";
/* Onboarding */
"Open Clocker At Login" = "Open Clocker At Login";
/* Appearance Tab */
"Panel Theme" = "Panel Theme";
/* Permissions Tab Titles */
"Permissions" = "Permissions";
/* 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";
/* (No Comment) */
"Show events from" = "Show events from";
/* (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.";
/* 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.";
/* (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?";

6
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!";
@ -149,3 +150,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";

10
Clocker/Clocker/es.lproj/InfoPlist.strings

@ -0,0 +1,10 @@
/*
InfoPlist.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

157
Clocker/Clocker/es.lproj/Localizable.strings

@ -0,0 +1,157 @@
/*
Localizable.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"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!";
"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";

10
Clocker/Clocker/fr.lproj/InfoPlist.strings

@ -0,0 +1,10 @@
/*
InfoPlist.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

157
Clocker/Clocker/fr.lproj/Localizable.strings

@ -0,0 +1,157 @@
/*
Localizable.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"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!";
"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";

5
Clocker/Clocker/hi.lproj/Localizable.strings

@ -147,4 +147,7 @@
"Try again, maybe?" = "Try again, maybe?";
"The Internet connection appears to be offline." = "The Internet connection appears to be offline.";
// UI Tests
"New Zealand" = "नड";
"Florida" = "फि";
"San Francisco" = "सन फि";

4
Clocker/Clocker/ja.lproj/InfoPlist.strings

@ -6,5 +6,5 @@
*/
"CFBundleDisplayName" = "タイムキーパー";
"CFBundleName" = "タイムキーパー";
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

156
Clocker/Clocker/ja.lproj/Localizable.strings

@ -6,13 +6,151 @@
*/
"Thank you for helping make Clocker even better!" = "ありがとうございました";
"iRateMessageTitle" = "%@の評価";
"iRateAppMessage" = "%@をお使いいただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!";
"iRateGameMessage" = "%@をプレイしていただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!";
"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" = "バージョン %@";
"CLFeedbackAlertTitle" = "ありがとうございました!";
"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";

294
Clocker/Clocker/ja.lproj/Panel.xib

@ -1,294 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="PanelController">
<connections>
<outlet property="backgroundView" destination="6" id="20"/>
<outlet property="futureSlider" destination="T7e-RS-eTE" id="xDZ-rl-pux"/>
<outlet property="mainTableview" destination="dFw-ts-8OZ" id="wwJ-jA-lCy"/>
<outlet property="preferencesButton" destination="OFy-u1-TnH" id="SId-Ih-ssT"/>
<outlet property="scrollViewHeight" destination="QcT-N0-G4s" id="EHr-Co-L0Z"/>
<outlet property="shutdownButton" destination="nTt-pf-Hw2" id="gCK-0D-gnK"/>
<outlet property="window" destination="5" id="7"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="none" id="5" customClass="Panel">
<windowStyleMask key="styleMask" utility="YES" nonactivatingPanel="YES" texturedBackground="YES"/>
<windowCollectionBehavior key="collectionBehavior" moveToActiveSpace="YES" ignoresCycle="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="1000" y="379" width="280" height="273"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<view key="contentView" id="6" customClass="BackgroundView">
<rect key="frame" x="0.0" y="0.0" width="280" height="273"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Gd-Nv-fXr">
<rect key="frame" x="-1" y="0.0" width="282" height="265"/>
<clipView key="contentView" id="4MZ-Di-yNR">
<rect key="frame" x="0.0" y="0.0" width="282" height="265"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="55" viewBased="YES" id="dFw-ts-8OZ">
<rect key="frame" x="0.0" y="0.0" width="282" height="0.0"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="1"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="279" minWidth="40" maxWidth="1000" id="LTt-db-Dwv">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="7LK-2q-H3f">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="timeZoneCell" id="qbN-ba-fho" customClass="CLTimezoneCellView">
<rect key="frame" x="1" y="0.0" width="279" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="etF-33-bCB">
<rect key="frame" x="7" y="33" width="154" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="150" id="32b-h6-joo"/>
<constraint firstAttribute="height" constant="22" id="vod-YN-iNX"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" placeholderString="Timezone Name" id="rnh-AP-ooc">
<font key="font" size="15" name="HelveticaNeue-Light"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="labelDidChange:" target="qbN-ba-fho" id="7uY-zA-yJS"/>
</connections>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="32s-jh-CdZ">
<rect key="frame" x="203" y="5" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="LN0-5e-Uw7"/>
<constraint firstAttribute="width" constant="20" id="Txb-Xo-JPl"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="eLr-Js-g3E"/>
</imageView>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6CM-3s-ZNr">
<rect key="frame" x="224" y="7" width="49" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="Mho-dg-5yL"/>
<constraint firstAttribute="width" constant="45" identifier="width" id="zNy-He-GNo"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="left" placeholderString="" id="Yxf-ti-4jB">
<font key="font" size="11" name="HelveticaNeue-Light"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" tag="102" preferredMaxLayoutWidth="72" translatesAutoresizingMaskIntoConstraints="NO" id="QUd-7D-q14">
<rect key="frame" x="8" y="11" width="76" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="42Y-hy-Uo7"/>
<constraint firstAttribute="width" constant="72" id="fkH-oq-qvM"/>
</constraints>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" state="on" placeholderString="Tomorrow" usesSingleLineMode="YES" id="74U-rv-5xj">
<font key="font" size="13" name="HelveticaNeue-Bold"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" preferredMaxLayoutWidth="110" translatesAutoresizingMaskIntoConstraints="NO" id="vnv-J2-7r1">
<rect key="frame" x="159" y="20" width="114" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="35" id="3WU-de-OQL"/>
<constraint firstAttribute="width" constant="110" id="cQV-gJ-zMz"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" placeholderString="23:46 AM" id="g8s-EU-UHx">
<font key="font" size="22" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="QUd-7D-q14" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="10" id="0Qz-Ev-efP"/>
<constraint firstItem="32s-jh-CdZ" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-5" id="D0i-kM-n59"/>
<constraint firstItem="etF-33-bCB" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="Lct-kG-usb"/>
<constraint firstItem="QUd-7D-q14" firstAttribute="top" secondItem="etF-33-bCB" secondAttribute="bottom" constant="2" id="VO6-Zn-eA3"/>
<constraint firstItem="vnv-J2-7r1" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="aN5-p4-LEq"/>
<constraint firstAttribute="trailing" secondItem="6CM-3s-ZNr" secondAttribute="trailing" constant="8" id="qcf-ej-oC8"/>
<constraint firstItem="etF-33-bCB" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="9" id="ueW-ow-ZRq"/>
<constraint firstItem="6CM-3s-ZNr" firstAttribute="leading" secondItem="32s-jh-CdZ" secondAttribute="trailing" constant="3" id="xMj-d9-yh6"/>
<constraint firstItem="6CM-3s-ZNr" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-4" id="yfd-bg-v0L"/>
<constraint firstAttribute="trailing" secondItem="vnv-J2-7r1" secondAttribute="trailing" constant="8" id="zXo-eA-0bQ"/>
</constraints>
<connections>
<outlet property="customName" destination="etF-33-bCB" id="6Yz-qc-WmD"/>
<outlet property="relativeDate" destination="QUd-7D-q14" id="Ath-zr-bGo"/>
<outlet property="sunriseSetImage" destination="32s-jh-CdZ" id="Nl6-eh-Ngd"/>
<outlet property="sunriseSetTime" destination="6CM-3s-ZNr" id="avi-g4-Xgg"/>
<outlet property="textField" destination="etF-33-bCB" id="6fd-cc-Qq2"/>
<outlet property="time" destination="vnv-J2-7r1" id="XFD-GQ-9CD"/>
</connections>
</tableCellView>
<tableCellView identifier="ratingCellView" id="wWn-9q-AYl" customClass="CLRatingCellView">
<rect key="frame" x="1" y="61" width="279" height="50"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="gRN-xJ-bfq">
<rect key="frame" x="69" y="30" width="16" height="16"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-16" id="8gl-Vi-0VF"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" preferredMaxLayoutWidth="185" translatesAutoresizingMaskIntoConstraints="NO" id="JNw-ld-oz9">
<rect key="frame" x="90" y="28" width="189" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="185" id="i6p-pO-tfO"/>
<constraint firstAttribute="height" constant="20" id="kOH-Lb-7sB"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Enjoy タイムキーパー?" id="iM2-CB-CE2">
<font key="font" size="12" name="HelveticaNeue"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gf6-2O-DZv">
<rect key="frame" x="26" y="-2" width="108" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="96" id="2gM-fC-Oj0"/>
<constraint firstAttribute="height" constant="21" id="Rv7-Nd-VH1"/>
</constraints>
<buttonCell key="cell" type="push" title="Not Really" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ckn-uK-FWI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnNegativeFeedback:" target="wWn-9q-AYl" id="lBL-WL-xum"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kfq-0p-Oqf">
<rect key="frame" x="130" y="-2" width="108" height="32"/>
<buttonCell key="cell" type="push" title="Yes!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5K0-zD-kN0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnPositiveFeedback:" target="wWn-9q-AYl" id="KYm-dp-Jno"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="width" secondItem="gf6-2O-DZv" secondAttribute="width" id="6Mc-Df-PFM"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="2" id="7Wj-6T-kuF"/>
<constraint firstItem="gf6-2O-DZv" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="-60" id="A8v-do-LdI"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="leading" secondItem="gf6-2O-DZv" secondAttribute="trailing" constant="8" id="B6V-Es-uVV"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="height" secondItem="gf6-2O-DZv" secondAttribute="height" id="I60-AU-Yhi"/>
<constraint firstItem="gRN-xJ-bfq" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="4" id="PQb-l5-nLd"/>
<constraint firstAttribute="bottom" secondItem="gf6-2O-DZv" secondAttribute="bottom" constant="5" id="iqG-ta-N68"/>
<constraint firstAttribute="bottom" secondItem="Kfq-0p-Oqf" secondAttribute="bottom" constant="5" id="k43-mW-Z3z"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="leading" secondItem="gRN-xJ-bfq" secondAttribute="trailing" constant="7" id="opd-fc-Q5o"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="45" id="yYL-61-BgS"/>
</constraints>
<connections>
<outlet property="imageView" destination="gRN-xJ-bfq" id="eNP-AX-syJ"/>
<outlet property="leftButton" destination="gf6-2O-DZv" id="MQg-oW-jd2"/>
<outlet property="leftField" destination="JNw-ld-oz9" id="fDT-qG-fRw"/>
<outlet property="rightButton" destination="Kfq-0p-Oqf" id="mUN-yg-Wlc"/>
<outlet property="textField" destination="JNw-ld-oz9" id="z19-n5-O1O"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="Q9t-Yx-hmz"/>
<outlet property="delegate" destination="-2" id="AqY-uU-Noo"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<constraints>
<constraint firstAttribute="height" constant="265" id="QcT-N0-G4s"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="DJr-1R-9LK">
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="cfu-8V-LKK">
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T7e-RS-eTE">
<rect key="frame" x="29" y="13" width="217" height="19"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="tQw-lm-Ify"/>
</constraints>
<sliderCell key="cell" state="on" alignment="left" maxValue="1440" tickMarkPosition="above" sliderType="linear" id="V8R-sf-5hO" customClass="CLCustomSliderCell"/>
<connections>
<action selector="sliderMoved:" target="-2" id="TMW-de-NVq"/>
<binding destination="-2" name="value" keyPath="self.futureSliderValue" id="Fbv-WN-01b"/>
</connections>
</slider>
<button toolTip="Open Preferences" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OFy-u1-TnH">
<rect key="frame" x="246" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="MIQ-4K-E5A"/>
<constraint firstAttribute="height" constant="18" id="X7D-ep-wB4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="vYm-fs-Zjd">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="openPreferences:" target="-2" id="0Yc-Eq-obQ"/>
</connections>
</button>
<button toolTip="Close Clocker" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nTt-pf-Hw2">
<rect key="frame" x="0.0" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="8kZ-Pj-VK6"/>
<constraint firstAttribute="height" constant="18" id="sVG-VE-3q4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="PowerIcon" imagePosition="only" alignment="center" alternateImage="PowerIcon" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sUh-16-Fhk">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="terminate:" target="-1" id="fpZ-pt-UiU"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="top" secondItem="6" secondAttribute="top" constant="8" id="1g0-Hm-7Gh"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="top" secondItem="dFw-ts-8OZ" secondAttribute="bottom" constant="-30" id="96B-lf-iFV"/>
<constraint firstAttribute="bottom" secondItem="nTt-pf-Hw2" secondAttribute="bottom" constant="5" id="Alf-Sy-CEF"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="leading" secondItem="nTt-pf-Hw2" secondAttribute="trailing" constant="2" id="GgQ-58-tbc"/>
<constraint firstAttribute="trailing" secondItem="4Gd-Nv-fXr" secondAttribute="trailing" constant="-1" id="XP6-W0-2XT"/>
<constraint firstAttribute="bottom" secondItem="OFy-u1-TnH" secondAttribute="bottom" constant="5" id="an1-GW-fs9"/>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="-1" id="fHc-VQ-mJ3"/>
<constraint firstAttribute="trailing" secondItem="OFy-u1-TnH" secondAttribute="trailing" constant="5" id="p2a-qj-LHE"/>
<constraint firstItem="nTt-pf-Hw2" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="uxy-ac-DRN"/>
<constraint firstItem="OFy-u1-TnH" firstAttribute="leading" secondItem="T7e-RS-eTE" secondAttribute="trailing" constant="2" id="vVD-Or-EZX"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="8"/>
</connections>
<point key="canvasLocation" x="230" y="392.5"/>
</window>
<userDefaultsController representsSharedInstance="YES" id="O3B-kK-4vm"/>
</objects>
<resources>
<image name="ClockerIcon-16" width="16" height="16"/>
<image name="NSActionTemplate" width="14" height="14"/>
<image name="PowerIcon" width="270" height="270"/>
</resources>
</document>

10
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";

156
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";

10
Clocker/Clocker/nl.lproj/InfoPlist.strings

@ -0,0 +1,10 @@
/*
InfoPlist.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

157
Clocker/Clocker/nl.lproj/Localizable.strings

@ -0,0 +1,157 @@
/*
Localizable.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"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!";
"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";

10
Clocker/Clocker/pt-PT.lproj/InfoPlist.strings

@ -0,0 +1,10 @@
/*
InfoPlist.strings
Clocker
Created by Abhishek Banthia on 3/27/16.
*/
"CFBundleDisplayName" = "Clocker";
"CFBundleName" = "Clocker";

24
Clocker/Clocker/ru.lproj/InfoPlist.strings

@ -0,0 +1,24 @@
/* InfoPlist.strings
Clocker
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.";

332
Clocker/Clocker/ru.lproj/Localizable.strings

@ -0,0 +1,332 @@
/* (No Comment) */
"About Tab" = "О программе";
/* Button to add a location */
"Add Button Title" = "Добавить";
"CFBundleDisplayName" = "Clocker";
/* (No Comment) */
"app-name" = "Clocker";
/* (No Comment) */
"Appearance Tab" = "Appearance";
/* Button title for going back to the previous screen */
"Back" = "Назад";
/* Calendar Permission Title */
"Calendar Access" = "Calendar Access";
/* Title for Calendar access label */
"Calendar Access Title" = "Calendar Access";
/* 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" = "Календарь";
/* (No Comment) */
"characters" = "characters";
/* (No Comment) */
"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!";
/* 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.";
/* (No Comment) */
"ClockerVersion" = "Версия %@";
/* Button to close the panel */
"Close Button Title" = "Закрыть";
/* (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!";
/* (No Comment) */
"Contact Information (Optional)" = "Contact Information (Optional)";
/* Continue Button Title */
"Continue" = "Продолжить";
/* (No Comment) */
"Day Display Options" = "Day Display Options";
/* (No Comment) */
"Denied" = "Denied";
/* Denied Button Text */
"Denied Button Text" = "Denied";
/* (No Comment) */
"Display the time in seconds" = "Display the time in seconds";
/* 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";
/* (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";
/* 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.";
/* Onboarding */
"Open Clocker At Login" = "Open Clocker At Login";
/* Appearance Tab */
"Panel Theme" = "Panel Theme";
/* Permissions Tab Titles */
"Permissions" = "Permissions";
/* 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";
/* (No Comment) */
"Show events from" = "Show events from";
/* (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.";
/* 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.";
/* (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?";

26
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" = "计时员";
"CFBundleName" = "计时员";

349
Clocker/Clocker/zh-Hans.lproj/Localizable.strings

@ -1,17 +1,332 @@
/*
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 Comment) */
"About Tab" = "About";
"CFBundleDisplayName" = "Clocker";
/* Button to add a location */
"Add Button Title" = "Add";
/* (No Comment) */
"app-name" = "Clocker";
/* (No Comment) */
"Appearance Tab" = "Appearance";
/* Button title for going back to the previous screen */
"Back" = "Back";
/* Calendar Permission Title */
"Calendar Access" = "Calendar Access";
/* Title for Calendar access label */
"Calendar Access Title" = "Calendar Access";
/* 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";
/* (No Comment) */
"characters" = "characters";
/* (No Comment) */
"CLFeedbackAlertTitle" = "Thank you for helping make Clocker even better!";
/* Button Title for no Calendar access */
"Click here to start." = "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.";
/* (No Comment) */
"ClockerVersion" = "Version %@";
/* Button to close the panel */
"Close Button Title" = "Close";
/* (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!";
/* (No Comment) */
"Contact Information (Optional)" = "Contact Information (Optional)";
/* Continue Button Title */
"Continue" = "Continue";
/* (No Comment) */
"Day Display Options" = "Day Display Options";
/* (No Comment) */
"Denied" = "Denied";
/* Denied Button Text */
"Denied Button Text" = "Denied";
/* (No Comment) */
"Display the time in seconds" = "Display the time in seconds";
/* 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";
/* 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";
/* (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";
/* 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.";
/* Onboarding */
"Open Clocker At Login" = "Open Clocker At Login";
/* Appearance Tab */
"Panel Theme" = "Panel Theme";
/* Permissions Tab Titles */
"Permissions" = "Permissions";
/* 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";
/* (No Comment) */
"Show events from" = "Show events from";
/* (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.";
/* 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.";
/* (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?";

294
Clocker/Clocker/zh-Hans.lproj/Panel.xib

@ -1,294 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="PanelController">
<connections>
<outlet property="backgroundView" destination="6" id="20"/>
<outlet property="futureSlider" destination="T7e-RS-eTE" id="xDZ-rl-pux"/>
<outlet property="mainTableview" destination="dFw-ts-8OZ" id="wwJ-jA-lCy"/>
<outlet property="preferencesButton" destination="OFy-u1-TnH" id="SId-Ih-ssT"/>
<outlet property="scrollViewHeight" destination="QcT-N0-G4s" id="EHr-Co-L0Z"/>
<outlet property="shutdownButton" destination="nTt-pf-Hw2" id="gCK-0D-gnK"/>
<outlet property="window" destination="5" id="7"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="none" id="5" customClass="Panel">
<windowStyleMask key="styleMask" utility="YES" nonactivatingPanel="YES" texturedBackground="YES"/>
<windowCollectionBehavior key="collectionBehavior" moveToActiveSpace="YES" ignoresCycle="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="1000" y="379" width="280" height="273"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<view key="contentView" id="6" customClass="BackgroundView">
<rect key="frame" x="0.0" y="0.0" width="280" height="273"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Gd-Nv-fXr">
<rect key="frame" x="-1" y="0.0" width="282" height="265"/>
<clipView key="contentView" id="4MZ-Di-yNR">
<rect key="frame" x="0.0" y="0.0" width="282" height="265"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="55" viewBased="YES" id="dFw-ts-8OZ">
<rect key="frame" x="0.0" y="0.0" width="282" height="0.0"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="1"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="279" minWidth="40" maxWidth="1000" id="LTt-db-Dwv">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="7LK-2q-H3f">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="timeZoneCell" id="qbN-ba-fho" customClass="CLTimezoneCellView">
<rect key="frame" x="1" y="0.0" width="279" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="etF-33-bCB">
<rect key="frame" x="7" y="33" width="154" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="150" id="32b-h6-joo"/>
<constraint firstAttribute="height" constant="22" id="vod-YN-iNX"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" placeholderString="Timezone Name" id="rnh-AP-ooc">
<font key="font" size="15" name="HelveticaNeue-Light"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="labelDidChange:" target="qbN-ba-fho" id="7uY-zA-yJS"/>
</connections>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Ids-Uo-ci6">
<rect key="frame" x="203" y="5" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="Tug-eT-kM6"/>
<constraint firstAttribute="width" constant="20" id="fw4-xM-R7B"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="SQ7-zC-HEd"/>
</imageView>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Lf-Yu-mLH">
<rect key="frame" x="224" y="7" width="49" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="Erg-ja-DqV"/>
<constraint firstAttribute="width" constant="45" identifier="width" id="r3N-lG-lbQ"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="left" placeholderString="" id="7e9-Cy-Q3m">
<font key="font" size="11" name="HelveticaNeue-Light"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" tag="102" preferredMaxLayoutWidth="72" translatesAutoresizingMaskIntoConstraints="NO" id="QUd-7D-q14">
<rect key="frame" x="8" y="11" width="76" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="42Y-hy-Uo7"/>
<constraint firstAttribute="width" constant="72" id="fkH-oq-qvM"/>
</constraints>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" state="on" placeholderString="Tomorrow" usesSingleLineMode="YES" id="74U-rv-5xj">
<font key="font" size="13" name="HelveticaNeue-Bold"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" preferredMaxLayoutWidth="110" translatesAutoresizingMaskIntoConstraints="NO" id="vnv-J2-7r1">
<rect key="frame" x="159" y="20" width="114" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="35" id="3WU-de-OQL"/>
<constraint firstAttribute="width" constant="110" id="cQV-gJ-zMz"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" placeholderString="23:46 AM" id="g8s-EU-UHx">
<font key="font" size="22" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="QUd-7D-q14" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="10" id="0Qz-Ev-efP"/>
<constraint firstItem="6Lf-Yu-mLH" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-4" id="6Mc-mV-px7"/>
<constraint firstAttribute="trailing" secondItem="6Lf-Yu-mLH" secondAttribute="trailing" constant="8" id="EFk-L8-w4w"/>
<constraint firstItem="etF-33-bCB" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="Lct-kG-usb"/>
<constraint firstItem="6Lf-Yu-mLH" firstAttribute="leading" secondItem="Ids-Uo-ci6" secondAttribute="trailing" constant="3" id="Mh9-0D-cWP"/>
<constraint firstItem="vnv-J2-7r1" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="Syb-YN-Gsr"/>
<constraint firstItem="QUd-7D-q14" firstAttribute="top" secondItem="etF-33-bCB" secondAttribute="bottom" constant="2" id="VO6-Zn-eA3"/>
<constraint firstItem="Ids-Uo-ci6" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-5" id="sfI-UU-HeB"/>
<constraint firstItem="etF-33-bCB" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="9" id="ueW-ow-ZRq"/>
<constraint firstAttribute="trailing" secondItem="vnv-J2-7r1" secondAttribute="trailing" constant="8" id="zXo-eA-0bQ"/>
</constraints>
<connections>
<outlet property="customName" destination="etF-33-bCB" id="6Yz-qc-WmD"/>
<outlet property="relativeDate" destination="QUd-7D-q14" id="Ath-zr-bGo"/>
<outlet property="sunriseSetImage" destination="Ids-Uo-ci6" id="qZh-SH-33g"/>
<outlet property="sunriseSetTime" destination="6Lf-Yu-mLH" id="eIy-7v-jzE"/>
<outlet property="textField" destination="etF-33-bCB" id="6fd-cc-Qq2"/>
<outlet property="time" destination="vnv-J2-7r1" id="XFD-GQ-9CD"/>
</connections>
</tableCellView>
<tableCellView identifier="ratingCellView" id="wWn-9q-AYl" customClass="CLRatingCellView">
<rect key="frame" x="1" y="61" width="279" height="50"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="gRN-xJ-bfq">
<rect key="frame" x="58" y="30" width="16" height="16"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-16" id="8gl-Vi-0VF"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" preferredMaxLayoutWidth="185" translatesAutoresizingMaskIntoConstraints="NO" id="JNw-ld-oz9">
<rect key="frame" x="79" y="28" width="189" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="185" id="i6p-pO-tfO"/>
<constraint firstAttribute="height" constant="20" id="kOH-Lb-7sB"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Enjoy using 计时员?" id="iM2-CB-CE2">
<font key="font" size="12" name="HelveticaNeue"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gf6-2O-DZv">
<rect key="frame" x="26" y="-2" width="108" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="96" id="2gM-fC-Oj0"/>
<constraint firstAttribute="height" constant="21" id="Rv7-Nd-VH1"/>
</constraints>
<buttonCell key="cell" type="push" title="Not Really" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ckn-uK-FWI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnNegativeFeedback:" target="wWn-9q-AYl" id="lBL-WL-xum"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kfq-0p-Oqf">
<rect key="frame" x="130" y="-2" width="108" height="32"/>
<buttonCell key="cell" type="push" title="Yes!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5K0-zD-kN0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnPositiveFeedback:" target="wWn-9q-AYl" id="KYm-dp-Jno"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="width" secondItem="gf6-2O-DZv" secondAttribute="width" id="6Mc-Df-PFM"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="2" id="7Wj-6T-kuF"/>
<constraint firstItem="gf6-2O-DZv" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="-60" id="A8v-do-LdI"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="leading" secondItem="gf6-2O-DZv" secondAttribute="trailing" constant="8" id="B6V-Es-uVV"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="height" secondItem="gf6-2O-DZv" secondAttribute="height" id="I60-AU-Yhi"/>
<constraint firstItem="gRN-xJ-bfq" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="4" id="PQb-l5-nLd"/>
<constraint firstAttribute="bottom" secondItem="gf6-2O-DZv" secondAttribute="bottom" constant="5" id="iqG-ta-N68"/>
<constraint firstAttribute="bottom" secondItem="Kfq-0p-Oqf" secondAttribute="bottom" constant="5" id="k43-mW-Z3z"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="leading" secondItem="gRN-xJ-bfq" secondAttribute="trailing" constant="7" id="opd-fc-Q5o"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="33.5" id="yYL-61-BgS"/>
</constraints>
<connections>
<outlet property="imageView" destination="gRN-xJ-bfq" id="eNP-AX-syJ"/>
<outlet property="leftButton" destination="gf6-2O-DZv" id="MQg-oW-jd2"/>
<outlet property="leftField" destination="JNw-ld-oz9" id="fDT-qG-fRw"/>
<outlet property="rightButton" destination="Kfq-0p-Oqf" id="mUN-yg-Wlc"/>
<outlet property="textField" destination="JNw-ld-oz9" id="z19-n5-O1O"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="Q9t-Yx-hmz"/>
<outlet property="delegate" destination="-2" id="AqY-uU-Noo"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<constraints>
<constraint firstAttribute="height" constant="265" id="QcT-N0-G4s"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="DJr-1R-9LK">
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="cfu-8V-LKK">
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T7e-RS-eTE">
<rect key="frame" x="29" y="13" width="217" height="19"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="tQw-lm-Ify"/>
</constraints>
<sliderCell key="cell" state="on" alignment="left" maxValue="1440" tickMarkPosition="above" sliderType="linear" id="V8R-sf-5hO" customClass="CLCustomSliderCell"/>
<connections>
<action selector="sliderMoved:" target="-2" id="TMW-de-NVq"/>
<binding destination="-2" name="value" keyPath="self.futureSliderValue" id="Fbv-WN-01b"/>
</connections>
</slider>
<button toolTip="Open Preferences" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OFy-u1-TnH">
<rect key="frame" x="246" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="MIQ-4K-E5A"/>
<constraint firstAttribute="height" constant="18" id="X7D-ep-wB4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="vYm-fs-Zjd">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="openPreferences:" target="-2" id="0Yc-Eq-obQ"/>
</connections>
</button>
<button toolTip="Close Clocker" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nTt-pf-Hw2">
<rect key="frame" x="0.0" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="8kZ-Pj-VK6"/>
<constraint firstAttribute="height" constant="18" id="sVG-VE-3q4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="PowerIcon" imagePosition="only" alignment="center" alternateImage="PowerIcon" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sUh-16-Fhk">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="terminate:" target="-1" id="fpZ-pt-UiU"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="top" secondItem="6" secondAttribute="top" constant="8" id="1g0-Hm-7Gh"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="top" secondItem="dFw-ts-8OZ" secondAttribute="bottom" constant="-30" id="96B-lf-iFV"/>
<constraint firstAttribute="bottom" secondItem="nTt-pf-Hw2" secondAttribute="bottom" constant="5" id="Alf-Sy-CEF"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="leading" secondItem="nTt-pf-Hw2" secondAttribute="trailing" constant="2" id="GgQ-58-tbc"/>
<constraint firstAttribute="trailing" secondItem="4Gd-Nv-fXr" secondAttribute="trailing" constant="-1" id="XP6-W0-2XT"/>
<constraint firstAttribute="bottom" secondItem="OFy-u1-TnH" secondAttribute="bottom" constant="5" id="an1-GW-fs9"/>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="-1" id="fHc-VQ-mJ3"/>
<constraint firstAttribute="trailing" secondItem="OFy-u1-TnH" secondAttribute="trailing" constant="5" id="p2a-qj-LHE"/>
<constraint firstItem="nTt-pf-Hw2" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="uxy-ac-DRN"/>
<constraint firstItem="OFy-u1-TnH" firstAttribute="leading" secondItem="T7e-RS-eTE" secondAttribute="trailing" constant="2" id="vVD-Or-EZX"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="8"/>
</connections>
<point key="canvasLocation" x="230" y="392.5"/>
</window>
<userDefaultsController representsSharedInstance="YES" id="O3B-kK-4vm"/>
</objects>
<resources>
<image name="ClockerIcon-16" width="16" height="16"/>
<image name="NSActionTemplate" width="14" height="14"/>
<image name="PowerIcon" width="270" height="270"/>
</resources>
</document>

17
Clocker/Clocker/zh-Hant.lproj/Localizable.strings

@ -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" = "版 %@";

294
Clocker/Clocker/zh-Hant.lproj/Panel.xib

@ -1,294 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="PanelController">
<connections>
<outlet property="backgroundView" destination="6" id="20"/>
<outlet property="futureSlider" destination="T7e-RS-eTE" id="xDZ-rl-pux"/>
<outlet property="mainTableview" destination="dFw-ts-8OZ" id="wwJ-jA-lCy"/>
<outlet property="preferencesButton" destination="OFy-u1-TnH" id="SId-Ih-ssT"/>
<outlet property="scrollViewHeight" destination="QcT-N0-G4s" id="EHr-Co-L0Z"/>
<outlet property="shutdownButton" destination="nTt-pf-Hw2" id="gCK-0D-gnK"/>
<outlet property="window" destination="5" id="7"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="none" id="5" customClass="Panel">
<windowStyleMask key="styleMask" utility="YES" nonactivatingPanel="YES" texturedBackground="YES"/>
<windowCollectionBehavior key="collectionBehavior" moveToActiveSpace="YES" ignoresCycle="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="1000" y="379" width="280" height="273"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<view key="contentView" id="6" customClass="BackgroundView">
<rect key="frame" x="0.0" y="0.0" width="280" height="273"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="56" horizontalPageScroll="10" verticalLineScroll="56" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Gd-Nv-fXr">
<rect key="frame" x="-1" y="0.0" width="282" height="265"/>
<clipView key="contentView" id="4MZ-Di-yNR">
<rect key="frame" x="0.0" y="0.0" width="282" height="265"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="55" viewBased="YES" id="dFw-ts-8OZ">
<rect key="frame" x="0.0" y="0.0" width="282" height="0.0"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="1"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="279" minWidth="40" maxWidth="1000" id="LTt-db-Dwv">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="7LK-2q-H3f">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView identifier="timeZoneCell" id="qbN-ba-fho" customClass="CLTimezoneCellView">
<rect key="frame" x="1" y="0.0" width="279" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" tag="100" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="etF-33-bCB">
<rect key="frame" x="7" y="33" width="154" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="150" id="32b-h6-joo"/>
<constraint firstAttribute="height" constant="22" id="vod-YN-iNX"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" placeholderString="Timezone Name" id="rnh-AP-ooc">
<font key="font" size="15" name="HelveticaNeue-Light"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="labelDidChange:" target="qbN-ba-fho" id="7uY-zA-yJS"/>
</connections>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="6Ea-8S-iTa">
<rect key="frame" x="203" y="5" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="TYa-1I-fQJ"/>
<constraint firstAttribute="width" constant="20" id="b27-EB-ZA9"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="k54-vn-T4E"/>
</imageView>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="L5a-d8-SuC">
<rect key="frame" x="224" y="7" width="49" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="Fmh-lZ-7vJ"/>
<constraint firstAttribute="width" constant="45" identifier="width" id="psP-EH-mNo"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="left" placeholderString="" id="uGx-ek-RAy">
<font key="font" size="11" name="HelveticaNeue-Light"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" tag="102" preferredMaxLayoutWidth="72" translatesAutoresizingMaskIntoConstraints="NO" id="QUd-7D-q14">
<rect key="frame" x="8" y="11" width="76" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="42Y-hy-Uo7"/>
<constraint firstAttribute="width" constant="72" id="fkH-oq-qvM"/>
</constraints>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" state="on" placeholderString="Tomorrow" usesSingleLineMode="YES" id="74U-rv-5xj">
<font key="font" size="13" name="HelveticaNeue-Bold"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" tag="101" preferredMaxLayoutWidth="110" translatesAutoresizingMaskIntoConstraints="NO" id="vnv-J2-7r1">
<rect key="frame" x="159" y="20" width="114" height="35"/>
<constraints>
<constraint firstAttribute="height" constant="35" id="3WU-de-OQL"/>
<constraint firstAttribute="width" constant="110" id="cQV-gJ-zMz"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" placeholderString="23:46 AM" id="g8s-EU-UHx">
<font key="font" size="22" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="QUd-7D-q14" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="10" id="0Qz-Ev-efP"/>
<constraint firstItem="6Ea-8S-iTa" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-5" id="0Vx-eb-VjR"/>
<constraint firstItem="etF-33-bCB" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="Lct-kG-usb"/>
<constraint firstItem="L5a-d8-SuC" firstAttribute="leading" secondItem="6Ea-8S-iTa" secondAttribute="trailing" constant="3" id="SLJ-j1-tPj"/>
<constraint firstItem="QUd-7D-q14" firstAttribute="top" secondItem="etF-33-bCB" secondAttribute="bottom" constant="2" id="VO6-Zn-eA3"/>
<constraint firstItem="L5a-d8-SuC" firstAttribute="top" secondItem="vnv-J2-7r1" secondAttribute="bottom" constant="-4" id="YdU-5D-bdv"/>
<constraint firstItem="vnv-J2-7r1" firstAttribute="top" secondItem="qbN-ba-fho" secondAttribute="top" constant="5" id="brT-M2-0IB"/>
<constraint firstAttribute="trailing" secondItem="L5a-d8-SuC" secondAttribute="trailing" constant="8" id="iqR-Tq-tVx"/>
<constraint firstItem="etF-33-bCB" firstAttribute="leading" secondItem="qbN-ba-fho" secondAttribute="leading" constant="9" id="ueW-ow-ZRq"/>
<constraint firstAttribute="trailing" secondItem="vnv-J2-7r1" secondAttribute="trailing" constant="8" id="zXo-eA-0bQ"/>
</constraints>
<connections>
<outlet property="customName" destination="etF-33-bCB" id="6Yz-qc-WmD"/>
<outlet property="relativeDate" destination="QUd-7D-q14" id="Ath-zr-bGo"/>
<outlet property="sunriseSetImage" destination="6Ea-8S-iTa" id="0q5-qu-IcL"/>
<outlet property="sunriseSetTime" destination="L5a-d8-SuC" id="Mmg-Xj-qI5"/>
<outlet property="textField" destination="etF-33-bCB" id="6fd-cc-Qq2"/>
<outlet property="time" destination="vnv-J2-7r1" id="XFD-GQ-9CD"/>
</connections>
</tableCellView>
<tableCellView identifier="ratingCellView" id="wWn-9q-AYl" customClass="CLRatingCellView">
<rect key="frame" x="1" y="61" width="279" height="50"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="gRN-xJ-bfq">
<rect key="frame" x="58" y="30" width="16" height="16"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-16" id="8gl-Vi-0VF"/>
</imageView>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsExpansionToolTips="YES" preferredMaxLayoutWidth="185" translatesAutoresizingMaskIntoConstraints="NO" id="JNw-ld-oz9">
<rect key="frame" x="79" y="28" width="189" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="185" id="i6p-pO-tfO"/>
<constraint firstAttribute="height" constant="20" id="kOH-Lb-7sB"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Enjoy using 計時員?" id="iM2-CB-CE2">
<font key="font" size="12" name="HelveticaNeue"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gf6-2O-DZv">
<rect key="frame" x="26" y="-2" width="108" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="96" id="2gM-fC-Oj0"/>
<constraint firstAttribute="height" constant="21" id="Rv7-Nd-VH1"/>
</constraints>
<buttonCell key="cell" type="push" title="Not Really" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ckn-uK-FWI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnNegativeFeedback:" target="wWn-9q-AYl" id="lBL-WL-xum"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kfq-0p-Oqf">
<rect key="frame" x="130" y="-2" width="108" height="32"/>
<buttonCell key="cell" type="push" title="Yes!" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="5K0-zD-kN0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Thin"/>
</buttonCell>
<connections>
<action selector="actionOnPositiveFeedback:" target="wWn-9q-AYl" id="KYm-dp-Jno"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="width" secondItem="gf6-2O-DZv" secondAttribute="width" id="6Mc-Df-PFM"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="2" id="7Wj-6T-kuF"/>
<constraint firstItem="gf6-2O-DZv" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="-60" id="A8v-do-LdI"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="leading" secondItem="gf6-2O-DZv" secondAttribute="trailing" constant="8" id="B6V-Es-uVV"/>
<constraint firstItem="Kfq-0p-Oqf" firstAttribute="height" secondItem="gf6-2O-DZv" secondAttribute="height" id="I60-AU-Yhi"/>
<constraint firstItem="gRN-xJ-bfq" firstAttribute="top" secondItem="wWn-9q-AYl" secondAttribute="top" constant="4" id="PQb-l5-nLd"/>
<constraint firstAttribute="bottom" secondItem="gf6-2O-DZv" secondAttribute="bottom" constant="5" id="iqG-ta-N68"/>
<constraint firstAttribute="bottom" secondItem="Kfq-0p-Oqf" secondAttribute="bottom" constant="5" id="k43-mW-Z3z"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="leading" secondItem="gRN-xJ-bfq" secondAttribute="trailing" constant="7" id="opd-fc-Q5o"/>
<constraint firstItem="JNw-ld-oz9" firstAttribute="centerX" secondItem="wWn-9q-AYl" secondAttribute="centerX" constant="33.5" id="yYL-61-BgS"/>
</constraints>
<connections>
<outlet property="imageView" destination="gRN-xJ-bfq" id="eNP-AX-syJ"/>
<outlet property="leftButton" destination="gf6-2O-DZv" id="MQg-oW-jd2"/>
<outlet property="leftField" destination="JNw-ld-oz9" id="fDT-qG-fRw"/>
<outlet property="rightButton" destination="Kfq-0p-Oqf" id="mUN-yg-Wlc"/>
<outlet property="textField" destination="JNw-ld-oz9" id="z19-n5-O1O"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="Q9t-Yx-hmz"/>
<outlet property="delegate" destination="-2" id="AqY-uU-Noo"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<constraints>
<constraint firstAttribute="height" constant="265" id="QcT-N0-G4s"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="DJr-1R-9LK">
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="cfu-8V-LKK">
<rect key="frame" x="-100" y="-100" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="T7e-RS-eTE">
<rect key="frame" x="29" y="13" width="217" height="19"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="tQw-lm-Ify"/>
</constraints>
<sliderCell key="cell" state="on" alignment="left" maxValue="1440" tickMarkPosition="above" sliderType="linear" id="V8R-sf-5hO" customClass="CLCustomSliderCell"/>
<connections>
<action selector="sliderMoved:" target="-2" id="TMW-de-NVq"/>
<binding destination="-2" name="value" keyPath="self.futureSliderValue" id="Fbv-WN-01b"/>
</connections>
</slider>
<button toolTip="Open Preferences" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OFy-u1-TnH">
<rect key="frame" x="246" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="MIQ-4K-E5A"/>
<constraint firstAttribute="height" constant="18" id="X7D-ep-wB4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSActionTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="vYm-fs-Zjd">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="openPreferences:" target="-2" id="0Yc-Eq-obQ"/>
</connections>
</button>
<button toolTip="Close Clocker" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nTt-pf-Hw2">
<rect key="frame" x="0.0" y="4" width="29" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="29" id="8kZ-Pj-VK6"/>
<constraint firstAttribute="height" constant="18" id="sVG-VE-3q4"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="PowerIcon" imagePosition="only" alignment="center" alternateImage="PowerIcon" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sUh-16-Fhk">
<behavior key="behavior" lightByContents="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="terminate:" target="-1" id="fpZ-pt-UiU"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="top" secondItem="6" secondAttribute="top" constant="8" id="1g0-Hm-7Gh"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="top" secondItem="dFw-ts-8OZ" secondAttribute="bottom" constant="-30" id="96B-lf-iFV"/>
<constraint firstAttribute="bottom" secondItem="nTt-pf-Hw2" secondAttribute="bottom" constant="5" id="Alf-Sy-CEF"/>
<constraint firstItem="T7e-RS-eTE" firstAttribute="leading" secondItem="nTt-pf-Hw2" secondAttribute="trailing" constant="2" id="GgQ-58-tbc"/>
<constraint firstAttribute="trailing" secondItem="4Gd-Nv-fXr" secondAttribute="trailing" constant="-1" id="XP6-W0-2XT"/>
<constraint firstAttribute="bottom" secondItem="OFy-u1-TnH" secondAttribute="bottom" constant="5" id="an1-GW-fs9"/>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="-1" id="fHc-VQ-mJ3"/>
<constraint firstAttribute="trailing" secondItem="OFy-u1-TnH" secondAttribute="trailing" constant="5" id="p2a-qj-LHE"/>
<constraint firstItem="nTt-pf-Hw2" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="uxy-ac-DRN"/>
<constraint firstItem="OFy-u1-TnH" firstAttribute="leading" secondItem="T7e-RS-eTE" secondAttribute="trailing" constant="2" id="vVD-Or-EZX"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="8"/>
</connections>
<point key="canvasLocation" x="230" y="392.5"/>
</window>
<userDefaultsController representsSharedInstance="YES" id="O3B-kK-4vm"/>
</objects>
<resources>
<image name="ClockerIcon-16" width="16" height="16"/>
<image name="NSActionTemplate" width="14" height="14"/>
<image name="PowerIcon" width="270" height="270"/>
</resources>
</document>

3
Clocker/ClockerHelper/de.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerHelper";

393
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";

3
Clocker/ClockerHelper/ru.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerHelper";

393
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";

3
Clocker/ClockerHelper/zh-Hans.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerHelper";

393
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";

2
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

5
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: "")
}
}

20
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.")
}
@ -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.")
}
}

9
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)

3
Clocker/ClockerUITests/de.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerUITests";

3
Clocker/ClockerUITests/ru.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerUITests";

3
Clocker/ClockerUITests/zh-Hans.lproj/InfoPlist.strings

@ -0,0 +1,3 @@
/* Bundle name */
"CFBundleName" = "ClockerUITests";

41
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,44 @@ 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")
guard let parentVC = parent as? OnboardingParentViewController else { return }
parentVC.performFinalStepsBeforeFinishing()
}
override func viewWillAppear() {

36
Clocker/Onboarding/Onboarding.storyboard

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="fde-UX-327">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@ -285,7 +286,7 @@ DQ
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-512" id="Ykz-ej-1Nf"/>
</imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iMf-Uy-zAf">
<rect key="frame" x="120" y="310" width="94" height="20"/>
<rect key="frame" x="120" y="310" width="308" height="20"/>
<textFieldCell key="cell" lineBreakMode="clipping" placeholderString="Onboarding Info" id="MOO-BA-qzM">
<font key="font" size="12" name="Avenir-Book"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -317,6 +318,7 @@ DQ
<constraint firstItem="mF9-1w-sxR" firstAttribute="leading" secondItem="sib-OR-ym5" secondAttribute="leading" constant="20" id="pco-hw-yLC"/>
<constraint firstItem="pC3-D3-DSa" firstAttribute="top" secondItem="XfU-36-tPs" secondAttribute="top" id="tD2-vW-0Qp"/>
<constraint firstItem="N6Z-mh-pET" firstAttribute="trailing" secondItem="4eB-eD-0jK" secondAttribute="trailing" id="uAP-KZ-kV2"/>
<constraint firstAttribute="trailing" secondItem="iMf-Uy-zAf" secondAttribute="trailing" constant="10" id="vPf-CV-JBC"/>
</constraints>
</view>
<connections>
@ -464,7 +466,7 @@ DQ
<rect key="frame" x="20" y="49" width="396" height="160"/>
<clipView key="contentView" id="XpR-1t-AQy">
<rect key="frame" x="0.0" y="0.0" width="396" height="160"/>
<autoresizingMask key="autoresizingMask"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="33" rowSizeStyle="automatic" viewBased="YES" id="30y-X6-i7I">
<rect key="frame" x="0.0" y="0.0" width="396" height="160"/>
@ -651,28 +653,31 @@ DQ
<constraints>
<constraint firstAttribute="height" constant="22" id="OvB-hh-3zl"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="border" placeholderString="Email ID" drawsBackground="YES" id="sOr-bC-0RP">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="border" placeholderString="Optional email for infrequent app-related updates" drawsBackground="YES" id="sOr-bC-0RP">
<font key="font" size="12" name="Avenir-Book"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="vVa-Wi-DxT">
<rect key="frame" x="120" y="78" width="292" height="20"/>
<textFieldCell key="cell" selectable="YES" title="Email Explanation Text" id="aOm-4b-2yt">
<font key="font" size="12" name="Avenir-Book"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qLP-tx-m41" customClass="UnderlinedButton" customModule="Clocker" customModuleProvider="target">
<rect key="frame" x="117" y="84" width="293" height="15"/>
<buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="left" imageScaling="proportionallyDown" inset="2" id="o87-us-e82">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Avenir-Book"/>
</buttonCell>
<connections>
<action selector="localizationAction:" target="oRb-Hw-hrj" id="2LJ-4J-C6S"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="nbC-4o-Xjf" firstAttribute="leading" secondItem="fEE-QM-0Pi" secondAttribute="leading" id="0e8-gV-Vtv"/>
<constraint firstItem="rQQ-Iw-KIs" firstAttribute="top" secondItem="Hbh-9r-F30" secondAttribute="top" id="5HI-nS-H0q"/>
<constraint firstAttribute="trailing" secondItem="kMo-BE-OAn" secondAttribute="trailing" constant="20" id="Blg-oa-r4s"/>
<constraint firstItem="qLP-tx-m41" firstAttribute="trailing" secondItem="6WD-GP-iz1" secondAttribute="trailing" id="EkL-nC-9Ks"/>
<constraint firstItem="6WD-GP-iz1" firstAttribute="top" secondItem="kMo-BE-OAn" secondAttribute="bottom" constant="28" id="JBL-3r-4rQ"/>
<constraint firstItem="fEE-QM-0Pi" firstAttribute="leading" secondItem="rQQ-Iw-KIs" secondAttribute="leading" constant="2" id="ONk-e6-XAu"/>
<constraint firstItem="vVa-Wi-DxT" firstAttribute="trailing" secondItem="6WD-GP-iz1" secondAttribute="trailing" id="OSn-gm-o2b"/>
<constraint firstItem="qLP-tx-m41" firstAttribute="top" secondItem="6WD-GP-iz1" secondAttribute="bottom" constant="23" id="POY-qL-OZY"/>
<constraint firstAttribute="trailing" secondItem="nbC-4o-Xjf" secondAttribute="trailing" constant="20" id="TOW-1R-mJC"/>
<constraint firstItem="Hbh-9r-F30" firstAttribute="top" secondItem="DF5-si-VO7" secondAttribute="top" constant="20" id="Ttw-wI-zuQ"/>
<constraint firstAttribute="trailing" secondItem="6WD-GP-iz1" secondAttribute="trailing" constant="26" id="VBH-zO-odL"/>
@ -680,18 +685,17 @@ DQ
<constraint firstItem="kMo-BE-OAn" firstAttribute="top" secondItem="nbC-4o-Xjf" secondAttribute="bottom" constant="40" id="ZFQ-Wg-6MB"/>
<constraint firstItem="rQQ-Iw-KIs" firstAttribute="leading" secondItem="Hbh-9r-F30" secondAttribute="trailing" constant="20" id="ZQY-pi-fPT"/>
<constraint firstItem="fEE-QM-0Pi" firstAttribute="top" secondItem="rQQ-Iw-KIs" secondAttribute="bottom" constant="-5" id="eCn-Co-mzu"/>
<constraint firstItem="qLP-tx-m41" firstAttribute="leading" secondItem="6WD-GP-iz1" secondAttribute="leading" constant="-5" id="g2A-ra-jpG"/>
<constraint firstItem="nbC-4o-Xjf" firstAttribute="top" secondItem="fEE-QM-0Pi" secondAttribute="bottom" constant="42" id="j7b-Af-bcv"/>
<constraint firstItem="Hbh-9r-F30" firstAttribute="leading" secondItem="DF5-si-VO7" secondAttribute="leading" constant="20" id="jof-jK-gX8"/>
<constraint firstItem="vVa-Wi-DxT" firstAttribute="leading" secondItem="6WD-GP-iz1" secondAttribute="leading" id="mns-Ph-FKK"/>
<constraint firstItem="vVa-Wi-DxT" firstAttribute="top" secondItem="6WD-GP-iz1" secondAttribute="bottom" constant="24" id="qe3-dK-63b"/>
<constraint firstItem="kMo-BE-OAn" firstAttribute="leading" secondItem="fEE-QM-0Pi" secondAttribute="leading" id="z80-9e-u9d"/>
</constraints>
</view>
<connections>
<outlet property="accesoryLabel" destination="kMo-BE-OAn" id="zmK-wY-Ptp"/>
<outlet property="accessoryImageView" destination="nbC-4o-Xjf" id="bzc-jC-v0k"/>
<outlet property="emailExplanationLabel" destination="vVa-Wi-DxT" id="oD8-p1-DJo"/>
<outlet property="emailTextField" destination="6WD-GP-iz1" id="tbr-Ld-eMc"/>
<outlet property="localizationButton" destination="qLP-tx-m41" id="BfA-or-Lxp"/>
<outlet property="subtitleLabel" destination="fEE-QM-0Pi" id="BkA-rd-TKV"/>
<outlet property="titleLabel" destination="rQQ-Iw-KIs" id="Bka-gU-05I"/>
</connections>
@ -702,7 +706,7 @@ DQ
</scene>
</scenes>
<resources>
<image name="ClockerIcon-512" width="512" height="512"/>
<image name="ClockerIcon-512" width="1024" height="1024"/>
<image name="Dark Menubar" width="285" height="23"/>
</resources>
</document>

2
Clocker/Onboarding/OnboardingParentViewController.swift

@ -186,7 +186,7 @@ class OnboardingParentViewController: NSViewController {
}
}
private func performFinalStepsBeforeFinishing() {
func performFinalStepsBeforeFinishing() {
finalOnboardingVC?.sendUpEmailIfValid()
positiveButton.tag = OnboardingType.complete.rawValue

2
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

3
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")

7
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)")

1
Clocker/Panel/ParentPanelController.swift

@ -203,6 +203,7 @@ class ParentPanelController: NSWindowController {
for timezoneObject in timezoneObjects where timezoneObject.isSystemTimezone == true {
timezoneObject.setLabel(customLabel)
timezoneObject.formattedAddress = customLabel
if let latlong = coordinates {
timezoneObject.longitude = latlong.longitude
timezoneObject.latitude = latlong.latitude

16
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 {
@ -49,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,
@ -59,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
@ -128,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!

2
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" {

38
Clocker/Preferences/Preferences.storyboard

@ -315,9 +315,9 @@
</connections>
</segmentedControl>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="100" translatesAutoresizingMaskIntoConstraints="NO" id="94u-Ea-XeF">
<rect key="frame" x="23" y="300" width="204" height="22"/>
<rect key="frame" x="23" y="292" width="204" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="9q1-rv-VAH"/>
<constraint firstAttribute="height" constant="30" id="9q1-rv-VAH"/>
<constraint firstAttribute="width" constant="200" id="uL4-ca-MBV"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Truncate menubar text longer than" id="VVw-Rr-mRA">
@ -802,10 +802,10 @@
</connections>
</segmentedControl>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="hSF-97-9Av">
<rect key="frame" x="53" y="508" width="137" height="20"/>
<rect key="frame" x="53" y="504" width="137" height="24"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="133" id="OJY-fl-IgA"/>
<constraint firstAttribute="height" constant="20" id="nmA-ly-Et5"/>
<constraint firstAttribute="height" constant="24" id="nmA-ly-Et5"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Day Display Options" id="v3N-cb-Rck">
<font key="font" size="13" name="Avenir-Light"/>
@ -843,10 +843,10 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="175" translatesAutoresizingMaskIntoConstraints="NO" id="qTG-Ja-xfF">
<rect key="frame" x="11" y="168" width="179" height="20"/>
<rect key="frame" x="11" y="166" width="179" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="175" id="3dq-gA-QzD"/>
<constraint firstAttribute="height" constant="20" id="6LA-i0-V6k"/>
<constraint firstAttribute="height" constant="22" id="6LA-i0-V6k"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Include Date" id="UK6-e7-joW">
<font key="font" size="13" name="Avenir-Light"/>
@ -1062,9 +1062,9 @@
</connections>
</segmentedControl>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="175" translatesAutoresizingMaskIntoConstraints="NO" id="Iyh-mp-nm9">
<rect key="frame" x="11" y="72" width="179" height="18"/>
<rect key="frame" x="11" y="66" width="179" height="24"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="jBJ-EG-0DK"/>
<constraint firstAttribute="height" constant="24" id="jBJ-EG-0DK"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="175" id="ytA-Ef-wjZ"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Include Place Name" id="oZb-YK-4em">
@ -1074,7 +1074,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="175" translatesAutoresizingMaskIntoConstraints="NO" id="k0X-Ns-As8" userLabel="Menubar Mode">
<rect key="frame" x="8" y="24" width="182" height="18"/>
<rect key="frame" x="8" y="18" width="182" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="5qT-hl-McQ"/>
</constraints>
@ -1085,7 +1085,7 @@
</textFieldCell>
</textField>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Cc2-CB-XEA">
<rect key="frame" x="216" y="18" width="154" height="24"/>
<rect key="frame" x="216" y="12" width="154" height="24"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="80" id="bpH-iP-NuC"/>
<constraint firstAttribute="height" constant="21" id="gzP-tL-0YX"/>
@ -1364,7 +1364,7 @@
<button toolTip="Sorts by time difference from your current timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P6d-qq-ycq">
<rect key="frame" x="277" y="3" width="13" height="25"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="150" id="cAs-on-f7X"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="160" id="cAs-on-f7X"/>
<constraint firstAttribute="height" constant="25" id="juv-QL-vMx"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSDescendingSortIndicator" imagePosition="right" alignment="right" state="on" inset="2" id="zcN-lz-EiH">
@ -1380,7 +1380,7 @@
<rect key="frame" x="333" y="3" width="13" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="eZL-Gr-38S"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="100" id="sJk-T7-7Lm"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="sJk-T7-7Lm"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSDescendingSortIndicator" imagePosition="right" alignment="center" inset="2" id="gzQ-qj-dBx">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
@ -1394,7 +1394,7 @@
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6fs-Mx-NcG">
<rect key="frame" x="305" y="3" width="13" height="25"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="160" id="241-Rn-G6N"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="190" id="241-Rn-G6N"/>
<constraint firstAttribute="height" constant="25" id="weP-ll-vZ8"/>
</constraints>
<buttonCell key="cell" type="recessed" bezelStyle="recessed" image="NSDescendingSortIndicator" imagePosition="right" alignment="center" inset="2" id="OJe-cI-Dbk">
@ -1645,7 +1645,7 @@ CA
<windowStyleMask key="styleMask" closable="YES" miniaturizable="YES" nonactivatingPanel="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="120" y="64" width="345" height="320"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<value key="minSize" type="size" width="345" height="320"/>
<value key="maxSize" type="size" width="345" height="320"/>
<view key="contentView" id="MAe-t5-3A2">
@ -1664,7 +1664,7 @@ CA
</connections>
</searchField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AnV-LM-kjm">
<rect key="frame" x="106" y="8" width="226" height="20"/>
<rect key="frame" x="162" y="8" width="170" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="Qos-QS-Bf5"/>
</constraints>
@ -1675,9 +1675,9 @@ CA
</textFieldCell>
</textField>
<button toolTip="Close Panel" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="woG-LO-TxX">
<rect key="frame" x="44" y="-2" width="66" height="31"/>
<rect key="frame" x="84" y="-2" width="82" height="31"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="54" id="CS1-e7-H0g"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="70" id="CS1-e7-H0g"/>
<constraint firstAttribute="height" constant="20" id="S55-it-vSo"/>
</constraints>
<buttonCell key="cell" type="push" title="Close" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="NCA-9F-0ww">
@ -1692,9 +1692,9 @@ Gw
</connections>
</button>
<button toolTip="Add a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2Cm-Ys-lwo">
<rect key="frame" x="2" y="-2" width="52" height="31"/>
<rect key="frame" x="2" y="-2" width="92" height="31"/>
<constraints>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="40" id="Ikc-5C-yOA"/>
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="80" id="Ikc-5C-yOA"/>
<constraint firstAttribute="height" constant="20" id="TRi-p5-6gR"/>
</constraints>
<buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="Yif-ho-dPJ">

2
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!

Loading…
Cancel
Save