diff --git a/Clocker/AppDelegate.swift b/Clocker/AppDelegate.swift index b627833..61bb5cc 100644 --- a/Clocker/AppDelegate.swift +++ b/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") } diff --git a/Clocker/Clocker.xcodeproj/project.pbxproj b/Clocker/Clocker.xcodeproj/project.pbxproj index f98d313..fc53d2e 100755 --- a/Clocker/Clocker.xcodeproj/project.pbxproj +++ b/Clocker/Clocker.xcodeproj/project.pbxproj @@ -350,6 +350,15 @@ 9AA522C923415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 9AA522CA23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; 9AA522CB23415C4F00C9E005 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; + 9AA522CC234169E400C9E005 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522CD234169E400C9E005 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + 9AA522CE234169F200C9E005 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522CF234169F200C9E005 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; }; + 9AA522D023416A0E00C9E005 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522D123416A0E00C9E005 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + 9AA522D323416A1B00C9E005 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/InfoPlist.strings"; sourceTree = ""; }; + 9AA522D423416A6000C9E005 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; + 9AA522D523416A6000C9E005 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; 9AB6F1552259CF3900A44663 /* CalendarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalendarViewController.swift; sourceTree = ""; }; 9AB6F1572259CFFC00A44663 /* AboutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; 9AB6F15A2259D08300A44663 /* iVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iVersion.m; sourceTree = ""; }; @@ -1002,6 +1011,11 @@ de, ja, ko, + fr, + ca, + es, + "pt-PT", + nl, ); mainGroup = DD4F7BF913C30F9F00825C6E; productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */; @@ -1292,6 +1306,11 @@ 9A4DC4E42337F5BC00F03FA4 /* de */, 9A4DC4E62337F5C800F03FA4 /* ja */, 9A4DC4E82337F5D600F03FA4 /* ko */, + 9AA522CC234169E400C9E005 /* fr */, + 9AA522CE234169F200C9E005 /* ca */, + 9AA522D023416A0E00C9E005 /* es */, + 9AA522D323416A1B00C9E005 /* pt-PT */, + 9AA522D423416A6000C9E005 /* nl */, ); name = InfoPlist.strings; path = Clocker; @@ -1307,6 +1326,10 @@ 9A4DC4E52337F5BC00F03FA4 /* de */, 9A4DC4E72337F5C800F03FA4 /* ja */, 9A4DC4E92337F5D600F03FA4 /* ko */, + 9AA522CD234169E400C9E005 /* fr */, + 9AA522CF234169F200C9E005 /* ca */, + 9AA522D123416A0E00C9E005 /* es */, + 9AA522D523416A6000C9E005 /* nl */, ); name = Localizable.strings; path = Clocker; diff --git a/Clocker/Clocker/ca.lproj/InfoPlist.strings b/Clocker/Clocker/ca.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/Clocker/Clocker/ca.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ +/* + InfoPlist.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"CFBundleDisplayName" = "Clocker"; +"CFBundleName" = "Clocker"; \ No newline at end of file diff --git a/Clocker/Clocker/ca.lproj/Localizable.strings b/Clocker/Clocker/ca.lproj/Localizable.strings new file mode 100644 index 0000000..8788d9d --- /dev/null +++ b/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"; diff --git a/Clocker/Clocker/es.lproj/InfoPlist.strings b/Clocker/Clocker/es.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/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"; \ No newline at end of file diff --git a/Clocker/Clocker/es.lproj/Localizable.strings b/Clocker/Clocker/es.lproj/Localizable.strings new file mode 100644 index 0000000..8788d9d --- /dev/null +++ b/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"; diff --git a/Clocker/Clocker/fr.lproj/InfoPlist.strings b/Clocker/Clocker/fr.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/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"; \ No newline at end of file diff --git a/Clocker/Clocker/fr.lproj/Localizable.strings b/Clocker/Clocker/fr.lproj/Localizable.strings new file mode 100644 index 0000000..8788d9d --- /dev/null +++ b/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"; diff --git a/Clocker/Clocker/nl.lproj/InfoPlist.strings b/Clocker/Clocker/nl.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/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"; \ No newline at end of file diff --git a/Clocker/Clocker/nl.lproj/Localizable.strings b/Clocker/Clocker/nl.lproj/Localizable.strings new file mode 100644 index 0000000..8788d9d --- /dev/null +++ b/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"; diff --git a/Clocker/Clocker/pt-PT.lproj/InfoPlist.strings b/Clocker/Clocker/pt-PT.lproj/InfoPlist.strings new file mode 100644 index 0000000..79d4436 --- /dev/null +++ b/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"; \ No newline at end of file diff --git a/Clocker/Panel/ParentPanelController.swift b/Clocker/Panel/ParentPanelController.swift index f3f74e8..3d24abd 100644 --- a/Clocker/Panel/ParentPanelController.swift +++ b/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