diff --git a/Clocker/AppDelegate.swift b/Clocker/AppDelegate.swift index 05b24f4..925a180 100644 --- a/Clocker/AppDelegate.swift +++ b/Clocker/AppDelegate.swift @@ -164,12 +164,7 @@ open class AppDelegate: NSObject, NSApplicationDelegate { let defaults = UserDefaults.standard let currentActivationPolicy = NSRunningApplication.current.activationPolicy - var activationPolicy: NSApplication.ActivationPolicy = defaults.integer(forKey: CLAppDisplayOptions) == 0 ? .accessory : .regular - - #if DEBUG - UserDefaults.standard.set(1, forKey: CLAppDisplayOptions) - activationPolicy = .regular - #endif + let activationPolicy: NSApplication.ActivationPolicy = defaults.integer(forKey: CLAppDisplayOptions) == 0 ? .accessory : .regular if currentActivationPolicy != activationPolicy { NSApp.setActivationPolicy(activationPolicy) diff --git a/Clocker/Clocker.xcodeproj/project.pbxproj b/Clocker/Clocker.xcodeproj/project.pbxproj index 0e5b080..baed1f6 100755 --- a/Clocker/Clocker.xcodeproj/project.pbxproj +++ b/Clocker/Clocker.xcodeproj/project.pbxproj @@ -84,7 +84,6 @@ 35C36FA22259ED6D002FA5C6 /* RemindersHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C36F9F2259ED6D002FA5C6 /* RemindersHandler.swift */; }; 35C36FA42259EEC2002FA5C6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C36FA32259EEC2002FA5C6 /* AppDelegate.swift */; }; 35EB537325310FD200311068 /* TimezoneDataEqualityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3545C52A22612BCC00121E25 /* TimezoneDataEqualityTests.swift */; }; - 35F14BDE25073E4C0052B240 /* Keys.plist in Resources */ = {isa = PBXBuildFile; fileRef = 35F14BDD25073E4C0052B240 /* Keys.plist */; }; 9A0A1C8C20903DBD0012003B /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A9E87651C1FEDC500A7A2DF /* CoreLocation.framework */; }; 9A13BAD61CA87F08007C6CBE /* Panel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A13BAD81CA87F08007C6CBE /* Panel.xib */; }; 9A13BAE01CA882FA007C6CBE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9A13BAE21CA882FA007C6CBE /* InfoPlist.strings */; }; @@ -92,6 +91,7 @@ 9A20A04B1C4DEED200FB45AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A20A04A1C4DEED200FB45AB /* IOKit.framework */; }; 9A24A1881ED902CC0095201E /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A24A1871ED902CC0095201E /* EventKit.framework */; }; 9A3169C11D2CC5AA0079FDF8 /* com.abhishek.ClockerHelper.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A3169C01D2CC5AA0079FDF8 /* com.abhishek.ClockerHelper.plist */; }; + 9A348B312545DE18000E846F /* Keys.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A348B302545DE17000E846F /* Keys.plist */; }; 9A4379271BEC223900F4E27F /* Fabric.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A4379231BEC223900F4E27F /* Fabric.framework */; }; 9A43792A1BEC230A00F4E27F /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A4379291BEC230A00F4E27F /* libc++.tbd */; }; 9A56DB801C1CFB73004CE6AF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A56DB7D1C1CFB73004CE6AF /* MainMenu.xib */; }; @@ -228,6 +228,7 @@ 352AF497232E07B400D96FA7 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/InfoPlist.strings; sourceTree = ""; }; 352AF499232E07B400D96FA7 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = ""; }; 3545C52A22612BCC00121E25 /* TimezoneDataEqualityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimezoneDataEqualityTests.swift; sourceTree = ""; }; + 3569A44E25441F320087E254 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; 357391852507277500D30819 /* HourMarkerViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HourMarkerViewItem.swift; sourceTree = ""; }; 357391862507277500D30819 /* HourMarkerViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HourMarkerViewItem.xib; sourceTree = ""; }; 3595FACF227F88BC0044A12A /* UserDefaults + KVOExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults + KVOExtensions.swift"; sourceTree = ""; }; @@ -305,7 +306,6 @@ 35C36F9E2259ED6D002FA5C6 /* EventCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventCenter.swift; sourceTree = ""; }; 35C36F9F2259ED6D002FA5C6 /* RemindersHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemindersHandler.swift; sourceTree = ""; }; 35C36FA32259EEC2002FA5C6 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = SOURCE_ROOT; }; - 35F14BDD25073E4C0052B240 /* Keys.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Keys.plist; path = ../Internal/Keys.plist; sourceTree = ""; }; 9A13BAD71CA87F08007C6CBE /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/Panel.xib; sourceTree = ""; }; 9A13BAE11CA882FA007C6CBE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 9A13BAEB1CA88A76007C6CBE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; @@ -313,6 +313,7 @@ 9A20A06F1C4E804D00FB45AB /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; }; 9A24A1871ED902CC0095201E /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; 9A3169C01D2CC5AA0079FDF8 /* com.abhishek.ClockerHelper.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = com.abhishek.ClockerHelper.plist; path = Clocker/com.abhishek.ClockerHelper.plist; sourceTree = ""; }; + 9A348B302545DE17000E846F /* Keys.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Keys.plist; path = Internal/Keys.plist; sourceTree = ""; }; 9A4379231BEC223900F4E27F /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Fabric.framework; sourceTree = ""; }; 9A4379291BEC230A00F4E27F /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; 9A43792B1BEC231100F4E27F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; @@ -828,7 +829,7 @@ DD4F7BF913C30F9F00825C6E = { isa = PBXGroup; children = ( - 35F14BDD25073E4C0052B240 /* Keys.plist */, + 9A348B302545DE17000E846F /* Keys.plist */, 35C36F9B2259EC97002FA5C6 /* Events and Reminders */, 35C36F382259D80C002FA5C6 /* Overall App */, 35C36F242259D64D002FA5C6 /* Panel */, @@ -1038,6 +1039,7 @@ it, tr, ar, + "pt-BR", ); mainGroup = DD4F7BF913C30F9F00825C6E; productRefGroup = DD4F7C0513C30F9F00825C6E /* Products */; @@ -1113,7 +1115,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 35F14BDE25073E4C0052B240 /* Keys.plist in Resources */, + 9A348B312545DE18000E846F /* Keys.plist in Resources */, 9A13BAEA1CA88A76007C6CBE /* Localizable.strings in Resources */, 357391882507277500D30819 /* HourMarkerViewItem.xib in Resources */, 9AB6F15E2259D08300A44663 /* iVersion.bundle in Resources */, @@ -1362,6 +1364,7 @@ 9AA522D123416A0E00C9E005 /* es */, 9AA522D523416A6000C9E005 /* nl */, 9AA522D723416E6000C9E005 /* it */, + 3569A44E25441F320087E254 /* pt-BR */, ); name = Localizable.strings; path = Clocker; @@ -1466,7 +1469,7 @@ CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 81; + CURRENT_PROJECT_VERSION = 83; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = ( @@ -1491,7 +1494,7 @@ INFOPLIST_FILE = "Clocker/Clocker-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.12; - MARKETING_VERSION = 20.10.01; + MARKETING_VERSION = 20.10.02; OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker; PRODUCT_NAME = Clocker; @@ -1953,7 +1956,7 @@ CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 81; + CURRENT_PROJECT_VERSION = 83; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -1980,7 +1983,7 @@ INFOPLIST_FILE = "Clocker/Clocker-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.12; - MARKETING_VERSION = 20.10.01; + MARKETING_VERSION = 20.10.02; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = ""; "OTHER_SWIFT_FLAGS[arch=*]" = "-D DEBUG"; @@ -2018,7 +2021,7 @@ CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 81; + CURRENT_PROJECT_VERSION = 83; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = ( @@ -2043,7 +2046,7 @@ INFOPLIST_FILE = "Clocker/Clocker-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.12; - MARKETING_VERSION = 20.10.01; + MARKETING_VERSION = 20.10.02; OTHER_LDFLAGS = ""; "OTHER_SWIFT_FLAGS[arch=*]" = "-D RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.abhishek.Clocker; diff --git a/Clocker/Clocker.xcodeproj/xcshareddata/xcschemes/Clocker.xcscheme b/Clocker/Clocker.xcodeproj/xcshareddata/xcschemes/Clocker.xcscheme index 60465e1..b4e1daf 100644 --- a/Clocker/Clocker.xcodeproj/xcshareddata/xcschemes/Clocker.xcscheme +++ b/Clocker/Clocker.xcodeproj/xcshareddata/xcschemes/Clocker.xcscheme @@ -82,11 +82,6 @@ - - Tests.xcscheme_^#shared#^_ orderHint - 1 + 2 SuppressBuildableAutocreation diff --git a/Clocker/Clocker/LocationController.swift b/Clocker/Clocker/LocationController.swift index 295cb3a..073070a 100644 --- a/Clocker/Clocker/LocationController.swift +++ b/Clocker/Clocker/LocationController.swift @@ -111,6 +111,6 @@ extension LocationController: CLLocationManagerDelegate { } func locationManager(_: CLLocationManager, didFailWithError error: Error) { - print(error) + Logger.info(error.localizedDescription) } } diff --git a/Clocker/Clocker/ca.lproj/Localizable.strings b/Clocker/Clocker/ca.lproj/Localizable.strings index 79f22a8..48dbfd8 100644 --- a/Clocker/Clocker/ca.lproj/Localizable.strings +++ b/Clocker/Clocker/ca.lproj/Localizable.strings @@ -156,3 +156,6 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/de.lproj/Localizable.strings b/Clocker/Clocker/de.lproj/Localizable.strings index f781fd0..1124da3 100644 --- a/Clocker/Clocker/de.lproj/Localizable.strings +++ b/Clocker/Clocker/de.lproj/Localizable.strings @@ -1,332 +1,161 @@ -/* (No Comment) */ -"About Tab" = "Über Clocker"; +/* + Localizable.strings + Clocker -"CFBundleDisplayName" = "Clocker"; + Created by Abhishek Banthia on 3/27/16. -/* Button to add a location */ -"Add Button Title" = "Hinzufügen"; +*/ -/* (No Comment) */ +"CFBundleDisplayName" = "Clocker"; +"Thank you for helping make Clocker even better!" = "Danke, dass du dabei geholfen hast, Clocker noch besser zu machen!"; +"iRateMessageTitle" = "%@ bewerten"; +"iRateAppMessage" = "Wenn dir %@ gefällt, dann bewerte uns doch im App Store. Das dauert kaum eine Minute und hilft uns sehr. Vielen Dank für deine Unterstützung!"; +"iRateGameMessage" = "Wenn du Spaß an %@ hast, dann bewerte uns doch im App Store. Das dauert kaum eine Minute und hilft uns sehr. Vielen Dank, für deine Unterstützung!"; +"iRateCancelButton" = "Nein, danke"; +"iRateRateButton" = "Jetzt bewerten"; +"iRateRemindButton" = "Später erinnern"; +"iRateUpdateMessage" = "Jetzt aktualisieren?"; +"ClockerVersion" = "Version %@"; +"CLFeedbackAlertTitle" = "Danke, dass Du hilfst Clocker noch besser zu machen!"; "app-name" = "Clocker"; - -/* (No Comment) */ -"Appearance Tab" = "Darstellungen"; - -/* Button title for going back to the previous screen */ -"Back" = "Zurück"; - -/* Calendar Permission Title */ +"start-at-login" = "Bei der Anmeldung starten"; +"setup-steps" = "In nur drei Schritten ist Clocker fertig eingerichtet"; +"Permissions-Header" = "Berechtigungen"; +"See your next Calendar event here." = "Hier Deinen nächsten Kalendereintrag anzeigen."; +"Click here to start." = "Hier klicken, um zu starten."; +"Reminders Access" = "Erinnerungen-Zugriff"; "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) */ +"Permissions" = "Berechtigungen"; +"Calendar Detail" = "Anstehende Termine aus Deinem persönlichen und geteilten Kalendern können in der Menüleiste und im Fenster angezeigt werden."; +"Reminders Detail" = "Erinnerungen in der Zeitzone Deiner Wahl festlegen. Deine Erinnerungen werden in der Standard-Erinnerungs-App gespeichert."; +"Privacy Text" = "Du kannst das später im Bereich Datenschutz in den Systemeinstellungen ändern."; +"Granted Button Text" = "Gewährt"; +"Denied Button Text" = "Verweigert"; +"Grant Button Text" = "Gewähren"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "In nur drei Schritten ist Clocker fertig eingerichtet."; +"Get Started" = "Erste Schritte"; + +// Tab Item Titles +"Preferences Tab" = "Einstellungen"; +"Appearance Tab" = "Darstellung"; "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 */ +"About Tab" = "Über"; +"Permissions Tab" = "Berechtigungen"; + +// General Preferences Screen +"Start at Login" = "Clocker bei der Anmeldung starten"; +"Sort by Time Difference" = "Nach Zeitdifferenz sortieren"; +"Sort by Name" = "Nach Namen sortieren"; +"Sort by Label" = "Nach Bezeichnung sortieren"; +"Search Field Placeholder" = "Gebe eine Stadt, ein Bundesland oder Land ein"; +"No Timezone Selected" = "Bitte wählen Sie eine Zeitzone!"; +"Max Timezones Selected" = "Es werden maximal 100 Zeitzonen unterstützt!"; +"Max Search Characters" = "Es sind nur 50 Zeichen erlaubt!"; +"Add Button Title" = "Hinzufügen"; "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!"; +// Onboarding +"Open Clocker At Login" = "Clocker bei der Anmeldung starten"; +"Launch Clocker" = "Clocker starten"; -/* (No Comment) */ -"Contact Information (Optional)" = "Kontaktinformationen (optional)"; +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "In nur drei Schritten ist Clocker fertig eingerichtet."; +"Get Started" = "Erste Schritte"; -/* Continue Button Title */ +// Permissions +"Calendar Access Title" = "Kalender-Zugriff"; +"Reminders Access Title" = "Zugriff auf Erinnerungen"; +"Later Config Description" = "Dies kann später in den Clocker Einstellungen konfiguriert werden."; +"Back" = "Zurück"; "Continue" = "Fortfahren"; - -/* (No Comment) */ -"Day Display Options" = "Tagesanzeige Optionen"; - -/* (No Comment) */ +"Clocker is more useful when it can display events from your calendars." = "Clocker ist nützlicher, wenn es Ereignisse aus Deinem Kalendern anzeigen kann."; +"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 aus Deinem Kalendern anzeigen kann. Du kannst diese Einstellung in Systemeinstellungen › Sicherheit Privatsphäre › Privatsphäre ändern."; +"Launch Preferences" = "Einstellungen öffnen"; +"Grant Access" = "Zugriff erlauben"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "Anstehende Termine aus Deinem persönlichen und geteilten Kalendern können in der Menüleiste und im Fenster angezeigt werden."; +"Granted" = "Gewährt"; "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"; +"Unexpected" = "Unerwartet"; -/* (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) */ +// Onboarding Search +"Quick Add Locations" = "Orte schnell hinzufügen"; +"More search options in Clocker Preferences." = "Weitere Suchoptionen in den Clocker Einstellungen."; +"Enter 3 or more characters for locations you'll like to add" = "Gebe 3 oder mehr Zeichen für den Orte ein, die Du hinzufügen möchtest"; + +// Start at Login +"Launch at Login" = "Bei der Anmelden starten"; +"This can be configured later in Clocker Preferences." = "Dies kann später in den Clocker Einstellungen konfiguriert werden."; +"Should Clocker open automatically on startup?" = "Soll Clocker beim Start automatisch geöffnet werden?"; + +// Final Onboarding Screen +"You're all set!" = "Du bist startklar!"; +"Thank you for the details." = "Vielen Dank für die 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." = "Du wirst ein Uhr-Symbol in Ihrer Menüleiste sehen, wenn Du die App startest. Wenn Du ein Dock-Symbol sehen möchtest, gehe in die Einstellungen."; +"If you'd like to help us localize the app in your language or receive infrequent app-related updates, please enter your email!" = "Wenn Du uns helfen möchtest die App in Deine Sprache zu übersetzen oder von Zeit zu Zeit Informationen zur App erhalten möchtest, gibt bitte hier Deine E-Mail ein!"; + +// Appearance Tab +"Panel Theme" = "Erscheinungsbild"; +"Favourite a timezone to enable menubar display options." = "Favorisiere eine Zeitzone, um diese in der Menüleiste zu zeigen."; +"Main Panel Options" = "Optionen für Programmfenster"; +"Time Format" = "Zeitformat"; +"Day Display Options" = "Anzeigeoptionen für den Tag"; +"Show Future Slider" = "\"Future Slider\" anzeigen"; +"Show Sunrise/Sunset" = "Sonnenaufgang/-untergang anzeigen"; +"Display the time in seconds" = "Zeit in Sekunden anzeigen"; "Larger Text" = "Größerer Text"; +"Future Slider Range" = "Bereich für den \"Future Slider\""; +"Include Date" = "Datum hinzufügen"; +"Include Day" = "Tag hinzufügen"; +"Include Place Name" = "Ortsname hinzufügen"; +"Menubar Display Options" = "Anzeigeoptionen für die Menüleiste"; +"Menubar Mode" = "Menüleisten-Modus"; +"Preview" = "Vorschau"; +"Miscellaneous" = "Verschiedenes"; + +// Empty View +"No places added" = "Keine Orte hinzugefügt"; + +// Panel +"No upcoming event." = "Kein anstehendes Ereignis."; +"You have no events scheduled for tomorrow." = "Du hast keine Kalendereinträge für morgen."; + +// Review +"Enjoy using Clocker?" = "Gefällt Dir Clocker?"; + +// App Feedback +"Tell us what you think!" = "Sag uns, was Du denkst!"; +"Contact Information (Optional)" = "Kontaktinformationen (optional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Kontaktinformationen sind optional! Diese helfen uns jedoch Dich zu erreichen, falls wir weitere Informationen benötigen oder helfen können!"; -/* 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."; +// About View Screen +"Feedback is always welcome:" = "Feedback ist immer willkommen:"; -/* UI Tests */ +// Calendars View +"Upcoming Event View Options" = "Zukünftige Ereignisse zeigen"; +"Show Upcoming Event View" = "Anzeigeoptionen für zukünftige Ereignisse"; +"Show All Day Meetings" = "Ganztägige Ereignisse anzeigen"; +"Show Next Meeting Title in Menubar" = "Das nächste Ereignis in der Menüliste zeigen"; +"Truncate menubar text longer than" = "Text in der Menüleiste kürzen, der länger ist als"; +"characters" = "Zeichen"; +"Show events from" = "Zeige Ereignisse aus"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "Wenn der Besprechungstitel \"Besprechung mit Neel\" ist und die Kürzungslänge auf 5 eingestellt wurde, dann erscheint der Text in der Menüleiste als \"Bespr...\""; + +// Notes Popover +"Reminder Set" = "Erinnerung gespeichert"; +"Successfully set." = "Erfolgreich gespeichert."; + +// Errors +"You're offline, maybe?" = "Bist Du eventuell offline?"; +"Try again, maybe?" = "Versuche es nochmal!"; +"The Internet connection appears to be offline." = "Scheinbar besteht keine Verbindung zum Internet."; + +// 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) */ +"Florida" = "Florida"; "San Francisco" = "San Francisco"; -/* Search Field Placeholder */ -"Search Field Placeholder" = "Enter a city, state or country name"; - -/* (No Comment) */ -"Enter 3 or more characters for locations you'll like to add" = "Enter 3 or more characters for locations you'll like to add"; - -/* Next Event Label for no Calendar access */ -"See your next Calendar event here." = "See your next Calendar event here."; - -/* (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?"; - -"Preview" = "Preview"; - -"Miscellaneous" = "Miscellaneous"; +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/en.lproj/Localizable.strings b/Clocker/Clocker/en.lproj/Localizable.strings index 79f22a8..900bc89 100644 --- a/Clocker/Clocker/en.lproj/Localizable.strings +++ b/Clocker/Clocker/en.lproj/Localizable.strings @@ -156,3 +156,7 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; + diff --git a/Clocker/Clocker/en.lproj/Panel.xib b/Clocker/Clocker/en.lproj/Panel.xib index 8528ba6..6a6c035 100755 --- a/Clocker/Clocker/en.lproj/Panel.xib +++ b/Clocker/Clocker/en.lproj/Panel.xib @@ -16,6 +16,7 @@ + @@ -41,7 +42,7 @@ - + @@ -534,6 +535,48 @@ + @@ -551,6 +594,7 @@ + @@ -558,6 +602,7 @@ + diff --git a/Clocker/Clocker/es.lproj/Localizable.strings b/Clocker/Clocker/es.lproj/Localizable.strings index 79f22a8..48dbfd8 100644 --- a/Clocker/Clocker/es.lproj/Localizable.strings +++ b/Clocker/Clocker/es.lproj/Localizable.strings @@ -156,3 +156,6 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/fr.lproj/Localizable.strings b/Clocker/Clocker/fr.lproj/Localizable.strings index 79f22a8..48dbfd8 100644 --- a/Clocker/Clocker/fr.lproj/Localizable.strings +++ b/Clocker/Clocker/fr.lproj/Localizable.strings @@ -156,3 +156,6 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/hi.lproj/Localizable.strings b/Clocker/Clocker/hi.lproj/Localizable.strings index 27adc12..7dd021c 100644 --- a/Clocker/Clocker/hi.lproj/Localizable.strings +++ b/Clocker/Clocker/hi.lproj/Localizable.strings @@ -152,3 +152,6 @@ "New Zealand" = "न्यूज़ीलैंड"; "Florida" = "फ्लोरिडा"; "San Francisco" = "सान फ्रांसिस्को"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/it.lproj/Localizable.strings b/Clocker/Clocker/it.lproj/Localizable.strings index 5996d6e..b9a182e 100644 --- a/Clocker/Clocker/it.lproj/Localizable.strings +++ b/Clocker/Clocker/it.lproj/Localizable.strings @@ -157,3 +157,6 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/ja.lproj/Localizable.strings b/Clocker/Clocker/ja.lproj/Localizable.strings index c89196e..2ce2144 100644 --- a/Clocker/Clocker/ja.lproj/Localizable.strings +++ b/Clocker/Clocker/ja.lproj/Localizable.strings @@ -156,3 +156,5 @@ "Florida" = "Florida"; "San Francisco" = "San Francisco"; +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/ko.lproj/Localizable.strings b/Clocker/Clocker/ko.lproj/Localizable.strings index 6746fbf..2c49183 100644 --- a/Clocker/Clocker/ko.lproj/Localizable.strings +++ b/Clocker/Clocker/ko.lproj/Localizable.strings @@ -6,26 +6,27 @@ */ -"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."; +"CFBundleDisplayName" = "시계"; +"Thank you for helping make Clocker even better!" = "Clocker가 더 발전할 수 있도록 도와주셔서 정말 감사합니다!"; +"iRateMessageTitle" = "비율 %@ "; +"iRateAppMessage" = "%@을 즐기고 계신다면, 잠시 평가를 위해 시간을 내주시겠습니까? 단 1분도 걸리지 않겠습니다. 지원해주셔서 감사합니다!"; +"iRateGameMessage" = "%@을 즐기고 계신다면, 잠시 평가를 위해 시간을 내주시겠습니까? 단 1분도 걸리지 않겠습니다. 지원해주셔서 감사합니다!"; +"iRateCancelButton" = "나중에 할게요"; +"iRateRateButton" = "지금 평가하기"; +"iRateRemindButton" = "나중에 다시 알리기"; +"iRateUpdateMessage" = "지금 업데이트를 진행할까요?"; +"ClockerVersion" = "버전 %@"; +"CLFeedbackAlertTitle" = "Clocker가 더 발전할 수 있도록 도와주셔서 정말 감사합니다!"; +"app-name" = "시계"; +"start-at-login" = "로그인을 해주세요"; +"setup-steps" = "시계를 설정하는데 3가지만 하시면 됩니다"; +"Permissions-Header" = "권한"; +"See your next Calendar event here." = "당신의 다음 일정을 여기서 보세요"; +"Click here to start." = "여기를 눌러서 시작합니다."; +"Reminders Access" = "리마인더 권한"; +"Calendar Access" = "캘린더 권한"; +"Permissions" = "권한"; +"Calendar Detail" = "여러분의 개인&공유 캘린더에서 다가오는 이벤트들은 메뉴바와 패널에서 보여질 수 있습니다."; "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"; @@ -51,22 +52,22 @@ "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"; +"Max Search Characters" = "50 문자까지만 허용됩니다!"; +"Add Button Title" = "추가"; +"Close Button Title" = "닫기"; // Onboarding -"Open Clocker At Login" = "Open Clocker At Login"; -"Launch Clocker" = "Launch Clocker"; +"Open Clocker At Login" = "로그인해서 Clocker 열기"; +"Launch Clocker" = "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."; +"Calendar Access Title" = "캘린더 접근"; +"Reminders Access Title" = "리마인더 권한"; +"Later Config Description" = "이것들은 나중에 설정에서 바꾸실 수 있습니다"; "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."; @@ -104,54 +105,60 @@ "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"; -"Preview" = "Preview"; -"Miscellaneous" = "Miscellaneous"; +"Larger Text" = "글씨를 크게하기"; +"Future Slider Range" = "미래 슬라이더 범위"; +"Include Date" = "날짜 추가하기"; +"Include Day" = "시간 추가하기"; +"Include Place Name" = "장소 이름"; +"Menubar Display Options" = "메뉴바 화면표시 설정"; +"Menubar Mode" = "메뉴바 모드"; +"Preview" = "미리보기"; +"Miscellaneous" = "기타"; // Empty View -"No places added" = "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."; +"No upcoming event." = "예정된 이벤트 없음"; +"You have no events scheduled for tomorrow." = "내일 일정이 없어요!"; // Review -"Enjoy using Clocker?" = "Enjoy using Clocker?"; +"Enjoy using Clocker?" = "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!"; +"Tell us what you think!" = "여러분의 의견을 들려주세요."; +"Contact Information (Optional)" = "연락처 정보 (선택)"; +"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:"; +"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...\""; +"Upcoming Event View Options" = "다가오는 이벤트 보기 옵션"; +"Show Upcoming Event View" = "다가오는 일정 보기"; +"Show All Day Meetings" = "모든 일정 보기"; +"Show Next Meeting Title in Menubar" = "다음 일정을 메뉴바에서 보기"; +"Truncate menubar text longer than" = "다음보다 긴 메뉴 표시 줄 텍스트를 자릅니다. + +"; +"characters" = "글자"; +"Show events from" = "오늘부터 이벤트 표시"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "만약 미팅 제목이 \"Meeting with Neel\" 이면 5글자만 보여지기 때문에 주의해주세요. (\"Meeti...\")"; // Notes Popover -"Reminder Set" = "Reminder Set"; -"Successfully set." = "Successfully set."; +"Reminder 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."; +"You're offline, maybe?" = "당신은 오프라인입니다. 아마도?"; +"Try again, maybe?" = "다시 시도 해보세요"; +"The Internet connection appears to be offline." = "인터넷 연결이 오프라인 상태입니다."; // UI Tests -"New Zealand" = "New Zealand"; -"Florida" = "Florida"; -"San Francisco" = "San Francisco"; +"New Zealand" = "뉴질랜드"; +"Florida" = "플로리다"; +"San Francisco" = "샌프란시스코"; + + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/nl.lproj/Localizable.strings b/Clocker/Clocker/nl.lproj/Localizable.strings index 79f22a8..48dbfd8 100644 --- a/Clocker/Clocker/nl.lproj/Localizable.strings +++ b/Clocker/Clocker/nl.lproj/Localizable.strings @@ -156,3 +156,6 @@ "New Zealand" = "New Zealand"; "Florida" = "Florida"; "San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/pt-BR.lproj/Localizable.strings b/Clocker/Clocker/pt-BR.lproj/Localizable.strings new file mode 100644 index 0000000..01b5822 --- /dev/null +++ b/Clocker/Clocker/pt-BR.lproj/Localizable.strings @@ -0,0 +1,162 @@ +/* + Localizable.strings + Clocker + + Created by Abhishek Banthia on 3/27/16. + +*/ + +"CFBundleDisplayName" = "Clocker"; +"Thank you for helping make Clocker even better!" = "Obrigado por ajudar a tornar o Clocker ainda melhor!"; +"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" = "Não, Obrigado"; +"iRateRateButton" = "Avaliar Agora"; +"iRateRemindButton" = "Lembrar mais tarde"; +"iRateUpdateMessage" = "Atualizar agora?"; +"ClockerVersion" = "Versão %@"; +"CLFeedbackAlertTitle" = "Obrigado por ajudar a tornar o Clocker ainda melhor!"; +"app-name" = "Clocker"; +"start-at-login" = "Iniciar ao iniciar sessão"; +"setup-steps" = "It only takes 3 steps to set up Clocker"; +"Permissions-Header" = "Permissões"; +"See your next Calendar event here." = "Veja seu próximo evento do Calendário aqui."; +"Click here to start." = "Clique aqui para iniciar."; +"Reminders Access" = "Acessos aos Lembretes"; +"Calendar Access" = "Acesso ao Calendário"; +"Permissions" = "Permissões"; +"Calendar Detail" = "Próximos eventos de seus calendários pessoais e compartilhados podem ser exibidos no menu e no painel."; +"Reminders Detail" = "Defina lembretes no fuso horário da localização de sua escolha. Seus lembretes são armazenados no aplicativo padrão Lembretes."; +"Privacy Text" = "Você pode alterar isso mais tarde na seção Privacidade das Preferências do Sistema."; +"Granted Button Text" = "Granted"; +"Denied Button Text" = "Denied"; +"Grant Button Text" = "Conceder"; + +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "São apenas 3 passos para configurar o Clocker."; +"Get Started" = "Get Started"; + +// Tab Item Titles +"Preferences Tab" = "Preferências"; +"Appearance Tab" = "Aparência"; +"Calendar Tab" = "Calendário"; +"About Tab" = "Sobre"; +"Permissions Tab" = "Permissões"; + +// General Preferences Screen +"Start at Login" = "Start Clocker at Login"; +"Sort by Time Difference" = "Sort by Time Difference"; +"Sort by Name" = "Ordenar por nome"; +"Sort by Label" = "Ordenar por Etiqueta"; +"Search Field Placeholder" = "Insira uma cidade, estado ou país"; +"No Timezone Selected" = "Por favor, selecione um fuso horário!"; +"Max Timezones Selected" = "Maximum 100 timezones allowed!"; +"Max Search Characters" = "Só são permitidos até 50 caracteres!"; +"Add Button Title" = "Adicionar"; +"Close Button Title" = "Fechar"; + +// 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" = "Acesso ao Calendário"; +"Reminders Access Title" = "Reminders Access"; +"Later Config Description" = "These can be configured later in System Preferences."; +"Back" = "Voltar"; +"Continue" = "Continuar"; +"Clocker is more useful when it can display events from your calendars." = "O bloqueador é mais útil quando pode exibir eventos de seus calendários."; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "O bloqueador é mais útil quando pode exibir eventos de seus calendários. Você pode alterar essa configuração em Preferências do Sistema › Segurança e Privacidade › Privacidade."; +"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." = "Próximos eventos de seus calendários pessoais e compartilhados podem ser exibidos no menu e no painel."; +"Granted" = "Granted"; +"Denied" = "Denied"; +"Grant" = "Grant"; +"Unexpected" = "Inesperado"; + +// Onboarding Search +"Quick Add Locations" = "Quick Add Locations"; +"More search options in Clocker Preferences." = "Mais opções de busca em Preferências do Clocker."; +"Enter 3 or more characters for locations you'll like to add" = "Enter 3 or more characters for locations you'll like to add"; + +// Start at Login +"Launch at Login" = "Launch at Login"; +"This can be configured later in Clocker Preferences." = "Isso pode ser configurado mais tarde nas Preferências do Clocker."; +"Should Clocker open automatically on startup?" = "Should Clocker open automatically on startup?"; + +// Final Onboarding Screen +"You're all set!" = "Tudo pronto!"; +"Thank you for the details." = "Obrigado pelos detalhes."; +"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!" = "Se você quiser nos ajudar a localizar o app no seu idioma ou receber atualizações pouco frequentes, digite seu e-mail!"; + +// Appearance Tab +"Panel Theme" = "Tema do painel"; +"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" = "Exibir o tempo em segundos"; +"Larger Text" = "Texto Maior"; +"Future Slider Range" = "Future Slider Range"; +"Include Date" = "Incluir Data"; +"Include Day" = "Incluir Dia"; +"Include Place Name" = "Incluir Nome do Lugar"; +"Menubar Display Options" = "Menubar Display Options"; +"Menubar Mode" = "Menubar Mode"; +"Preview" = "Pré-visualizar"; +"Miscellaneous" = "Miscellaneous"; + +// Empty View +"No places added" = "Nenhum local adicionado"; + +// Panel +"No upcoming event." = "Sem eventos futuros."; +"You have no events scheduled for tomorrow." = "Você não tem eventos agendados para amanhã."; + +// Review +"Enjoy using Clocker?" = "Gostando de usar o Clocker?"; + +// App Feedback +"Tell us what you think!" = "Conte-nos o que você pensa!"; +"Contact Information (Optional)" = "Informações de Contato (Opcional)"; +"Contact fields are optional! Your contact information will let us contact you in case we need more information or can help!" = "Os campos de contato são opcionais! Suas informações de contato nos permitirão entrar em contato com você caso precisemos de mais informações ou possamos ajudar!"; + +// About View Screen +"Feedback is always welcome:" = "Feedback é sempre bem-vindo:"; + +// 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." = "A conexão à Internet parece estar desligada."; + +// UI Tests +"New Zealand" = "Nova Zelândia"; +"Florida" = "Florida"; +"San Francisco" = "San Francisco"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; + diff --git a/Clocker/Clocker/ru.lproj/Localizable.strings b/Clocker/Clocker/ru.lproj/Localizable.strings index a1776b4..5686967 100644 --- a/Clocker/Clocker/ru.lproj/Localizable.strings +++ b/Clocker/Clocker/ru.lproj/Localizable.strings @@ -330,3 +330,6 @@ "Preview" = "Preview"; "Miscellaneous" = "Miscellaneous"; + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings index 43b7460..e705d48 100644 --- a/Clocker/Clocker/zh-Hans.lproj/Localizable.strings +++ b/Clocker/Clocker/zh-Hans.lproj/Localizable.strings @@ -1,332 +1,155 @@ /* (No Comment) */ -"About Tab" = "About"; - -"CFBundleDisplayName" = "Clocker"; - -/* Button to add a location */ -"Add Button Title" = "Add"; - -/* (No Comment) */ +"CFBundleDisplayName" = "解锁器"; +"Thank you for helping make Clocker even better!" = "感谢您帮助 Clocker 做得更好!"; +"iRateMessageTitle" = "评价 %@"; +"iRateAppMessage" = "如果您喜欢使用 %@,能否请您抽出时间来对它进行评价?评价不会超过一分钟。感谢您的支持 !"; +"iRateGameMessage" = "如果您喜欢使用 %@,能否请您抽出时间来对它进行评价?评价不会超过一分钟。感谢您的支持 !"; +"iRateCancelButton" = "不用了,谢谢"; +"iRateRateButton" = "立即评分"; +"iRateRemindButton" = "稍后提醒我"; +"iRateUpdateMessage" = "现在更新?"; +"ClockerVersion" = "版本 %@"; +"CLFeedbackAlertTitle" = "感谢您帮助 Clocker 做得更好!"; "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 */ +"start-at-login" = "开启时启动"; +"setup-steps" = "只需要三步来设置 Clocker"; +"Permissions-Header" = "权限"; +"See your next Calendar event here." = "在这里查看你的下一个日历事件。"; +"Click here to start." = "点此开始。"; +"Reminders Access" = "提醒访问权限"; +"Calendar Access" = "日历访问权限"; +"Permissions" = "权限"; +"Calendar Detail" = "未来你个人和分享的日历事件将显示在菜单栏和面板上。"; +"Reminders Detail" = "在您选择的位置时区设置提醒。您的提醒存储在默认提醒应用中。"; +"Privacy Text" = "您稍后可以在「系统偏好设置」的隐私部分更改此内容。"; +"Granted Button Text" = "已授权"; +"Denied Button Text" = "已拒绝"; "Grant Button Text" = "授权"; -/* (No Comment) */ +// Welcome Onboarding +"It only takes 3 steps to setup Clocker." = "只需要 3 步来设置 Clocker。"; +"Get Started" = "开始"; + +// Tab Item Titles +"Preferences Tab" = "首选项"; +"Appearance Tab" = "外观"; +"Calendar Tab" = "日历"; +"About Tab" = "关于"; +"Permissions Tab" = "权限"; + +// General Preferences Screen +"Start at Login" = "登录时启动 Clocker"; +"Sort by Time Difference" = "按时间差排序"; +"Sort by Name" = "按名称排序"; +"Sort by Label" = "按标签排序"; +"Search Field Placeholder" = "输入城市、省/州或国家名称"; +"No Timezone Selected" = "请选择一个时区!"; +"Max Timezones Selected" = "最多允许 100 个时区!"; +"Max Search Characters" = "最多允许 50 个字符!"; +"Add Button Title" = "添加"; +"Close Button Title" = "关闭"; + +// Onboarding +"Open Clocker At Login" = "登录时启动 Clocker"; +"Launch Clocker" = "启动 Clocker"; + +// Welcome Onboarding +"It only takes 3 steps to set up Clocker." = "只需要三步来设置 Clocker。"; +"Get Started" = "现在开始"; + +// Permissions +"Calendar Access Title" = "访问日历"; +"Reminders Access Title" = "访问提醒"; +"Later Config Description" = "这些可以稍后在系统偏好设置中配置。"; +"Back" = "返回"; +"Continue" = "继续"; +"Clocker is more useful when it can display events from your calendars." = "Clocker 能显示日历中的事件时会更有用。"; +"Clocker is more useful when it can display events from your calendars. You can change this setting in System Preferences › Security & Privacy › Privacy." = "Clocker 在能显示日历中的事件时更有用。你可以在「系统偏好设置 > 安全性与隐私 > 隐私」中更改设置。"; +"Launch Preferences" = "打开首选项"; +"Grant Access" = "授予访问权限"; +"Upcoming events from your personal and shared calendars can be shown in the menubar and the panel." = "你个人和共享日历的未来事件将显示在菜单栏和面板上。"; "Granted" = "已授权"; +"Denied" = "已拒绝"; +"Grant" = "授权"; +"Unexpected" = "意外的"; -/* 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."; +// Onboarding Search +"Quick Add Locations" = "快速添加地点"; +"More search options in Clocker Preferences." = "Clocker 首选项中的更多搜索选项。"; +"Enter 3 or more characters for locations you'll like to add" = "为您想要添加的位置输入 3 个或更多字符"; -/* Start at Login */ +// 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) */ -"Enter 3 or more characters for locations you'll like to add" = "Enter 3 or more characters for locations you'll like to add"; - -/* Next Event Label for no Calendar access */ -"See your next Calendar event here." = "See your next Calendar event here."; - -/* (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?"; - -"Preview" = "Preview"; - -"Miscellaneous" = "Miscellaneous"; +"This can be configured later in Clocker Preferences." = "这可以稍后在 Clocker 首选项中进行配置。"; +"Should Clocker open automatically on startup?" = "是否在启动时自动打开 Clocker?"; + +// Final Onboarding Screen +"You're all set!" = "已完成全部设置!"; +"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." = "当你启动应用时,会在菜单栏看到一个时钟图标。如果想在 Dock 上显示图标,请在首选项设置。"; +"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" = "面板主题"; +"Favourite a timezone to enable menubar display options." = "收藏一个时区以在菜单栏上显示可选项。"; +"Main Panel Options" = "主面板选项"; +"Time Format" = "时间格式"; +"Day Display Options" = "日显示选项"; +"Show Future Slider" = "显示未来滑块"; +"Show Sunrise/Sunset" = "显示日出/日落"; +"Display the time in seconds" = "显示秒数"; +"Larger Text" = "更大字号"; +"Future Slider Range" = "未来滑块范围"; +"Include Date" = "包含日期"; +"Include Day" = "包含日"; +"Include Place Name" = "包含地名"; +"Menubar Display Options" = "菜单栏显示选项"; +"Menubar Mode" = "菜单栏模式"; +"Preview" = "预览"; +"Miscellaneous" = "杂项设置"; + +// Empty View +"No places added" = "没有添加地点"; + +// Panel +"No upcoming event." = "暂无事项"; +"You have no events scheduled for tomorrow." = "您明天没有安排。"; + +// Review +"Enjoy using Clocker?" = "喜欢使用 Clocker 吗?"; + +// App Feedback +"Tell us what you think!" = "告诉我们您的想法!"; +"Contact Information (Optional)" = "联系信息 (可选)"; +"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:" = "欢迎提供反馈:"; + +// Calendars View +"Upcoming Event View Options" = "即将到来的事件视图选项"; +"Show Upcoming Event View" = "显示即将到来的事件视图"; +"Show All Day Meetings" = "显示全天会议"; +"Show Next Meeting Title in Menubar" = "在菜单栏中显示下一个会议标题"; +"Truncate menubar text longer than" = "截断菜单栏文字长度大于"; +"characters" = "字符"; +"Show events from" = "显示事件来源"; +"If meeting title is \"Meeting with Neel\" and truncate length is set to 5, text in menubar will appear as \"Meeti...\"" = "如果会议标题是“Meeting with Neel”,并且截断长度设置为 5 ,菜单栏的文本将显示为“Meeti...”"; + +// Notes Popover +"Reminder Set" = "提醒设置"; +"Successfully set." = "设置成功"; + +// Errors +"You're offline, maybe?" = "您已经离线?"; +"Try again, maybe?" = "稍后再试?"; +"The Internet connection appears to be offline." = "网络连接已断开。"; + +// UI Tests +"New Zealand" = "新西兰"; +"Florida" = "佛罗里达"; +"San Francisco" = "旧金山"; + + +// DST changes +"Daylights Saving transition will occur in < 24 hours" = "Daylights Saving transition will occur in < 24 hours"; diff --git a/Clocker/ClockerUITests/AboutUsTests.swift b/Clocker/ClockerUITests/AboutUsTests.swift index 7b2e0dc..f136aad 100644 --- a/Clocker/ClockerUITests/AboutUsTests.swift +++ b/Clocker/ClockerUITests/AboutUsTests.swift @@ -34,6 +34,7 @@ class AboutUsTests: XCTestCase { let appDisplayName = "CFBundleDisplayName".localizedString() let expectedVersion = "\(appDisplayName) 20.10.03 (83)" + guard let presentVersion = app.windows["Clocker"].staticTexts["ClockerVersion"].value as? String else { XCTFail("Present version not present") return diff --git a/Clocker/ClockerUITests/FloatingWindowTests.swift b/Clocker/ClockerUITests/FloatingWindowTests.swift index 0396877..3af3d75 100644 --- a/Clocker/ClockerUITests/FloatingWindowTests.swift +++ b/Clocker/ClockerUITests/FloatingWindowTests.swift @@ -25,11 +25,11 @@ class FloatingWindowTests: XCTestCase { } addUIInterruptionMonitor(withDescription: "Reminders Access") { (alert) -> Bool in - print("Interruption Handler called") - print(alert) + Logger.info("Interruption Handler called") + Logger.info(alert) let alertButton = alert.buttons["OK"] if alertButton.exists { - print("Okay button found") + Logger.info("Okay button found") alertButton.tap() return true } diff --git a/Clocker/ClockerUITests/OnboardingTests.swift b/Clocker/ClockerUITests/OnboardingTests.swift index ddb6fcd..e97b8b0 100644 --- a/Clocker/ClockerUITests/OnboardingTests.swift +++ b/Clocker/ClockerUITests/OnboardingTests.swift @@ -123,8 +123,8 @@ class OnboardingTests: XCTestCase { private func startupControllerTests() { let onboardingWindow = app.windows["OnboardingWindow"] - 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.buttons["Forward"].title == "Open Clocker At Login".localizedString(), "Forward button title's was unexpectedly wrong") + XCTAssertTrue(onboardingWindow.buttons["Alternate"].title == "Don't Open".localizedString(), "Alternate button title's 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.") @@ -137,17 +137,17 @@ class OnboardingTests: XCTestCase { XCTAssertTrue(onboardingWindow.buttons["Forward"].title == "Continue".localizedString(), "Forward button title's 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.") + XCTAssertTrue(onboardingWindow.staticTexts["More search options in Clocker Preferences.".localizedString()].exists, "Accessory label's static text was unexpectedly wrong.") } private func finalOnboardingControllerTests() { let onboardingWindow = app.windows["OnboardingWindow"] // Let's test the buttons - XCTAssertTrue(onboardingWindow.staticTexts["You're all set!"].exists, "Header label's static text was unexpectedly wrong.") - XCTAssertTrue(onboardingWindow.staticTexts["Thank you for the details."].exists, "Accessory label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["You're all set!".localizedString()].exists, "Header label's static text was unexpectedly wrong.") + XCTAssertTrue(onboardingWindow.staticTexts["Thank you for the details.".localizedString()].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".localizedString(), "Forward button's title was unexpectedly wrong.") + XCTAssertFalse(onboardingWindow.buttons["Alternate".localizedString()].exists, "Alternate button was unexpectedly present.") + XCTAssertTrue(onboardingWindow.buttons["Forward".localizedString()].title == "Launch Clocker".localizedString(), "Forward button's title was unexpectedly wrong.") } } diff --git a/Clocker/ClockerUITests/PreferencesTest.swift b/Clocker/ClockerUITests/PreferencesTest.swift index a0b052a..e8d7faa 100644 --- a/Clocker/ClockerUITests/PreferencesTest.swift +++ b/Clocker/ClockerUITests/PreferencesTest.swift @@ -244,7 +244,7 @@ class PreferencesTest: XCTestCase { XCTAssertTrue(maxCharacterQuery.count > 0) addAPlace(place: "asdakjhdasdahsdasd", to: app, shouldSleep: false) - XCTAssertTrue(app.sheets.staticTexts["Please select a timezone!"].exists) + XCTAssertTrue(app.sheets.staticTexts["No Timezone Selected".localizedString()].exists) let informativeLabelPredicate = NSPredicate(format: "placeholderValue like %@", "No results! 😔 Try entering the exact name.") let sheets = app.sheets.firstMatch.staticTexts @@ -392,7 +392,7 @@ extension XCTestCase { let isHittable = NSPredicate(format: "exists == true", "") let addExpectation = expectation(for: isHittable, evaluatedWith: results.firstMatch) { () -> Bool in - print("Handler called") + Logger.info("Handler called") return true } diff --git a/Clocker/Dependencies/Date Additions/TimeChunk.swift b/Clocker/Dependencies/Date Additions/TimeChunk.swift index 956188a..924c379 100755 --- a/Clocker/Dependencies/Date Additions/TimeChunk.swift +++ b/Clocker/Dependencies/Date Additions/TimeChunk.swift @@ -67,7 +67,7 @@ public struct TimeChunk { */ public func to(_ unit: TimeUnits) -> Int { if months != 0 { - print("Months are not supported for conversion due to their uncertain number of days.") + Logger.info("Months are not supported for conversion due to their uncertain number of days.") return 0 } if unit == .seconds { diff --git a/Clocker/Dependencies/Date Additions/TimePeriod.swift b/Clocker/Dependencies/Date Additions/TimePeriod.swift index c78c810..15054a7 100755 --- a/Clocker/Dependencies/Date Additions/TimePeriod.swift +++ b/Clocker/Dependencies/Date Additions/TimePeriod.swift @@ -390,7 +390,7 @@ public extension TimePeriodProtocol { end = end?.add(chunk) case .center: // Do not lengthen by TimeChunk at center - print("Mutation via chunk from center anchor is not supported.") + Logger.info("Mutation via chunk from center anchor is not supported.") case .end: beginning = beginning?.subtract(chunk) } @@ -426,7 +426,7 @@ public extension TimePeriodProtocol { end = end?.subtract(chunk) case .center: // Do not shorten by TimeChunk at center - print("Mutation via chunk from center anchor is not supported.") + Logger.info("Mutation via chunk from center anchor is not supported.") case .end: beginning = beginning?.add(chunk) } @@ -561,7 +561,7 @@ open class TimePeriod: TimePeriodProtocol { timePeriod.beginning = beginning timePeriod.end = end?.add(chunk) case .center: - print("Mutation via chunk from center anchor is not supported.") + Logger.info("Mutation via chunk from center anchor is not supported.") case .end: timePeriod.beginning = beginning?.add(-chunk) timePeriod.end = end @@ -610,7 +610,7 @@ open class TimePeriod: TimePeriodProtocol { timePeriod.beginning = beginning timePeriod.end = end?.subtract(chunk) case .center: - print("Mutation via chunk from center anchor is not supported.") + Logger.info("Mutation via chunk from center anchor is not supported.") case .end: timePeriod.beginning = beginning?.add(-chunk) timePeriod.end = end diff --git a/Clocker/Dependencies/Date Additions/TimePeriodChain.swift b/Clocker/Dependencies/Date Additions/TimePeriodChain.swift index 54df9bd..d159807 100755 --- a/Clocker/Dependencies/Date Additions/TimePeriodChain.swift +++ b/Clocker/Dependencies/Date Additions/TimePeriodChain.swift @@ -79,7 +79,7 @@ open class TimePeriodChain: TimePeriodGroup { // Insert new period periods.insert(period, at: index) } else { - print("All TimePeriods in a TimePeriodChain must contain a defined start and end date") + Logger.info("All TimePeriods in a TimePeriodChain must contain a defined start and end date") return } diff --git a/Clocker/Events and Reminders/CalendarHandler.swift b/Clocker/Events and Reminders/CalendarHandler.swift index 8b8f81c..6cfbc16 100644 --- a/Clocker/Events and Reminders/CalendarHandler.swift +++ b/Clocker/Events and Reminders/CalendarHandler.swift @@ -66,7 +66,7 @@ extension EventCenter { let timeForEventToStart = event.event.startDate.timeIntervalSinceNow / 60 if timeForEventToStart > 30 { - print("Our next event: \(event.event.title ?? "Error") starts in \(timeForEventToStart) mins") + Logger.info("Our next event: \(event.event.title ?? "Error") starts in \(timeForEventToStart) mins") continue } @@ -209,12 +209,12 @@ extension EventCenter { } } - print("Fetched filtered events for \(filteredEvents.count) days\n") + Logger.info("Fetched filtered events for \(filteredEvents.count) days\n") return } - print("Unable to filter events because user hasn't selected calendars") + Logger.info("Unable to filter events because user hasn't selected calendars") } func saveDefaultIdentifiersList() { @@ -224,7 +224,7 @@ extension EventCenter { if !allCalendars.isEmpty { UserDefaults.standard.set(allCalendars, forKey: CLSelectedCalendars) - print("Finished saving all calendar identifiers in default") + Logger.info("Finished saving all calendar identifiers in default") self.filterEvents() } } @@ -259,7 +259,7 @@ extension EventCenter { func fetchEvents(_ start: Int, _ end: Int) { if calendarAccessDenied() || calendarAccessNotDetermined() { - print("Refetching aborted because we don't have permission!") + Logger.info("Refetching aborted because we don't have permission!") return } @@ -294,7 +294,7 @@ extension EventCenter { while date.compare(final) == .orderedAscending { guard var nextDate = autoupdatingCalendar.date(byAdding: Calendar.Component.day, value: 1, to: date) else { - print("Could not calculate end date") + Logger.info("Could not calculate end date") return } nextDate = autoupdatingCalendar.startOfDay(for: nextDate) @@ -320,7 +320,7 @@ extension EventCenter { eventsForDate = eventsForDateMapper - print("Fetched events for \(eventsForDate.count) days") + Logger.info("Fetched events for \(eventsForDate.count) days") filterEvents() } diff --git a/Clocker/Events and Reminders/EventCenter.swift b/Clocker/Events and Reminders/EventCenter.swift index 0ebe727..a9f1222 100644 --- a/Clocker/Events and Reminders/EventCenter.swift +++ b/Clocker/Events and Reminders/EventCenter.swift @@ -34,7 +34,7 @@ class EventCenter: NSObject { } private func refetchAll() { - print("\nRefetching events from the store") + Logger.info("\nRefetching events from the store") eventsForDate = [:] filteredEvents = [:] diff --git a/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Contents.json b/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Contents.json index 30891df..36caf85 100644 --- a/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Contents.json +++ b/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Contents.json @@ -5,7 +5,7 @@ "scale" : "1x" }, { - "filename" : "Screen Shot 2020-10-11 at 2.19.26 PM.png", + "filename" : "Screen Shot 2020-10-11 at 2.16.37 PM.png", "idiom" : "universal", "scale" : "2x" }, diff --git a/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.16.37 PM.png b/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.16.37 PM.png new file mode 100644 index 0000000..1471d7c Binary files /dev/null and b/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.16.37 PM.png differ diff --git a/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.19.26 PM.png b/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.19.26 PM.png deleted file mode 100644 index 6e343ae..0000000 Binary files a/Clocker/Media.xcassets/Onboarding/Dark Menubar.imageset/Screen Shot 2020-10-11 at 2.19.26 PM.png and /dev/null differ diff --git a/Clocker/Menu Bar/MenubarHandler.swift b/Clocker/Menu Bar/MenubarHandler.swift index ab00e7d..eddee16 100644 --- a/Clocker/Menu Bar/MenubarHandler.swift +++ b/Clocker/Menu Bar/MenubarHandler.swift @@ -45,7 +45,7 @@ class MenubarHandler: NSObject { let timeForEventToStart = event.event.startDate.timeIntervalSinceNow / 60 if timeForEventToStart > 30 { - print("Our next event: \(event.event.title ?? "Error") starts in \(timeForEventToStart) mins") + Logger.info("Our next event: \(event.event.title ?? "Error") starts in \(timeForEventToStart) mins") continue } diff --git a/Clocker/Menu Bar/StatusContainerView.swift b/Clocker/Menu Bar/StatusContainerView.swift index de66829..aab8f0d 100644 --- a/Clocker/Menu Bar/StatusContainerView.swift +++ b/Clocker/Menu Bar/StatusContainerView.swift @@ -171,7 +171,7 @@ class StatusContainerView: NSView { } if newWidth != frame.size.width, newWidth > frame.size.width + 2.0 { - print("Correcting our width to \(newWidth) and the previous width was \(frame.size.width)") + Logger.info("Correcting our width to \(newWidth) and the previous width was \(frame.size.width)") frame = CGRect(x: frame.origin.x, y: frame.origin.y, width: newWidth, height: frame.size.height) } } diff --git a/Clocker/Menu Bar/StatusItemHandler.swift b/Clocker/Menu Bar/StatusItemHandler.swift index f66cf04..8f1be21 100644 --- a/Clocker/Menu Bar/StatusItemHandler.swift +++ b/Clocker/Menu Bar/StatusItemHandler.swift @@ -56,7 +56,7 @@ class StatusItemHandler: NSObject { setClockerIcon() } - print("\nStatus Bar Current State changed: \(currentState)\n") + Logger.info("\nStatus Bar Current State changed: \(currentState)\n") } } @@ -191,7 +191,7 @@ class StatusItemHandler: NSObject { menubarTimer?.tolerance = shouldDisplaySeconds ? 0.5 : 20 guard let runLoopTimer = menubarTimer else { - print("Timer is unexpectedly nil") + Logger.info("Timer is unexpectedly nil") return } @@ -230,12 +230,12 @@ class StatusItemHandler: NSObject { } else if let minutes = components.minute { components.minute = minutes + 1 } else { - print("Unable to create date components for the menubar timewr") + Logger.info("Unable to create date components for the menubar timewr") return nil } guard let fireDate = nsCalendar.date(from: components) else { - print("Unable to form Fire Date") + Logger.info("Unable to form Fire Date") return nil } @@ -263,7 +263,7 @@ class StatusItemHandler: NSObject { } private func setupForStandardTextMode() { - print("Initializing menubar timer") + Logger.info("Initializing menubar timer") // Let's invalidate the previous timer menubarTimer?.invalidate() @@ -281,7 +281,7 @@ class StatusItemHandler: NSObject { let menubarFavourites = DataStore.shared().menubarTimezones() ?? [] if menubarFavourites.isEmpty, DataStore.shared().shouldDisplay(.showMeetingInMenubar) == false { - print("Invalidating menubar timer!") + Logger.info("Invalidating menubar timer!") invalidation() @@ -290,7 +290,7 @@ class StatusItemHandler: NSObject { } } else if sync { - print("Invalidating menubar timer for sync purposes!") + Logger.info("Invalidating menubar timer for sync purposes!") invalidation() @@ -299,7 +299,7 @@ class StatusItemHandler: NSObject { } } else { - print("Not stopping menubar timer!") + Logger.info("Not stopping menubar timer!") } } diff --git a/Clocker/Onboarding/FinalOnboardingViewController.swift b/Clocker/Onboarding/FinalOnboardingViewController.swift index 8b3d643..549d303 100644 --- a/Clocker/Onboarding/FinalOnboardingViewController.swift +++ b/Clocker/Onboarding/FinalOnboardingViewController.swift @@ -98,7 +98,7 @@ class FinalOnboardingViewController: NSViewController { private func extraData() -> [String: String]? { guard let validEmail = emailValidator.validate(field: emailTextField) else { - print("Not sending up email because it was invalid") + Logger.info("Not sending up email because it was invalid") return nil } diff --git a/Clocker/Onboarding/Onboarding.storyboard b/Clocker/Onboarding/Onboarding.storyboard index a416cb5..b444010 100644 --- a/Clocker/Onboarding/Onboarding.storyboard +++ b/Clocker/Onboarding/Onboarding.storyboard @@ -1,8 +1,8 @@ - + - + @@ -46,7 +46,7 @@ - + @@ -291,7 +291,7 @@ DQ - + @@ -314,7 +314,7 @@ DQ - + @@ -361,24 +361,16 @@ DQ - - - - - - - - - - + + - + @@ -386,25 +378,35 @@ DQ - + + + + + + + + + - - - + + + - + + + @@ -412,13 +414,13 @@ DQ - + - + @@ -646,11 +648,11 @@ DQ - + - + @@ -658,7 +660,7 @@ DQ - + @@ -669,7 +671,7 @@ DQ - + - + - + @@ -1646,14 +1675,14 @@ DQ - + - + @@ -1701,7 +1730,7 @@ DQ