diff --git a/Onyx/Localizable.xcstrings b/Onyx/Localizable.xcstrings index 8264f86..7984e32 100644 --- a/Onyx/Localizable.xcstrings +++ b/Onyx/Localizable.xcstrings @@ -1,2623 +1,2658 @@ { - "sourceLanguage": "en", - "strings": { - "%@": { - "comment": "A label showing the minimum RPM of a fan.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@" + "sourceLanguage" : "en", + "strings" : { + "%@" : { + "comment" : "A label showing the minimum RPM of a fan.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@" } } } }, - "%@ U/min": { - "comment": "A label that shows the current speed of a fan. The argument is the current speed of the fan.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@ U/min" + "%@ °C" : { + "comment" : "A label showing the temperature of the hottest fan in the report, in degrees Celsius. The argument is the temperature in degrees Celsius.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ °C" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ U/min" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ °C" } } } }, - "%@ °C": { - "comment": "A label showing the temperature of the hottest fan in the report, in degrees Celsius. The argument is the temperature in degrees Celsius.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@ °C" + "%@ U/min" : { + "comment" : "A label that shows the current speed of a fan. The argument is the current speed of the fan.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ U/min" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ °C" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ U/min" } } } }, - "%@°": { - "comment": "A temperature in °C.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@°" + "%@°" : { + "comment" : "A temperature in °C.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@°" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@°" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@°" } } } }, - "charge.limit": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ladelimit" + "calendar.source.status.incompatible" : { + + }, + "calendar.source.status.loggedOut" : { + "comment" : "A message that is displayed when the user is logged out of their calendar.", + "isCommentAutoGenerated" : true + }, + "calendar.source.status.neverWritten" : { + "comment" : "A message that is displayed when the user has not", + "isCommentAutoGenerated" : true + }, + "charge.limit" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ladelimit" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Charge limit" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Charge limit" } } } }, - "charge.limit.hint": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ein Akku, der dauerhaft bei 100 % am Netz hängt, altert schneller. 80 bis 100 % ist der Bereich, den macOS selbst anbietet — darunter ist für dieses Gerät ungemessen." + "charge.limit.hint" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ein Akku, der dauerhaft bei 100 % am Netz hängt, altert schneller. 80 bis 100 % ist der Bereich, den macOS selbst anbietet — darunter ist für dieses Gerät ungemessen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "A battery kept at 100 % on power ages faster. 80 to 100 % is the range macOS itself offers — below that is untested for this machine." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A battery kept at 100 % on power ages faster. 80 to 100 % is the range macOS itself offers — below that is untested for this machine." } } } }, - "charge.limit.off": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Aus" + "charge.limit.off" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aus" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Off" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Off" } } } }, - "charge.section": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akku" + "charge.section" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akku" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Battery" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Battery" } } } }, - "color.accent": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Farbe" + "color.accent" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Farbe" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Colour" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Colour" } } } }, - "color.accent.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Gilt überall, wo Onyx sich selbst zeichnet: Regler, Ringe, Abschnittstitel, Haken und Auswahl." + "color.accent.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gilt überall, wo Onyx sich selbst zeichnet: Regler, Ringe, Abschnittstitel, Haken und Auswahl." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Applies everywhere Onyx draws itself: sliders, dials, section headings, check marks and selection." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applies everywhere Onyx draws itself: sliders, dials, section headings, check marks and selection." } } } }, - "color.adoptSystem": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemfarbe übernehmen" + "color.adoptSystem" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemfarbe übernehmen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Adopt system colour" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adopt system colour" } } } }, - "color.download": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Herunterladen" + "color.download" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herunterladen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Download" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download" } } } }, - "color.fixed.critical": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kritisch" + "color.fixed.critical" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kritisch" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Critical" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Critical" } } } }, - "color.fixed.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Diese drei bleiben, wie sie sind. Sie bedeuten etwas — bei Temperatur, Akku, Lüfter und Fehlern." + "color.fixed.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diese drei bleiben, wie sie sind. Sie bedeuten etwas — bei Temperatur, Akku, Lüfter und Fehlern." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "These three stay as they are. They carry meaning — for temperature, battery, fans and errors." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "These three stay as they are. They carry meaning — for temperature, battery, fans and errors." } } } }, - "color.fixed.positive": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "In Ordnung" + "color.fixed.positive" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "In Ordnung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Normal" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Normal" } } } }, - "color.fixed.warning": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Warnung" + "color.fixed.warning" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Warnung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Warning" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Warning" } } } }, - "color.network.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Welche Richtung grün ist und welche rosa, ist Gewohnheit — nicht Bedeutung." + "color.network.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welche Richtung grün ist und welche rosa, ist Gewohnheit — nicht Bedeutung." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Which direction is green and which is pink is habit, not meaning." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Which direction is green and which is pink is habit, not meaning." } } } }, - "color.reset": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auf Standard zurücksetzen" + "color.reset" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auf Standard zurücksetzen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Reset to defaults" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset to defaults" } } } }, - "color.section.accent": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akzentfarbe" + "color.section.accent" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akzentfarbe" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Accent colour" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accent colour" } } } }, - "color.section.fixed": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Feste Farben" + "color.section.fixed" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feste Farben" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fixed colours" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fixed colours" } } } }, - "color.section.network": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Netzwerk" + "color.section.network" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Netzwerk" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Network" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Network" } } } }, - "color.suggestion.amber": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Bernstein" + "color.suggestion.amber" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bernstein" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Amber" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Amber" } } } }, - "color.suggestion.coral": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Koralle" + "color.suggestion.coral" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Koralle" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Coral" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coral" } } } }, - "color.suggestion.lilac": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Flieder" + "color.suggestion.lilac" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Flieder" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Lilac" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lilac" } } } }, - "color.suggestion.mint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Minze" + "color.suggestion.mint" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Minze" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Mint" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mint" } } } }, - "color.suggestion.onyx": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx-Blau" + "color.suggestion.onyx" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx-Blau" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Onyx blue" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx blue" } } } }, - "color.suggestion.slate": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Schiefer" + "color.suggestion.slate" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schiefer" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Slate" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slate" } } } }, - "color.swap": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Richtungen tauschen" + "color.swap" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Richtungen tauschen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Swap directions" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Swap directions" } } } }, - "color.upload": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Hochladen" + "color.upload" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hochladen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Upload" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upload" } } } }, - "fans.approval.needed": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "macOS wartet auf deine Freigabe. Öffne die Systemeinstellungen und erlaube den Hintergrunddienst von Onyx." + "fans.approval.needed" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "macOS wartet auf deine Freigabe. Öffne die Systemeinstellungen und erlaube den Hintergrunddienst von Onyx." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "macOS is waiting for your approval. Open System Settings and allow Onyx's background service." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "macOS is waiting for your approval. Open System Settings and allow Onyx's background service." } } } }, - "fans.approval.open": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemeinstellungen öffnen" + "fans.approval.open" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemeinstellungen öffnen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Open System Settings" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open System Settings" } } } }, - "fans.approval.recheck": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Erneut prüfen" + "fans.approval.recheck" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erneut prüfen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Check again" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Check again" } } } }, - "fans.auto": { - "comment": "A button to set a fan to automatic mode.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auto" + "fans.auto" : { + "comment" : "A button to set a fan to automatic mode.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auto" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Auto" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auto" } } } }, - "fans.connecting": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verbinde mit dem Hilfsdienst …" + "fans.connecting" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbinde mit dem Hilfsdienst …" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Connecting to the helper…" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connecting to the helper…" } } } }, - "fans.fan %@": { - "comment": "A label showing the index of a fan. The argument is the index of the fan.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter %@" + "fans.fan %@" : { + "comment" : "A label showing the index of a fan. The argument is the index of the fan.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan %@" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan %@" } } } }, - "fans.fan %lld": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter %lld" + "fans.fan %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter %lld" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan %lld" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan %lld" } } } }, - "fans.hottest": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wärmster Kern" + "fans.hottest" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wärmster Kern" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Hottest core" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hottest core" } } } }, - "fans.install": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Installieren" + "fans.install" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installieren" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Install" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Install" } } } }, - "fans.intro": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx kann die Lüfterdrehzahl fest vorgeben, statt sie macOS zu überlassen. Dafür wird ein Hilfsdienst mit Systemrechten eingerichtet — Schreibzugriff auf den SMC geht nicht anders." + "fans.intro" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx kann die Lüfterdrehzahl fest vorgeben, statt sie macOS zu überlassen. Dafür wird ein Hilfsdienst mit Systemrechten eingerichtet — Schreibzugriff auf den SMC geht nicht anders." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Onyx can set a fixed fan speed instead of leaving it to macOS. This requires a helper service with system privileges — writing to the SMC is not possible otherwise." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx can set a fixed fan speed instead of leaving it to macOS. This requires a helper service with system privileges — writing to the SMC is not possible otherwise." } } } }, - "fans.left": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter links" + "fans.left" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter links" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Left fan" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Left fan" } } } }, - "fans.manual": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Manuell" + "fans.manual" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manuell" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Manual" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manual" } } } }, - "fans.menubar.short": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter" + "fans.menubar.short" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan" } } } }, - "fans.mode.auto": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Automatik" + "fans.mode.auto" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatik" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Automatic" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatic" } } } }, - "fans.mode.manual": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Manuell" + "fans.mode.manual" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manuell" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Manual" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manual" } } } }, - "fans.noData": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Noch keine Lüfterdaten." + "fans.noData" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Noch keine Lüfterdaten." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No fan data yet." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No fan data yet." } } } }, - "fans.noRange": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kein Regelbereich" + "fans.noRange" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Regelbereich" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No adjustable range" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No adjustable range" } } } }, - "fans.notInstalled": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Die Lüftersteuerung braucht einen kleinen privilegierten Dienst." + "fans.notInstalled" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die Lüftersteuerung braucht einen kleinen privilegierten Dienst." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan control needs a small privileged service." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan control needs a small privileged service." } } } }, - "fans.reason.noTemperature": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zurück auf Automatik: keine Temperatur messbar, damit lässt sich Sicherheit nicht beurteilen." + "fans.reason.noTemperature" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück auf Automatik: keine Temperatur messbar, damit lässt sich Sicherheit nicht beurteilen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to automatic: no temperature reading, so safety cannot be judged." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to automatic: no temperature reading, so safety cannot be judged." } } } }, - "fans.reason.other": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zurück auf Automatik." + "fans.reason.other" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück auf Automatik." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to automatic." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to automatic." } } } }, - "fans.reason.temperature": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zurück auf Automatik: zu heiß für eine feste Drehzahl." + "fans.reason.temperature" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück auf Automatik: zu heiß für eine feste Drehzahl." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to automatic: too hot for a fixed speed." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to automatic: too hot for a fixed speed." } } } }, - "fans.reason.unknownLimits": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zurück auf Automatik: der erlaubte Drehzahlbereich ist nicht lesbar." + "fans.reason.unknownLimits" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück auf Automatik: der erlaubte Drehzahlbereich ist nicht lesbar." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to automatic: the permitted speed range cannot be read." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to automatic: the permitted speed range cannot be read." } } } }, - "fans.reason.watchdog": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zurück auf Automatik: Onyx hat sich zu lange nicht gemeldet." + "fans.reason.watchdog" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurück auf Automatik: Onyx hat sich zu lange nicht gemeldet." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Back to automatic: Onyx went silent for too long." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Back to automatic: Onyx went silent for too long." } } } }, - "fans.right": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter rechts" + "fans.right" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter rechts" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Right fan" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Right fan" } } } }, - "fans.rpm %@": { - "comment": "A label displaying the current RPM of a fan. The argument is the current RPM.", - "isCommentAutoGenerated": true + "fans.rpm %@" : { + "comment" : "A label displaying the current RPM of a fan. The argument is the current RPM.", + "isCommentAutoGenerated" : true }, - "fans.rpm %lld": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%lld U/min" + "fans.rpm %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld U/min" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld rpm" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld rpm" } } } }, - "fans.safety": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Deshalb greift ein Sicherheitsnetz, das sich nicht abschalten lässt: nie unter das Minimum der Firmware, Rückfall auf Automatik ab 95 °C, Rückfall wenn Onyx sich fünf Sekunden nicht meldet, und Rückfall beim Beenden." + "fans.safety" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deshalb greift ein Sicherheitsnetz, das sich nicht abschalten lässt: nie unter das Minimum der Firmware, Rückfall auf Automatik ab 95 °C, Rückfall wenn Onyx sich fünf Sekunden nicht meldet, und Rückfall beim Beenden." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "A safety net you cannot switch off is therefore always active: never below the firmware minimum, back to automatic above 95 °C, back to automatic if Onyx goes silent for five seconds, and back to automatic on quit." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A safety net you cannot switch off is therefore always active: never below the firmware minimum, back to automatic above 95 °C, back to automatic if Onyx goes silent for five seconds, and back to automatic on quit." } } } }, - "fans.safety.active": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Das Sicherheitsnetz läuft im Hilfsdienst, nicht in Onyx. Es greift auch dann, wenn Onyx abstürzt oder beendet wird." + "fans.safety.active" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das Sicherheitsnetz läuft im Hilfsdienst, nicht in Onyx. Es greift auch dann, wenn Onyx abstürzt oder beendet wird." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "The safety net runs in the helper, not in Onyx. It works even if Onyx crashes or is quit." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The safety net runs in the helper, not in Onyx. It works even if Onyx crashes or is quit." } } } }, - "fans.uninstall": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Hilfsdienst entfernen" + "fans.uninstall" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hilfsdienst entfernen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Remove helper" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove helper" } } } }, - "fans.warning": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Eine zu niedrige Drehzahl kann den Rechner überhitzen lassen. Die Automatik regelt nach Temperatur, ein fester Wert nicht." + "fans.warning" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eine zu niedrige Drehzahl kann den Rechner überhitzen lassen. Die Automatik regelt nach Temperatur, ein fester Wert nicht." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "A fan speed set too low can let the Mac overheat. The automatic control adjusts to temperature; a fixed value does not." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "A fan speed set too low can let the Mac overheat. The automatic control adjusts to temperature; a fixed value does not." } } } }, - "menu.openPanel": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Panel öffnen" + "menu.openPanel" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Panel öffnen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Open Panel" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Panel" } } } }, - "menu.quit": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx beenden" + "menu.quit" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx beenden" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Quit Onyx" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quit Onyx" } } } }, - "menu.settings": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Einstellungen …" + "menu.settings" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen …" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Settings…" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Settings…" } } } }, - "metric.battery": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akku" + "metric.battery" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akku" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Battery" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Battery" } } } }, - "metric.cpu": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "metric.cpu" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } } } }, - "metric.gpu": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "GPU" + "metric.gpu" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPU" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "GPU" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPU" } } } }, - "metric.memory": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Speicher" + "metric.memory" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speicher" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Memory" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Memory" } } } }, - "metric.mode.temperature": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Temperatur" + "metric.mode.temperature" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperatur" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Temperature" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperature" } } } }, - "metric.mode.usage": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auslastung" + "metric.mode.usage" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auslastung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Usage" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usage" } } } }, - "metric.sensors": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Sensoren" + "metric.sensors" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensoren" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Sensors" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensors" } } } }, - "mixer.menubar.name": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lautstärkemixer" + "mixer.menubar.name" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lautstärkemixer" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Volume mixer" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume mixer" } } } }, - "mixer.menubar.short": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Mix" + "mixer.menubar.short" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mix" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Mix" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mix" } } } }, - "network.name": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Netzwerk" + "network.name" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Netzwerk" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Network" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Network" } } } }, - "onboarding.allow": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Erlauben" + "onboarding.allow" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erlauben" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Allow" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allow" } } } }, - "onboarding.audio": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemton" + "onboarding.audio" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemton" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "System audio" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "System audio" } } } }, - "onboarding.audio.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nötig für die Lautstärke einzelner Programme. Onyx leitet den Ton der geregelten Programme um — und nur deren." + "onboarding.audio.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nötig für die Lautstärke einzelner Programme. Onyx leitet den Ton der geregelten Programme um — und nur deren." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Needed for per-app volume. Onyx routes the audio of the apps you control, and only those." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Needed for per-app volume. Onyx routes the audio of the apps you control, and only those." } } } }, - "onboarding.calendar": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kalender" + "onboarding.calendar" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalender" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendar" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendar" } } } }, - "onboarding.calendar.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zeigt deine Termine im Panel. Nur lesend — Onyx ändert nie einen Kalender." + "onboarding.calendar.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zeigt deine Termine im Panel. Nur lesend — Onyx ändert nie einen Kalender." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Shows your appointments in the panel. Read-only — Onyx never changes a calendar." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shows your appointments in the panel. Read-only — Onyx never changes a calendar." } } } }, - "onboarding.done": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Fertig" + "onboarding.done" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fertig" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Done" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Done" } } } }, - "onboarding.helper": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüftersteuerung" + "onboarding.helper" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüftersteuerung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan control" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan control" } } } }, - "onboarding.helper.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Installiert einen kleinen privilegierten Dienst. Er setzt nur Lüfterdrehzahlen und fällt auf Automatik zurück, wenn Onyx schweigt." + "onboarding.helper.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installiert einen kleinen privilegierten Dienst. Er setzt nur Lüfterdrehzahlen und fällt auf Automatik zurück, wenn Onyx schweigt." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Installs a small privileged service. It only sets fan speeds and falls back to automatic if Onyx goes silent." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installs a small privileged service. It only sets fan speeds and falls back to automatic if Onyx goes silent." } } } }, - "onboarding.launchAtLogin": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx beim Anmelden starten" + "onboarding.launchAtLogin" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx beim Anmelden starten" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Start Onyx at login" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start Onyx at login" } } } }, - "onboarding.location": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Standort" + "onboarding.location" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standort" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Location" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Location" } } } }, - "onboarding.location.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wetter für deinen Aufenthaltsort. Alternativ lässt sich je Widget ein fester Ort einstellen." + "onboarding.location.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wetter für deinen Aufenthaltsort. Alternativ lässt sich je Widget ein fester Ort einstellen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Weather for where you are. You can also set a fixed place per widget instead." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weather for where you are. You can also set a fixed place per widget instead." } } } }, - "onboarding.openSettings": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemeinstellungen öffnen" + "onboarding.openSettings" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemeinstellungen öffnen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Open System Settings" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open System Settings" } } } }, - "onboarding.subtitle": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx braucht vier Dinge vom System. Jedes für etwas anderes, und keines davon ist Pflicht — erlaube, was du nutzen möchtest." + "onboarding.subtitle" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx braucht vier Dinge vom System. Jedes für etwas anderes, und keines davon ist Pflicht — erlaube, was du nutzen möchtest." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Onyx needs four things from the system. Each one is for something different, and none of them is required — grant what you want to use." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx needs four things from the system. Each one is for something different, and none of them is required — grant what you want to use." } } } }, - "onboarding.title": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Willkommen bei Onyx" + "onboarding.title" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Willkommen bei Onyx" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Welcome to Onyx" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welcome to Onyx" } } } }, - "options.calendar": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kalender" + "options.calendar" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalender" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendar" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendar" } } } }, - "options.calendar.agenda": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Terminliste" + "options.calendar.agenda" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminliste" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Upcoming events" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upcoming events" } } } }, - "options.calendar.calendarrEvents %lld": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%lld Termine aus Calendarr" + "options.calendar.calendarrEvents %@" : { + "comment" : "A label that describes the number of events in a calendar window. The argument is the number of events.", + "isCommentAutoGenerated" : true + }, + "options.calendar.calendarrEvents %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Termine aus Calendarr" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld events from Calendarr" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld events from Calendarr" } } } }, - "options.calendar.display": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anzeige" + "options.calendar.display" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anzeige" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show" } } } }, - "options.calendar.month": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Monatsraster" + "options.calendar.month" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Monatsraster" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Month grid" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Month grid" } } } }, - "options.calendar.noneFound": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Noch keine Kalender — Zugriff erteilen oder Calendarr einmal öffnen." + "options.calendar.noneFound" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Noch keine Kalender — Zugriff erteilen oder Calendarr einmal öffnen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No calendars yet — grant access or open Calendarr once." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No calendars yet — grant access or open Calendarr once." } } } }, - "options.calendar.source": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Daten aus" + "options.calendar.source" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Daten aus" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Data from" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Data from" } } } }, - "options.shelf": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ablage" + "options.shelf" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ablage" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Shelf" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shelf" } } } }, - "options.weather": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wetter" + "options.weather" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wetter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Weather" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weather" } } } }, - "options.weather.automatic": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Meinem Standort folgen" + "options.weather.automatic" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meinem Standort folgen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Follow my location" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Follow my location" } } } }, - "options.weather.needsLocation": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Der Ortungszugriff ist verweigert — unter Berechtigungen erteilen oder einen festen Ort wählen." + "options.weather.needsLocation" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Der Ortungszugriff ist verweigert — unter Berechtigungen erteilen oder einen festen Ort wählen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Location access is denied — grant it under Permissions, or set a fixed place." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Location access is denied — grant it under Permissions, or set a fixed place." } } } }, - "options.weather.notFound": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Dazu wurde kein Ort gefunden." + "options.weather.notFound" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dazu wurde kein Ort gefunden." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No place found for that." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No place found for that." } } } }, - "options.weather.place": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Fester Ort" + "options.weather.place" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fester Ort" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fixed place" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fixed place" } } } }, - "options.weather.search": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Stadt oder Postleitzahl" + "options.weather.search" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stadt oder Postleitzahl" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "City or postcode" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "City or postcode" } } } }, - "options.weather.set": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Übernehmen" + "options.weather.set" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Übernehmen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Use" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Use" } } } }, - "settings.display.all": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Allen Displays" + "settings.display.all" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allen Displays" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "All displays" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All displays" } } } }, - "settings.display.builtInOnly": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nur dem internen Display" + "settings.display.builtInOnly" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nur dem internen Display" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Built-in display only" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Built-in display only" } } } }, - "settings.display.dockIcon": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Symbol im Dock anzeigen" + "settings.display.dockIcon" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol im Dock anzeigen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show icon in the Dock" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show icon in the Dock" } } } }, - "settings.display.dockIcon.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Standardmäßig aus. Onyx lebt in der Notch und in der Menüleiste und hat kein Hauptfenster — im Dock wäre es ein Symbol, das beim Anklicken nichts öffnet, und es stünde im Programmumschalter zwischen den Programmen, mit denen du arbeitest." + "settings.display.dockIcon.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standardmäßig aus. Onyx lebt in der Notch und in der Menüleiste und hat kein Hauptfenster — im Dock wäre es ein Symbol, das beim Anklicken nichts öffnet, und es stünde im Programmumschalter zwischen den Programmen, mit denen du arbeitest." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Off by default. Onyx lives in the notch and the menu bar and has no main window — in the Dock it would be an icon that opens nothing, and it would sit in the app switcher among the apps you actually work with." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Off by default. Onyx lives in the notch and the menu bar and has no main window — in the Dock it would be an icon that opens nothing, and it would sit in the app switcher among the apps you actually work with." } } } }, - "settings.display.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auf Displays ohne echte Notch erscheint oben mittig ein Balken, der sich genauso verhält. Ist der Deckel geschlossen und kein internes Display vorhanden, erscheint das Panel trotzdem auf einem externen — sonst wäre Onyx nicht erreichbar." + "settings.display.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auf Displays ohne echte Notch erscheint oben mittig ein Balken, der sich genauso verhält. Ist der Deckel geschlossen und kein internes Display vorhanden, erscheint das Panel trotzdem auf einem externen — sonst wäre Onyx nicht erreichbar." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "On displays without a real notch, a bar appears at the top centre and behaves the same. With the lid closed and no built-in display present, the panel still appears on an external one — otherwise Onyx would be unreachable." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "On displays without a real notch, a bar appears at the top centre and behaves the same. With the lid closed and no built-in display present, the panel still appears on an external one — otherwise Onyx would be unreachable." } } } }, - "settings.display.menuBarIcon": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Symbol in der Menüleiste anzeigen" + "settings.display.menuBarIcon" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol in der Menüleiste anzeigen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show icon in the menu bar" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show icon in the menu bar" } } } }, - "settings.display.menuBarIcon.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Über das Symbol erreichst du Panel, Einstellungen und Beenden. Ohne es kommst du nur über die Notch an Onyx heran." + "settings.display.menuBarIcon.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Über das Symbol erreichst du Panel, Einstellungen und Beenden. Ohne es kommst du nur über die Notch an Onyx heran." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "The icon gives you the panel, settings and quit. Without it, the notch is the only way to reach Onyx." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The icon gives you the panel, settings and quit. Without it, the notch is the only way to reach Onyx." } } } }, - "settings.display.policy": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Panel anzeigen auf" + "settings.display.policy" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Panel anzeigen auf" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show panel on" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show panel on" } } } }, - "settings.general": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Allgemein" + "settings.general" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allgemein" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "General" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "General" } } } }, - "settings.launchAtLogin": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Beim Anmelden starten" + "settings.launchAtLogin" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Beim Anmelden starten" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Start at login" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start at login" } } } }, - "settings.launchAtLogin.blocked": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anmeldeobjekte wurden für Onyx in den Systemeinstellungen abgeschaltet." + "settings.launchAtLogin.blocked" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anmeldeobjekte wurden für Onyx in den Systemeinstellungen abgeschaltet." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Login items were turned off for Onyx in System Settings." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Login items were turned off for Onyx in System Settings." } } } }, - "settings.menubar.bars": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Balken" + "settings.menubar.bars" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Balken" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Bars" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bars" } } } }, - "settings.menubar.graph": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verlauf" + "settings.menubar.graph" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verlauf" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Graph" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Graph" } } } }, - "settings.menubar.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Jedes Modul erscheint als eigenes Symbol in der Menüleiste und teilt sich die Messung mit dem Widget im Panel. Standardmäßig ist keines an — die Menüleiste ist knapp, auf einem Notch-Display zusätzlich in der Mitte blockiert." + "settings.menubar.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jedes Modul erscheint als eigenes Symbol in der Menüleiste und teilt sich die Messung mit dem Widget im Panel. Standardmäßig ist keines an — die Menüleiste ist knapp, auf einem Notch-Display zusätzlich in der Mitte blockiert." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Each module appears as its own menu bar icon and shares its measurement with the panel widget. None are on by default — the menu bar is tight, and on a notched display the middle is blocked as well." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Each module appears as its own menu bar icon and shares its measurement with the panel widget. None are on by default — the menu bar is tight, and on a notched display the middle is blocked as well." } } } }, - "settings.menubar.labelAndValue": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kürzel + Wert" + "settings.menubar.labelAndValue" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kürzel + Wert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Label + value" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Label + value" } } } }, - "settings.menubar.sensor": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Sensor" + "settings.menubar.sensor" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensor" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Sensor" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensor" } } } }, - "settings.menubar.sensor.hottest": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wärmster Punkt" + "settings.menubar.sensor.hottest" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wärmster Punkt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Hottest point" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hottest point" } } } }, - "settings.menubar.symbol": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nur Symbol" + "settings.menubar.symbol" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nur Symbol" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Symbol only" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol only" } } } }, - "settings.menubar.symbolAndValue": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Symbol + Wert" + "settings.menubar.symbolAndValue" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol + Wert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Symbol + value" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol + value" } } } }, - "settings.menubar.value": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wert" + "settings.menubar.value" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Value" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Value" } } } }, - "settings.menubar.valueAndGraph": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wert und Verlauf" + "settings.menubar.valueAndGraph" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wert und Verlauf" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Value and graph" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Value and graph" } } } }, - "settings.onboarding.show": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Einrichtung erneut zeigen" + "settings.onboarding.show" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einrichtung erneut zeigen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show setup again" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show setup again" } } } }, - "settings.permissions.calendar": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kalender" + "settings.permissions.calendar" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kalender" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Calendar" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calendar" } } } }, - "settings.permissions.calendar.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx zeigt deine Termine im Kalender-Widget an. Es wird ausschließlich gelesen, nie geschrieben." + "settings.permissions.calendar.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx zeigt deine Termine im Kalender-Widget an. Es wird ausschließlich gelesen, nie geschrieben." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Onyx shows your events in the calendar widget. It only ever reads, never writes." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx shows your events in the calendar widget. It only ever reads, never writes." } } } }, - "settings.permissions.granted": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Erteilt" + "settings.permissions.granted" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erteilt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Granted" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Granted" } } } }, - "settings.permissions.location": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Standort" + "settings.permissions.location" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standort" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Location" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Location" } } } }, - "settings.permissions.location.why": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Onyx zeigt das Wetter an deinem aktuellen Standort. Ohne Zugriff kannst du stattdessen einen festen Ort wählen." + "settings.permissions.location.why" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx zeigt das Wetter an deinem aktuellen Standort. Ohne Zugriff kannst du stattdessen einen festen Ort wählen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Onyx shows the weather for your current location. Without access you can pick a fixed place instead." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onyx shows the weather for your current location. Without access you can pick a fixed place instead." } } } }, - "settings.permissions.openSystem": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Systemeinstellungen öffnen" + "settings.permissions.openSystem" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemeinstellungen öffnen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Open System Settings" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open System Settings" } } } }, - "settings.permissions.request": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anfragen" + "settings.permissions.request" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anfragen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Request" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Request" } } } }, - "settings.shelf.cleanup": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Automatisch löschen" + "settings.shelf.cleanup" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatisch löschen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Delete automatically" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delete automatically" } } } }, - "settings.shelf.count %@": { - "comment": "A label showing the number of items in the shelf. The argument is the number of items in the shelf.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@ Dateien abgelegt" + "settings.shelf.count %@" : { + "comment" : "A label showing the number of items in the shelf. The argument is the number of items in the shelf.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ Dateien abgelegt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ files parked" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ files parked" } } } }, - "settings.shelf.count %lld": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%lld Dateien abgelegt" + "settings.shelf.count %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld Dateien abgelegt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld files parked" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld files parked" } } } }, - "settings.shelf.days %@": { - "comment": "A label that lets the user select how many days to wait before automatically removing items from the shelf. The argument is the number of days.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nach %@ Tagen" + "settings.shelf.days %@" : { + "comment" : "A label that lets the user select how many days to wait before automatically removing items from the shelf. The argument is the number of days.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nach %@ Tagen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "After %@ days" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "After %@ days" } } } }, - "settings.shelf.days %lld": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nach %lld Tagen" + "settings.shelf.days %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nach %lld Tagen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "After %lld days" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "After %lld days" } } } }, - "settings.shelf.never": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Nie" + "settings.shelf.never" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Never" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Never" } } } }, - "settings.shelf.reveal": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Im Finder zeigen" + "settings.shelf.reveal" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Im Finder zeigen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show in Finder" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show in Finder" } } } }, - "settings.shelf.title": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ablage" + "settings.shelf.title" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ablage" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Shelf" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Shelf" } } } }, - "settings.size.large": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Groß (2×2)" + "settings.size.large" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Groß (2×2)" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Large (2×2)" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Large (2×2)" } } } }, - "settings.size.medium": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Mittel (2×1)" + "settings.size.medium" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mittel (2×1)" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Medium (2×1)" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Medium (2×1)" } } } }, - "settings.size.small": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Klein (1×1)" + "settings.size.small" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klein (1×1)" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Small (1×1)" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Small (1×1)" } } } }, - "settings.size.wide": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Breit (4×1)" + "settings.size.wide" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Breit (4×1)" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Wide (4×1)" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wide (4×1)" } } } }, - "settings.tab.colors": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Farben" + "settings.tab.colors" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Farben" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Colours" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Colours" } } } }, - "settings.tab.display": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anzeige" + "settings.tab.display" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anzeige" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Display" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Display" } } } }, - "settings.tab.fans": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter" + "settings.tab.fans" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fans" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fans" } } } }, - "settings.tab.menubar": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Menüleiste" + "settings.tab.menubar" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menüleiste" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Menu bar" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Menu bar" } } } }, - "settings.tab.options": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Widget-Optionen" + "settings.tab.options" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Widget-Optionen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Widget options" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Widget options" } } } }, - "settings.tab.permissions": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Berechtigungen" + "settings.tab.permissions" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berechtigungen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Permissions" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permissions" } } } }, - "settings.tab.sources": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Quellen" + "settings.tab.sources" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Quellen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Sources" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sources" } } } }, - "settings.tab.widgets": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Widgets" + "settings.tab.widgets" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Widgets" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Widgets" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Widgets" } } } }, - "settings.widgets.add": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Hinzufügen" + "settings.widgets.add" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hinzufügen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Add" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Add" } } } }, - "settings.widgets.available": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verfügbar" + "settings.widgets.available" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verfügbar" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Available" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Available" } } } }, - "settings.widgets.empty": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Keine Widgets im Panel. Das Panel bleibt leer, bis du eins hinzufügst." + "settings.widgets.empty" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keine Widgets im Panel. Das Panel bleibt leer, bis du eins hinzufügst." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No widgets in the panel. It stays empty until you add one." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No widgets in the panel. It stays empty until you add one." } } } }, - "settings.widgets.hint": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Die Reihenfolge bestimmt die Anordnung im Panel. Jedes Widget rückt an die erste Stelle, an die es passt." + "settings.widgets.hint" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die Reihenfolge bestimmt die Anordnung im Panel. Jedes Widget rückt an die erste Stelle, an die es passt." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "The order determines the arrangement in the panel. Each widget takes the first spot it fits into." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The order determines the arrangement in the panel. Each widget takes the first spot it fits into." } } } }, - "settings.widgets.hint.order": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Alle Kacheln sind gleich groß. Die Reihenfolge hier ist die Reihenfolge im Panel — zum Sortieren ziehen." + "settings.widgets.hint.order" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alle Kacheln sind gleich groß. Die Reihenfolge hier ist die Reihenfolge im Panel — zum Sortieren ziehen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "All tiles are the same size. The order here is the order in the panel — drag to sort." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "All tiles are the same size. The order here is the order in the panel — drag to sort." } } } }, - "settings.widgets.inPanel": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Im Panel" + "settings.widgets.inPanel" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Im Panel" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "In the panel" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "In the panel" } } } }, - "settings.widgets.remove": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Aus dem Panel entfernen" + "settings.widgets.remove" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aus dem Panel entfernen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Remove from panel" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remove from panel" } } } }, - "widget.fans.name": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter" + "widget.fans.name" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fans" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fans" } } } } }, - "version": "1.1" -} + "version" : "1.1" +} \ No newline at end of file diff --git a/Packages/OnyxKit/Sources/MetricsProvider/Localizable.xcstrings b/Packages/OnyxKit/Sources/MetricsProvider/Localizable.xcstrings index 58370d7..f031b04 100644 --- a/Packages/OnyxKit/Sources/MetricsProvider/Localizable.xcstrings +++ b/Packages/OnyxKit/Sources/MetricsProvider/Localizable.xcstrings @@ -1,1061 +1,1064 @@ { - "sourceLanguage": "en", - "strings": { - "": {}, - "%lld": { - "comment": "A label displaying the speed of a fan. The argument is the speed of the fan, in revolutions per minute.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "sourceLanguage" : "en", + "strings" : { + "" : { + + }, + "%lld" : { + "comment" : "A label displaying the speed of a fan. The argument is the speed of the fan, in revolutions per minute.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld" } } } }, - "%lld U/min": { - "comment": "A label that shows the fan speed in revolutions per minute. The value is the fan speed in revolutions per minute.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%lld U/min" + "%lld U/min" : { + "comment" : "A label that shows the fan speed in revolutions per minute. The value is the fan speed in revolutions per minute.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld U/min" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%lld U/min" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld U/min" } } } }, - "Lüfter %lld": { - "comment": "A label that shows the name of a fan. The argument is the index of the fan.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter %lld" + "battery.charging" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lädt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan %lld" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Charging" } } } }, - "battery.charging": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lädt" + "battery.cycles" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zyklen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Charging" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cycles" } } } }, - "battery.cycles": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zyklen" + "battery.draining" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbrauch" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Cycles" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Draw" } } } }, - "battery.draining": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verbrauch" + "battery.health" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zustand" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Draw" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Health" } } } }, - "battery.health": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zustand" + "battery.lowPower" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Energiesparmodus" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Health" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Low Power Mode" } } } }, - "battery.lowPower": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Energiesparmodus" + "battery.pluggedIn" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Am Netz" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Low Power Mode" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plugged in" } } } }, - "battery.pluggedIn": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Am Netz" + "battery.remaining %@" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "noch %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Plugged in" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ remaining" } } } }, - "battery.remaining %@": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "noch %@" + "battery.untilFull %@" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ bis voll" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ remaining" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ until full" } } } }, - "battery.untilFull %@": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "%@ bis voll" + "charge.limit" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ladelimit" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "%@ until full" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Charge limit" } } } }, - "charge.limit": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ladelimit" + "charge.limit.hint" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "80 bis 100 % — der Bereich, den macOS selbst anbietet." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Charge limit" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "80 to 100 % — the range macOS itself offers." } } } }, - "charge.limit.hint": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "80 bis 100 % — der Bereich, den macOS selbst anbietet." + "charge.limit.inSystemSettings" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "In den Systemeinstellungen einstellbar" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "80 to 100 % — the range macOS itself offers." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Set in System Settings" } } } }, - "charge.limit.inSystemSettings": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "In den Systemeinstellungen einstellbar" + "charge.limit.needsHelper" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Braucht den privilegierten Dienst aus Einstellungen → Lüfter." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Set in System Settings" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Needs the privileged service from Settings → Fans." } } } }, - "charge.limit.needsHelper": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Braucht den privilegierten Dienst aus Einstellungen → Lüfter." + "charge.limit.off" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aus" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Needs the privileged service from Settings → Fans." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Off" } } } }, - "charge.limit.off": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Aus" + "Lüfter %lld" : { + "comment" : "A label that shows the name of a fan. The argument is the index of the fan.", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter %lld" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Off" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan %lld" } } } }, - "menubar.short.battery": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akku" + "menubar.short.battery" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akku" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Batt" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Batt" } } } }, - "menubar.short.temperature": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Temp" + "menubar.short.temperature" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temp" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Temp" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temp" } } } }, - "metric.battery": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akku" + "metric.battery" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akku" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Battery" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Battery" } } } }, - "metric.battery.charging": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lädt" + "metric.battery.charging" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lädt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Charging" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Charging" } } } }, - "metric.cpu": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "metric.cpu" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } } } }, - "metric.cpu.perCore": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Je Kern" + "metric.cpu.perCore" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je Kern" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Per core" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per core" } } } }, - "metric.fan %lld": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter %lld" + "metric.fan %lld" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter %lld" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan %lld" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan %lld" } } } }, - "metric.fan.controlComing": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Die Lüftersteuerung kommt mit dem privilegierten Helfer — Schreibzugriff auf den SMC verlangt root." + "metric.fan.controlComing" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die Lüftersteuerung kommt mit dem privilegierten Helfer — Schreibzugriff auf den SMC verlangt root." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fan control arrives with the privileged helper — writing to the SMC requires root." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fan control arrives with the privileged helper — writing to the SMC requires root." } } } }, - "metric.gpu": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "GPU" + "metric.gpu" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPU" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "GPU" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "GPU" } } } }, - "metric.memory": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Speicher" + "metric.memory" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speicher" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Memory" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Memory" } } } }, - "metric.mode.temperature": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Temperatur" + "metric.mode.temperature" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperatur" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Temperature" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperature" } } } }, - "metric.mode.usage": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auslastung" + "metric.mode.usage" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auslastung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Usage" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usage" } } } }, - "metric.rpm": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "U/min" + "metric.rpm" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "U/min" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "rpm" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "rpm" } } } }, - "metric.sensors": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Sensoren" + "metric.sensors" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensoren" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Sensors" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sensors" } } } }, - "metric.sensors.none": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Keine Sensoren lesbar" + "metric.sensors.none" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Keine Sensoren lesbar" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No sensors readable" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No sensors readable" } } } }, - "metric.show": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anzeigen" + "metric.show" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anzeigen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Show" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Show" } } } }, - "popover.battery.calculating": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wird berechnet …" + "popover.battery.calculating" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wird berechnet …" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Calculating…" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Calculating…" } } } }, - "popover.battery.charging": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lädt" + "popover.battery.charging" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lädt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Charging" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Charging" } } } }, - "popover.battery.condition": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zustand" + "popover.battery.condition" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zustand" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Condition" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Condition" } } } }, - "popover.battery.cycles": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Ladezyklen" + "popover.battery.cycles" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ladezyklen" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Cycles" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cycles" } } } }, - "popover.battery.draining": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verbrauch" + "popover.battery.draining" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbrauch" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Draw" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Draw" } } } }, - "popover.battery.health": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kapazität" + "popover.battery.health" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kapazität" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Capacity" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Capacity" } } } }, - "popover.battery.limitComing": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Das Ladelimit kommt mit dem privilegierten Helfer. Der zuständige SMC-Key ist auf diesem Modell noch nicht identifiziert — siehe docs/spikes/A-smc.md." + "popover.battery.limitComing" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das Ladelimit kommt mit dem privilegierten Helfer. Der zuständige SMC-Key ist auf diesem Modell noch nicht identifiziert — siehe docs/spikes/A-smc.md." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "The charge limit arrives with the privileged helper. The relevant SMC key is not yet identified on this model — see docs/spikes/A-smc.md." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "The charge limit arrives with the privileged helper. The relevant SMC key is not yet identified on this model — see docs/spikes/A-smc.md." } } } }, - "popover.battery.none": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kein Akku gefunden" + "popover.battery.none" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Akku gefunden" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No battery found" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No battery found" } } } }, - "popover.battery.notCharging": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Am Netz, lädt nicht" + "popover.battery.notCharging" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Am Netz, lädt nicht" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Plugged in, not charging" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plugged in, not charging" } } } }, - "popover.battery.onBattery": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Akkubetrieb" + "popover.battery.onBattery" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Akkubetrieb" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Running on battery" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Running on battery" } } } }, - "popover.battery.pausedAtLimit %lld": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Angehalten — Ladelimit von %lld %% erreicht" + "popover.battery.pausedAtLimit %lld" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Angehalten — Ladelimit von %lld %% erreicht" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Paused — charge limit of %lld %% reached" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paused — charge limit of %lld %% reached" } } } }, - "popover.battery.pluggedIn": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Am Netzteil" + "popover.battery.pluggedIn" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Am Netzteil" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "On adapter" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "On adapter" } } } }, - "popover.battery.remaining": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "verbleibend" + "popover.battery.remaining" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "verbleibend" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "remaining" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "remaining" } } } }, - "popover.battery.untilFull": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "bis voll" + "popover.battery.untilFull" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "bis voll" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "until full" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "until full" } } } }, - "popover.battery.voltage": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Spannung" + "popover.battery.voltage" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Spannung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Voltage" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voltage" } } } }, - "popover.fans": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Lüfter" + "popover.fans" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lüfter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Fans" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fans" } } } }, - "popover.memory.app": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Programme" + "popover.memory.app" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Programme" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Apps" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apps" } } } }, - "popover.memory.compressed": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Komprimiert" + "popover.memory.compressed" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Komprimiert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Compressed" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compressed" } } } }, - "popover.memory.free": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Frei" + "popover.memory.free" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Frei" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Free" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Free" } } } }, - "popover.memory.swap": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Auslagerung" + "popover.memory.swap" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auslagerung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Swap" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Swap" } } } }, - "popover.memory.swapUsed": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Benutzt" + "popover.memory.swapUsed" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Benutzt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Used" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Used" } } } }, - "popover.memory.used": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Belegt" + "popover.memory.used" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Belegt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Used" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Used" } } } }, - "popover.memory.wired": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Reserviert" + "popover.memory.wired" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reserviert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Wired" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wired" } } } }, - "popover.perCore": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Je Kern" + "popover.perCore" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je Kern" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Per core" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per core" } } } }, - "popover.power": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Leistung" + "popover.power" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Leistung" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Power" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Power" } } } }, - "popover.power.adapter": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Netzteil" + "popover.power.adapter" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Netzteil" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Adapter" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adapter" } } } }, - "popover.power.cpu": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "popover.power.cpu" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "CPU" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "CPU" } } } }, - "popover.power.display": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Anzeige" + "popover.power.display" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anzeige" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Display" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Display" } } } }, - "popover.power.total": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Gesamt" + "popover.power.total" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gesamt" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Total" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Total" } } } }, - "popover.processes": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Größte Verbraucher" + "popover.processes" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Größte Verbraucher" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Top consumers" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Top consumers" } } } }, - "popover.temperature": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Temperatur" + "popover.temperature" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperatur" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Temperature" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Temperature" } } } }, - "settings.menubar.labelAndValue": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kürzel + Wert" + "settings.menubar.labelAndValue" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kürzel + Wert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Label + value" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Label + value" } } } }, - "settings.menubar.symbolAndValue": { - "extractionState": "stale", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Symbol + Wert" + "settings.menubar.symbolAndValue" : { + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol + Wert" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Symbol + value" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Symbol + value" } } } } }, - "version": "1.1" -} + "version" : "1.1" +} \ No newline at end of file diff --git a/Packages/OnyxKit/Sources/OnyxNotch/TriggerAreaSettings.swift b/Packages/OnyxKit/Sources/OnyxNotch/TriggerAreaSettings.swift index 617c819..e734f96 100644 --- a/Packages/OnyxKit/Sources/OnyxNotch/TriggerAreaSettings.swift +++ b/Packages/OnyxKit/Sources/OnyxNotch/TriggerAreaSettings.swift @@ -1,4 +1,5 @@ import SwiftUI +import ImageIO import OnyxDesign /// Einstellung der Auslösefläche — mit Vorschau. @@ -60,13 +61,15 @@ public struct TriggerAreaSettings: View { /// Der nachgebildete Bildschirm. /// -/// Mit dem echten Schreibtischhintergrund: Apples Bilder lassen sich nicht -/// mitliefern — Lizenz, und ein Tahoe-Hintergrund wiegt zweistellige Megabyte. -/// Der eigene ist ohnehin der bessere Anker, weil man genau ihn wiedererkennt. -/// Fehlt er, bleibt ein Verlauf in Onyx-Farben. +/// Mit einem echten Hintergrundbild, damit man auf einen Blick sieht, dass hier +/// ein Mac-Bildschirm gemeint ist und nicht irgendein Rechteck. Zuerst der +/// eigene Schreibtischhintergrund — den erkennt man am schnellsten wieder —, +/// sonst einer von macOS. private struct TriggerPreview: View { let trigger: TriggerArea + @State private var wallpaper: NSImage? + /// Maße eines MacBook Pro mit Notch, auf die Vorschau heruntergerechnet. private let screenAspect: CGFloat = 1800 / 1169 private let notchWidthFraction: CGFloat = 220 / 1800 @@ -84,7 +87,7 @@ private struct TriggerPreview: View { let areaHeight = min(notchHeight + trigger.extraHeight * scale, height) ZStack(alignment: .top) { - wallpaper + background // Die Menüleiste als heller Streifen: sie erklärt, warum die // Fläche nicht beliebig breit werden sollte. @@ -117,11 +120,30 @@ private struct TriggerPreview: View { .animation(Onyx.Motion.value, value: areaWidth) .animation(Onyx.Motion.value, value: areaHeight) } + // Nicht beim Zeichnen laden: das Dekodieren dauert gut hundert + // Millisekunden, und die hätte das Fenster beim Öffnen gestanden. + .task { await loadWallpaper() } } + private func loadWallpaper() async { + if let cached = Self.cache { wallpaper = cached.image; return } + // Den Pfad auf dem Hauptthread bestimmen — `NSScreen` und + // `NSWorkspace` gehören dorthin —, das Bild daneben. + let own = Self.ownWallpaperURL() + let loaded = await Task.detached(priority: .userInitiated) { + Wallpaper(image: own.flatMap { Self.thumbnail(of: $0) } ?? Self.systemWallpaper()) + }.value + Self.cache = loaded + wallpaper = loaded.image + } + + /// Einmal geladen und behalten: die Vorschau zeichnet sich bei jedem Zug am + /// Regler neu. + @MainActor private static var cache: Wallpaper? + @ViewBuilder - private var wallpaper: some View { - if let image = Self.desktopImage { + private var background: some View { + if let image = wallpaper { Image(nsImage: image) .resizable() .aspectRatio(contentMode: .fill) @@ -131,14 +153,84 @@ private struct TriggerPreview: View { } } - /// Der Schreibtischhintergrund des Hauptbildschirms. + /// Der eigene Schreibtischhintergrund — wenn er sich denn lesen lässt. /// - /// Einmal geladen und behalten: es ist eine Datei von mehreren Megabyte, - /// und die Vorschau zeichnet sich bei jedem Zug am Regler neu. - private static let desktopImage: NSImage? = { + /// Die Prüfung ist der eigentliche Punkt: liegt das Bild in Schreibtisch, + /// Dokumente oder Downloads, verweigert macOS den Zugriff, bis der Nutzer + /// den Ordner freigibt. `NSWorkspace` liefert den Pfad trotzdem, und + /// `NSImage` gibt dann still `nil` zurück — die Vorschau blieb schwarz, und + /// zwar ohne jeden Hinweis, warum. Genau dieser Fall lag hier vor. + /// + /// Um eine Ordnerfreigabe zu bitten, nur um ein Vorschaubildchen zu malen, + /// wäre die falsche Frage. Also: lesbar oder nicht, und sonst weiter. + @MainActor + private static func ownWallpaperURL() -> URL? { guard let screen = NSScreen.main, - let url = NSWorkspace.shared.desktopImageURL(for: screen) + let url = NSWorkspace.shared.desktopImageURL(for: screen), + FileManager.default.isReadableFile(atPath: url.path) else { return nil } - return NSImage(contentsOf: url) - }() + return url + } + + /// Ein Standardhintergrund von macOS. + /// + /// Die Vorschaubilder aus `.thumbnails` statt der Originale: dieselben + /// Motive in ein paar Dutzend Kilobyte statt in zwanzig Megabyte. Sie + /// liegen auf jedem Mac und werden nur gelesen, nicht mitgeliefert. + /// + /// Die Reihenfolge geht von neu nach alt und endet bei „irgendein Foto": + /// welche Bilder installiert sind, hängt an der macOS-Version. + private static func systemWallpaper() -> NSImage? { + let directory = "/System/Library/Desktop Pictures" + let preferred = ["Tahoe", "Sequoia", "Sonoma", "Ventura", "Monterey", + "Big Sur Mountains", "Catalina Coast"] + + let thumbnails = directory + "/.thumbnails" + let available = (try? FileManager.default.contentsOfDirectory(atPath: thumbnails)) ?? [] + + for name in preferred { + // „Sonoma.heic" vor „Sonoma Dark.heic": das schlichte Motiv ist das + // bekannte, die Varianten sind Abwandlungen davon. + let matches = available + .filter { $0.hasPrefix(name) && $0.hasSuffix(".heic") } + .sorted { $0.count < $1.count } + if let match = matches.first, + let image = thumbnail(of: URL(fileURLWithPath: thumbnails + "/" + match)) { + return image + } + } + + // Nichts Bekanntes dabei: dann das erste Bild, das sich lesen lässt. + for name in available.sorted() where name.hasSuffix(".heic") { + if let image = thumbnail(of: URL(fileURLWithPath: thumbnails + "/" + name)) { + return image + } + } + return nil + } + + /// Lädt ein verkleinertes Bild. + /// + /// Über `CGImageSource` statt `NSImage(contentsOf:)`: die Vorschau ist ein + /// paar hundert Bildpunkte breit, das Original hat sechstausend. Und ein + /// Hintergrundbild kann mehrere Bilder enthalten — hell und dunkel im + /// selben HEIC —, von denen hier nur das erste gebraucht wird. + private static func thumbnail(of url: URL) -> NSImage? { + guard let source = CGImageSourceCreateWithURL(url as CFURL, nil) else { return nil } + let options: [CFString: Any] = [ + kCGImageSourceCreateThumbnailFromImageAlways: true, + kCGImageSourceCreateThumbnailWithTransform: true, + kCGImageSourceThumbnailMaxPixelSize: 1000, + ] + guard let image = CGImageSourceCreateThumbnailAtIndex(source, 0, options as CFDictionary) + else { return nil } + return NSImage(cgImage: image, size: .init(width: image.width, height: image.height)) + } +} + +/// `NSImage` über eine Aufgabengrenze zu reichen ist nicht von Haus aus +/// zugesichert. Hier ist es unbedenklich: das Bild wird einmal erzeugt und +/// danach nur noch gelesen. +private struct Wallpaper: @unchecked Sendable { + let image: NSImage? } diff --git a/Packages/OnyxKit/Sources/WeatherProvider/Localizable.xcstrings b/Packages/OnyxKit/Sources/WeatherProvider/Localizable.xcstrings index 6d3830d..83cadd8 100644 --- a/Packages/OnyxKit/Sources/WeatherProvider/Localizable.xcstrings +++ b/Packages/OnyxKit/Sources/WeatherProvider/Localizable.xcstrings @@ -1,155 +1,169 @@ { - "sourceLanguage": "en", - "strings": { - "weather.error.timeout": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Zeitüberschreitung beim Abruf" + "sourceLanguage" : "en", + "strings" : { + "↑ %@" : { + "comment" : "A label that shows the high temperature. The argument is the high temperature.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "↑ %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Request timed out" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "↑ %@" } } } }, - "weather.feelsLike %@": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "gefühlt %@" - } - }, - "en": { - "stringUnit": { - "state": "translated", - "value": "feels like %@" + "↑ %@ ↓ %@" : { + "comment" : "Temperaturbereich.", + "isCommentAutoGenerated" : true, + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "↑ %1$@ ↓ %2$@" } } } }, - "widget.weather.asOf": { - "comment": "%@ ist die Uhrzeit des Messwerts", - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Stand %@" + "↓ %@" : { + "comment" : "A label that reads \"low\" in the weather app.", + "extractionState" : "stale", + "isCommentAutoGenerated" : true, + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "↓ %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "As of %@" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "↓ %@" } } } }, - "widget.weather.locationDenied": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Kein Standortzugriff.\nOrt in den Einstellungen wählen." + "weather.error.timeout" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zeitüberschreitung beim Abruf" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "No location access.\nPick a place in settings." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Request timed out" } } } }, - "widget.weather.locationUndetermined": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Standort noch nicht erlaubt.\nIn den Einstellungen freigeben." + "weather.feelsLike %@" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "gefühlt %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Location not allowed yet.\nGrant it in settings." + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "feels like %@" } } } }, - "widget.weather.name": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wetter" + "widget.weather.asOf" : { + "comment" : "%@ ist die Uhrzeit des Messwerts", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stand %@" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Weather" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "As of %@" } } } }, - "widget.weather.unavailable": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Wetter nicht abrufbar" + "widget.weather.locationDenied" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Standortzugriff.\nOrt in den Einstellungen wählen." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "Weather unavailable" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "No location access.\nPick a place in settings." } } } }, - "↑ %@": { - "comment": "A label that shows the high temperature. The argument is the high temperature.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "↑ %@" + "widget.weather.locationUndetermined" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standort noch nicht erlaubt.\nIn den Einstellungen freigeben." } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "↑ %@" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Location not allowed yet.\nGrant it in settings." } } } }, - "↓ %@": { - "comment": "A label that reads \"low\" in the weather app.", - "isCommentAutoGenerated": true, - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "↓ %@" + "widget.weather.name" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wetter" } }, - "en": { - "stringUnit": { - "state": "translated", - "value": "↓ %@" + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weather" + } + } + } + }, + "widget.weather.unavailable" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wetter nicht abrufbar" + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weather unavailable" } } } } }, - "version": "1.1" -} + "version" : "1.1" +} \ No newline at end of file