feat: Modernize the visual card editor. (#2586)

This commit is contained in:
Dermot Duffy
2026-07-20 20:44:16 -07:00
committed by GitHub
parent e204ec183f
commit b6e1de5999
146 changed files with 8487 additions and 5992 deletions
+28 -28
View File
@@ -129,6 +129,29 @@
"thumbnails": "Miniatures"
}
},
"ptz": {
"editor_label": "PTZ",
"hide_home": "Amaga el control de casa",
"hide_pan_tilt": "Amaga el control d'escombratge i inclinació",
"hide_zoom": "Amaga el control de zoom",
"mode": "Mode",
"modes": {
"off": "Desactivat",
"on": "Activat"
},
"orientation": "Orientació",
"orientations": {
"horizontal": "Horitzontal",
"vertical": "Vertical"
},
"position": "Posició",
"positions": {
"bottom-left": "Inferior esquerra",
"bottom-right": "Inferior dreta",
"top-left": "Superior left",
"top-right": "Superior dreta"
}
},
"thumbnails": {
"editor_label": "Miniatures",
"mode": "Mode de miniatures",
@@ -204,6 +227,10 @@
"stack": "Esdeveniments apilats i agrupats"
},
"window_seconds": "La durada predeterminada de la visualització de la línia de temps en segons"
},
"transition_effects": {
"none": "Sense transició",
"slide": "Transició de diapositives"
}
},
"dimensions": {
@@ -221,30 +248,7 @@
"auto_play": "Reprodueix automàticament les càmeres en directe",
"auto_unmute": "Activa automàticament el so de les càmeres en directe",
"controls": {
"editor_label": "Controls del directe",
"ptz": {
"editor_label": "PTZ",
"hide_home": "Amaga el control de casa",
"hide_pan_tilt": "Amaga el control d'escombratge i inclinació",
"hide_zoom": "Amaga el control de zoom",
"mode": "Mode",
"modes": {
"off": "Desactivat",
"on": "Activat"
},
"orientation": "Orientació",
"orientations": {
"horizontal": "Horitzontal",
"vertical": "Vertical"
},
"position": "Posició",
"positions": {
"bottom-left": "Inferior esquerra",
"bottom-right": "Inferior dreta",
"top-left": "Superior left",
"top-right": "Superior dreta"
}
}
"editor_label": "Controls del directe"
},
"draggable": "La vista de càmeres en directe es pot arrossegar/lliscar",
"lazy_load": "Les càmeres en directe es carreguen amb mandra",
@@ -272,10 +276,6 @@
"lazy_load": "El contingut multimèdia del visualitzador multimèdia es carreguen amb mandra al carrusel",
"snapshot_click_plays_clip": "Si feu clic a una instantània, es reprodueix un clip relacionat",
"transition_effect": "Efecte de transició del visualitzador multimèdia",
"transition_effects": {
"none": "Sense transició",
"slide": "Transició de diapositives"
},
"zoomable": "El visualitzador de mitjans es pot ampliar/escombrar"
},
"menu": {
+23 -26
View File
@@ -97,7 +97,29 @@
"common": {
"controls": {
"builtin": "Eingebettete Video Bedienelemente",
"thumbnails": {},
"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"
}
},
"timeline": {
"format": {
"24h": "24h Uhr",
@@ -191,31 +213,6 @@
}
},
"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)",
+91 -64
View File
@@ -46,15 +46,16 @@
},
"disable": "Disable",
"disable_except": "Disable except",
"editor_label": "Camera capabilities",
"editor_label": "Capabilities",
"force": "Force"
},
"cast": {
"dashboard": {
"dashboard_path": "Dashboard path",
"editor_label": "Dashboard",
"view_path": "View path"
},
"editor_label": "Cast options",
"editor_label": "Casting",
"method": "Cast method",
"methods": {
"dashboard": "Dashboard",
@@ -64,11 +65,11 @@
"dependencies": {
"all_cameras": "Show events for all cameras with this camera",
"cameras": "Show events for specific cameras with this camera",
"editor_label": "Dependency options"
"editor_label": "Dependencies"
},
"dimensions": {
"aspect_ratio": "Static aspect ratio",
"editor_label": "Camera dimensions",
"editor_label": "Dimensions",
"layout": {
"editor_label": "Camera Layout",
"fit": "Layout fit",
@@ -78,6 +79,7 @@
"fill": "Media is stretched to fill the card"
},
"pan": {
"editor_label": "Layout Pan",
"x": "Pan horizontal percentage",
"y": "Pan vertical percentage"
},
@@ -103,19 +105,26 @@
"90": "90 degrees clockwise"
}
},
"engine": "Camera engine",
"engines": {
"editor_label": "Camera engine options"
"auto": "Automatic",
"editor_label": "Engine",
"frigate": "Frigate",
"generic": "Generic",
"motioneye": "MotionEye",
"reolink": "Reolink",
"tplink": "TP-Link"
},
"frigate": {
"camera_name": "Frigate camera name (autodetected from entity)",
"client_id": "Frigate client id (for >1 Frigate server)",
"editor_label": "Frigate options",
"editor_label": "Frigate",
"labels": "Frigate labels/object filters",
"url": "Frigate server URL",
"zones": "Frigate zones"
},
"go2rtc": {
"editor_label": "go2rtc Options",
"editor_label": "go2rtc",
"metadata_fetch_timeout_seconds": "Metadata fetch timeout in seconds",
"modes": {
"editor_label": "go2rtc Modes",
@@ -130,13 +139,13 @@
"icon": "Icon for this camera (autodetected from entity)",
"id": "Unique ID for this camera in this card",
"image": {
"editor_label": "Image Options",
"editor_label": "Image",
"refresh_seconds": "Seconds between live image refreshes (0=never)",
"url": "Image URL to use instead of camera entity snapshot"
},
"live_provider": "Live view provider for this camera",
"live_provider_options": {
"editor_label": "Live provider options"
"editor_label": "Live Provider"
},
"live_providers": {
"auto": "Automatic",
@@ -148,7 +157,7 @@
"webrtc-card": "WebRTC Card (i.e. AlexxIT's WebRTC Card)"
},
"media": {
"editor_label": "Default Media",
"editor_label": "Media",
"events_type": "Events media subtype",
"folders": "Folder IDs",
"reviewed": "Review status filter",
@@ -160,24 +169,26 @@
"type": "Default media type"
},
"motioneye": {
"editor_label": "MotionEye options",
"editor_label": "MotionEye",
"images": {
"directory_pattern": "Images directory pattern",
"editor_label": "Images",
"file_pattern": "Images file pattern"
},
"movies": {
"directory_pattern": "Movies directory pattern",
"editor_label": "Movies",
"file_pattern": "Movies file pattern"
},
"url": "MotionEye UI URL"
},
"proxy": {
"editor_label": "Camera proxying",
"editor_label": "Proxying",
"live": "Live proxying",
"media": "Media proxying"
},
"reolink": {
"editor_label": "Reolink options",
"editor_label": "Reolink",
"media_resolution": {
"editor_label": "Media Resolution",
"high": "High Resolution",
@@ -187,15 +198,15 @@
},
"title": "Title for this camera (autodetected from entity)",
"triggers": {
"editor_label": "Trigger options",
"doorbell": "Trigger by auto-detecting doorbell event entities",
"editor_label": "Triggers",
"entities": "Trigger from other entities",
"events": {
"add_new_event": "Add new event trigger",
"add_new_event": "Add event trigger",
"editor_label": "Home Assistant Events",
"event_data": "Event data filter",
"event_type": "Event type"
},
"doorbell": "Trigger by auto-detecting doorbell event entities",
"media_events": {
"clips": "Events with new clips",
"editor_label": "Trigger Media Events",
@@ -210,7 +221,7 @@
}
},
"webrtc_card": {
"editor_label": "WebRTC Card Options",
"editor_label": "WebRTC Card",
"entity": "WebRTC Card Camera Entity",
"url": "WebRTC Card Camera URL"
}
@@ -243,6 +254,36 @@
"thumbnails": "Thumbnails"
}
},
"ptz": {
"editor_label": "PTZ",
"hide_home": "Hide home & preset controls",
"hide_pan_tilt": "Hide pan & tilt control",
"hide_type": "Hide type toggle button",
"hide_zoom": "Hide zoom control",
"mode": "Mode",
"modes": {
"auto": "Automatic",
"off": "Off",
"on": "On"
},
"orientation": "Orientation",
"orientations": {
"horizontal": "Horizontal",
"vertical": "Vertical"
},
"position": "Position",
"positions": {
"bottom-left": "Bottom left",
"bottom-right": "Bottom right",
"top-left": "Top left",
"top-right": "Top right"
},
"type": "Default type",
"types": {
"buttons": "Buttons",
"gestures": "Gestures"
}
},
"thumbnails": {
"editor_label": "Thumbnails",
"mode": "Thumbnails mode",
@@ -306,6 +347,7 @@
"entity_parameters": "Query parameters added to the entity-based picture URLs (e.g. width=1920&height=1080)",
"mode": "Image mode",
"modes": {
"auto": "Automatically chosen based on configuration",
"camera": "Home Assistant camera snapshot of camera entity",
"default": "Default embedded image",
"entity": "Entity with entity_picture attribute",
@@ -371,6 +413,10 @@
"stack": "Stacked & clustered events"
},
"window_seconds": "Default timeline window length in seconds"
},
"transition_effects": {
"none": "No transition",
"slide": "Slide transition"
}
},
"dimensions": {
@@ -397,6 +443,9 @@
"ha": "Home Assistant Media Folder"
}
},
"image": {
"zoomable": "Whether the image can be zoomed and panned"
},
"live": {
"auto_mute": "Automatically mute live cameras",
"auto_pause": "Automatically pause live cameras",
@@ -413,6 +462,7 @@
"mute_microphone": "Mute microphone",
"reject": "Reject call",
"ringtone": {
"editor_label": "Ringtone",
"repeat": "Ringtone repeats per inbound call (0=indefinite)",
"type": "Ringtone for inbound calls",
"types": {
@@ -430,36 +480,7 @@
"unmute_audio": "Unmute audio",
"unmute_microphone": "Unmute microphone"
},
"editor_label": "Live Controls",
"ptz": {
"editor_label": "PTZ",
"hide_home": "Hide home & preset controls",
"hide_pan_tilt": "Hide pan & tilt control",
"hide_type": "Hide type toggle button",
"hide_zoom": "Hide zoom control",
"mode": "Mode",
"modes": {
"off": "Off",
"on": "On"
},
"orientation": "Orientation",
"orientations": {
"horizontal": "Horizontal",
"vertical": "Vertical"
},
"position": "Position",
"positions": {
"bottom-left": "Bottom left",
"bottom-right": "Bottom right",
"top-left": "Top left",
"top-right": "Top right"
},
"type": "Default type",
"types": {
"buttons": "Buttons",
"gestures": "Gestures"
}
}
"editor_label": "Live Controls"
},
"draggable": "Live cameras view can be dragged/swiped",
"lazy_load": "Live cameras are lazily loaded",
@@ -489,10 +510,6 @@
"lazy_load": "Media Viewer media is lazily loaded in carousel",
"snapshot_click_plays_clip": "Clicking on a snapshot plays a related clip",
"transition_effect": "Media Viewer transition effect",
"transition_effects": {
"none": "No transition",
"slide": "Slide transition"
},
"zoomable": "Media Viewer can be zoomed/panned"
},
"menu": {
@@ -524,6 +541,7 @@
"gallery": "Gallery",
"icon": "Icon",
"image": "Image",
"inert": "Button non-interactive",
"info": "Info",
"iris": "Iris / Default View / Unhide menu",
"live": "Live",
@@ -542,6 +560,7 @@
"screenshot": "Screenshot",
"set_review": "Set review status",
"snapshots": "Snapshots",
"state_color": "Color button by entity state",
"substreams": "Substream(s)",
"timeline": "Timeline",
"type": "Button type",
@@ -568,7 +587,7 @@
}
},
"overrides": {
"info": "This card has manually specified overrides that may override values shown in the visual editor. Consult the code editor to view or modify them"
"info": "Conditional overrides are active and may supersede values shown here. Edit them in the code editor"
},
"performance": {
"features": {
@@ -584,7 +603,7 @@
"box_shadow": "Shadows",
"editor_label": "Style Options"
},
"warning": "This card is in low profile mode, so defaults have changed to optimize performance"
"warning": "Low performance profile is active: defaults are optimized to reduce load"
},
"profiles": {
"casting": "Casting",
@@ -596,6 +615,11 @@
"remote_control": {
"entities": {
"camera": "Input Select entity to control camera",
"camera_priorities": {
"card": "Card",
"entity": "Entity"
},
"camera_priority": "Which camera selection takes priority",
"editor_label": "Remote Control Entities"
}
},
@@ -606,6 +630,7 @@
"enabled": "Item enabled",
"engine": "Camera engine",
"issues": "Issues",
"permanent": "Item keeps status bar shown",
"priority": "Item priority",
"resolution": "Resolution",
"severity": "Severity",
@@ -676,7 +701,8 @@
"default": "Change to or update default view",
"live": "Change to or update live view",
"media": "Change to the relevant media view for new media",
"none": "No action"
"none": "No action",
"update": "Update the current view"
},
"untrigger": "Untrigger action",
"untriggers": {
@@ -686,9 +712,9 @@
}
},
"editor_label": "Trigger behavior",
"event_hold_seconds": "Seconds to hold a momentary trigger (e.g. a doorbell press, an HA bus event) visible before the post-end untrigger delay",
"filter_selected_camera": "Only trigger on selected camera",
"show_trigger_status": "Show pulsing border when triggered",
"event_hold_seconds": "Seconds to hold a momentary trigger (e.g. a doorbell press, an HA bus event) visible before the post-end untrigger delay",
"untrigger_delay_seconds": "Seconds delay after trigger state change before untrigger",
"untrigger_force_seconds": "Seconds before forced untrigger"
},
@@ -697,6 +723,7 @@
"clip": "Most recent clip",
"clips": "Clips gallery",
"current": "Current view",
"diagnostics": "Diagnostics",
"folder": "Folder media",
"folders": "Folders gallery",
"gallery": "Default media gallery",
@@ -718,13 +745,15 @@
"single": "Show single media viewer"
},
"editor": {
"add_new_camera": "Add new camera",
"add_new_folder": "Add new folder",
"add_new_camera": "Add camera",
"back": "Back",
"edit": "Edit",
"add_new_folder": "Add folder",
"camera": "Camera",
"cameras": "Cameras",
"cameras_secondary": "What cameras to render on this card",
"delete": "Delete",
"dimensions": "Card dimensions",
"dimensions": "Dimensions",
"dimensions_secondary": "Card dimensions & shape options",
"docs": "Documentation",
"folders": "Folders",
@@ -736,16 +765,14 @@
"media_gallery": "Media gallery",
"media_gallery_secondary": "Media gallery options",
"media_viewer": "Media viewer",
"media_viewer_secondary": "Viewer for static media (clips, snapshots or recordings)",
"media_viewer_secondary": "Viewer for static media",
"menu": "Menu",
"menu_secondary": "Menu look & feel options",
"move_down": "Move down",
"move_up": "Move up",
"overrides": "Overrides are active",
"overrides_secondary": "Dynamic configuration overrides detected",
"performance": "Performance",
"performance_secondary": "Card performance options",
"profiles": "Configuration profiles",
"profiles": "Profiles",
"profiles_secondary": "Choose pre-configured sets of defaults",
"remote_control": "Remote Control",
"remote_control_secondary": "Options for remote controlling the card",
@@ -775,11 +802,11 @@
"error": {
"awaiting_live": "Waiting for live stream to load...",
"awaiting_media": "Waiting for media to load",
"call_unavailable_heading": "Two-way audio unavailable",
"call_invalid_target": "The requested camera or stream is not available to call.",
"call_microphone_forbidden": "Microphone access has been denied for this page. Update your browser permissions and try again.",
"call_microphone_unsupported": "Microphone access is not available in this browser (e.g. requires HTTPS).",
"call_no_two_way_audio": "This camera does not support two-way audio.",
"call_unavailable_heading": "Two-way audio unavailable",
"camera_initialization": "Camera initialization failed",
"camera_initialization_reolink": "Could not initialize Reolink camera",
"configuration_error": "Configuration error",
@@ -828,7 +855,7 @@
},
"config_upgrade": {
"heading": "Configuration upgrade available",
"text": "A configuration upgrade is available. To upgrade, edit this card (Dashboard pencil icon \u2192 Three-dot menu \u2192 Edit) and click the 'Automatic Upgrade' button in the card editor"
"text": "A configuration upgrade is available. To upgrade, edit this card (Dashboard pencil icon → Three-dot menu → Edit) and click the 'Automatic Upgrade' button in the card editor"
},
"config_upgrade_failure": {
"heading": "Configuration could not be fully upgraded",
+28 -28
View File
@@ -178,6 +178,29 @@
"thumbnails": "Vignettes"
}
},
"ptz": {
"editor_label": "PTZ",
"hide_home": "Cacher le bouton position d'origine",
"hide_pan_tilt": "Cacher les boutons panoramiques/inclinaison",
"hide_zoom": "Cacher le bouton de zoom",
"mode": "Mode",
"modes": {
"off": "Désactivé",
"on": "Activé"
},
"orientation": "Orientation",
"orientations": {
"horizontal": "Horizontale",
"vertical": "Verticale"
},
"position": "Position",
"positions": {
"bottom-left": "En bas à gauche",
"bottom-right": "En bas à droite",
"top-left": "En haut à gauche",
"top-right": "En haut à droite"
}
},
"thumbnails": {
"editor_label": "Vignettes",
"mode": "Mode vignettes",
@@ -284,6 +307,10 @@
"stack": "Événements empilés et groupés"
},
"window_seconds": "Durée par défaut de la vue chronologique en secondes"
},
"transition_effects": {
"none": "Pas de transition",
"slide": "Transition de diapositive"
}
},
"dimensions": {
@@ -302,30 +329,7 @@
"auto_play": "Lire automatiquement les caméras en direct",
"auto_unmute": "Activer automatiquement le son des caméras en direct",
"controls": {
"editor_label": "Contrôles en direct",
"ptz": {
"editor_label": "PTZ",
"hide_home": "Cacher le bouton position d'origine",
"hide_pan_tilt": "Cacher les boutons panoramiques/inclinaison",
"hide_zoom": "Cacher le bouton de zoom",
"mode": "Mode",
"modes": {
"off": "Désactivé",
"on": "Activé"
},
"orientation": "Orientation",
"orientations": {
"horizontal": "Horizontale",
"vertical": "Verticale"
},
"position": "Position",
"positions": {
"bottom-left": "En bas à gauche",
"bottom-right": "En bas à droite",
"top-left": "En haut à gauche",
"top-right": "En haut à droite"
}
}
"editor_label": "Contrôles en direct"
},
"draggable": "La vue des caméras en direct peut être déplacée/glissée",
"lazy_load": "Les caméras en direct sont chargeés en différé",
@@ -353,10 +357,6 @@
"lazy_load": "Les médias Media Viewer sont chargés en différé dans le carrousel",
"snapshot_click_plays_clip": "Cliquer sur un instantané lit l'extrait associé",
"transition_effect": "Effet de transition de la visionneuse multimédia",
"transition_effects": {
"none": "Pas de transition",
"slide": "Transition de diapositive"
},
"zoomable": "La visionneuse multimédia peut être zoomée/panoramique"
},
"menu": {
+5 -5
View File
@@ -163,6 +163,10 @@
"clustering_threshold": "Il conteggio degli eventi in cui sono raggruppati (0 = nessun clustering)",
"show_recordings": "Mostra registrazioni",
"window_seconds": "La lunghezza predefinita della vista della sequenza temporale in secondi"
},
"transition_effects": {
"none": "Nessuna transizione",
"slide": "Transizione diapositiva"
}
},
"dimensions": {
@@ -199,11 +203,7 @@
},
"draggable": "Il visualizzatore multimediale può essere trascinato oppure può scorrere",
"lazy_load": "Il media Viewer viene caricato pigramente nel carosello",
"transition_effect": "Effetto di transizione del visualizzatore multimediale",
"transition_effects": {
"none": "Nessuna transizione",
"slide": "Transizione diapositiva"
}
"transition_effect": "Effetto di transizione del visualizzatore multimediale"
},
"menu": {
"alignment": "Allineamento dei menu",
+28 -28
View File
@@ -195,6 +195,29 @@
"thumbnails": "Miniatury"
}
},
"ptz": {
"editor_label": "PTZ",
"hide_home": "Ukryj przyciski Start i presetów",
"hide_pan_tilt": "Ukryj sterowanie obrotem (Pan & Tilt)",
"hide_zoom": "Ukryj sterowanie przybliżeniem (Zoom)",
"mode": "Tryb",
"modes": {
"off": "Wyłączony",
"on": "Włączony"
},
"orientation": "Orientacja",
"orientations": {
"horizontal": "Pozioma",
"vertical": "Pionowa"
},
"position": "Pozycja",
"positions": {
"bottom-left": "Dół, lewo",
"bottom-right": "Dół, prawo",
"top-left": "Góra, lewo",
"top-right": "Góra, prawo"
}
},
"thumbnails": {
"editor_label": "Miniatury",
"events_media_types": {
@@ -312,6 +335,10 @@
"stack": "Zdarzenia ułożone w stos i grupowane"
},
"window_seconds": "Domyślna długość widoku osi czasu (sekundy)"
},
"transition_effects": {
"none": "Brak przejścia",
"slide": "Przesunięcie (Slide)"
}
},
"dimensions": {
@@ -344,30 +371,7 @@
"auto_play": "Automatycznie odtwarzaj kamery na żywo",
"auto_unmute": "Automatycznie włącz dźwięk kamer na żywo",
"controls": {
"editor_label": "Sterowanie na żywo",
"ptz": {
"editor_label": "PTZ",
"hide_home": "Ukryj przyciski Start i presetów",
"hide_pan_tilt": "Ukryj sterowanie obrotem (Pan & Tilt)",
"hide_zoom": "Ukryj sterowanie przybliżeniem (Zoom)",
"mode": "Tryb",
"modes": {
"off": "Wyłączony",
"on": "Włączony"
},
"orientation": "Orientacja",
"orientations": {
"horizontal": "Pozioma",
"vertical": "Pionowa"
},
"position": "Pozycja",
"positions": {
"bottom-left": "Dół, lewo",
"bottom-right": "Dół, prawo",
"top-left": "Góra, lewo",
"top-right": "Góra, prawo"
}
}
"editor_label": "Sterowanie na żywo"
},
"draggable": "Widok kamer można przeciągać",
"lazy_load": "Kamery ładowane leniwie (na żądanie)",
@@ -395,10 +399,6 @@
"lazy_load": "Media ładowane leniwie w karuzeli",
"snapshot_click_plays_clip": "Kliknięcie w zrzut odtwarza powiązany klip",
"transition_effect": "Efekt przejścia przeglądarki mediów",
"transition_effects": {
"none": "Brak przejścia",
"slide": "Przesunięcie (Slide)"
},
"zoomable": "Przeglądarkę mediów można przybliżać/przesuwać"
},
"menu": {
+5 -5
View File
@@ -163,6 +163,10 @@
"clustering_threshold": "A contagem de eventos nos quais eles são agrupados (0 = sem agrupamento)",
"show_recordings": "Mostrar gravações",
"window_seconds": "A duração padrão da visualização da linha do tempo em segundos"
},
"transition_effects": {
"none": "Sem transição",
"slide": "Transição de slides"
}
},
"dimensions": {
@@ -200,11 +204,7 @@
"draggable": "Visualizador de eventos pode ser arrastado/deslizado",
"lazy_load": "A mídia do Visualizador de eventos é carregada lentamente no carrossel",
"snapshot_click_plays_clip": "Clicar em um instantâneo reproduz um clipe relacionado",
"transition_effect": "Efeito de transição do Visualizador de eventos",
"transition_effects": {
"none": "Sem transição",
"slide": "Transição de slides"
}
"transition_effect": "Efeito de transição do Visualizador de eventos"
},
"menu": {
"alignment": "Alinhamento do menu",
+5 -5
View File
@@ -163,6 +163,10 @@
"clustering_threshold": "A contagem de eventos nos quais eles são agrupados (0 = sem agrupamento)",
"show_recordings": "Mostrar gravações",
"window_seconds": "A duração padrão da visualização da linha do tempo em segundos"
},
"transition_effects": {
"none": "Sem transição",
"slide": "Transição de slides"
}
},
"dimensions": {
@@ -199,11 +203,7 @@
},
"draggable": "Visualizador de eventos pode ser arrastado/deslizado",
"lazy_load": "A mídia do Visualizador de eventos é carregada lentamente no carrossel",
"transition_effect": "Efeito de transição do Visualizador de eventos",
"transition_effects": {
"none": "Sem transição",
"slide": "Transição de slides"
}
"transition_effect": "Efeito de transição do Visualizador de eventos"
},
"menu": {
"alignment": "Alinhamento do menu",
+10 -1
View File
@@ -91,7 +91,16 @@ export function localize(string: string, search = '', replace = ''): string {
} catch (_e) {}
if (!translated) {
translated = string.split('.').reduce((o, i) => o[i], languages[DEFAULT_LANG]);
try {
translated = string.split('.').reduce((o, i) => o[i], languages[DEFAULT_LANG]);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (_e) {}
}
// Fall back to the key itself: a missing translation shows as its (self-
// describing) key rather than throwing and blanking the entire component.
if (!translated) {
return string;
}
if (search !== '' && replace !== '') {