Skip to content

Commit

Permalink
Translatable init exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
autoSteve committed Jan 14, 2025
1 parent cb2104c commit aaf988b
Show file tree
Hide file tree
Showing 9 changed files with 389 additions and 584 deletions.
14 changes: 7 additions & 7 deletions custom_components/solcast_solar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,20 +263,20 @@ async def async_setup_entry(hass: HomeAssistant, entry: SolcastConfigEntry) -> b
await solcast.get_sites_and_usage()
match solcast.sites_status:
case SitesStatus.ERROR:
raise ConfigEntryNotReady("Sites data could not be retrieved")
raise ConfigEntryNotReady(translation_domain=DOMAIN, translation_key="init_cannot_get_sites")
case SitesStatus.CACHE_INVALID:
raise ConfigEntryNotReady("Sites data could not be retrieved and cache is invalid")
raise ConfigEntryNotReady(translation_domain=DOMAIN, translation_key="init_cannot_get_sites_cache_invalid")
case SitesStatus.BAD_KEY:
raise ConfigEntryError("API key is invalid")
raise ConfigEntryError(translation_domain=DOMAIN, translation_key="init_key_invalid")
case SitesStatus.NO_SITES:
raise ConfigEntryError("No sites found for API key")
raise ConfigEntryError(translation_domain=DOMAIN, translation_key="init_no_sites")
case SitesStatus.UNKNOWN:
raise ConfigEntryError("Exception loading sites data")
raise ConfigEntryError(translation_domain=DOMAIN, translation_key="init_unknown")
case SitesStatus.OK:
pass
match solcast.usage_status:
case UsageStatus.ERROR:
raise ConfigEntryError("Usage data is corrupt, check or delete config/solcast-usage.json")
raise ConfigEntryError(translation_domain=DOMAIN, translation_key="init_usage_corrupt")
case UsageStatus.OK:
pass

Expand All @@ -288,7 +288,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: SolcastConfigEntry) -> b

match solcast.status:
case SolcastApiStatus.DATA_INCOMPATIBLE:
raise ConfigEntryError("Data incompatible")
raise ConfigEntryError(translation_domain=DOMAIN, translation_key="init_incompatible")
case SolcastApiStatus.OK:
pass

Expand Down
133 changes: 56 additions & 77 deletions custom_components/solcast_solar/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,59 @@
}
}
},
"entity": {
"sensor": {
"power_now_30m": {"name": "Power in 30 Minutes"},
"power_now_1hr": {"name": "Power in 1 Hour"},
"total_kwh_forecast_today": {"name": "Forecast Today"},
"peak_w_today": {"name": "Peak Forecast Today"},
"peak_w_time_today": {"name": "Peak Time Today"},
"forecast_this_hour": {"name": "Forecast This Hour"},
"get_remaining_today": {"name": "Forecast Remaining Today"},
"forecast_next_hour": {"name": "Forecast Next Hour"},
"forecast_custom_hours": {"name": "Forecast Next X Hours"},
"total_kwh_forecast_tomorrow": {"name": "Forecast Tomorrow"},
"peak_w_tomorrow": {"name": "Peak Forecast Tomorrow"},
"peak_w_time_tomorrow": {"name": "Peak Time Tomorrow"},
"api_counter": {"name": "API Used"},
"api_limit": {"name": "API Limit"},
"lastupdated": {"name": "API Last Polled"},
"total_kwh_forecast_d3": {"name": "Forecast Day 3"},
"total_kwh_forecast_d4": {"name": "Forecast Day 4"},
"total_kwh_forecast_d5": {"name": "Forecast Day 5"},
"total_kwh_forecast_d6": {"name": "Forecast Day 6"},
"total_kwh_forecast_d7": {"name": "Forecast Day 7"},
"power_now": {"name": "Power Now"},
"hard_limit": {"name": "Hard Limit Set"},
"hard_limit_api": {"name": "Hard Limit Set {api_key}"}
},
"select": {
"estimate_mode" : {"name": "Use Forecast Field"}
}
},
"exceptions": {
"auto_use_force": {"message": "Auto-update is enabled, ignoring service event for forecast update, use Force Update instead."},
"auto_use_normal": {"message": "Auto-update is not enabled, ignoring service event for force forecast update, use Update instead."},
"damp_count_not_correct": {"message": "There are not 24 or 48 comma separated numbers between 0.0 and 1.0."},
"damp_error_parsing": {"message": "Error parsing dampening factor comma separated numbers."},
"damp_no_all_24": {"message": "Specifying a site of 'all' is not allowed with 24 factors, remove site from the request."},
"damp_no_factors": {"message": "No dampening factors, must be a comma separated list of numbers between 0.0 and 1.0."},
"damp_not_for_site": {"message": "Site dampening is not set for {site}."},
"damp_not_site": {"message": "Not a configured site."},
"damp_outside_range": {"message": "Dampening factor value present that is not between 0.0 and 1.0."},
"damp_use_all": {"message": "Site dampening is not set for {site}, 'all' is the only available site parameter for the service call."},
"hard_empty": {"message": "Empty hard limit value."},
"hard_not_positive_number": {"message": "Hard limit value is not a positive number."},
"hard_too_many": {"message": "More hard limits are specified than there are API keys."},
"init_cannot_get_sites": {"message": "Sites data could not be retrieved."},
"init_cannot_get_sites_cache_invalid": {"message": "Sites data could not be retrieved and cache is invalid."},
"init_incompatible": {"message": "Cached `config/solcast.json` data incompatible. Delete it."},
"init_key_invalid": {"message": "API key is invalid."},
"init_no_sites": {"message": "No sites found for API key."},
"init_unknown": {"message": "Exception loading sites data."},
"init_usage_corrupt": {"message": "Usage data is corrupt, check or delete `config/solcast-usage.json`."},
"remove_cache_failed": {"message": "Clear all Solcast data failed."}
},
"options": {
"step": {
"init": {
Expand Down Expand Up @@ -80,11 +133,6 @@
"incorrect_options_action": "Incorrect action chosen"
}
},
"system_health": {
"info": {
"can_reach_server": "Solcast server connection"
}
},
"selector": {
"auto_update": {
"options": {
Expand Down Expand Up @@ -175,78 +223,9 @@
"description": "Remove set limit."
}
},
"entity": {
"sensor": {
"power_now_30m": {"name": "Power in 30 Minutes"},
"power_now_1hr": {"name": "Power in 1 Hour"},
"total_kwh_forecast_today": {"name": "Forecast Today"},
"peak_w_today": {"name": "Peak Forecast Today"},
"peak_w_time_today": {"name": "Peak Time Today"},
"forecast_this_hour": {"name": "Forecast This Hour"},
"get_remaining_today": {"name": "Forecast Remaining Today"},
"forecast_next_hour": {"name": "Forecast Next Hour"},
"forecast_custom_hours": {"name": "Forecast Next X Hours"},
"total_kwh_forecast_tomorrow": {"name": "Forecast Tomorrow"},
"peak_w_tomorrow": {"name": "Peak Forecast Tomorrow"},
"peak_w_time_tomorrow": {"name": "Peak Time Tomorrow"},
"api_counter": {"name": "API Used"},
"api_limit": {"name": "API Limit"},
"lastupdated": {"name": "API Last Polled"},
"total_kwh_forecast_d3": {"name": "Forecast Day 3"},
"total_kwh_forecast_d4": {"name": "Forecast Day 4"},
"total_kwh_forecast_d5": {"name": "Forecast Day 5"},
"total_kwh_forecast_d6": {"name": "Forecast Day 6"},
"total_kwh_forecast_d7": {"name": "Forecast Day 7"},
"power_now": {"name": "Power Now"},
"hard_limit": {"name": "Hard Limit Set"},
"hard_limit_api": {"name": "Hard Limit Set {api_key}"}
},
"select": {
"estimate_mode" : {"name": "Use Forecast Field"}
}
},
"exceptions": {
"auto_use_force": {
"message": "Auto-update is enabled, ignoring service event for forecast update, use Force Update instead."
},
"auto_use_normal": {
"message": "Auto-update is not enabled, ignoring service event for force forecast update, use Update instead."
},
"damp_not_for_site": {
"message": "Site dampening is not set for {site}."
},
"damp_use_all": {
"message": "Site dampening is not set for {site}, 'all' is the only available site parameter for the service call."
},
"damp_no_factors": {
"message": "No dampening factors, must be a comma separated list of numbers between 0.0 and 1.0."
},
"damp_count_not_correct": {
"message": "There are not 24 or 48 comma separated numbers between 0.0 and 1.0."
},
"damp_no_all_24": {
"message": "Specifying a site of 'all' is not allowed with 24 factors, remove site from the request."
},
"damp_not_site": {
"message": "Not a configured site."
},
"damp_error_parsing": {
"message": "Error parsing dampening factor comma separated numbers."
},
"damp_outside_range": {
"message": "Dampening factor value present that is not between 0.0 and 1.0."
},
"hard_empty": {
"message": "Empty hard limit value."
},
"hard_too_many": {
"message": "More hard limits are specified than there are API keys."
},
"hard_not_positive_number": {
"message": "Hard limit value is not a positive number."
},
"remove_cache_failed": {
"message": "Clear all Solcast data failed."
"system_health": {
"info": {
"can_reach_server": "Solcast server connection"
}
}
}
133 changes: 56 additions & 77 deletions custom_components/solcast_solar/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,59 @@
}
}
},
"entity": {
"sensor": {
"power_now_30m": {"name": "Leistung in 30 Minuten"},
"power_now_1hr": {"name": "Leistung in 1 Stunde"},
"total_kwh_forecast_today": {"name": "Prognose heute"},
"peak_w_today": {"name": "Prognose Spitzenleistung heute"},
"peak_w_time_today": {"name": "Zeitpunkt Spitzenleistung heute"},
"forecast_this_hour": {"name": "Prognose aktuelle Stunde"},
"get_remaining_today": {"name": "Prognose verbleibende Leistung heute"},
"forecast_next_hour": {"name": "Prognose nächste Stunde"},
"forecast_custom_hours": {"name": "Prognostizieren Sie die nächsten X Stunden"},
"total_kwh_forecast_tomorrow": {"name": "Prognose morgen"},
"peak_w_tomorrow": {"name": "Prognose Spitzenleistung morgen"},
"peak_w_time_tomorrow": {"name": "Zeitpunkt Spitzenleistung morgen"},
"api_counter": {"name": "Verwendete API-Abrufe"},
"api_limit": {"name": "max. API-Abrufe"},
"lastupdated": {"name": "Zeitpunkt letzter API-Abruf"},
"total_kwh_forecast_d3": {"name": "Prognose Tag 3"},
"total_kwh_forecast_d4": {"name": "Prognose Tag 4"},
"total_kwh_forecast_d5": {"name": "Prognose Tag 5"},
"total_kwh_forecast_d6": {"name": "Prognose Tag 6"},
"total_kwh_forecast_d7": {"name": "Prognose Tag 7"},
"power_now": {"name": "Aktuelle Leistung"},
"hard_limit": {"name": "Fester Grenzwert eingestellt"},
"hard_limit_api": {"name": "Fester Grenzwert eingestellt {api_key}"}
},
"select": {
"estimate_mode" : {"name": "Verwenden Sie das Prognosefeld"}
}
},
"exceptions": {
"auto_use_force": {"message": "Die automatische Aktualisierung ist aktiviert und ignoriert Serviceereignisse für die Prognoseaktualisierung. Verwenden Sie stattdessen „Aktualisierung erzwingen“."},
"auto_use_normal": {"message": "Die automatische Aktualisierung ist nicht aktiviert. Dienstereignisse werden ignoriert, um eine Prognoseaktualisierung zu erzwingen. Verwenden Sie stattdessen „Aktualisierung“."},
"damp_not_for_site": {"message": "Die Site-Dämpfung ist für {site} nicht festgelegt."},
"damp_use_all": {"message": "Die Standortdämpfung ist für {site} nicht festgelegt, „all“ ist der einzige verfügbare Standortparameter für den Serviceaufruf."},
"damp_no_factors": {"message": "Keine Dämpfungsfaktoren, es muss eine durch Kommas getrennte Liste von Zahlen zwischen 0,0 und 1,0 sein."},
"damp_count_not_correct": {"message": "Es gibt keine 24 oder 48 durch Kommas getrennten Zahlen zwischen 0,0 und 1,0."},
"damp_no_all_24": {"message": "Bei 24 Faktoren ist die Angabe einer Site „all“ (alle) nicht zulässig. Entfernen Sie die Site aus der Anfrage."},
"damp_not_site": {"message": "Keine konfigurierte Site."},
"damp_error_parsing": {"message": "Fehler beim Parsen der durch Kommas getrennten Zahlen des Dämpfungsfaktors."},
"damp_outside_range": {"message": "Es liegt ein Wert des Dämpfungsfaktors vor, der nicht zwischen 0,0 und 1,0 liegt."},
"hard_empty": {"message": "Leerer harter Grenzwert."},
"hard_too_many": {"message": "Es werden mehr harte Limits angegeben als API-Schlüssel vorhanden sind."},
"hard_not_positive_number": {"message": "Der harte Grenzwert ist keine positive Zahl."},
"init_cannot_get_sites": {"message": "Site-Daten konnten nicht abgerufen werden."},
"init_cannot_get_sites_cache_invalid": {"message": "Die Site-Daten konnten nicht abgerufen werden und der Cache ist ungültig."},
"init_incompatible": {"message": "Zwischengespeicherte „config/solcast.json“-Daten sind nicht kompatibel, löschen Sie sie."},
"init_key_invalid": {"message": "Der API-Schlüssel ist ungültig."},
"init_no_sites": {"message": "Für den API-Schlüssel wurden keine Websites gefunden."},
"init_unknown": {"message": "Ausnahme beim Laden von Site-Daten."},
"init_usage_corrupt": {"message": "Die Nutzungsdaten sind beschädigt. Überprüfen oder löschen Sie „config/solcast-usage.json“."},
"remove_cache_failed": {"message": "Das Löschen aller Solcast-Daten ist fehlgeschlagen."}
},
"options": {
"step": {
"init": {
Expand Down Expand Up @@ -81,11 +134,6 @@
"incorrect_options_action": "Falsche Aktion ausgewählt"
}
},
"system_health": {
"info": {
"can_reach_server": "Verbindung zum Solcast-Server"
}
},
"selector": {
"auto_update": {
"options": {
Expand Down Expand Up @@ -176,78 +224,9 @@
"description": "Eingestelltes Limit entfernen."
}
},
"entity": {
"sensor": {
"power_now_30m": {"name": "Leistung in 30 Minuten"},
"power_now_1hr": {"name": "Leistung in 1 Stunde"},
"total_kwh_forecast_today": {"name": "Prognose heute"},
"peak_w_today": {"name": "Prognose Spitzenleistung heute"},
"peak_w_time_today": {"name": "Zeitpunkt Spitzenleistung heute"},
"forecast_this_hour": {"name": "Prognose aktuelle Stunde"},
"get_remaining_today": {"name": "Prognose verbleibende Leistung heute"},
"forecast_next_hour": {"name": "Prognose nächste Stunde"},
"forecast_custom_hours": {"name": "Prognostizieren Sie die nächsten X Stunden"},
"total_kwh_forecast_tomorrow": {"name": "Prognose morgen"},
"peak_w_tomorrow": {"name": "Prognose Spitzenleistung morgen"},
"peak_w_time_tomorrow": {"name": "Zeitpunkt Spitzenleistung morgen"},
"api_counter": {"name": "Verwendete API-Abrufe"},
"api_limit": {"name": "max. API-Abrufe"},
"lastupdated": {"name": "Zeitpunkt letzter API-Abruf"},
"total_kwh_forecast_d3": {"name": "Prognose Tag 3"},
"total_kwh_forecast_d4": {"name": "Prognose Tag 4"},
"total_kwh_forecast_d5": {"name": "Prognose Tag 5"},
"total_kwh_forecast_d6": {"name": "Prognose Tag 6"},
"total_kwh_forecast_d7": {"name": "Prognose Tag 7"},
"power_now": {"name": "Aktuelle Leistung"},
"hard_limit": {"name": "Fester Grenzwert eingestellt"},
"hard_limit_api": {"name": "Fester Grenzwert eingestellt {api_key}"}
},
"select": {
"estimate_mode" : {"name": "Verwenden Sie das Prognosefeld"}
}
},
"exceptions": {
"auto_use_force": {
"message": "Die automatische Aktualisierung ist aktiviert und ignoriert Serviceereignisse für die Prognoseaktualisierung. Verwenden Sie stattdessen „Aktualisierung erzwingen“."
},
"auto_use_normal": {
"message": "Die automatische Aktualisierung ist nicht aktiviert. Dienstereignisse werden ignoriert, um eine Prognoseaktualisierung zu erzwingen. Verwenden Sie stattdessen „Aktualisierung“."
},
"damp_not_for_site": {
"message": "Die Site-Dämpfung ist für {site} nicht festgelegt."
},
"damp_use_all": {
"message": "Die Standortdämpfung ist für {site} nicht festgelegt, „all“ ist der einzige verfügbare Standortparameter für den Serviceaufruf."
},
"damp_no_factors": {
"message": "Keine Dämpfungsfaktoren, es muss eine durch Kommas getrennte Liste von Zahlen zwischen 0,0 und 1,0 sein."
},
"damp_count_not_correct": {
"message": "Es gibt keine 24 oder 48 durch Kommas getrennten Zahlen zwischen 0,0 und 1,0."
},
"damp_no_all_24": {
"message": "Bei 24 Faktoren ist die Angabe einer Site „all“ (alle) nicht zulässig. Entfernen Sie die Site aus der Anfrage."
},
"damp_not_site": {
"message": "Keine konfigurierte Site."
},
"damp_error_parsing": {
"message": "Fehler beim Parsen der durch Kommas getrennten Zahlen des Dämpfungsfaktors."
},
"damp_outside_range": {
"message": "Es liegt ein Wert des Dämpfungsfaktors vor, der nicht zwischen 0,0 und 1,0 liegt."
},
"hard_empty": {
"message": "Leerer harter Grenzwert."
},
"hard_too_many": {
"message": "Es werden mehr harte Limits angegeben als API-Schlüssel vorhanden sind."
},
"hard_not_positive_number": {
"message": "Der harte Grenzwert ist keine positive Zahl."
},
"remove_cache_failed": {
"message": "Das Löschen aller Solcast-Daten ist fehlgeschlagen."
"system_health": {
"info": {
"can_reach_server": "Verbindung zum Solcast-Server"
}
}
}
Loading

0 comments on commit aaf988b

Please sign in to comment.