mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 02:04:22 +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:
|
for arg in args:
|
||||||
default = args[arg].default
|
default = args[arg].default
|
||||||
|
arg_name = args[arg].name
|
||||||
|
arg_key = f"{source}_{arg_name}"
|
||||||
field_type = None
|
field_type = None
|
||||||
|
|
||||||
annotation = args[arg].annotation
|
annotation = args[arg].annotation
|
||||||
description = None
|
description = None
|
||||||
if args_input is not None and args[arg].name in args_input:
|
if args_input is not None and arg_key in args_input:
|
||||||
description = {"suggested_value": args_input[args[arg].name]}
|
description = {"suggested_value": args_input[arg_key]}
|
||||||
_LOGGER.debug(
|
_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(
|
_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 = {
|
description = {
|
||||||
"suggested_value": pre_filled[args[arg].name],
|
"suggested_value": pre_filled[arg_key],
|
||||||
}
|
}
|
||||||
if annotation != inspect._empty:
|
if annotation != inspect._empty:
|
||||||
field_type = (
|
field_type = (
|
||||||
await self.__get_type_by_annotation(annotation) or field_type
|
await self.__get_type_by_annotation(annotation) or field_type
|
||||||
)
|
)
|
||||||
_LOGGER.debug(
|
_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:
|
if arg_name in MODULE_FLOW_TYPES:
|
||||||
flow_type = MODULE_FLOW_TYPES[args[arg].name]
|
flow_type = MODULE_FLOW_TYPES[arg_name]
|
||||||
if flow_type.get("type") == "SELECT":
|
if flow_type.get("type") == "SELECT":
|
||||||
field_type = SelectSelector(
|
field_type = SelectSelector(
|
||||||
SelectSelectorConfig(
|
SelectSelectorConfig(
|
||||||
@@ -530,14 +532,14 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
arg
|
arg
|
||||||
].name in suggestions:
|
].name in suggestions:
|
||||||
_LOGGER.debug(
|
_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
|
# Add suggestions to the field if fetch/init raised an Exception with suggestions
|
||||||
field_type = SelectSelector(
|
field_type = SelectSelector(
|
||||||
SelectSelectorConfig(
|
SelectSelectorConfig(
|
||||||
options=[
|
options=[
|
||||||
SelectOptionDict(label=x, value=x)
|
SelectOptionDict(label=x, value=x)
|
||||||
for x in suggestions[args[arg].name]
|
for x in suggestions[arg_key]
|
||||||
],
|
],
|
||||||
mode=SelectSelectorMode.DROPDOWN,
|
mode=SelectSelectorMode.DROPDOWN,
|
||||||
custom_value=True,
|
custom_value=True,
|
||||||
@@ -546,7 +548,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
)
|
)
|
||||||
|
|
||||||
if default == inspect.Signature.empty:
|
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
|
field_type or str
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -554,7 +556,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
# Handle boolean, int, string, date, datetime, list defaults
|
# Handle boolean, int, string, date, datetime, list defaults
|
||||||
vol_args[
|
vol_args[
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
args[arg].name,
|
arg_key,
|
||||||
default=UNDEFINED if default is None else default,
|
default=UNDEFINED if default is None else default,
|
||||||
description=description,
|
description=description,
|
||||||
)
|
)
|
||||||
@@ -563,7 +565,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
_LOGGER.debug(
|
_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)
|
schema = vol.Schema(vol_args)
|
||||||
@@ -584,6 +586,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
"""
|
"""
|
||||||
errors = {}
|
errors = {}
|
||||||
description_placeholders: dict[str, str] = {}
|
description_placeholders: dict[str, str] = {}
|
||||||
|
args_input = {k.removeprefix(f"{source}_"): v for k, v in args_input.items()}
|
||||||
|
|
||||||
if hasattr(module, "validate_params"):
|
if hasattr(module, "validate_params"):
|
||||||
errors.update(module.validate_params(args_input))
|
errors.update(module.validate_params(args_input))
|
||||||
@@ -610,16 +613,17 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
except SourceArgumentSuggestionsExceptionBase as e:
|
except SourceArgumentSuggestionsExceptionBase as e:
|
||||||
if not hasattr(self, "_error_suggestions"):
|
if not hasattr(self, "_error_suggestions"):
|
||||||
self._error_suggestions = {}
|
self._error_suggestions = {}
|
||||||
self._error_suggestions.update({e.argument: e.suggestions})
|
arg_key = f"{source}_{e.argument}"
|
||||||
errors[e.argument] = "invalid_arg"
|
self._error_suggestions.update({arg_key: e.suggestions})
|
||||||
|
errors[arg_key] = "invalid_arg"
|
||||||
description_placeholders["invalid_arg_message"] = e.simple_message
|
description_placeholders["invalid_arg_message"] = e.simple_message
|
||||||
if e.suggestion_type != str and e.suggestion_type != int:
|
if e.suggestion_type != str and e.suggestion_type != int:
|
||||||
description_placeholders["invalid_arg_message"] = e.message
|
description_placeholders["invalid_arg_message"] = e.message
|
||||||
except SourceArgumentRequired as e:
|
except SourceArgumentRequired as e:
|
||||||
errors[e.argument] = "invalid_arg"
|
errors[f"{source}_{e.argument}"] = "invalid_arg"
|
||||||
description_placeholders["invalid_arg_message"] = e.message
|
description_placeholders["invalid_arg_message"] = e.message
|
||||||
except SourceArgumentException as e:
|
except SourceArgumentException as e:
|
||||||
errors[e.argument] = "invalid_arg"
|
errors[f"{source}_{e.argument}"] = "invalid_arg"
|
||||||
description_placeholders["invalid_arg_message"] = e.message
|
description_placeholders["invalid_arg_message"] = e.message
|
||||||
except SourceArgumentExceptionMultiple as e:
|
except SourceArgumentExceptionMultiple as e:
|
||||||
description_placeholders["invalid_arg_message"] = e.message
|
description_placeholders["invalid_arg_message"] = e.message
|
||||||
@@ -627,7 +631,7 @@ class WasteCollectionConfigFlow(ConfigFlow, domain=DOMAIN): # type: ignore[call
|
|||||||
errors["base"] = "invalid_arg"
|
errors["base"] = "invalid_arg"
|
||||||
else:
|
else:
|
||||||
for arg in e.arguments:
|
for arg in e.arguments:
|
||||||
errors[arg] = "invalid_arg"
|
errors[f"{source}_{arg}"] = "invalid_arg"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors["base"] = "fetch_error"
|
errors["base"] = "fetch_error"
|
||||||
description_placeholders["fetch_error_message"] = str(e)
|
description_placeholders["fetch_error_message"] = str(e)
|
||||||
|
|||||||
@@ -67,11 +67,180 @@
|
|||||||
"title": "Quelle konfigurieren",
|
"title": "Quelle konfigurieren",
|
||||||
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
||||||
"data": {
|
"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",
|
"calendar_title": "Kalender Titel",
|
||||||
"customer": "Kunde",
|
"cederbaum_de_street": "Straße",
|
||||||
"street": "Straße",
|
"dillingen_saar_de_street": "Straße",
|
||||||
"city": "Ort",
|
"ead_darmstadt_de_street": "Straße",
|
||||||
"housenumber": "Hausnummer"
|
"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": {
|
"data_description": {
|
||||||
"calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet."
|
"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",
|
"title": "Quelle Neu Konfigurieren",
|
||||||
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
"description": "Konfiguriere deinen Service Provider. Für Details siehe die Quellen Dokumentation.",
|
||||||
"data": {
|
"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",
|
"calendar_title": "Kalender Titel",
|
||||||
"customer": "Kunde",
|
"cederbaum_de_street": "Straße",
|
||||||
"street": "Straße",
|
"dillingen_saar_de_street": "Straße",
|
||||||
"city": "Ort",
|
"ead_darmstadt_de_street": "Straße",
|
||||||
"housenumber": "Hausnummer"
|
"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-->"
|
END_SERVICE_SECTION = "<!--End of service section-->"
|
||||||
|
|
||||||
LANGUAGES = ["en", "de"]
|
LANGUAGES = ["en", "de"]
|
||||||
|
ARG_TRANSLATIONS_TO_KEEP = ["calendar_title"]
|
||||||
|
|
||||||
|
|
||||||
class SourceInfo:
|
class SourceInfo:
|
||||||
@@ -401,20 +402,12 @@ def update_json(
|
|||||||
"default_params": e.extra_info_default_params,
|
"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():
|
for lang, translations in e.custom_param_translation.items():
|
||||||
if lang in param_translations:
|
if lang in param_translations:
|
||||||
for key, value in translations.items():
|
param_translations[lang].update(
|
||||||
if (
|
{f"{e.module}_{k}": v for k, v in translations.items()}
|
||||||
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)
|
|
||||||
else:
|
else:
|
||||||
param_translations[lang] = translations.copy()
|
param_translations[lang] = translations.copy()
|
||||||
|
|
||||||
@@ -434,9 +427,13 @@ def update_json(
|
|||||||
) as f:
|
) as f:
|
||||||
translations = json.load(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:
|
for param in params:
|
||||||
|
param = f"{param}"
|
||||||
if param in param_translations.get(lang, {}):
|
if param in param_translations.get(lang, {}):
|
||||||
arg_translations[param] = param_translations[lang][param]
|
arg_translations[param] = param_translations[lang][param]
|
||||||
elif lang == "en" and param not in arg_translations:
|
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)]
|
[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
|
translations["config"]["step"]["reconfigure"]["data"] = arg_translations
|
||||||
|
|
||||||
with open(
|
with open(
|
||||||
|
|||||||
Reference in New Issue
Block a user