feat: Add de localization (#2295)

All credit for strings go to @Matthias84 . This PR replaces #2283 .


[skip ci]
This commit is contained in:
Dermot Duffy
2025-12-20 14:28:12 -08:00
committed by GitHub
parent b75513789b
commit b06e0aea4d
3 changed files with 440 additions and 3 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://inlang.com/schema/project-settings",
"sourceLanguageTag": "en",
"languageTags": ["ca", "en", "fr", "it", "pt-BR", "pt-PT"],
"languageTags": ["ca", "de", "en", "fr", "it", "pt-BR", "pt-PT"],
"modules": [
"https://cdn.jsdelivr.net/npm/@inlang/plugin-json@latest/dist/index.js",
"https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js",
+435
View File
@@ -0,0 +1,435 @@
{
"actions": {
"abort": "Aktion abbrechen",
"confirmation": "Bist du sicher, dass die Aktion durchgeführt werden soll?"
},
"common": {
"advanced_camera_card": "Erweiterte Kamera-Karte",
"advanced_camera_card_description": "Eine Erweiterte Kamera-Karte",
"folder": "Ordner",
"no_folder": "Keine Ordner"
},
"config": {
"cameras": {
"always_error_if_entity_unavailable": "Nicht verfügbare Entität immer als Fehler behandeln",
"capabilities": {
"capabilities": {
"clips": "Clips",
"favorite-events": "Favorisierte Ereignisse",
"favorite-recordings": "Favorisierte Aufzeichnungen",
"live": "Live",
"menu": "Menü",
"ptz": "PTZ",
"recordings": "Aufzeichnungen",
"seek": "Suche",
"snapshots": "Schnappschüsse",
"substream": "Substream"
},
"disable": "Deaktivieren",
"disable_except": "Deaktivieren außer",
"editor_label": "Kamera Features"
},
"cast": {
"dashboard": {
"dashboard_path": "Dashboard Pfad",
"view_path": "Zeige Pfad"
},
"editor_label": "Sende Optionen",
"method": "Sende Methode",
"methods": {
"standard": "Standart"
}
},
"dimensions": {
"aspect_ratio": "Fixes Seitenverhältnis",
"editor_label": "Kamera Abmessungen",
"layout": {
"editor_label": "Kamera Layout",
"pan": {
"x": "Verschiebe um horizontal Prozente",
"y": "Verschiebe um vertikal Prozente"
},
"position": {
"editor_label": "Layout Abdeckung Position"
},
"view_box": {
"bottom": "Untere inset Prozente",
"editor_label": "Layout Anzeige Box",
"left": "Linke inset Prozente",
"right": "Rechte inset Prozente",
"top": "Obere inset Prozente"
},
"zoom": "Zoom Faktor"
},
"rotation": "Rotation",
"rotations": {
"0": "Keine Rotation",
"90": "90 Grad im Uhrzeigersinn",
"180": "180 Grad im Uhrzeigersinn",
"270": "270 Grad im Uhrzeigersinn"
}
},
"go2rtc": {
"url": "go2rtc URL"
},
"proxy": {
"dynamic": "Dynamischer Proxy",
"editor_label": "Kamera Proxy",
"live": "Live Proxy",
"media": "Medien Proxy",
"modes": {
"auto": "Proxy automatisch konfigurieren",
"false": "Proxy deaktiviert",
"true": "Proxy aktiviert"
},
"ssl_ciphers": {
"auto": "SSL ciphers automatisch konfiguriert",
"default": "Standard SSL ciphers",
"editor_label": "SSL ciphers",
"insecure": "Unsichere SSL ciphers",
"intermediate": "Zwischen SSL ciphers",
"modern": "Moderne SSL ciphers"
},
"ssl_verification": {
"auto": "SSL Überprüfung automatisch konfiguriert",
"editor_label": "SSL Überprüfung",
"false": "SSL Überprüfung deaktiviert",
"true": "SSL Überprüfung aktiviert"
}
},
"reolink": {
"editor_label": "Reolink Optionen",
"media_resolution": {
"editor_label": "Medien Auflösung",
"high": "Hohe Auflösung",
"low": "Niedrige Auflösung"
},
"url": "Reolink UI URL"
},
"triggers": {
"events": {
"clips": "Ereignisse mit neuen Clips",
"editor_label": "Auslöser Ereignisse",
"events": "Alle Ereignisse",
"snapshots": "Ereiggnisse mit neuen Schnappschüssen"
}
}
},
"common": {
"controls": {
"builtin": "Eingebettete Video Bedienelemente",
"thumbnails": {
"media_type": "Ob Vorschau von Ereignissen oder Aufzeichnungen angezeigt werden",
"media_types": {
"events": "Ereignisse",
"recordings": "Aufzeichnungen"
}
},
"timeline": {
"format": {
"24h": "24h Uhr",
"editor_label": "Datums & Zeitformat"
},
"pan_mode": "Standard Pan Modus",
"pan_modes": {
"pan": "Pan",
"seek": "Pan durchsucht alle Medien",
"seek-in-camera": "Pan durchsucht nur die ausgewählte Kamera",
"seek-in-media": "Pan durchsucht nur im ausgewählten Medien-Eintrag"
}
},
"wheel": "Laufrad bedient Medien-Karussel"
},
"display": {
"editor_label": "Anzeige",
"grid_columns": "Genaue Nummer der Gitterspalten",
"grid_max_columns": "Maximale Nummer der Gitterspalten",
"grid_selected_position": "Position des ausgewählten Mediums im Gitter",
"grid_selected_positions": {
"default": "Standardposition des ausgewählten Eintrags",
"first": "Ausgewählter Eintrag als erstes im Gitter",
"last": "Ausgewählter Eintrag als letztes im Gitter"
},
"grid_selected_width_factor": "Breite für ausgewähltes Medium um diesen Faktor vergrößern",
"mode": "Modus"
},
"image": {
"entity": "Entität für Entitäts-Modus",
"entity_parameters": "Abfrage-Parameter für Entitäts-basierende Photo URLs (z.B. width=1920&height=1080)",
"modes": {
"entity": "Entität mit entity_picture Attribut",
"screensaver": "Eingebettetes Bild für Bildschirmschoner"
}
},
"media_action_conditions": {
"microphone_mute": "Bei Mikrofon Stummschaltung",
"microphone_unmute": "Bei Mikrofon Reaktivierung"
},
"timeline": {
"style": "Zeitleisten Stil",
"styles": {
"ribbon": "Ereignisse auf einer einzigen Schleife",
"stack": "Gestapelte & gruppierte Ereignisse"
}
}
},
"dimensions": {
"height": "Kartenhöhe in CSS Einheiten (z.B. '500px')"
},
"folders": {
"ha": {
"editor_label": "Home Assistant Medien Ordner Optionen",
"path_info": "Zusätzliche Pfad-Vergleichs-Funktionalität wird über den Texteditor bereitgestellt",
"url": "URL des Medienordners"
},
"icon": "Icon für diesen Ordner",
"id": "Einzigartige ID für diesen Ordner in dieser Karte",
"title": "Bezeichnung für diesen Ordner",
"type": "Ordnertyp",
"types": {
"ha": "Home Assistant Medien Ordner"
}
},
"live": {
"controls": {
"ptz": {
"editor_label": "PTZ",
"hide_home": "Verstecke Start & Vorlagen Bedienung",
"hide_pan_tilt": "Verstecke Pan & Tilt Steuerung",
"hide_zoom": "Verstecke Zoom-Steuerung",
"mode": "Modus",
"modes": {
"off": "Aus",
"on": "An"
},
"orientation": "Ausrichtung",
"orientations": {
"horizontal": "Horizontal",
"vertical": "Vertikal"
},
"position": "Position",
"positions": {
"bottom-left": "Unten links",
"bottom-right": "Oben rechts",
"top-left": "Unten links",
"top-right": "Oben rechts"
}
}
},
"microphone": {
"always_connected": "Mikrofon immer verbunden lassen",
"disconnect_seconds": "Sekunden nach denen das Mikrofon getrennt wird (0=niemals)",
"editor_label": "Mikrofon",
"enabled": "Mikrofon aktivieren",
"mute_after_microphone_mute_seconds": "Sekunden nach denen das Mikrofon stumm geschalten wird, um eingehendes Audio stumm zu schalten"
},
"zoomable": "Live-Kameras können gezoomt / gepant werden"
},
"media_viewer": {
"snapshot_click_plays_clip": "Auf einen Schnappschuss klicken gibt den Clip wieder",
"zoomable": "Medien Betrachter kann gezoomt / gepannt werden"
},
"menu": {
"buttons": {
"display_mode": "Anzeige-Modus",
"folders": "Ordner",
"iris": "Iris / Standard Ansicht / Menü anzeigen",
"microphone": "Mikrofon",
"mute": "Stummschalten / Aufheben",
"permanent": "Zeige wenn das Menü versteckt ist",
"play": "Wiedergabe / Pause",
"ptz_controls": "Zeige PTZ Steuerung",
"ptz_home": "PTZ Start",
"recordings": "Aufzeichnungen",
"screenshot": "Bildschirmfoto",
"type": "Schalter-Typ",
"types": {
"momentary": "Momentan",
"toggle": "Umschalten"
}
},
"styles": {
"hover-card": "Hover-Menü (ganze Karte)"
}
},
"performance": {
"features": {
"card_loading_effects": "Karten-Ladeeffekt",
"card_loading_indicator": "Karten-Ladeanzeige",
"max_simultaneous_engine_requests": "Maximal gleichzeitige Anfragen an Kamera-Backend"
}
},
"profiles": {
"casting": "Sende",
"editor_label": "Einstellungsprofile",
"low-performance": "Niedrige Leistung",
"scrubbing": "Video durchstöbern"
},
"remote_control": {
"entities": {
"camera": "Entität um Kamera zu steuern",
"editor_label": "Entität für Fernsteuerung"
}
},
"status_bar": {
"height": "Statusleisten-Höhe in Pixel",
"items": {
"enabled": "Eintrag aktiviert",
"engine": "Kamera-Backend",
"live_provider": "Live-Anbieter",
"priority": "Eintrags-Priorität",
"resolution": "Auflösung",
"technology": "Technologie",
"title": "Titel"
},
"popup_seconds": "Statusleiste Popup in Sekunden",
"position": "Statusleiste Position",
"positions": {
"bottom": "Unten ausgerichtet",
"top": "Oben ausgerichtet"
},
"style": "Statusleiste Stil",
"styles": {
"hover": "Hover Statusleiste",
"hover-card": "Hover Statusleiste (ganze Karte)",
"none": "Keine Statusleiste",
"outside": "Außerhalb Statusleiste",
"overlay": "Über Statusleiste",
"popup": "Statusleiste Popup"
}
},
"view": {
"default_reset": {
"after_interaction": "Zurücksetzen auf Standardansicht nach Ende der Benutzerinteraktion",
"editor_label": "Verhalten Zurücksetzen auf Standardansicht",
"entities": "Nach Zustandsänderung der Entität Zurücksetzen auf Standardansicht",
"interaction_mode": "Wie der Standard-Reset bei Benutzerinteraktion verhalten soll",
"interaction_modes": {
"active": "Zeige nur wenn Karte Nutzerinteraktion erfährt",
"all": "Zurücksetzen unabhängig von Benutzerinteraktion",
"inactive": "Nur zurücksetzen wenn keine Nutzerinteraktion"
}
},
"dim": "Abdimmen wenn keine Interaktion",
"interaction_seconds": "Sekunden nach der Interaktion aktiv bleiben (0=niemals)",
"keyboard_shortcuts": {
"editor_label": "Tastenkürzel",
"enabled": "Tastenkürzel aktiviert",
"ptz_down": "PTZ unten",
"ptz_home": "PTZ Start",
"ptz_left": "PTZ Links",
"ptz_right": "PTZ Rechts",
"ptz_up": "PTZ Oben",
"ptz_zoom_in": "PTZ Hereinzoomen",
"ptz_zoom_out": "PTZ Herauszoomen"
},
"theme": {
"themes": {
"dark": "Dunkel",
"editor_label": "Farbschema",
"ha": "Home Assistant",
"light": "Links",
"traditional": "Traditionell"
}
},
"triggers": {
"actions": {
"editor_label": "Auslöseaktion",
"interaction_mode": "Wie Aktion verarbeiten, wenn Karte Nutzerinteraktion hat",
"interaction_modes": {
"active": "Nur auslösen, wenn Karte Nutzerinteraktion hat",
"all": "Auslösen unabhängig von Nutzerinteraktion",
"inactive": "Nur auslösen wenn Karte keine Nutzerinteraktion hat"
},
"trigger": "Auslöseaktion",
"triggers": {
"default": "Wechseln in oder Anpassen der Standardansicht",
"live": "Wechseln in oder Anpassen der Live-Ansicht",
"media": "Wechseln in oder Anpassen der Medienansicht",
"none": "Keine Aktion"
},
"untrigger": "Aktion für deaktivieren",
"untriggers": {
"default": "Wechseln auf Standardansicht / Kamera",
"none": "Keine Aktion"
}
},
"editor_label": "Auslöser-Verhalten",
"filter_selected_camera": "Nur auslösen bei ausgewählter Kamera"
},
"views": {
"folder": "Medienordner",
"folders": "Ordner-Gallerie",
"recording": "Neueste Aufzeichnungen",
"recordings": "Aufzeichnungsgallerie"
}
}
},
"display_modes": {
"grid": "Zeige Medienansicht für jede Kamera in einem Gitter",
"single": "Zeige einzelne Medienansicht"
},
"editor": {
"add_new_folder": "Neuen Ordner hinzufügen",
"dimensions": "Karten-Abmessungen",
"dimensions_secondary": "Karten-Abmessungen & Form Optionen",
"folders": "Ordner",
"folders_secondary": "Welche Ordner auf dieser Karte darstellen",
"performance": "Leistung",
"performance_secondary": "Optionen für Leistung der Karte",
"profiles": "Konfigurationsprofile",
"profiles_secondary": "Wähle Voreinstellungen der Standardeinstellungen",
"remote_control": "Fernsteuerung",
"remote_control_secondary": "Optionen für Fernsteuerung der Karte",
"status_bar": "Statusleiste",
"status_bar_secondary": "Statusleiste look & feel Optionen"
},
"elements": {
"ptz": {
"presets": "Voreinstellung"
}
},
"error": {
"awaiting_folder": "Warte auf Laden des Ordners",
"awaiting_live": "Warte auf Live-Stream ...",
"awaiting_media": "Warte auf Medium ...",
"camera_initialization": "Kamera-Initialisierung fehlgeschlagen",
"camera_initialization_reolink": "Konnte Reolink-Kamera nicht initialisieren",
"configuration": "Konfiguration überprüfen",
"duplicate_folder_id": "Doppelte Ordner-ID für den folgen Ordner, benutzte Parameter 'id' um Ordner eindeutig zu identifizieren",
"failed_proxy": "Konnte mich nicht über Home Assistant verbinden",
"fetching_diagnostics": "Rufe Diagnosedaten ab",
"invalid_configuration_override": "Ungültige Konfiguration für Ersetzung",
"no_camera_or_media_for_timeline": "Keine Kamera oder Medium für Zeitleiste",
"no_dashboard_or_view": "Beide Prameter 'dashboard_path' und 'view_path' sind für die Sende-Methode 'dashboard' erforderlich",
"no_supported_camera": "Die ausgewählte Kamera unterstützt diese Ansicht nicht",
"no_supported_cameras": "Keine Kameras unterstützen diese Ansicht",
"stream_not_loading": "Der Videostream wurde nicht geladen. Dafür kann es verschiedene Gründe geben. Wenn konfiguriert (Standard), wird ein Bild jede Sekunde angezeigt, bis der Steam richtig lädt",
"too_many_automations": "Zu viele automatisierte Anfragen, bitte prüfe deine Konfiguration auf etwaige Schleifen"
},
"key_assigner": {
"assign": "Zuweisen",
"modifiers": {
"alt": "Alt",
"ctrl": "Ctrl",
"meta": "Meta",
"shift": "Shift"
},
"unassign": "Nicht zuweisen"
},
"media_filter": {
"select_tag": "Tag auswählen ...",
"tag": "Tag",
"whens": {
"custom": "Angepasst"
}
},
"media_viewer": {
"unseekable": "Suchzeit nicht im Medium gefunden"
},
"thumbnail": {
"download": "Medium herunterladen",
"tag": "Tag",
"title": "Titel"
}
}
+4 -2
View File
@@ -56,14 +56,16 @@ export const loadLanguages = async (hass: HomeAssistant): Promise<boolean> => {
const lang = getLanguage(hass);
if (lang === 'ca') {
languages[lang] = await import('./languages/ca.json');
} else if (lang === 'de') {
languages[lang] = await import('./languages/de.json');
} else if (lang === 'fr') {
languages[lang] = await import('./languages/fr.json');
} else if (lang === 'it') {
languages[lang] = await import('./languages/it.json');
} else if (lang === 'pt') {
languages[lang] = await import('./languages/pt-PT.json');
} else if (lang === 'pt_BR') {
languages[lang] = await import('./languages/pt-BR.json');
} else if (lang === 'fr') {
languages[lang] = await import('./languages/fr.json');
}
if (lang) {