Files
homeassistant_espscreen/components/smart_display/screen_text_keys.h
T
Max Gramser 125346d94e Notation like Home Assistant, each screen in its own language, and the language in every build
From the end-to-end test on the bench boards and an independent review:
- Units spaced as Home Assistant does (54% / 54 % in German and French, 18°, 21.5 °C), in the firmware and the app.
- Grouping from five digits where the language does (1234 but 12.345 in Spanish, Polish, Portuguese): the layout
  message carries group_min and percent_space; an unknown number style no longer refuses a layout.
- Automatic follows Home Assistant's own language for the clock and numbers, also without a translation (Swedish:
  24 hours, 1 234,5; pt-BR: 1.234,5): regions.json from the CLDR for all 63 languages Home Assistant offers.
- 12-hour clock: the top bar says 3:48 PM, the clock card 3:48 (not 03:48), Last runs follow the clock.
- The climate setpoint font has the decimal comma; the value fonts have ², ³ and µ (m³ was a box).
- Weather days: at most three letters without the dot (mié, sáb, czw); the screen took three bytes.
- Texts fall back per key through the base language (pt-BR -> pt -> en) in the firmware and the app.
- Each screen gets the app's words in the language its firmware speaks; firmware from before the languages gets
  English and its own letters, not boxes.
- set_language re-reads what it writes (indentation, comments, quoted keys, CRLF, !include) and every build writes
  the language first; the 24-hour pin no longer hits a fresh install and waits for the old clock switches.
- Tests: region and notation, plural parity with the C++ rules, set_language edge cases, the pin, PUT /api/language.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:52:34 +02:00

284 lines
12 KiB
C++

// GENERATED by tools/i18n.py from screen_manager/translations/en.json; run `python3 tools/i18n.py header`
// after changing the keys of the `screen` section. The index of every text a screen shows in its language's
// table (screen_text.h); a list such as the month names is its first index plus a count.
#pragma once
#include <cstdint>
namespace screen_text {
namespace txt {
constexpr uint16_t number_decimal = 0;
constexpr uint16_t number_group = 1;
constexpr uint16_t number_group_min = 2;
constexpr uint16_t number_percent = 3;
constexpr uint16_t time_just_now = 4;
constexpr uint16_t time_minutes_ago = 5;
constexpr uint16_t time_hours_ago = 6;
constexpr uint16_t time_yesterday = 7;
constexpr uint16_t time_days_ago = 8;
constexpr uint16_t time_weeks_ago = 9;
constexpr uint16_t time_months_ago = 10;
constexpr uint16_t time_years_ago = 11;
constexpr uint16_t time_in_minutes = 12;
constexpr uint16_t time_in_hours = 13;
constexpr uint16_t time_tomorrow = 14;
constexpr uint16_t time_in_days = 15;
constexpr uint16_t time_am = 16;
constexpr uint16_t time_pm = 17;
constexpr uint16_t date_top_bar = 63;
constexpr uint16_t date_full = 64;
constexpr uint16_t date_day_month = 65;
constexpr uint16_t date_weekday_time = 66;
constexpr uint16_t duration_seconds = 67;
constexpr uint16_t duration_minutes = 68;
constexpr uint16_t duration_hours = 69;
constexpr uint16_t duration_hours_minutes = 70;
constexpr uint16_t duration_days = 71;
constexpr uint16_t duration_days_hours = 72;
constexpr uint16_t status_connecting = 73;
constexpr uint16_t status_waiting = 74;
constexpr uint16_t status_loading_tiles = 75;
constexpr uint16_t status_ha_not_connected = 76;
constexpr uint16_t status_manager_not_active = 77;
constexpr uint16_t status_choose_tiles = 78;
constexpr uint16_t status_home = 79;
constexpr uint16_t status_no_network = 80;
constexpr uint16_t settings_title = 81;
constexpr uint16_t settings_brightness = 82;
constexpr uint16_t settings_night = 83;
constexpr uint16_t settings_screen = 84;
constexpr uint16_t settings_this_screen = 85;
constexpr uint16_t settings_dark_mode = 86;
constexpr uint16_t settings_auto_standby = 87;
constexpr uint16_t settings_standby_after = 88;
constexpr uint16_t settings_standby_brightness = 89;
constexpr uint16_t settings_night_mode = 90;
constexpr uint16_t settings_starts = 91;
constexpr uint16_t settings_ends = 92;
constexpr uint16_t settings_night_brightness = 93;
constexpr uint16_t settings_back_to_page_1 = 94;
constexpr uint16_t settings_after = 95;
constexpr uint16_t settings_also_on_standby = 96;
constexpr uint16_t settings_swipe_between_pages = 97;
constexpr uint16_t settings_page_buttons = 98;
constexpr uint16_t settings_rotation = 99;
constexpr uint16_t settings_address = 100;
constexpr uint16_t settings_firmware = 101;
constexpr uint16_t settings_home_assistant = 102;
constexpr uint16_t settings_restart = 103;
constexpr uint16_t settings_connected = 104;
constexpr uint16_t settings_not_connected = 105;
constexpr uint16_t settings_tap_again_to_restart = 106;
constexpr uint16_t settings_seconds = 107;
constexpr uint16_t settings_minutes = 108;
constexpr uint16_t settings_hours = 109;
constexpr uint16_t settings_hours_minutes = 110;
constexpr uint16_t tile_tap_to_open = 111;
constexpr uint16_t tile_page = 112;
constexpr uint16_t tile_refused = 113;
constexpr uint16_t tile_command_sent = 114;
constexpr uint16_t tile_confirmed = 115;
constexpr uint16_t alert_notification = 116;
constexpr uint16_t alert_ok = 117;
constexpr uint16_t light_color = 118;
constexpr uint16_t light_color_temperature = 119;
constexpr uint16_t light_brightness = 120;
constexpr uint16_t light_waiting = 121;
constexpr uint16_t effects_effect = 122;
constexpr uint16_t effects_nothing = 123;
constexpr uint16_t effects_loading = 124;
constexpr uint16_t effects_not_connected = 125;
constexpr uint16_t climate_target = 126;
constexpr uint16_t climate_mode = 127;
constexpr uint16_t climate_fan = 128;
constexpr uint16_t climate_swing = 129;
constexpr uint16_t climate_now = 130;
constexpr uint16_t vacuum_check_robot = 131;
constexpr uint16_t vacuum_auto_suction = 132;
constexpr uint16_t vacuum_robot_chooses = 133;
constexpr uint16_t vacuum_per_room = 134;
constexpr uint16_t vacuum_speed_quiet = 135;
constexpr uint16_t vacuum_speed_balanced = 136;
constexpr uint16_t vacuum_speed_turbo = 137;
constexpr uint16_t vacuum_speed_max = 138;
constexpr uint16_t vacuum_pause_cleaning = 139;
constexpr uint16_t vacuum_pause = 140;
constexpr uint16_t vacuum_resume = 141;
constexpr uint16_t vacuum_start_cleaning = 142;
constexpr uint16_t vacuum_clean = 143;
constexpr uint16_t vacuum_dock = 144;
constexpr uint16_t cover_position = 145;
constexpr uint16_t cover_tilt = 146;
constexpr uint16_t cover_tilt_value = 147;
constexpr uint16_t weather_feels_like = 148;
constexpr uint16_t weather_no_forecast = 149;
constexpr uint16_t weather_coming_days = 150;
constexpr uint16_t history_no_data = 151;
constexpr uint16_t history_average = 152;
constexpr uint16_t history_average_of = 153;
constexpr uint16_t history_now = 154;
constexpr uint16_t history_range_hour = 155;
constexpr uint16_t history_range_day = 156;
constexpr uint16_t history_range_week = 157;
constexpr uint16_t history_high = 158;
constexpr uint16_t history_low = 159;
constexpr uint16_t history_times = 160;
constexpr uint16_t history_loading = 161;
constexpr uint16_t history_empty = 162;
constexpr uint16_t history_unavailable = 163;
constexpr uint16_t media_muted = 164;
constexpr uint16_t media_not_playing = 165;
constexpr uint16_t media_loading = 166;
constexpr uint16_t timer_running = 167;
constexpr uint16_t timer_paused = 168;
constexpr uint16_t timer_stopped = 169;
constexpr uint16_t timer_pause = 170;
constexpr uint16_t timer_start = 171;
constexpr uint16_t timer_cancel = 172;
constexpr uint16_t timer_paused_left = 173;
constexpr uint16_t sun_name = 174;
constexpr uint16_t sun_sunrise = 175;
constexpr uint16_t sun_sunset = 176;
constexpr uint16_t sun_rise = 177;
constexpr uint16_t sun_set = 178;
constexpr uint16_t script_running = 179;
constexpr uint16_t script_never_run = 180;
constexpr uint16_t script_last_time = 181;
constexpr uint16_t script_yesterday_time = 182;
constexpr uint16_t script_last_date = 183;
constexpr uint16_t camera_no_image = 184;
constexpr uint16_t camera_loading = 185;
constexpr uint16_t camera_live = 186;
constexpr uint16_t camera_recording = 187;
constexpr uint16_t camera_tap_to_view = 188;
constexpr uint16_t camera_no_image_yet = 189;
constexpr uint16_t calibration_title = 190;
constexpr uint16_t calibration_touch_check = 191;
constexpr uint16_t calibration_hold = 192;
constexpr uint16_t calibration_crosshair = 193;
constexpr uint16_t calibration_gently = 194;
constexpr uint16_t calibration_same = 195;
constexpr uint16_t calibration_rejected = 196;
constexpr uint16_t calibration_save_failed = 197;
constexpr uint16_t ha_on = 198;
constexpr uint16_t ha_off = 199;
constexpr uint16_t ha_unavailable = 200;
constexpr uint16_t ha_climate_off = 201;
constexpr uint16_t ha_climate_heat = 202;
constexpr uint16_t ha_climate_cool = 203;
constexpr uint16_t ha_climate_heat_cool = 204;
constexpr uint16_t ha_climate_auto = 205;
constexpr uint16_t ha_climate_dry = 206;
constexpr uint16_t ha_climate_fan_only = 207;
constexpr uint16_t ha_hvac_action_heating = 208;
constexpr uint16_t ha_hvac_action_cooling = 209;
constexpr uint16_t ha_hvac_action_idle = 210;
constexpr uint16_t ha_hvac_action_off = 211;
constexpr uint16_t ha_hvac_action_drying = 212;
constexpr uint16_t ha_hvac_action_fan = 213;
constexpr uint16_t ha_hvac_action_preheating = 214;
constexpr uint16_t ha_hvac_action_defrosting = 215;
constexpr uint16_t ha_cover_open = 216;
constexpr uint16_t ha_cover_closed = 217;
constexpr uint16_t ha_cover_opening = 218;
constexpr uint16_t ha_cover_closing = 219;
constexpr uint16_t ha_media_playing = 220;
constexpr uint16_t ha_media_paused = 221;
constexpr uint16_t ha_media_idle = 222;
constexpr uint16_t ha_media_standby = 223;
constexpr uint16_t ha_person_home = 224;
constexpr uint16_t ha_person_not_home = 225;
constexpr uint16_t ha_sun_above_horizon = 226;
constexpr uint16_t ha_sun_below_horizon = 227;
constexpr uint16_t ha_vacuum_docked = 228;
constexpr uint16_t ha_vacuum_cleaning = 229;
constexpr uint16_t ha_vacuum_paused = 230;
constexpr uint16_t ha_vacuum_returning = 231;
constexpr uint16_t ha_vacuum_idle = 232;
constexpr uint16_t ha_weather_sunny = 233;
constexpr uint16_t ha_weather_clear_night = 234;
constexpr uint16_t ha_weather_cloudy = 235;
constexpr uint16_t ha_weather_partlycloudy = 236;
constexpr uint16_t ha_weather_rainy = 237;
constexpr uint16_t ha_weather_pouring = 238;
constexpr uint16_t ha_weather_snowy = 239;
constexpr uint16_t ha_weather_snowy_rainy = 240;
constexpr uint16_t ha_weather_fog = 241;
constexpr uint16_t ha_weather_hail = 242;
constexpr uint16_t ha_weather_lightning = 243;
constexpr uint16_t ha_weather_lightning_rainy = 244;
constexpr uint16_t ha_weather_windy = 245;
constexpr uint16_t ha_weather_exceptional = 246;
constexpr uint16_t ha_binary_battery_on = 247;
constexpr uint16_t ha_binary_battery_off = 248;
constexpr uint16_t ha_binary_battery_charging_on = 249;
constexpr uint16_t ha_binary_battery_charging_off = 250;
constexpr uint16_t ha_binary_carbon_monoxide_on = 251;
constexpr uint16_t ha_binary_carbon_monoxide_off = 252;
constexpr uint16_t ha_binary_cold_on = 253;
constexpr uint16_t ha_binary_cold_off = 254;
constexpr uint16_t ha_binary_connectivity_on = 255;
constexpr uint16_t ha_binary_connectivity_off = 256;
constexpr uint16_t ha_binary_door_on = 257;
constexpr uint16_t ha_binary_door_off = 258;
constexpr uint16_t ha_binary_garage_door_on = 259;
constexpr uint16_t ha_binary_garage_door_off = 260;
constexpr uint16_t ha_binary_gas_on = 261;
constexpr uint16_t ha_binary_gas_off = 262;
constexpr uint16_t ha_binary_heat_on = 263;
constexpr uint16_t ha_binary_heat_off = 264;
constexpr uint16_t ha_binary_light_on = 265;
constexpr uint16_t ha_binary_light_off = 266;
constexpr uint16_t ha_binary_lock_on = 267;
constexpr uint16_t ha_binary_lock_off = 268;
constexpr uint16_t ha_binary_moisture_on = 269;
constexpr uint16_t ha_binary_moisture_off = 270;
constexpr uint16_t ha_binary_motion_on = 271;
constexpr uint16_t ha_binary_motion_off = 272;
constexpr uint16_t ha_binary_moving_on = 273;
constexpr uint16_t ha_binary_moving_off = 274;
constexpr uint16_t ha_binary_occupancy_on = 275;
constexpr uint16_t ha_binary_occupancy_off = 276;
constexpr uint16_t ha_binary_opening_on = 277;
constexpr uint16_t ha_binary_opening_off = 278;
constexpr uint16_t ha_binary_plug_on = 279;
constexpr uint16_t ha_binary_plug_off = 280;
constexpr uint16_t ha_binary_power_on = 281;
constexpr uint16_t ha_binary_power_off = 282;
constexpr uint16_t ha_binary_presence_on = 283;
constexpr uint16_t ha_binary_presence_off = 284;
constexpr uint16_t ha_binary_problem_on = 285;
constexpr uint16_t ha_binary_problem_off = 286;
constexpr uint16_t ha_binary_running_on = 287;
constexpr uint16_t ha_binary_running_off = 288;
constexpr uint16_t ha_binary_safety_on = 289;
constexpr uint16_t ha_binary_safety_off = 290;
constexpr uint16_t ha_binary_smoke_on = 291;
constexpr uint16_t ha_binary_smoke_off = 292;
constexpr uint16_t ha_binary_sound_on = 293;
constexpr uint16_t ha_binary_sound_off = 294;
constexpr uint16_t ha_binary_tamper_on = 295;
constexpr uint16_t ha_binary_tamper_off = 296;
constexpr uint16_t ha_binary_update_on = 297;
constexpr uint16_t ha_binary_update_off = 298;
constexpr uint16_t ha_binary_vibration_on = 299;
constexpr uint16_t ha_binary_vibration_off = 300;
constexpr uint16_t ha_binary_window_on = 301;
constexpr uint16_t ha_binary_window_off = 302;
constexpr uint16_t ha_button_activate = 303;
constexpr uint16_t ha_button_run = 304;
constexpr uint16_t ha_button_press = 305;
constexpr uint16_t date_weekdays = 18;
constexpr uint16_t date_weekdays_count = 7;
constexpr uint16_t date_weekdays_short = 25;
constexpr uint16_t date_weekdays_short_count = 7;
constexpr uint16_t date_weekdays_min = 32;
constexpr uint16_t date_weekdays_min_count = 7;
constexpr uint16_t date_months = 39;
constexpr uint16_t date_months_count = 12;
constexpr uint16_t date_months_short = 51;
constexpr uint16_t date_months_short_count = 12;
} // namespace txt
constexpr uint16_t KEY_COUNT = 306;
constexpr uint32_t KEYS_HASH = 0x5DBB4605u;
} // namespace screen_text