mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 00:04:11 +01:00
allow individual per source translations
each source should specify its own translations which will only apply for this source and not other sources with the same argument name
This commit is contained in:
@@ -484,32 +484,34 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
|
||||
for arg in args:
|
||||
default = args[arg].default
|
||||
arg_name = args[arg].name
|
||||
arg_key = f"{source}_{arg_name}"
|
||||
field_type = None
|
||||
|
||||
annotation = args[arg].annotation
|
||||
description = None
|
||||
if args_input is not None and args[arg].name in args_input:
|
||||
description = {"suggested_value": args_input[args[arg].name]}
|
||||
if args_input is not None and arg_key in args_input:
|
||||
description = {"suggested_value": args_input[arg_key]}
|
||||
_LOGGER.debug(
|
||||
f"Setting suggested value for {args[arg].name} to {args_input[args[arg].name]} (previously filled in)"
|
||||
f"Setting suggested value for {arg_key} to {args_input[arg_key]} (previously filled in)"
|
||||
)
|
||||
elif args[arg].name in pre_filled:
|
||||
elif arg_key in pre_filled:
|
||||
_LOGGER.debug(
|
||||
f"Setting default value for {args[arg].name} to {pre_filled[args[arg].name]}"
|
||||
f"Setting default value for {arg_key} to {pre_filled[arg_key]}"
|
||||
)
|
||||
description = {
|
||||
"suggested_value": pre_filled[args[arg].name],
|
||||
"suggested_value": pre_filled[arg_key],
|
||||
}
|
||||
if annotation != inspect._empty:
|
||||
field_type = (
|
||||
await self.__get_type_by_annotation(annotation) or field_type
|
||||
)
|
||||
_LOGGER.debug(
|
||||
f"Default for {args[arg].name}: {type(default) if default is not inspect.Signature.empty else inspect.Signature.empty}"
|
||||
f"Default for {arg_key}: {type(default) if default is not inspect.Signature.empty else inspect.Signature.empty}"
|
||||
)
|
||||
|
||||
if args[arg].name in MODULE_FLOW_TYPES:
|
||||
flow_type = MODULE_FLOW_TYPES[args[arg].name]
|
||||
if arg_name in MODULE_FLOW_TYPES:
|
||||
flow_type = MODULE_FLOW_TYPES[arg_name]
|
||||
if flow_type.get("type") == "SELECT":
|
||||
field_type = SelectSelector(
|
||||
SelectSelectorConfig(
|
||||
@@ -530,14 +532,14 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
arg
|
||||
].name in suggestions:
|
||||
_LOGGER.debug(
|
||||
f"Adding suggestions to {args[arg].name}: {suggestions[args[arg].name]}"
|
||||
f"Adding suggestions to {arg_key}: {suggestions[arg_key]}"
|
||||
)
|
||||
# Add suggestions to the field if fetch/init raised an Exception with suggestions
|
||||
field_type = SelectSelector(
|
||||
SelectSelectorConfig(
|
||||
options=[
|
||||
SelectOptionDict(label=x, value=x)
|
||||
for x in suggestions[args[arg].name]
|
||||
for x in suggestions[arg_key]
|
||||
],
|
||||
mode=SelectSelectorMode.DROPDOWN,
|
||||
custom_value=True,
|
||||
@@ -546,7 +548,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
)
|
||||
|
||||
if default == inspect.Signature.empty:
|
||||
vol_args[vol.Required(args[arg].name, description=description)] = (
|
||||
vol_args[vol.Required(arg_key, description=description)] = (
|
||||
field_type or str
|
||||
)
|
||||
|
||||
@@ -554,7 +556,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
# Handle boolean, int, string, date, datetime, list defaults
|
||||
vol_args[
|
||||
vol.Optional(
|
||||
args[arg].name,
|
||||
arg_key,
|
||||
default=UNDEFINED if default is None else default,
|
||||
description=description,
|
||||
)
|
||||
@@ -563,7 +565,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
)
|
||||
else:
|
||||
_LOGGER.debug(
|
||||
f"Unsupported type: {type(default)}: {args[arg].name}: {default}: {field_type}"
|
||||
f"Unsupported type: {type(default)}: {arg_key}: {default}: {field_type}"
|
||||
)
|
||||
|
||||
schema = vol.Schema(vol_args)
|
||||
@@ -584,6 +586,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
"""
|
||||
errors = {}
|
||||
description_placeholders: dict[str, str] = {}
|
||||
args_input = {k.removeprefix(f"{source}_"): v for k, v in args_input.items()}
|
||||
|
||||
if hasattr(module, "validate_params"):
|
||||
errors.update(module.validate_params(args_input))
|
||||
@@ -610,16 +613,17 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
except SourceArgumentSuggestionsExceptionBase as e:
|
||||
if not hasattr(self, "_error_suggestions"):
|
||||
self._error_suggestions = {}
|
||||
self._error_suggestions.update({e.argument: e.suggestions})
|
||||
errors[e.argument] = "invalid_arg"
|
||||
arg_key = f"{source}_{e.argument}"
|
||||
self._error_suggestions.update({arg_key: e.suggestions})
|
||||
errors[arg_key] = "invalid_arg"
|
||||
description_placeholders["invalid_arg_message"] = e.simple_message
|
||||
if e.suggestion_type != str and e.suggestion_type != int:
|
||||
description_placeholders["invalid_arg_message"] = e.message
|
||||
except SourceArgumentRequired as e:
|
||||
errors[e.argument] = "invalid_arg"
|
||||
errors[f"{source}_{e.argument}"] = "invalid_arg"
|
||||
description_placeholders["invalid_arg_message"] = e.message
|
||||
except SourceArgumentException as e:
|
||||
errors[e.argument] = "invalid_arg"
|
||||
errors[f"{source}_{e.argument}"] = "invalid_arg"
|
||||
description_placeholders["invalid_arg_message"] = e.message
|
||||
except SourceArgumentExceptionMultiple as e:
|
||||
description_placeholders["invalid_arg_message"] = e.message
|
||||
@@ -627,7 +631,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
||||
errors["base"] = "invalid_arg"
|
||||
else:
|
||||
for arg in e.arguments:
|
||||
errors[arg] = "invalid_arg"
|
||||
errors[f"{source}_{arg}"] = "invalid_arg"
|
||||
except Exception as e:
|
||||
errors["base"] = "fetch_error"
|
||||
description_placeholders["fetch_error_message"] = str(e)
|
||||
|
||||
@@ -67,11 +67,180 @@
|
||||
"title": "Quelle konfigurieren",
|
||||
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
||||
"data": {
|
||||
"ahk_heidekreis_de_city": "Ort",
|
||||
"ahk_heidekreis_de_house_number": "Hausnummer",
|
||||
"ahk_heidekreis_de_postcode": "PLZ",
|
||||
"ahk_heidekreis_de_street": "Straße",
|
||||
"art_trier_de_district": "Ort",
|
||||
"art_trier_de_zip_code": "PLZ",
|
||||
"asr_chemnitz_de_house_number": "Hausnummer",
|
||||
"asr_chemnitz_de_object_number": "Objektnummer",
|
||||
"asr_chemnitz_de_street": "Straße",
|
||||
"awb_emsland_de_address_suffix": "Hausnummerzusatz",
|
||||
"awb_emsland_de_city": "Ort",
|
||||
"awb_emsland_de_house_number": "Hausnummer",
|
||||
"awb_emsland_de_street": "Straße",
|
||||
"awb_oldenburg_de_house_number": "Hausnummer",
|
||||
"awb_oldenburg_de_street": "Straße",
|
||||
"awbkoeln_de_building_number": "Hausnummer",
|
||||
"awbkoeln_de_street_code": "Straßencode",
|
||||
"awido_de_city": "Ort",
|
||||
"awido_de_customer": "Kunde",
|
||||
"awido_de_housenumber": "Hausnummer",
|
||||
"awido_de_street": "Straße",
|
||||
"awlneuss_de_building_number": "Hausnummer",
|
||||
"awlneuss_de_street_code": "Straßencode",
|
||||
"awlneuss_de_street_name": "Straßenname",
|
||||
"awn_de_address_suffix": "Hausnummerzusatz",
|
||||
"awn_de_city": "Ort",
|
||||
"awn_de_house_number": "Hausnummer",
|
||||
"awn_de_street": "Straße",
|
||||
"awr_de_city": "Ort",
|
||||
"awr_de_street": "Straße",
|
||||
"awsh_de_city": "Ort",
|
||||
"awsh_de_street": "Straße",
|
||||
"berlin_recycling_de_password": "Passwort",
|
||||
"berlin_recycling_de_username": "Benutzername",
|
||||
"bielefeld_de_address_suffix": "Hausnummerzusatz",
|
||||
"bielefeld_de_house_number": "Hausnummer",
|
||||
"bielefeld_de_street": "Straße",
|
||||
"bsr_de_abf_hausnr": "Hausnummer",
|
||||
"bsr_de_abf_strasse": "Straße",
|
||||
"buergerportal_de_district": "Ort",
|
||||
"buergerportal_de_number": "Hausnummer",
|
||||
"buergerportal_de_operator": "Betreiber",
|
||||
"buergerportal_de_show_volume": "Große Container anzeigen",
|
||||
"buergerportal_de_street": "Straße",
|
||||
"buergerportal_de_subdistrict": "Ortsteil",
|
||||
"calendar_title": "Kalender Titel",
|
||||
"customer": "Kunde",
|
||||
"street": "Straße",
|
||||
"city": "Ort",
|
||||
"housenumber": "Hausnummer"
|
||||
"cederbaum_de_street": "Straße",
|
||||
"dillingen_saar_de_street": "Straße",
|
||||
"ead_darmstadt_de_street": "Straße",
|
||||
"egn_abfallkalender_de_city": "Ort",
|
||||
"egn_abfallkalender_de_district": "Ortsteil",
|
||||
"egn_abfallkalender_de_housenumber": "Hausnummer",
|
||||
"egn_abfallkalender_de_street": "Straße",
|
||||
"eigenbetrieb_abfallwirtschaft_de_city": "Ort",
|
||||
"eigenbetrieb_abfallwirtschaft_de_street": "Straße",
|
||||
"erlangen_hoechstadt_de_city": "Ort",
|
||||
"erlangen_hoechstadt_de_street": "Straße",
|
||||
"geoport_nwm_de_district": "Ortsteil",
|
||||
"hausmuell_info_hausnummer": "Hausnummer",
|
||||
"hausmuell_info_ort": "Ort",
|
||||
"hausmuell_info_ortsteil": "Ortsteil",
|
||||
"hausmuell_info_strasse": "Straße",
|
||||
"hausmuell_info_subdomain": "Subdomain",
|
||||
"heilbronn_de_hausnr": "Hausnummer",
|
||||
"heilbronn_de_plz": "PLZ",
|
||||
"heilbronn_de_strasse": "Straße",
|
||||
"ics_file": "Datei",
|
||||
"ics_headers": "Headers",
|
||||
"ics_method": "Methode",
|
||||
"ics_offset": "Offset",
|
||||
"ics_params": "Parameter",
|
||||
"ics_regex": "Regulärer Ausdruck",
|
||||
"ics_split_at": "Trennen bei",
|
||||
"ics_title_template": "Titelvorlage",
|
||||
"ics_url": "URL",
|
||||
"ics_verify_ssl": "SSL-Verifizierung aktivieren",
|
||||
"ics_version": "Version",
|
||||
"ics_year_field": "Jahresfeld",
|
||||
"infeo_at_city": "Ort",
|
||||
"infeo_at_customer": "Kunde",
|
||||
"infeo_at_housenumber": "Hausnummer",
|
||||
"infeo_at_street": "Straße",
|
||||
"infeo_at_zone": "Zone",
|
||||
"insert_it_de_hnr": "Hausnummer",
|
||||
"insert_it_de_location_id": "Standort ID",
|
||||
"insert_it_de_municipality": "Ort",
|
||||
"insert_it_de_street": "Straße",
|
||||
"jumomind_de_area_id": "Bereich ID",
|
||||
"jumomind_de_city": "Ort",
|
||||
"jumomind_de_city_id": "Ort ID",
|
||||
"jumomind_de_house_number": "Hausnummer",
|
||||
"jumomind_de_service_id": "Service ID",
|
||||
"jumomind_de_street": "Straße",
|
||||
"karlsruhe_de_hnr": "Hausnummer",
|
||||
"karlsruhe_de_ladeort": "Ladeort",
|
||||
"karlsruhe_de_street": "Straße",
|
||||
"korneuburg_stadtservice_at_street_name": "Straßenname",
|
||||
"korneuburg_stadtservice_at_street_number": "Hausnummer",
|
||||
"korneuburg_stadtservice_at_teilgebiet": "Teilgebiet",
|
||||
"ks_boerde_de_house_number": "Hausnummer",
|
||||
"ks_boerde_de_street": "Straße",
|
||||
"ks_boerde_de_village": "Ort",
|
||||
"kwb_goslar_de_pois": "POIS",
|
||||
"kwu_de_city": "Ort",
|
||||
"kwu_de_number": "Hausnummer",
|
||||
"kwu_de_street": "Straße",
|
||||
"landkreis_rhoen_grabfeld_city": "Ort",
|
||||
"landkreis_rhoen_grabfeld_district": "Ortsteil",
|
||||
"landkreis_wittmund_de_city": "Ort",
|
||||
"landkreis_wittmund_de_street": "Straße",
|
||||
"lindau_ch_city": "Ort",
|
||||
"lrasha_de_location": "Gebiet",
|
||||
"mags_de_number": "Hausnummer",
|
||||
"mags_de_street": "Straße",
|
||||
"mags_de_turnus": "Turnus",
|
||||
"meinawb_de_address_suffix": "Hausnummerzusatz",
|
||||
"meinawb_de_city": "Ort",
|
||||
"meinawb_de_house_number": "Hausnummer",
|
||||
"meinawb_de_street": "Strasse",
|
||||
"monaloga_de_plz": "PLZ",
|
||||
"monaloga_de_street": "Straße",
|
||||
"muellabfuhr_de_city": "Ort",
|
||||
"muellabfuhr_de_client": "Client",
|
||||
"muellabfuhr_de_district": "Ortsteil",
|
||||
"muellabfuhr_de_street": "Straße",
|
||||
"muellmax_de_mm_frm_hnr_sel": "Hausnummer",
|
||||
"muellmax_de_mm_frm_ort_sel": "Ort",
|
||||
"muellmax_de_mm_frm_str_sel": "Straße",
|
||||
"muellmax_de_service": "Service",
|
||||
"muenchenstein_ch_waste_district": "Abfuhrkreis",
|
||||
"offenbach_de_f_id_location": "Standort ID",
|
||||
"potsdam_de_bio_rhythm": "Bio Rhythmus",
|
||||
"potsdam_de_gelb_rhythm": "Gelb Rhythmus",
|
||||
"potsdam_de_ortsteil": "Ortsteil",
|
||||
"potsdam_de_papier_rhythm": "Papier Rhythmus",
|
||||
"potsdam_de_rest_rhythm": "Restabfall Rhythmus",
|
||||
"potsdam_de_strasse": "Straße",
|
||||
"real_luzern_ch_municipality_id": "Orts ID",
|
||||
"real_luzern_ch_street_id": "Strassen ID",
|
||||
"regioentsorgung_de_city": "Ort",
|
||||
"regioentsorgung_de_house_number": "Hausnummer",
|
||||
"regioentsorgung_de_street": "Straße",
|
||||
"rh_entsorgung_de_address_suffix": "Hausnummerzusatz",
|
||||
"rh_entsorgung_de_city": "Ort",
|
||||
"rh_entsorgung_de_house_number": "Hausnummer",
|
||||
"rh_entsorgung_de_street": "Straße",
|
||||
"sbazv_de_city": "Ort",
|
||||
"sbazv_de_district": "Ortsteil",
|
||||
"sbazv_de_street": "Straße",
|
||||
"sector27_de_city": "Ort",
|
||||
"sector27_de_street": "Straße",
|
||||
"stuttgart_de_street": "Straße",
|
||||
"stuttgart_de_streetnr": "Hausnummer",
|
||||
"tbv_velbert_de_street": "Straße",
|
||||
"tonnenleerung_de_url": "URL",
|
||||
"was_wolfsburg_de_city": "Ort",
|
||||
"was_wolfsburg_de_street": "Straße",
|
||||
"wermelskirchen_de_house_number": "Hausnummer",
|
||||
"wermelskirchen_de_street": "Straße",
|
||||
"wsz_moosburg_at_address": "Adresse",
|
||||
"wsz_moosburg_at_address_id": "Adressen ID",
|
||||
"wsz_moosburg_at_municipal": "Gemeinde",
|
||||
"wsz_moosburg_at_street": "Straße",
|
||||
"wuerzburg_de_district": "Stadtteil",
|
||||
"wuerzburg_de_street": "Straße",
|
||||
"zakb_de_hnr": "Hausnummer",
|
||||
"zakb_de_hnr_zusatz": "Hausnummerzusatz",
|
||||
"zakb_de_ort": "Ort",
|
||||
"zakb_de_strasse": "Straße",
|
||||
"zva_sek_de_bezirk": "Abfuhrbezirk",
|
||||
"zva_sek_de_ortsteil": "Ortsteil",
|
||||
"zva_sek_de_strasse": "Straße",
|
||||
"zva_wmk_de_city": "Ort",
|
||||
"zva_wmk_de_street": "Straße"
|
||||
},
|
||||
"data_description": {
|
||||
"calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet."
|
||||
@@ -110,11 +279,180 @@
|
||||
"title": "Quelle Neu Konfigurieren",
|
||||
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
||||
"data": {
|
||||
"ahk_heidekreis_de_city": "Ort",
|
||||
"ahk_heidekreis_de_house_number": "Hausnummer",
|
||||
"ahk_heidekreis_de_postcode": "PLZ",
|
||||
"ahk_heidekreis_de_street": "Straße",
|
||||
"art_trier_de_district": "Ort",
|
||||
"art_trier_de_zip_code": "PLZ",
|
||||
"asr_chemnitz_de_house_number": "Hausnummer",
|
||||
"asr_chemnitz_de_object_number": "Objektnummer",
|
||||
"asr_chemnitz_de_street": "Straße",
|
||||
"awb_emsland_de_address_suffix": "Hausnummerzusatz",
|
||||
"awb_emsland_de_city": "Ort",
|
||||
"awb_emsland_de_house_number": "Hausnummer",
|
||||
"awb_emsland_de_street": "Straße",
|
||||
"awb_oldenburg_de_house_number": "Hausnummer",
|
||||
"awb_oldenburg_de_street": "Straße",
|
||||
"awbkoeln_de_building_number": "Hausnummer",
|
||||
"awbkoeln_de_street_code": "Straßencode",
|
||||
"awido_de_city": "Ort",
|
||||
"awido_de_customer": "Kunde",
|
||||
"awido_de_housenumber": "Hausnummer",
|
||||
"awido_de_street": "Straße",
|
||||
"awlneuss_de_building_number": "Hausnummer",
|
||||
"awlneuss_de_street_code": "Straßencode",
|
||||
"awlneuss_de_street_name": "Straßenname",
|
||||
"awn_de_address_suffix": "Hausnummerzusatz",
|
||||
"awn_de_city": "Ort",
|
||||
"awn_de_house_number": "Hausnummer",
|
||||
"awn_de_street": "Straße",
|
||||
"awr_de_city": "Ort",
|
||||
"awr_de_street": "Straße",
|
||||
"awsh_de_city": "Ort",
|
||||
"awsh_de_street": "Straße",
|
||||
"berlin_recycling_de_password": "Passwort",
|
||||
"berlin_recycling_de_username": "Benutzername",
|
||||
"bielefeld_de_address_suffix": "Hausnummerzusatz",
|
||||
"bielefeld_de_house_number": "Hausnummer",
|
||||
"bielefeld_de_street": "Straße",
|
||||
"bsr_de_abf_hausnr": "Hausnummer",
|
||||
"bsr_de_abf_strasse": "Straße",
|
||||
"buergerportal_de_district": "Ort",
|
||||
"buergerportal_de_number": "Hausnummer",
|
||||
"buergerportal_de_operator": "Betreiber",
|
||||
"buergerportal_de_show_volume": "Große Container anzeigen",
|
||||
"buergerportal_de_street": "Straße",
|
||||
"buergerportal_de_subdistrict": "Ortsteil",
|
||||
"calendar_title": "Kalender Titel",
|
||||
"customer": "Kunde",
|
||||
"street": "Straße",
|
||||
"city": "Ort",
|
||||
"housenumber": "Hausnummer"
|
||||
"cederbaum_de_street": "Straße",
|
||||
"dillingen_saar_de_street": "Straße",
|
||||
"ead_darmstadt_de_street": "Straße",
|
||||
"egn_abfallkalender_de_city": "Ort",
|
||||
"egn_abfallkalender_de_district": "Ortsteil",
|
||||
"egn_abfallkalender_de_housenumber": "Hausnummer",
|
||||
"egn_abfallkalender_de_street": "Straße",
|
||||
"eigenbetrieb_abfallwirtschaft_de_city": "Ort",
|
||||
"eigenbetrieb_abfallwirtschaft_de_street": "Straße",
|
||||
"erlangen_hoechstadt_de_city": "Ort",
|
||||
"erlangen_hoechstadt_de_street": "Straße",
|
||||
"geoport_nwm_de_district": "Ortsteil",
|
||||
"hausmuell_info_hausnummer": "Hausnummer",
|
||||
"hausmuell_info_ort": "Ort",
|
||||
"hausmuell_info_ortsteil": "Ortsteil",
|
||||
"hausmuell_info_strasse": "Straße",
|
||||
"hausmuell_info_subdomain": "Subdomain",
|
||||
"heilbronn_de_hausnr": "Hausnummer",
|
||||
"heilbronn_de_plz": "PLZ",
|
||||
"heilbronn_de_strasse": "Straße",
|
||||
"ics_file": "Datei",
|
||||
"ics_headers": "Headers",
|
||||
"ics_method": "Methode",
|
||||
"ics_offset": "Offset",
|
||||
"ics_params": "Parameter",
|
||||
"ics_regex": "Regulärer Ausdruck",
|
||||
"ics_split_at": "Trennen bei",
|
||||
"ics_title_template": "Titelvorlage",
|
||||
"ics_url": "URL",
|
||||
"ics_verify_ssl": "SSL-Verifizierung aktivieren",
|
||||
"ics_version": "Version",
|
||||
"ics_year_field": "Jahresfeld",
|
||||
"infeo_at_city": "Ort",
|
||||
"infeo_at_customer": "Kunde",
|
||||
"infeo_at_housenumber": "Hausnummer",
|
||||
"infeo_at_street": "Straße",
|
||||
"infeo_at_zone": "Zone",
|
||||
"insert_it_de_hnr": "Hausnummer",
|
||||
"insert_it_de_location_id": "Standort ID",
|
||||
"insert_it_de_municipality": "Ort",
|
||||
"insert_it_de_street": "Straße",
|
||||
"jumomind_de_area_id": "Bereich ID",
|
||||
"jumomind_de_city": "Ort",
|
||||
"jumomind_de_city_id": "Ort ID",
|
||||
"jumomind_de_house_number": "Hausnummer",
|
||||
"jumomind_de_service_id": "Service ID",
|
||||
"jumomind_de_street": "Straße",
|
||||
"karlsruhe_de_hnr": "Hausnummer",
|
||||
"karlsruhe_de_ladeort": "Ladeort",
|
||||
"karlsruhe_de_street": "Straße",
|
||||
"korneuburg_stadtservice_at_street_name": "Straßenname",
|
||||
"korneuburg_stadtservice_at_street_number": "Hausnummer",
|
||||
"korneuburg_stadtservice_at_teilgebiet": "Teilgebiet",
|
||||
"ks_boerde_de_house_number": "Hausnummer",
|
||||
"ks_boerde_de_street": "Straße",
|
||||
"ks_boerde_de_village": "Ort",
|
||||
"kwb_goslar_de_pois": "POIS",
|
||||
"kwu_de_city": "Ort",
|
||||
"kwu_de_number": "Hausnummer",
|
||||
"kwu_de_street": "Straße",
|
||||
"landkreis_rhoen_grabfeld_city": "Ort",
|
||||
"landkreis_rhoen_grabfeld_district": "Ortsteil",
|
||||
"landkreis_wittmund_de_city": "Ort",
|
||||
"landkreis_wittmund_de_street": "Straße",
|
||||
"lindau_ch_city": "Ort",
|
||||
"lrasha_de_location": "Gebiet",
|
||||
"mags_de_number": "Hausnummer",
|
||||
"mags_de_street": "Straße",
|
||||
"mags_de_turnus": "Turnus",
|
||||
"meinawb_de_address_suffix": "Hausnummerzusatz",
|
||||
"meinawb_de_city": "Ort",
|
||||
"meinawb_de_house_number": "Hausnummer",
|
||||
"meinawb_de_street": "Strasse",
|
||||
"monaloga_de_plz": "PLZ",
|
||||
"monaloga_de_street": "Straße",
|
||||
"muellabfuhr_de_city": "Ort",
|
||||
"muellabfuhr_de_client": "Client",
|
||||
"muellabfuhr_de_district": "Ortsteil",
|
||||
"muellabfuhr_de_street": "Straße",
|
||||
"muellmax_de_mm_frm_hnr_sel": "Hausnummer",
|
||||
"muellmax_de_mm_frm_ort_sel": "Ort",
|
||||
"muellmax_de_mm_frm_str_sel": "Straße",
|
||||
"muellmax_de_service": "Service",
|
||||
"muenchenstein_ch_waste_district": "Abfuhrkreis",
|
||||
"offenbach_de_f_id_location": "Standort ID",
|
||||
"potsdam_de_bio_rhythm": "Bio Rhythmus",
|
||||
"potsdam_de_gelb_rhythm": "Gelb Rhythmus",
|
||||
"potsdam_de_ortsteil": "Ortsteil",
|
||||
"potsdam_de_papier_rhythm": "Papier Rhythmus",
|
||||
"potsdam_de_rest_rhythm": "Restabfall Rhythmus",
|
||||
"potsdam_de_strasse": "Straße",
|
||||
"real_luzern_ch_municipality_id": "Orts ID",
|
||||
"real_luzern_ch_street_id": "Strassen ID",
|
||||
"regioentsorgung_de_city": "Ort",
|
||||
"regioentsorgung_de_house_number": "Hausnummer",
|
||||
"regioentsorgung_de_street": "Straße",
|
||||
"rh_entsorgung_de_address_suffix": "Hausnummerzusatz",
|
||||
"rh_entsorgung_de_city": "Ort",
|
||||
"rh_entsorgung_de_house_number": "Hausnummer",
|
||||
"rh_entsorgung_de_street": "Straße",
|
||||
"sbazv_de_city": "Ort",
|
||||
"sbazv_de_district": "Ortsteil",
|
||||
"sbazv_de_street": "Straße",
|
||||
"sector27_de_city": "Ort",
|
||||
"sector27_de_street": "Straße",
|
||||
"stuttgart_de_street": "Straße",
|
||||
"stuttgart_de_streetnr": "Hausnummer",
|
||||
"tbv_velbert_de_street": "Straße",
|
||||
"tonnenleerung_de_url": "URL",
|
||||
"was_wolfsburg_de_city": "Ort",
|
||||
"was_wolfsburg_de_street": "Straße",
|
||||
"wermelskirchen_de_house_number": "Hausnummer",
|
||||
"wermelskirchen_de_street": "Straße",
|
||||
"wsz_moosburg_at_address": "Adresse",
|
||||
"wsz_moosburg_at_address_id": "Adressen ID",
|
||||
"wsz_moosburg_at_municipal": "Gemeinde",
|
||||
"wsz_moosburg_at_street": "Straße",
|
||||
"wuerzburg_de_district": "Stadtteil",
|
||||
"wuerzburg_de_street": "Straße",
|
||||
"zakb_de_hnr": "Hausnummer",
|
||||
"zakb_de_hnr_zusatz": "Hausnummerzusatz",
|
||||
"zakb_de_ort": "Ort",
|
||||
"zakb_de_strasse": "Straße",
|
||||
"zva_sek_de_bezirk": "Abfuhrbezirk",
|
||||
"zva_sek_de_ortsteil": "Ortsteil",
|
||||
"zva_sek_de_strasse": "Straße",
|
||||
"zva_wmk_de_city": "Ort",
|
||||
"zva_wmk_de_street": "Straße"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,6 +34,7 @@ START_SERVICE_SECTION = "<!--Begin of service section-->"
|
||||
END_SERVICE_SECTION = "<!--End of service section-->"
|
||||
|
||||
LANGUAGES = ["en", "de"]
|
||||
ARG_TRANSLATIONS_TO_KEEP = ["calendar_title"]
|
||||
|
||||
|
||||
class SourceInfo:
|
||||
@@ -401,20 +402,12 @@ def update_json(
|
||||
"default_params": e.extra_info_default_params,
|
||||
}
|
||||
)
|
||||
params.update(e.params)
|
||||
|
||||
params.update([f"{e.module}_{p}" for p in e.params])
|
||||
for lang, translations in e.custom_param_translation.items():
|
||||
if lang in param_translations:
|
||||
for key, value in translations.items():
|
||||
if (
|
||||
key in param_translations[lang]
|
||||
and value != param_translations[lang][key]
|
||||
):
|
||||
print(
|
||||
f'Conflicting translations for language {lang} "{key}" => "{value}" ({e.module}) AND "{param_translations[lang][key]}"'
|
||||
)
|
||||
|
||||
param_translations[lang].update(translations)
|
||||
param_translations[lang].update(
|
||||
{f"{e.module}_{k}": v for k, v in translations.items()}
|
||||
)
|
||||
else:
|
||||
param_translations[lang] = translations.copy()
|
||||
|
||||
@@ -434,9 +427,13 @@ def update_json(
|
||||
) as f:
|
||||
translations = json.load(f)
|
||||
|
||||
arg_translations = translations["config"]["step"]["args"]["data"]
|
||||
arg_translations = {}
|
||||
for key, value in translations["config"]["step"]["args"]["data"].items():
|
||||
if key in ARG_TRANSLATIONS_TO_KEEP:
|
||||
arg_translations[key] = value
|
||||
|
||||
for param in params:
|
||||
param = f"{param}"
|
||||
if param in param_translations.get(lang, {}):
|
||||
arg_translations[param] = param_translations[lang][param]
|
||||
elif lang == "en" and param not in arg_translations:
|
||||
@@ -444,6 +441,9 @@ def update_json(
|
||||
[s.capitalize() for s in split_camel_and_snake_case(param)]
|
||||
)
|
||||
|
||||
arg_translations = {k: arg_translations[k] for k in sorted(arg_translations)}
|
||||
|
||||
translations["config"]["step"]["args"]["data"] = arg_translations
|
||||
translations["config"]["step"]["reconfigure"]["data"] = arg_translations
|
||||
|
||||
with open(
|
||||
|
||||
Reference in New Issue
Block a user