Files
homeassistant_espscreen/screen_manager/translations/en.json
T
Xandrossian 9857cc3bda
CI / checks (push) Successful in 12m50s
CI / firmware (add-on) (push) Successful in 18m19s
CI / firmware (min_version) (push) Successful in 17m55s
Add the Elecrow CrowPanel 7.0" as a third board, and take the packages and the add-on from Gitea (0.2.93)
A board file for the Elecrow CrowPanel 7.0" (DIS08070H, ESP32-S3-WROOM-1-N4R8): 800x480 through mipi_rgb, GT911 on the
ESP32-S3's USB pins (elecrow_usb_phy.h frees them, behind a flag only this board sets), the Guition's vertical sizes
across a wider page, no rotation. Its 4 MB of flash take the CYD's budget: a partition table of the component's
(smart_display: partitions: 4mb_wide_slots, 1,984 KB slots), the icon fonts at 2 bits a pixel and the TLS client only
bring the firmware to 1,865,440 bytes, 91.8 % of a slot, with camera images kept. docs/ELECROW.md has the numbers and
the trade.

The add-on reads a large board's name from the type sensor's value, the editor offers the board under New screen and
draws the wide preview, tools/check.sh builds it with the budget, render_topbar and capture_ui take the panel's size.
Firmware 0.2.79; the CYD image is unchanged (1,633,760 bytes).

This fork builds from gittea.trippedonmy.name/Xandrossian/homeassistant_espscreen: the packages, the fonts, the
component and the add-on repository point there instead of GitHub.
2026-09-20 23:18:01 -07:00

1848 lines
77 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"_meta": {
"name": "English (US)",
"english": "English (US)",
"script": "latin",
"plural": "one_other",
"clock": "12",
"checked": true
},
"screen": {
"number": {
"decimal": ".",
"group": ",",
"group_min": "1",
"percent": "%"
},
"time": {
"just_now": "Just now",
"minutes_ago": "{n} min ago",
"hours_ago": "1 hour ago | {n} hours ago",
"yesterday": "Yesterday",
"days_ago": "1 day ago | {n} days ago",
"weeks_ago": "1 week ago | {n} weeks ago",
"months_ago": "1 month ago | {n} months ago",
"years_ago": "1 year ago | {n} years ago",
"in_minutes": "In {n} min",
"in_hours": "In 1 hour | In {n} hours",
"tomorrow": "Tomorrow",
"in_days": "In 1 day | In {n} days",
"am": "AM",
"pm": "PM"
},
"date": {
"weekdays": [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"weekdays_short": [
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat"
],
"weekdays_min": [
"Su",
"Mo",
"Tu",
"We",
"Th",
"Fr",
"Sa"
],
"months": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"months_short": [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
],
"top_bar": "{weekday_min} {day} {month}",
"full": "{weekday} {day} {month}",
"day_month": "{day} {month}",
"weekday_time": "{weekday} {time}"
},
"duration": {
"seconds": "{n} s",
"minutes": "{n} min",
"hours": "{n} h",
"hours_minutes": "{h} h {m} min",
"days": "{n} d",
"days_hours": "{d} d {h} h"
},
"status": {
"connecting": "Connecting to Home Assistant",
"waiting": "Waiting for ESP Screens",
"loading_tiles": "Loading tiles...",
"ha_not_connected": "HA not connected",
"manager_not_active": "ESP Screens not active",
"choose_tiles": "Choose tiles in HA",
"home": "Home",
"no_network": "No network"
},
"settings": {
"title": "Settings",
"brightness": "Brightness",
"night": "Night",
"screen": "Screen",
"this_screen": "This screen",
"dark_mode": "Dark mode",
"auto_standby": "Auto standby",
"standby_after": "Standby after",
"standby_brightness": "Standby brightness",
"night_mode": "Night mode",
"starts": "Starts",
"ends": "Ends",
"night_brightness": "Night brightness",
"back_to_page_1": "Back to page 1",
"after": "After",
"also_on_standby": "Also on standby",
"swipe_between_pages": "Swipe between pages",
"page_buttons": "Page buttons",
"rotation": "Rotation",
"address": "Address",
"firmware": "Firmware",
"home_assistant": "Home Assistant",
"restart": "Restart",
"connected": "Connected",
"not_connected": "Not connected",
"tap_again_to_restart": "Tap again to restart",
"seconds": "{n} sec",
"minutes": "{n} min",
"hours": "{n} h",
"hours_minutes": "{h} h {m}"
},
"tile": {
"tap_to_open": "Tap to open",
"page": "Page {n}",
"refused": "Refused",
"command_sent": "Command sent...",
"confirmed": "Confirmed by Home Assistant"
},
"alert": {
"notification": "Notification",
"ok": "OK"
},
"light": {
"color": "Color",
"color_temperature": "Color temperature",
"brightness": "Brightness",
"waiting": "Waiting..."
},
"effects": {
"effect": "Effect",
"nothing": "Nothing to choose",
"loading": "Loading...",
"not_connected": "Not connected"
},
"climate": {
"target": "Target",
"mode": "Mode",
"fan": "Fan",
"swing": "Swing",
"now": "Now {value}"
},
"vacuum": {
"check_robot": "Check the robot in HA",
"auto_suction": "Automatic suction power",
"robot_chooses": "The robot chooses suction and water",
"per_room": "Suction and water as set per room",
"speed_quiet": "Quiet",
"speed_balanced": "Normal",
"speed_turbo": "Turbo",
"speed_max": "Max",
"pause_cleaning": "Pause cleaning",
"pause": "Pause",
"resume": "Resume",
"start_cleaning": "Start cleaning",
"clean": "Clean",
"dock": "Dock"
},
"cover": {
"position": "Position",
"tilt": "Tilt",
"tilt_value": "Tilt {n}%"
},
"weather": {
"feels_like": "Feels like {n}°",
"no_forecast": "No daily forecast from Home Assistant",
"coming_days": "Coming days"
},
"history": {
"no_data": "No data",
"average": "average",
"average_of": "average of {duration}",
"now": "Now",
"range_hour": "1 hour",
"range_day": "24 hours",
"range_week": "1 week",
"high": "High {value}",
"low": "Low {value}",
"times": "once | {n} times",
"loading": "Loading history...",
"empty": "No history in this period",
"unavailable": "No history available"
},
"media": {
"muted": "Muted",
"not_playing": "Not playing",
"loading": "Loading"
},
"timer": {
"running": "Running",
"paused": "Paused",
"stopped": "Stopped",
"pause": "Pause",
"start": "Start",
"cancel": "Cancel",
"paused_left": "Paused {time}"
},
"sun": {
"name": "Sun",
"sunrise": "Sunrise {time}",
"sunset": "Sunset {time}",
"rise": "rise {time}",
"set": "set {time}"
},
"script": {
"running": "Running...",
"never_run": "Never run",
"last_time": "Last {time}",
"yesterday_time": "Yesterday {time}",
"yesterday_time_short": "Yest. {time}",
"last_date": "Last {date}"
},
"camera": {
"no_image": "No image from this camera",
"loading": "Loading image",
"live": "Live",
"recording": "Recording",
"tap_to_view": "Tap to view",
"no_image_yet": "No image yet"
},
"calibration": {
"title": "Follow the calibration wizard",
"touch_check": "GT911 touch check",
"hold": "Hold each tap for a moment",
"crosshair": "Tap the crosshair\nPoint {point}/5 - tap {tap}/3",
"gently": "Tap gently, a bit longer",
"same": "Tap the same crosshair 3 times",
"rejected": "Measurement rejected; try again",
"save_failed": "Save failed; try again"
},
"ha": {
"on": "On",
"off": "Off",
"unavailable": "Unavailable",
"climate": {
"off": "Off",
"heat": "Heat",
"cool": "Cool",
"heat_cool": "Heat/Cool",
"auto": "Auto",
"dry": "Dry",
"fan_only": "Fan only"
},
"hvac_action": {
"heating": "Heating",
"cooling": "Cooling",
"idle": "Idle",
"off": "Off",
"drying": "Drying",
"fan": "Fan",
"preheating": "Preheating",
"defrosting": "Defrosting"
},
"cover": {
"open": "Open",
"closed": "Closed",
"opening": "Opening",
"closing": "Closing"
},
"media": {
"playing": "Playing",
"paused": "Paused",
"idle": "Idle",
"standby": "Standby"
},
"person": {
"home": "Home",
"not_home": "Away"
},
"sun": {
"above_horizon": "Above horizon",
"below_horizon": "Below horizon"
},
"vacuum": {
"docked": "Docked",
"cleaning": "Cleaning",
"paused": "Paused",
"returning": "Returning to dock",
"idle": "Idle"
},
"weather": {
"sunny": "Sunny",
"clear_night": "Clear, night",
"cloudy": "Cloudy",
"partlycloudy": "Partly cloudy",
"rainy": "Rainy",
"pouring": "Pouring",
"snowy": "Snowy",
"snowy_rainy": "Snowy, rainy",
"fog": "Fog",
"hail": "Hail",
"lightning": "Lightning",
"lightning_rainy": "Lightning, rainy",
"windy": "Windy",
"exceptional": "Exceptional"
},
"binary": {
"battery_on": "Low",
"battery_off": "Normal",
"battery_charging_on": "Charging",
"battery_charging_off": "Not charging",
"carbon_monoxide_on": "Detected",
"carbon_monoxide_off": "Clear",
"cold_on": "Cold",
"cold_off": "Normal",
"connectivity_on": "Connected",
"connectivity_off": "Disconnected",
"door_on": "Open",
"door_off": "Closed",
"garage_door_on": "Open",
"garage_door_off": "Closed",
"gas_on": "Detected",
"gas_off": "Clear",
"heat_on": "Hot",
"heat_off": "Normal",
"light_on": "Light detected",
"light_off": "No light",
"lock_on": "Unlocked",
"lock_off": "Locked",
"moisture_on": "Wet",
"moisture_off": "Dry",
"motion_on": "Detected",
"motion_off": "Clear",
"moving_on": "Moving",
"moving_off": "Not moving",
"occupancy_on": "Detected",
"occupancy_off": "Clear",
"opening_on": "Open",
"opening_off": "Closed",
"plug_on": "Plugged in",
"plug_off": "Unplugged",
"power_on": "On",
"power_off": "Off",
"presence_on": "Home",
"presence_off": "Away",
"problem_on": "Problem",
"problem_off": "OK",
"running_on": "Running",
"running_off": "Not running",
"safety_on": "Unsafe",
"safety_off": "Safe",
"smoke_on": "Detected",
"smoke_off": "Clear",
"sound_on": "Detected",
"sound_off": "Clear",
"tamper_on": "Tampering detected",
"tamper_off": "Clear",
"update_on": "Update available",
"update_off": "Up-to-date",
"vibration_on": "Detected",
"vibration_off": "Clear",
"window_on": "Open",
"window_off": "Closed"
},
"button": {
"activate": "Activate",
"run": "Run",
"press": "Press"
},
"climate_fan": {
"auto": "Auto",
"low": "Low",
"medium": "Medium",
"high": "High",
"middle": "Middle",
"focus": "Focus",
"diffuse": "Diffuse",
"top": "Top",
"on": "On",
"off": "Off"
},
"climate_swing": {
"on": "On",
"off": "Off",
"both": "Both",
"vertical": "Vertical",
"horizontal": "Horizontal"
}
}
},
"addon": {
"errors": {
"language_choice": "Choose a language from the list.",
"region_choice": "Choose a clock and a number format from the lists.",
"open_through_ha": "Open this page through Home Assistant.",
"refresh_page": "Refresh this page and try again.",
"ha_refused": "Home Assistant didn't take it: {reason}.",
"ha_refused_change": "Home Assistant didn't take the change: {reason}.",
"no_reason": "no reason given",
"ha_unreachable": "Home Assistant isn't reachable right now. Try again in a moment.",
"too_large": "That request is too large.",
"invalid_input": "Invalid input. Check the name, board, and chosen tiles.",
"unknown_screen": "Unknown screen.",
"not_paired": "This isn't a paired ESP screen. Refresh the overview.",
"choose_icon": "Choose an icon from the list.",
"skill_not_written": "Couldn't write the skill to {folder} ({reason}).",
"settings": {
"unknown": "Unknown screen settings; refresh the management page.",
"invalid_value": "Invalid value for {setting}.",
"dim_above_normal": "Standby and night brightness may not be higher than normal.",
"offline": "This screen is offline. You can change its settings once it is back.",
"unavailable": "{names} can't be changed now: the entity is off in Home Assistant, or the screen is restarting.",
"rotation": "Rotation requires a Guition with firmware 0.2.9 or newer."
},
"layout": {
"invalid": "Invalid layout.",
"title": "Give the screen a title of at most 96 bytes.",
"tiles_max": "Choose at most 1 tile. | Choose at most {n} tiles.",
"unsupported": "This entity isn't supported.",
"once": "An entity can only appear once on a screen.",
"tile_name": "A tile name may contain at most 80 bytes.",
"unknown_settings": "Unknown tile settings.",
"navigation_size": "A navigation tile is single or double width.",
"background": "Choose a pastel background color from the palette.",
"invalid_setting": "Invalid tile setting: {setting}",
"no_toggle": "This entity doesn't support an on/off action.",
"builtin_action": "A built-in card can't perform an action.",
"no_mini_slider": "This entity doesn't support a mini-slider.",
"history_hours": "History: choose 1, 6, or 24 hours.",
"refresh": "Live picture: refresh every 15 or 30 seconds.",
"watch_or_slider": "Choose large value or mini-slider.",
"no_direct_control": "This entity doesn't support that direct control.",
"position": "Invalid tile position; refresh the management page.",
"full_page_top": "A full-page tile starts at the top of its page.",
"wide_left": "A double-width tile starts in the left column.",
"same_spot": "Two tiles are in the same spot.",
"pages": "A screen has 1 page. | A screen has 1 to {n} pages.",
"eight_pages": "These tiles don't fit on eight pages; remove a tile or make one smaller.",
"camera_guition": "Camera images need a Guition screen.",
"firmware_first": "Install screen firmware {version} or newer first for these tiles.",
"entity_gone": "A chosen entity no longer exists. Look up the new entity.",
"ids_too_long": "These tiles' entity IDs are too long together to fit in one message to the screen; remove a few tiles."
},
"top_bar": {
"invalid": "Invalid top bar; refresh the management page.",
"full": "The top bar has room for at most 1 item. | The top bar has room for at most {n} items.",
"invalid_setting": "Invalid setting in the top bar.",
"unknown_setting": "Unknown setting in the top bar; refresh the management page.",
"entity": "This entity can't go in the top bar.",
"unknown_item": "Unknown item in the top bar; refresh the management page.",
"twice": "This item is already in the top bar.",
"entity_gone": "An entity in the top bar no longer exists. Choose a different one."
},
"tap_action": {
"choose": "Choose an action from the list.",
"fields_max": "An action on a tap sets at most 1 field. | An action on a tap sets at most {n} fields.",
"field_not_allowed": "{field} is not a field an action on a tap can set.",
"unsendable": "A value of the action is something the screen cannot send.",
"too_long": "The values of the action are too long for the screen."
},
"events": {
"none_paired": "none yet",
"name_the_screen": "Name the screen. Paired: {screens}.",
"no_such_screen": "No screen called \"{name}\". Paired: {screens}.",
"several_screens": "\"{name}\" fits more than one screen: {screens}.",
"name_the_entity": "Name the entity.",
"not_for_a_screen": "{entity} cannot go on a screen.",
"not_on_screen": "{entity} is not on this screen.",
"add_it_first": "{entity} is not on this screen; add it first.",
"not_on_spot": "{entity} is not on spot {slot}.",
"not_on_page": "{entity} is not on page {page}.",
"move_where": "Name the page or the spot to move it to.",
"spot_taken": "That spot is taken by {entity}; give another spot or move that one first.",
"page_not_empty": "Page {page} is not empty; a full-page tile needs a page of its own.",
"no_empty_page": "No page is empty; a full-page tile needs a page of its own.",
"page_full": "Page {page} is full.",
"no_room": "This screen has no room left.",
"screen_full": "This screen already has 1 tile; remove one first. | This screen already has {n} tiles; remove one first.",
"page_range": "Choose a page between 1 and {last}.",
"spot_range": "Choose a spot between 0 and {last}.",
"row_needs_page": "Name the page for that row or column.",
"row_range": "Choose a row between 1 and {last}.",
"column": "The column is left or right.",
"full_page_alone": "A full-page tile takes all of page {page}; nothing else fits there.",
"does_not_fit": "That does not fit on page {page}; a double-width tile takes two spots.",
"order_needed": "Give the entities in the order you want them.",
"order_not_on_screen": "Not on this screen: {entities}.",
"order_not_on_page": "Not on page {page}: {entities}. Move it there first.",
"named_too_often": "Named more often than it is on this screen: {entities}.",
"named_too_often_page": "Named more often than it is on page {page}: {entities}."
},
"home_assistant": {
"action_not_offered": "Home Assistant doesn't offer {action} for {name}. Choose an action from the list.",
"action_answers_only": "{action} only answers with data, which a screen can't show.",
"no_such_field": "Home Assistant has no field {field} in {action} for {name}.",
"field_needed": "{action} needs a value for {field}.",
"no_on_off": "Home Assistant can't turn {name} on and off, so On / off would do nothing. Choose another tap action.",
"no_small_slider": "{name} has nothing a small slider can change in Home Assistant.",
"no_graph": "{name} has no numbers to draw a graph of.",
"no_forecast": "{name} has no daily forecast in Home Assistant.",
"no_control": "Home Assistant doesn't offer that direct control for {name}."
},
"alerts": {
"invalid": "Invalid alert.",
"cannot_show": "{name} can't show an alert: {reason}.",
"no_device_name": "device name unknown",
"offline": "offline",
"firmware": "firmware {version}",
"unknown_version": "unknown",
"not_ready": "not ready"
},
"firmware": {
"board_and_name": "Choose a board and a unique name (lowercase letters, digits, dashes; 30 characters max).",
"friendly_name": "Give the screen a recognizable name (60 characters max).",
"choose_profile": "Choose an existing YAML profile.",
"profile_missing": "Profile doesn't exist in the ESPHome folder.",
"secrets_invalid": "secrets.yaml in the ESPHome folder isn't valid YAML. Fix the file first; it won't be overwritten.",
"wifi_needed": "Fill in the Wi-Fi name and password; they'll be saved in ESPHome secrets.yaml.",
"wifi_not_set": "Wi-Fi couldn't be set in secrets.yaml. Fill in wifi_ssid and wifi_password there yourself.",
"name_exists": "This name already exists. Use the existing profile for updates.",
"override_exists": "This name already has a local override. Restore or remove it before creating a new screen with this name.",
"override_symlink": "The local override is a symbolic link; replace it with a regular file first.",
"other_include": "This profile already has a different local_overrides include.",
"profile_invalid": "The screen profile isn't valid YAML; fix it before adding an override.",
"no_packages": "This profile has no packages section that ESP Screens can extend.",
"override_invalid": "Invalid override data.",
"yaml_needed": "Enter YAML text first.",
"override_too_large": "The override is too large. Keep it below 12 KB.",
"yaml_error_line": "YAML error on line {line}: {problem}.",
"yaml_error": "YAML error: {problem}.",
"invalid_yaml": "invalid YAML",
"override_object": "The override must contain a YAML object, for example display: or substitutions:.",
"sections_managed": "These sections stay managed by ESP Screens: {names}.",
"substitutions_managed": "These substitutions stay managed by ESP Screens: {names}.",
"usb_port": "Choose the connected USB port from the list.",
"busy_wait": "A build or installation is already running. Wait for it to finish.",
"busy": "A build or installation is already running.",
"no_esphome": "The ESPHome CLI is missing from this installation.",
"still_building": "The firmware is still being built. Download it when the build has finished.",
"build_first": "Build the firmware first; the download appears when the build has finished.",
"unknown_action": "Unknown firmware action.",
"host": "Enter the IP address or hostname of the intended screen."
},
"updates": {
"automatic": "Choose on or off for automatic updates.",
"busy": "An update is already running. Wait for it to finish.",
"unknown_screen": "Unknown screen. Refresh the overview.",
"offline": "This screen is offline; updating is possible once it's back.",
"latest": "This screen already has the latest firmware.",
"enter_ip": "Enter this screen's IP address.",
"no_profile": "No ESPHome profile found for this screen. Check the name in the ESPHome folder.",
"ip_unknown": "IP address unknown. Enter it once; new firmware reports it itself after that.",
"all_updated": "All reachable screens are already updated."
}
},
"status": {
"first_tiles": "Choose your first tiles",
"saved": "Saved; waiting for sync",
"firmware_needed": "Layout saved; firmware {version}+ needed for these tiles",
"too_large": "Layout saved; too large for one message to the screen, remove a few tiles",
"sent": "Sent to Home Assistant",
"offline": "Screen offline; changes saved",
"retrying": "Sending failed; retrying automatically",
"screen": {
"synced": "Synced",
"loading_tiles": "Loading tiles",
"layout_received": "Layout received",
"resend_needed": "Resend needed",
"ready": "Ready for tile configuration",
"error": "Error: {reason}"
}
},
"updates": {
"offline": "Screen was offline; will retry next time.",
"unknown_target": "Profile or IP address unknown; update this screen manually.",
"build_failed": "Build or install failed; see the log under Firmware & USB.",
"no_report": "Screen didn't report back with firmware {version}; check the screen.",
"dropped_off": "Screen dropped off after the update; check the screen.",
"updated": "Updated to firmware {version}."
},
"notify": {
"update_stopped": "Automatic update stopped at {name}: {reason} The remaining screens were not touched."
},
"labels": {
"built_into_screen": "Built into the screen",
"backgrounds": {
"auto": "Default",
"none": "None",
"red": "Red",
"orange": "Orange",
"yellow": "Yellow",
"green": "Green",
"mint": "Mint",
"blue": "Blue",
"purple": "Purple",
"pink": "Pink",
"gray": "Gray"
},
"controls": {
"none": "None",
"climate": {
"setpoint": "Temperature − / +",
"mode": "Off, heat, cool"
},
"switch": {
"toggle": "On/off switch"
},
"input_boolean": {
"toggle": "On/off switch"
},
"light": {
"toggle": "On/off switch",
"brightness": "Brightness slider"
},
"fan": {
"toggle": "On/off switch",
"speed": "Speed slider"
},
"vacuum": {
"buttons": "Start, stop, dock"
},
"cover": {
"buttons": "Open, stop, close",
"position": "Position slider"
},
"media_player": {
"volume": "Volume and mute",
"playback": "Previous, play/pause, next"
},
"number": {
"stepper": "Value − / +",
"slider": "Slider"
},
"input_number": {
"stepper": "Value − / +",
"slider": "Slider"
},
"select": {
"stepper": "Previous / next choice"
},
"input_select": {
"stepper": "Previous / next choice"
},
"timer": {
"buttons": "Start/pause and cancel"
},
"scene": {
"run": "Activate button"
},
"script": {
"run": "Run button"
},
"button": {
"run": "Press button"
},
"input_button": {
"run": "Press button"
}
},
"top_bar": {
"builtin": {
"clock": "Time",
"analog": "Analog clock",
"date": "Date"
},
"contents": {
"state": "Status",
"last_changed": "Last changed"
},
"shows": {
"always": "Always",
"active": "Only when active"
},
"suggestions": {
"temperature": "Temperature",
"humidity": "Humidity",
"power": "Power usage",
"motion": "Last motion",
"weather": "Weather",
"people_home": "People home",
"sun": "Sunrise and sunset",
"co2": "CO₂"
}
}
},
"alerts": {
"fields": {
"title": {
"label": "Title",
"help": "A single line at the top of the card; what doesn't fit gets an ellipsis. Empty becomes \"Notification\".",
"example": "Someone is at the door"
},
"subtitle": {
"label": "Subtitle",
"help": "Explanation under the title, across multiple lines; a line break is fine. Empty is fine.",
"example": "Door 3, back"
},
"icon": {
"label": "Icon",
"help": "A name from the list, also as mdi:name or as a hex codepoint (F12E6). Unknown or empty gives the warning triangle."
},
"color": {
"label": "Color",
"help": "One of the nine pastel colors of the tiles. Empty gives the white card."
},
"button_text": {
"label": "Button text",
"help": "The text on the button. Empty is \"OK\".",
"example": "Coming"
},
"timeout": {
"label": "Timeout",
"help": "Seconds after which the card disappears on its own. 0 waits for the button, however long that takes. The button always closes it immediately, even with a timeout."
},
"flash": {
"label": "Blinking",
"help": "On makes the backlight blink four times when the alert arrives; the screen then just stays on."
},
"camera": {
"label": "Camera",
"help": "A camera or image entity. A Guition with firmware 0.2.57+ shows its picture of that moment across the top of the card; a tap on it opens the camera full screen. Other screens show the alert without it. Only through the esp_screens_show_alert event."
},
"action": {
"label": "Action",
"help": "A Home Assistant action, such as script.open_gate or light.turn_off, performed once when the button is pressed on any screen. `data` gives its fields (entity_id, brightness, ...). A timeout or a new alert leaves it unperformed. Only through the esp_screens_show_alert event."
}
},
"endings": {
"ok": "The button was pressed",
"timeout": "The timeout ran out",
"replaced": "A new alert came over it",
"remote": "dismiss_alert from Home Assistant"
}
},
"icons": {
"groups": {
"lighting": "Lighting",
"rooms": "Rooms",
"climate": "Climate",
"weather": "Weather",
"media_and_music": "Media and music",
"security": "Security",
"appliances": "Appliances",
"energy": "Energy",
"window_coverings": "Window coverings",
"garden_and_pets": "Garden and pets",
"people_and_travel": "People and travel",
"other": "Other"
},
"names": {
"lightbulb": "Light bulb",
"lightbulb_group": "Lights",
"ceiling_light": "Ceiling light",
"chandelier": "Chandelier",
"lamp": "Table lamp",
"floor_lamp": "Floor lamp",
"desk_lamp": "Desk lamp",
"wall_sconce_flat": "Wall light",
"light_recessed": "Recessed light",
"spotlight_beam": "Spotlight",
"led_strip_variant": "LED strip",
"outdoor_lamp": "Outdoor light",
"home": "House",
"sofa": "Living room",
"bed": "Bedroom",
"silverware_fork_knife": "Dining room",
"chef_hat": "Kitchen",
"shower": "Shower",
"bathtub": "Bathroom",
"toilet": "Toilet",
"desk": "Office",
"garage": "Garage",
"fireplace": "Fireplace",
"thermometer": "Temperature",
"thermostat": "Thermostat",
"air_conditioner": "AC",
"radiator": "Radiator",
"heat_pump": "Heat pump",
"fire": "Heating",
"snowflake": "Cooling",
"water_percent": "Humidity",
"fan": "Fan",
"ceiling_fan": "Ceiling fan",
"air_purifier": "Air purifier",
"molecule_co2": "CO₂",
"weather_sunny": "Sun",
"weather_partly_cloudy": "Partly cloudy",
"weather_cloudy": "Cloudy",
"weather_rainy": "Rain",
"weather_snowy": "Snow",
"weather_windy": "Wind",
"weather_night": "Night",
"weather_sunset_up": "Sunrise",
"music_note": "Music",
"music": "Music notes",
"playlist_music": "Playlist",
"album": "Album",
"record_player": "Record player",
"spotify": "Spotify",
"radio": "Radio",
"podcast": "Podcast",
"speaker": "Speaker",
"speaker_multiple": "Speakers",
"soundbar": "Soundbar",
"headphones": "Headphones",
"piano": "Piano",
"guitar_acoustic": "Guitar",
"television": "TV",
"projector": "Projector",
"movie_open": "Movie",
"cast": "Cast",
"gamepad_variant": "Game console",
"remote_tv": "Remote control",
"lock": "Lock",
"lock_open_variant": "Lock open",
"shield_home": "Alarm",
"alarm_light": "Alarm light",
"bell": "Bell",
"doorbell": "Doorbell",
"cctv": "Camera",
"motion_sensor": "Motion sensor",
"door_closed": "Door",
"door_open": "Door open",
"window_closed_variant": "Window",
"smoke_detector": "Smoke detector",
"water_alert": "Water leak",
"washing_machine": "Washing machine",
"tumble_dryer": "Dryer",
"dishwasher": "Dishwasher",
"fridge": "Fridge",
"stove": "Stove",
"microwave": "Microwave",
"toaster_oven": "Oven",
"coffee_maker": "Coffee",
"kettle": "Kettle",
"robot_vacuum": "Robot vacuum",
"robot_mower": "Robot mower",
"printer_3d": "3D printer",
"power_plug": "Plug",
"power_socket_eu": "Socket",
"laptop": "Laptop",
"router_wireless": "Router",
"flash": "Power",
"solar_power": "Solar power",
"solar_panel": "Solar panels",
"home_battery": "Home battery",
"battery_high": "Battery",
"ev_station": "Charging station",
"car_electric": "Electric car",
"meter_electric": "Power meter",
"meter_gas": "Gas meter",
"water": "Water",
"water_boiler": "Boiler",
"gauge": "Meter",
"window_shutter": "Shutter",
"window_shutter_open": "Shutter open",
"blinds": "Blinds",
"blinds_open": "Blinds open",
"roller_shade_closed": "Roller blind",
"curtains": "Curtains",
"curtains_closed": "Curtains closed",
"awning_outline": "Awning",
"flower": "Flower",
"tree": "Tree",
"sprout": "Plant",
"grass": "Lawn",
"sprinkler": "Sprinkler",
"pool": "Pool",
"grill": "Barbecue",
"mailbox": "Mailbox",
"trash_can": "Trash",
"recycle": "Recycling",
"dog": "Dog",
"cat": "Cat",
"account": "Person",
"account_group": "Family",
"account_child": "Child",
"home_account": "Home",
"sleep": "Sleeping",
"run": "Exercising",
"briefcase": "Work",
"car": "Car",
"bike": "Bike",
"airplane": "Vacation",
"map_marker": "Location",
"power": "On/off",
"toggle_switch": "Switch",
"gesture_tap_button": "Button",
"play": "Start",
"script_text": "Script",
"palette": "Scene",
"alarm": "Alarm clock",
"clock_outline": "Clock",
"timer_outline": "Timer",
"calendar": "Calendar",
"bell_ring": "Notification",
"heart": "Favorite",
"alert_outline": "Warning",
"cog": "Settings",
"broom": "Cleaning"
}
},
"screen": {
"builtin": {
"clock": "Clock",
"page": "Go to page {page}"
},
"identify": {
"title": "This is {name}",
"subtitle": "Identify, from ESP Screens"
},
"script_running": "Running",
"states": {
"locking": "Locking",
"unlocking": "Unlocking",
"jammed": "Jammed",
"buffering": "Buffering",
"returning": "Returning",
"error": "Error",
"disarmed": "Disarmed",
"armed_home": "Armed home",
"armed_away": "Armed away",
"armed_night": "Armed night",
"armed_vacation": "Armed vacation",
"armed": "Armed",
"arming": "Arming",
"pending": "Pending",
"triggered": "Triggered",
"active": "Active",
"up": "Up",
"down": "Down",
"unknown": "Unknown"
},
"history": {
"other": "Other"
},
"vacuum": {
"vacuum": "Vacuum",
"vac_and_mop": "Vac & mop",
"vac_then_mop": "Vac, then mop",
"mop": "Mop",
"custom": "Custom",
"smart": "Smart",
"min": "Min",
"slight": "Slight",
"low": "Low",
"mild": "Mild",
"medium": "Medium",
"moderate": "Moderate",
"standard": "Standard",
"high": "High",
"intense": "Intense",
"extreme": "Extreme",
"ultra_high": "Ultra high",
"silent": "Silent",
"gentle": "Gentle",
"strong": "Strong",
"max_plus": "Max+",
"auto": "Auto"
}
}
},
"editor": {
"common": {
"undo": "Undo",
"online": "Online",
"offline": "Offline",
"unknown": "unknown",
"unsaved": "Unsaved changes",
"cancel": "Cancel",
"open_integrations": "Open Devices & services",
"save_send": "Save & send",
"saving": "Saving…",
"read_current_data": "Read current data",
"results": "1 result. Keep typing to narrow it down. | {n} results. Keep typing to narrow it down.",
"close": "Close",
"remove": "Remove",
"change": "Change",
"loading": "Loading…",
"back": "← Back",
"copy": "Copy"
},
"nav": {
"new_screen": "New screen",
"firmware": "Firmware & USB",
"alerts": "Alerts",
"settings": "Settings",
"new_screen_detail": "Connect and install"
},
"api": {
"failed": "That didn't work. Refresh the page and try again."
},
"copy": {
"api_key": {
"copied": "API key copied.",
"selected": "API key is selected. Copy with Ctrl+C or Command+C."
},
"layout_json": {
"copied": "Layout JSON copied.",
"selected": "Layout JSON is selected. Copy with Ctrl+C or Command+C."
},
"action_name": {
"copied": "Action name copied.",
"selected": "Action name is selected. Copy with Ctrl+C or Command+C."
},
"yaml": {
"copied": "YAML copied.",
"selected": "YAML is selected. Copy with Ctrl+C or Command+C."
},
"icon_name": {
"copied": "Icon name copied.",
"selected": "Icon name is selected. Copy with Ctrl+C or Command+C."
},
"empty_color": {
"copied": "Empty color copied.",
"selected": "Empty color is selected. Copy with Ctrl+C or Command+C."
},
"color_name": {
"copied": "Color name copied.",
"selected": "Color name is selected. Copy with Ctrl+C or Command+C."
}
},
"sidebar": {
"connection": {
"unreachable": "Management page unreachable · retrying…",
"connected": "Home Assistant connected",
"reconnecting": "Reconnecting to Home Assistant…"
},
"search": "Search",
"screens": "Screens",
"more": "More",
"refresh": "Refresh",
"update": {
"pill": "Update",
"button": "Update",
"queued": "Queued for the update",
"available": "Update {version}",
"no_profile": "No ESPHome profile found with this device name.",
"whats_new": "What's new",
"full_log": "Full log"
},
"host": {
"hint": "The IP address, once; new firmware reports it itself.",
"placeholder": "IP address, e.g. 192.168.1.50",
"label": "IP address",
"start": "Start"
},
"pending": {
"installed": "Installed, but not yet in Home Assistant. Add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and turn on “Allow the device to perform Home Assistant actions” under Configure.",
"downloaded": "Firmware downloaded, not yet in Home Assistant. Put it on the screen with ESPHome Web, then add the discovered ESPHome device under Settings → Devices & services, paste the API key there, and allow the Home Assistant actions under Configure.",
"not_flashed": "Not yet in Home Assistant. Already flashed? Add the ESPHome device under Settings → Devices & services, then allow the Home Assistant actions under Configure. Not flashed yet? Firmware & USB → {file}."
},
"copy_api_key": "Copy API key"
},
"palette": {
"groups": {
"screens": "Screens",
"actions": "Actions",
"add": "Add to this screen"
},
"alerts_detail": "Cheatsheet and a test alert",
"settings_detail": "Updates, Claude",
"nothing_to_save": "Nothing to save",
"identify": "Identify this screen",
"identify_detail": "Blinks the backlight and shows a card",
"identify_needs": "Needs a newer firmware",
"export": "Export layout",
"export_detail": "Download and copy as JSON",
"placeholder": "Search screens, entities, actions…",
"empty": "Nothing matches. Type part of a screen, entity or action."
},
"empty": {
"choose": {
"title": "Choose a screen",
"text": "Pick one of your screens on the left to change its tiles, top bar and settings."
},
"start": {
"title": "Start with a screen",
"text": "Connect a CYD or Guition via USB to your Home Assistant machine. Profile, firmware, and the first flash happen in one go.",
"button": "Install new screen"
}
},
"screen_view": {
"confirm": {
"switch": "You have unsaved changes. Open a different screen anyway?",
"copy": "Replace the unsaved layout with a copy of the other screen's?",
"import": "Replace the unsaved layout with the imported one?"
},
"saved": {
"current": "Saved. Your screen is being updated.",
"other": "Saved. {name} is being updated.",
"other_unnamed": "Saved. The screen is being updated.",
"newer_edit": "Saved. Your newest change isn't sent yet: press Save & send again."
},
"identified": "{name} blinks and shows a card for a few seconds.",
"offline": "Offline · changes are saved",
"tabs": {
"layout": "Layout",
"settings": "Screen settings"
},
"sent": "Saved · sent to screen",
"all_saved": "All saved",
"more": "More",
"menu": {
"identify": "Identify",
"identify_hint": "blink the screen",
"identify_needs": "Needs firmware 0.2.31 or newer",
"inspect_hint": "from Home Assistant",
"copy": "Copy layout from…",
"copy_screens": "{n} screen | {n} screens",
"copy_none": "no other screen",
"copy_tiles": "{n} tile | {n} tiles",
"export": "Export layout",
"import": "Import layout…",
"override": "Override YAML",
"override_hint": "advanced",
"override_none": "No ESPHome profile found for this screen",
"update": "Update firmware"
}
},
"layout": {
"removed": "{name} removed",
"no_room": "There is no room for this tile on page {page}.",
"no_free_page": "No page is free for a full-page tile. Free a page first.",
"page_taken": "This screen already has a tile that goes to page {page}.",
"copied": "Layout of {name} copied. Save & send when it looks right.",
"copied_part": "Layout of {name} copied: {kept} of {total} tiles fit this screen's firmware. Save & send when it looks right.",
"imported": "Layout imported. Save & send when it looks right.",
"imported_part": "Layout imported: {kept} of {total} tiles fit this screen's firmware. Save & send when it looks right.",
"not_json": "That isn't JSON. Export a layout first, or paste one from another ESP Screens.",
"no_tiles_in_file": "No tiles in this file. Expected a layout exported from ESP Screens.",
"count": "{n} page · {tiles} / {limit} tiles | {n} pages · {tiles} / {limit} tiles",
"no_tiles": "Add your first light, scene, or device from the library.",
"how_to": "Tap the top bar or a tile to change it. Drag to move; drop on the next page for a new one.",
"positions_hint": "Empty slots and fixed positions work from firmware 0.2.26. This screen (firmware {firmware}) shifts the tiles up to the first free slot until that update.",
"aria": "Screen layout",
"add_page": "+ Add page",
"max_pages": "1 page is the most | {n} pages is the most"
},
"page": {
"label": "Page {page}",
"remove": "Remove page",
"remove_title": "The pages after this one shift up one slot",
"edit_bar": "Edit top bar",
"cell": {
"title": "Empty slot. Click to add a tile here, or drag one over.",
"aria": "Empty slot {slot} on page {page}: add the next tile here",
"next": "Next tile goes here",
"empty": "Empty"
}
},
"library": {
"title": "Library",
"entities": "{n} entity | {n} entities",
"search": "Search by name, device, or room…",
"search_label": "Add an entity",
"filters": {
"all": "All",
"light": "Lights",
"climate": "Climate",
"switch": "Switches",
"binary_sensor": "Status",
"button": "Actions",
"script": "Scripts",
"fan": "Fans",
"cover": "Covers",
"scene": "Scenes",
"vacuum": "Vacuum",
"sensor": "Sensors",
"media_player": "Media",
"weather": "Weather",
"number": "Values",
"select": "Selects",
"person": "People",
"timer": "Timers",
"screen": "Screen"
},
"room": "Room",
"all_rooms": "All rooms",
"hide_placed": "Hide placed",
"hide_placed_title": "Hide what is already on this screen",
"all_placed": "Everything here is already on this screen.",
"none_found": "No entities found. Try a different name, room or filter.",
"full": "This screen holds 1 tile. | This screen holds {n} tiles.",
"full_update": "This screen holds 1 tile; update its firmware for 48. | This screen holds {n} tiles; update its firmware for 48.",
"hint": "Drag onto a page, or tap + to add to the first free slot. ⌘K searches everything."
},
"domains": {
"light": "Light",
"climate": "Climate",
"vacuum": "Vacuum",
"fan": "Fan",
"cover": "Cover",
"media_player": "Media",
"sensor": "Sensor",
"binary_sensor": "Status",
"switch": "Switch",
"input_boolean": "Switch",
"scene": "Scene",
"script": "Script",
"weather": "Weather",
"number": "Value",
"input_number": "Value",
"select": "Select",
"input_select": "Select",
"button": "Action",
"input_button": "Action",
"screen": "Screen",
"sun": "Sun",
"timer": "Timer",
"person": "Person",
"camera": "Camera",
"image": "Image",
"entity": "Entity"
},
"displays": {
"standard": "standard",
"watch": "large value",
"forecast": "weather forecast",
"graph": "graph",
"digital": "digital clock",
"analog": "analog clock",
"sunpath": "sun path",
"live": "live picture",
"cover": "album cover"
},
"sizes": {
"single": "normal",
"wide": "double",
"full": "full page"
},
"tile": {
"name": "Name on the screen",
"icon": {
"auto_ha": "Automatic (from Home Assistant)",
"auto_default": "Automatic (default)",
"needs_firmware": "The screen shows a chosen icon from firmware 0.2.18."
},
"goes_to": {
"label": "Goes to page",
"empty": "{page} (empty)",
"needs_firmware": "Navigation tiles need firmware 0.2.62: press Update on the screen first.",
"no_page": "This screen has no page {page}, so a tap opens its last page. Choose another page.",
"hint": "A tap on the tile opens that page."
},
"display": {
"label": "Display",
"digital": "Digital clock",
"analog": "Analog clock",
"standard": "Name and status",
"watch": "Large value",
"forecast": "Weather forecast",
"graph": "Graph",
"sunpath": "Sun path",
"live": "Live picture",
"live_hint": "A small picture of the camera in the icon's place, refreshed at the pace below while the page is on screen. A tap still opens it full screen.",
"live_needs_firmware": "A live picture needs firmware 0.2.77 or newer: press Update on the screen after saving.",
"cover": "Album cover",
"cover_hint": "The album cover of what plays in the icon's place, like Home Assistant's own tile; a player without a picture keeps its icon. A tap still opens the card.",
"cover_needs_firmware": "The album cover on the tile needs firmware 0.2.78 or newer: press Update on the screen after saving.",
"no_graph": "Home Assistant has no numbers for this entity, so the graph stays empty. Choose another display.",
"no_forecast": "This weather service has no daily forecast in Home Assistant. Choose another display."
},
"refresh": {
"label": "Refresh",
"seconds": "Every {n} s"
},
"size": {
"label": "Size",
"single": "Normal",
"wide": "Double-width",
"full": "Full page",
"full_hint": "Full page: one big button in the tile's own colour; a slider, controls or a graph sit at the bottom of it.",
"needs_firmware": "A full-page tile needs firmware 0.2.62: press Update on the screen first."
},
"page": {
"label": "Page",
"new": "New page"
},
"controls": {
"label": "Direct control on the tile",
"not_offered": "Home Assistant doesn't offer this control for this entity, so it stays empty on the screen. Choose another one.",
"full_hint": "At the bottom of the full-page tile; a tap anywhere else works as set below.",
"wide_hint": "On the right of the double-width tile, like the rows in Home Assistant. Tapping the name works as set below.",
"needs_firmware": "The screen shows direct control from firmware 0.2.19; until then the tile stays as it was."
},
"tap": {
"label": "On tap",
"auto": "Automatic",
"detail": "Open control",
"none": "View only",
"toggle": "On / off",
"action": "Perform action",
"no_toggle": "Home Assistant can't turn this on and off, so a tap does nothing. Choose another option.",
"toggle_needs_firmware": "The screen switches this from firmware 0.2.58: press Update on the screen. Until then a tap opens its card.",
"hold": "Hold the tile to open its card."
},
"slider": {
"label": "Small slider on the tile",
"no": "No",
"yes": "Yes, control directly",
"nothing": "Home Assistant has nothing a slider can change for this entity. Choose No."
},
"history": {
"label": "History",
"hours": "{n} hour | {n} hours"
},
"background": {
"label": "Pastel background",
"aria": "Background: {name}"
}
},
"tile_card": {
"label": "{name}, slot {slot} on page {page}. Enter: configure, arrow keys: move",
"remove": "Remove tile",
"remove_named": "Remove {name}"
},
"action": {
"label": "Action",
"asking": "Asking Home Assistant which actions this entity has…",
"not_answering": "Home Assistant isn't answering right now. Try again in a moment.",
"choose": "Choose an action",
"search": "Search, for example toggle, position, or play",
"search_label": "Search for an action",
"none_found": "No action found.",
"gone": "Home Assistant doesn't offer this action for this entity any more, so a tap does nothing. Choose another one.",
"optional": "{name} (optional)",
"not_set": "Not set",
"on": "On",
"off": "Off",
"needs": "Home Assistant needs {fields}.",
"needs_firmware": "The screen performs an action from firmware 0.2.58: press Update on the screen. Until then a tap works as Automatic."
},
"icon": {
"label": "Icon",
"none": "No icon",
"search": "Search, for example lamp, music, or door",
"search_label": "Search for an icon",
"none_text_only": "No icon, text only",
"aria": "Icon: {name}",
"none_found": "No icon found."
},
"inspect": {
"title": "Current data",
"subtitle": "Connection, status, and supported properties",
"reading": "Reading…",
"fetching": "Fetching current HA status…",
"status": "Status: {status}",
"options": "Small slider: {slider} · Display: {display} · Size: {size} · Control: {control} · Background: {background}",
"yes": "yes",
"no": "no",
"control_none": "none",
"background_default": "Default",
"read_again": "Read again"
},
"topbar": {
"removed": "{name} removed from the top bar",
"full": "The top bar has room for 1 item. | The top bar has room for {n} items.",
"already": "This is already in the top bar.",
"title": "Top bar",
"aria": "Top bar: {name}",
"builtin": "From the screen itself, also works without Home Assistant",
"items": "{used} of {n} item | {used} of {n} items",
"name": "Left: name",
"name_placeholder": "For example: Living room",
"right": "Right: time, sensors, or a clock",
"item_label": "{name}, slot {slot}. Enter: configure, arrows: move",
"remove_named": "Remove {name} from the top bar",
"max": "Maximum 1 item | Maximum {n} items",
"add_title": "Add the time, date, analog clock, or an entity",
"add_button": "+ Add time, date, or an entity",
"hint": {
"overflow": "Not everything fits next to the name: the screen drops the dashed items. Remove one or choose a shorter name.",
"reorder": "Drag to reorder; tap an item to configure it.",
"needs_firmware": "Sensors, the date, and the analog clock appear from firmware {version}; until that update, this screen shows the name and, if the time is in the bar, the clock."
},
"detail": {
"hidden": "Hidden: not active right now",
"overflow": "Doesn't fit next to the name",
"dial": "Dial"
},
"live": {
"hidden": "Hidden right now: not active",
"overflow": "Doesn't currently fit next to the name",
"looks": "How it looks on the screen"
},
"analog_sample": "Small dial with the time",
"content": {
"label": "What to show",
"hint": "Last changed keeps counting on the screen itself: “Just now”, “5 min ago”, “Yesterday”."
},
"auto_icon": "Automatic (like Home Assistant)",
"show": {
"label": "Show",
"hint": "Only when active hides the item as long as it's off, closed, away, or 0. Handy for an open door, a running washing machine, or who's home."
},
"clock_24": "24 hour clock · change under {settings}",
"clock_12": "12 hour clock · change under {settings}",
"clock_settings": "Settings → Language & region",
"date_hint": "{date} today. The date follows the screen's own clock.",
"up": "↑ Up",
"down": "↓ Down",
"add": {
"title": "Add to the top bar",
"slots": "{used} of {n} slot used | {used} of {n} slots used",
"builtin": "From the screen itself",
"added": "Already added",
"suggestions": "Suggestions from Home Assistant",
"entity": "An entity",
"search": "Search by name, room, or entity, e.g. temperature or door",
"search_label": "Search for an entity for the top bar",
"none_found": "No entities found."
}
},
"screen_settings": {
"groups": {
"brightness": "Brightness",
"night": "Night",
"screen": "Screen"
},
"rows": {
"brightness": "Brightness",
"dark_mode": "Dark mode",
"standby_enabled": "Auto standby",
"standby_seconds": "Standby after",
"standby_brightness": "Standby brightness",
"night_enabled": "Night mode",
"night_start": "Starts",
"night_end": "Ends",
"night_brightness": "Night brightness",
"auto_home": "Back to page 1",
"auto_home_seconds": "After",
"home_on_standby": "Also on standby",
"swipe_pages": "Swipe between pages",
"page_buttons": "Page buttons",
"rotation": "Rotation"
},
"duration": {
"seconds": "{n} sec",
"minutes": "{n} min",
"hours": "{n} h",
"hours_minutes": "{h} h {m}"
},
"time": {
"am": "{time} AM",
"pm": "{time} PM"
},
"other_screen_busy": "Still saving the other screen's settings. Try again in a moment.",
"reach": {
"intro": "Page buttons and swiping are off, so only Go to page tiles change the page.",
"pages": "page {list} | pages {list}",
"tiles": "You have {n} Go to page tile, to {targets}. | You have {n} Go to page tiles, to {targets}.",
"tiles_missing_one": "You have {n} Go to page tile, to {targets}, but none to {missing}, so you can't reach it. | You have {n} Go to page tiles, to {targets}, but none to {missing}, so you can't reach it.",
"tiles_missing_more": "You have {n} Go to page tile, to {targets}, but none to {missing}, so you can't reach them. | You have {n} Go to page tiles, to {targets}, but none to {missing}, so you can't reach them.",
"none": "You have no Go to page tiles.",
"none_missing_one": "You have no Go to page tiles to {missing}, so you can't reach it.",
"none_missing_more": "You have no Go to page tiles to {missing}, so you can't reach them.",
"cut_off": "The tiles to {pages} are only on pages you can't reach.",
"no_way_back": "From {pages} no tile leads back to page 1."
},
"status": {
"offline": "This screen is offline. Its settings can change once it's back.",
"screen": "Changes apply on the screen at once, and show up here when they change there.",
"app": "Changes apply at once. Firmware 0.2.49 lets the screen keep them itself."
},
"unavailable": "This entity is off in Home Assistant, or the screen is restarting.",
"lower": "{name} lower",
"higher": "{name} higher"
},
"update": {
"starting": "Starting update…",
"building": "Building the firmware…",
"writing": "Writing the firmware over Wi-Fi…",
"phases": {
"install": "Building and installing…",
"verify": "Waiting for the screen to come back…",
"settle": "Checking that it stays stable…"
},
"new_language": "New language: {name}"
},
"settings": {
"updates": {
"auto_on": "Screens will now update automatically at night.",
"auto_off": "Automatic updates are off.",
"title": "Firmware updates",
"busy": "Updating to firmware {version}…",
"no_screens": "No screen paired yet. New screens get firmware {version}.",
"available": "Firmware {version} is available for {n} screen. | Firmware {version} is available for {n} screens.",
"current": "All screens have firmware {version}.",
"all": "Update 1 screen | Update all {n} screens",
"whats_new": "What's new in firmware {version}",
"auto_label": "Update automatically every night",
"auto_hint": "Between 03:00 and 06:00, one screen at a time. Stops on an error and reports it in Home Assistant."
},
"claude": {
"installed": "Skill installed. Claude Code picks it up right away.",
"installed_restart": "Skill installed. Restart Claude Code once so it finds the new skills folder.",
"text": "Teach Claude about ESP Screens, then ask: \"Show an alert on all my screens when the mailbox is full.\" Claude knows the alert events, every field, color, and icon.",
"install": "Install for Claude Code",
"install_again": "Install again",
"update": "Update the skill",
"not_installed": "Not installed",
"installed_chip": "● Installed",
"newer": "Installed · a newer version is ready",
"writes": "For Claude Code in Home Assistant. Writes one file to {path}; installing again replaces it.",
"download": "Download for claude.ai",
"upload": "Upload the zip in Claude under Customize → Skills."
},
"title": "Everything around your screens.",
"back": "← My screens",
"screens": {
"title": "Screens",
"text": "Add a screen, or build and reinstall the firmware of one you already have.",
"firmware_detail": "Build and install via USB or Wi-Fi"
},
"language": {
"title": "Language & region",
"screen_language": "Screen language",
"auto": "Home Assistant's language ({name})",
"auto_plain": "Home Assistant's language",
"ha_missing": "The screens use English until Home Assistant's language is available.",
"unchecked": "{name} · not checked yet, help welcome",
"help": "{name} is not checked yet, help welcome: {guide}",
"guide": "how to translate",
"update_hint": "After a change every screen needs a firmware update, one build each: with its Update button, or in the nightly updates.",
"time": "Time format",
"time_auto": "Automatic, follows the language ({clock})",
"clock_24": "24 hour",
"clock_12": "12 hour",
"numbers": "Number format",
"numbers_auto": "Automatic, follows the language ({example})",
"profile": "Your Home Assistant profile: {formats}",
"use_profile": "Use these",
"editor_hint": "The editor itself follows the language of your Home Assistant profile.",
"saved": "Saved.",
"saved_language": "Saved. Every screen takes the new language with its next update."
},
"alerts": {
"text": "A card over the whole screen from an automation, on one screen or on all of them. The cheatsheet has the action names, fields, icons, and colors, and a form to try one.",
"detail": "Full-screen notifications, from an automation"
}
},
"firmware": {
"title": "Build and install screen firmware",
"intro": "The built-in ESPHome CLI uses your own profile (YAML with keys) and secrets. Choose the screen's profile, then a USB port (screen connected to the Home Assistant machine), {ota} with the hostname, or {download} to put the firmware on the screen from your own computer. {check} only validates, {build} compiles, {install} puts the firmware on the screen. Your tiles stay as they are in ESP Screens. The first build takes a few minutes.",
"ota": "Wi-Fi / OTA",
"download": "Download",
"check": "Check",
"build": "Build only",
"install": "Build & install",
"build_download": "Build & download",
"no_cli": "The ESPHome CLI is missing. Update the app to 0.2.0.",
"choose": "Choose the intended profile, then a USB port, an IP address, or Download.",
"profile": "ESPHome profile",
"install_to": "Install to",
"no_board": "USB · no board found on the Home Assistant machine yet",
"download_target": "Download · flash from your own computer",
"host": "IP address or hostname",
"download_file": "Download {name}",
"download_how": "Put it on the screen with {esphome_web} in Chrome or Edge: Connect, choose the screen's USB port, Install, and select this file. It holds your Wi-Fi password and the screen's keys: keep it to yourself."
},
"installer": {
"title": {
"setup": "Connect and install.",
"saved": "Profile saved.",
"running": "One moment…",
"ready": "Ready to download.",
"done": "Done.",
"failed": "That didn't work."
},
"intro": "ESP Screens creates the screen's own profile with unique keys and builds the firmware. Connect the screen with a USB data cable to the machine running Home Assistant, or download the firmware and put it on the screen from your own computer.",
"board": "Which screen do you have?",
"board_cyd": "CYD · 2.8 inch",
"board_guition": "Guition · 4 inch",
"board_elecrow": "Elecrow CrowPanel · 7 inch",
"name": "Name",
"name_placeholder": "Living room screen",
"device_name": "Device name",
"customize": "customize",
"name_hint": "Every screen gets its own profile with its own keys. Four screens? Go through this four times with a different name.",
"device_name_hint": "Lowercase letters, digits, and dashes. A different name for each screen.",
"wifi": {
"title": "Wi-Fi",
"ssid": "Wi-Fi name (2.4 GHz)",
"password": "Wi-Fi password",
"new": "Fill in once: ESP Screens saves this in ESPHome secrets.yaml, later screens use it automatically.",
"missing": "Your ESPHome secrets.yaml is still missing Wi-Fi details. ESP Screens only fills in the missing lines.",
"ready": "Wi-Fi comes from your ESPHome secrets.yaml.",
"invalid": "secrets.yaml in the ESPHome folder isn't valid YAML. Fix the file first; it won't be overwritten."
},
"install_via": "Install via",
"later": "Later · save profile only",
"target": {
"usb": "Connect the screen with a USB data cable to the Home Assistant machine; the list refreshes on its own. Or choose Download to use your own computer.",
"download": "Download the firmware and put it on the screen from your own computer, in Chrome or Edge. After that, updates go over Wi-Fi.",
"later": "The profile goes into the ESPHome folder. You can install later via Firmware & USB, or from ESPHome Device Builder.",
"several": "More than one board connected: choose this screen's port.",
"once": "Once over USB; after that, everything is wireless."
},
"install": "Install",
"save_profile": "Save profile",
"busy": "A build or installation is already running ({file}). Wait for it to finish.",
"no_cli": "The ESPHome CLI is missing from this installation; only saving the profile is possible.",
"progress": {
"saved": "{file} is in the ESPHome folder",
"writing": "Writing firmware to {name}…",
"building": "Building firmware…",
"ready": "Firmware for {name} is ready",
"installed": "Firmware is on {name}",
"build_failed": "Build failed",
"install_failed": "Install failed"
},
"detail": {
"saved": "Install it later from Firmware & USB: choose this profile, then the USB port of the Home Assistant machine, or Download to put the firmware on the screen from your own computer. Save the API key for pairing:",
"uploading": "Don't disconnect the USB cable yet.",
"building": "A first build takes a few minutes on a Raspberry Pi. You can leave this page: the installation keeps running and you'll find it again under New screen.",
"building_download": "A first build takes a few minutes on a Raspberry Pi. You can leave this page: the build keeps running and you'll find it again under New screen.",
"downloaded": "Put it on the screen from your own computer, then pair the screen with Home Assistant.",
"booted": "The screen boots up and connects to your Wi-Fi. Pair it with Home Assistant now:",
"booted_cyd": "The screen boots up and connects to your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs. Pair it with Home Assistant now:",
"see_log": "See the log below."
},
"download_steps": {
"plug": "{bold} with a USB data cable.",
"plug_bold": "Plug the screen into your computer",
"open": "{bold} in Chrome or Edge, click Connect and choose the screen's USB port.",
"open_bold": "Open {esphome_web}",
"install": "{bold} and select {file}. The screen restarts and joins your Wi-Fi.",
"install_cyd": "{bold} and select {file}. The screen restarts and joins your Wi-Fi. The CYD first asks for a touch calibration: tap the crosshairs.",
"install_bold": "Click Install"
},
"download_keep": "The file holds your Wi-Fi password and the screen's keys: keep it to yourself.",
"api_key": "API key",
"pairing": {
"ha": "{bold} This happens outside ESP Screens. Home Assistant discovers {name} as an ESPHome device; click Add. Not discovered? Add ESPHome manually with the screen's IP address.",
"ha_bold": "Go to Home Assistant → Settings → Devices & services.",
"key": "{bold} above when Home Assistant asks for an encryption key.",
"key_bold": "Paste the API key",
"actions": "{bold} ESPHome integration → Configure → “Allow the device to perform Home Assistant actions”. Without this, the screen sees everything but controls nothing.",
"actions_bold": "Allow HA actions:",
"tiles": "{bold} Back in ESP Screens, the screen appears in the list on the left within about thirty seconds; until then it's shown there as “not yet in Home Assistant”.",
"tiles_bold": "Choose your tiles."
},
"log": "ESPHome log",
"retry": "Retry",
"another": "Install another screen",
"start_over": "Start over",
"done": "Done"
},
"alerts": {
"eyebrow": "Alerts · cheatsheet",
"title": "A full-screen notification, from an automation.",
"intro": "Every screen has the {action} action. It places a card over everything, wakes the screen, and keeps the backlight at normal brightness until someone taps the button or the timeout runs out. Home Assistant itself shows no explanation or dropdowns for ESPHome actions; everything you can fill in is listed here.",
"loading": "The cheatsheet is still loading; one moment.",
"example": {
"title": "Someone is at the door",
"subtitle": "Door 3, back",
"button": "Coming"
},
"sections": "Sections",
"nav": {
"try": "Try it",
"screens": "Your screens",
"howto": "In an automation",
"all": "All screens",
"fields": "The fields",
"icons": "Icons",
"colors": "Colors",
"behaviour": "Behavior",
"events": "Events",
"tips": "Tips"
},
"try": {
"text": "Send one alert now, with the same fields an automation sends. The screen shows the card and, with blinking on, flashes its backlight.",
"screen": "Screen",
"all": "All screens ({ready} ready)",
"not_ready": "{name} · not ready",
"title": "Title",
"subtitle": "Subtitle",
"icon": "Icon",
"color": "Color",
"button": "Button text",
"timeout": "Timeout (seconds, 0 waits for the button)",
"flash": "Blink the backlight",
"flash_hint": "Four times when the alert arrives.",
"sending": "Sending…",
"send": "Send alert",
"sent_all": "Sent to {n} screen. | Sent to {n} screens.",
"sent_to": "Sent to {name}.",
"sent_one": "Sent to the screen.",
"skipped": "1 skipped (offline or old firmware). | {n} skipped (offline or old firmware).",
"left_empty": "Left empty: {fields}.",
"nothing": "No screen could show it: check that a screen is online with firmware {version} or newer."
},
"white": "White (default)",
"screens": {
"text": "Every screen has its own action, with the device name in it. From firmware {version}; update an older screen with its Update button under Screens.",
"none": "No screen paired yet. Install one via New screen; the action appears once Home Assistant sees the screen.",
"ready": "● firmware {version}",
"update": "Update needed · firmware {version}",
"unknown": "Device name unknown · update the screen",
"show": "Show alert",
"dismiss": "Dismiss alert"
},
"howto": {
"add": "{add} and search for {esphome}. Choose your screen's action: Home Assistant calls it \"Performs the action show_alert of the node {device}\".",
"add_bold": "Add action",
"device": "device name",
"fields": "{bold} Home Assistant asks for all seven; leave what you don't use empty ({empty}, {zero}, off).",
"fields_bold": "Fill in the fields.",
"yaml": "Prefer YAML? Choose {edit} on the action and paste the example below.",
"example_for": "Example for",
"no_screen": "a screen (not paired yet)"
},
"edit_yaml": "Edit in YAML",
"copy_yaml": "Copy YAML",
"all": {
"title": "All screens at once",
"text": "Fire the event {show} with the same fields, and ESP Screens passes the alert on to every screen that is online, including screens you add later. {dismiss} clears it everywhere. In an automation, add the {event} action or paste the example under {edit}. Leave out the fields you don't use. ESP Screens has to be running for this.",
"event": "Fire manual event"
},
"fields": {
"text": "Text is free-form; the limit is in bytes, and an accented letter counts as two. What doesn't fit gets an ellipsis (title) or is dropped (subtitle).",
"field": "Field",
"type": "Type",
"what": "What it does",
"example": "Example",
"limit": "Limit",
"types": {
"string": "text",
"int": "number",
"bool": "on / off",
"entity": "entity"
},
"bytes": "CYD {cyd} · Guition {guition} bytes",
"seconds": "0 to 86400 s",
"camera_limit": "Guition, firmware 0.2.57+"
},
"icons": {
"text": "Fill in the name in {field}, for example {example}. {mdi} and the hex codepoint ({hex}) also work. Only these icons are included in the firmware; any other name shows the warning triangle. Tap an icon to copy its name.",
"handy": "Handy for notifications",
"search_label": "Search for an icon",
"search": "Search by name or description…",
"extra": "Also available: control and weather icons",
"copy": "Copy {name}",
"none": "No icon for \"{query}\". Unknown names show the warning triangle ({fallback})."
},
"colors": {
"text": "Fill in the name in {field}. These are the pastel shades of the tiles, with dark text. Empty or unknown gives the white card. Tap to copy."
},
"behaviour": {
"wakes": "{bold} An alert immediately wakes a dimmed or dark screen and appears above every page, every open light card, and the standby layer.",
"wakes_bold": "Wakes the screen.",
"on": "{bold} As long as the card is showing, the backlight stays at normal brightness. Standby and night hours wait. After the button, the regular standby time starts again.",
"on_bold": "On until the button.",
"timeout": "{bold} {zero} waits for the button, however long that takes. With {minute} the card disappears after a minute, but the button closes it sooner.",
"timeout_bold": "Timeout.",
"blinking": "{bold} {flash} blinks the backlight four times when the alert arrives (about a second) and leaves the screen on afterward.",
"blinking_bold": "Blinking.",
"replacing": "{bold} A new alert replaces the current one; there's no stack. The replaced alert reports itself as {replaced}.",
"replacing_bold": "Replacing.",
"closing": "{bold} {dismiss} clears the card, for example if the door is already open. Without an alert, that action does nothing.",
"closing_bold": "Closing remotely.",
"beside": "{bold} does nothing; only the button closes it. That way a wake-up tap never accidentally dismisses the alert.",
"beside_bold": "Tapping beside the card"
},
"events": {
"text": "Every end fires the event {event} with {action}, {title}, {screen} (the device name) and the {device_id} that Home Assistant adds. Visible under Settings → Tools → Events.",
"when": "When",
"wait": "Waiting until someone presses the button"
},
"tips": {
"color": "Use a {bold}: orange for the door, red for smoke or water, green for \"done\". The text always stays dark and readable.",
"color_bold": "color per kind of notification",
"short": "Keep the title {bold}; a screen shows about twenty characters on one line and ends a longer title with an ellipsis. Put details in the subtitle.",
"short_bold": "short",
"button": "A {bold} turns the notification into a question: \"Coming\", \"Seen\", \"Turn off\". The event then tells you who responded.",
"button_bold": "custom button text",
"resolve": "For an alert that resolves itself (the door opens, the laundry gets taken out) close it in the same automation with {dismiss}.",
"every": "Every screen? Fire {event} once (see All screens at once). The screens still work independently and each reports with its own {screen}.",
"claude": "Rather {bold} for the automation? Install the ESP Screens skill under Settings → Claude.",
"claude_bold": "ask Claude"
},
"wait_yaml": {
"comment": "Doorbell: show the alert and wait until someone presses the button.",
"message": "Someone is coming to the door."
}
},
"override": {
"eyebrow": "Advanced · local override",
"title": "Override YAML",
"title_named": "Override YAML · {name}",
"intro": "This small file is yours. It is loaded after the shared screen package and stays in place when ESP Screens updates. Change hardware-specific details here, such as a display model.",
"safe_title": "What is safe to change?",
"safe_text": "Display, touchscreen, substitutions, pins and other device details. Name, Wi-Fi, API, OTA and package links remain managed.",
"active": "Active",
"ready": "Ready to attach",
"editor_label": "Local override YAML",
"use_example": "Use example",
"clear": "Clear",
"characters": "1 character | {n} characters",
"lines": "1 line | {n} lines",
"save_check": "Save & check",
"save": "Save override",
"no_profile": "No ESPHome profile was found for this screen.",
"attached": "Changes here apply on the next build.",
"not_attached": "Save once to attach this file to the profile.",
"saving": "Checking and saving…",
"saved": "Saved. The override is kept during firmware updates.",
"saved_toast": "Override YAML saved.",
"checking": "Saved. ESPHome is checking the complete profile…",
"checking_profile": "ESPHome is checking the profile…",
"checking_stage": "ESPHome is checking the profile… {stage}",
"valid": "The complete profile is valid. Safe to build and install.",
"rejected": "ESPHome rejected the complete profile. See Firmware & USB for the full log.",
"confirm_example": "Replace the current text with the example?",
"example_loaded": "Example loaded. Save it when you are ready.",
"confirm_clear": "Clear the local override?",
"cleared": "The override will be empty after you save."
},
"mockup": {
"home": "Home",
"unknown": "Unknown"
}
}
}