home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
72.43k stars 30.31k forks source link

Help wanted: fix missing translation strings #127811

Open epenet opened 5 days ago

epenet commented 5 days ago

The problem

As a developper, it's very easy to forget adding all expected translation keys into strings.json I am working on catching this within the regular test routines (see https://github.com/home-assistant/core/pull/127787)

If you would like to help, take a look at the resulting failures and see if you can add/fix: https://github.com/home-assistant/core/pull/127787/checks

- [x] cloudflare `config.error.unknown` #127906
- [ ] coinbase `options.step.init.data.exchange_rate_precision`
- [ ] comelit `config.step.user.data.type`
- [x] crownstone `config.error.unknown_error` #127913
- [ ] devolo_home_control `config.step.reauth_confirm.data.username`
- [ ] downloader `config.step.user.data.download_dir`
- [ ] emoncms `options.error.failure`
- [ ] energenie_power_sockets `config.step.user.data.api-device-id`
- [ ] enocean `config.step.detect.data.device`
- [ ] enocean `config.step.manual.data.device`
- [x] enphase_envoy `config.abort.reconfigure_successful` #128053
- [ ] eq3btsmart `config.error.invalid_mac_address`
- [x] fivem `config.error.unknown` #127907
- [ ] flume `config.step.reauth_confirm.data.password`
- [ ] flume `config.step.user.data.username`
- [ ] flux_led `config.step.pick_device.data.device`
- [ ] fully_kiosk `config.step.discovery_confirm.data.ssl`
- [ ] gardena_bluetooth `config.abort.cannot_connect`
- [ ] generic `config.error
- [ ] github `options.step.init.data.repositories`
- [ ] gogogate2 `config.step.user.data.device`
- [ ] google `config.abort.missing_credentials`
- [ ] google_assistant_sdk `config.abort.single_instance_allowed`
- [x] google_photos `config.abort.reauth_successful` #128055
- [x] google_tasks `config.abort.reauth_successful` #128055
- [ ] group `options.step.event.data.entities`
- [ ] guardian `config.error.cannot_connect`
- [x] hardkernel `config.abort.single_instance_allowed` #128201
- [x] hassio `config.abort.already_configured` #128060
- [ ] here_travel_time `config.step.destination_entity.data.destination_entity_id`
- [ ] here_travel_time `config.step.origin_entity.data.origin_entity_id`
- [ ] hlk_sw16 `config.step.user.data.port`
- [x] homeassistant_green `config.abort.single_instance_allowed` #128201
- [x] homeassistant_yellow `config.abort.single_instance_allowed` #128201
- [ ] homewizard `config.abort.unsupported_api_version`
- [ ] homeworks `config.abort.reconfigure_successful`
- [ ] homeworks `options.step.remove_keypad.data.index`
- [ ] homeworks `options.step.remove_light.data.index`
- [ ] homeworks `options.step.select_edit_keypad.data.index`
- [ ] homeworks `options.step.select_edit_light.data.index`
- [ ] honeywell `config.step.reauth_confirm.data.username`
- [ ] hue `config.step.init.data.id`
- [ ] hvv_departures `options.error.cannot_connect`
- [ ] hvv_departures `options.error.invalid_auth`
- [ ] hydrawise `config.error.invalid_auth`
- [ ] hyperion `options.abort.cannot_connect`
- [ ] imap `config.step.user.data.event_message_data`
- [ ] insteon `config.step.hubv1.data.hub_version`
- [ ] insteon `config.step.hubv2.data.hub_version`
- [ ] insteon `config.step.plm_manually.data.device`
- [ ] intellifire `config.step.pick_cloud_device.data.serial`
- [ ] iotty `config.abort.missing_credentials`
- [ ] iskra `config.step.user.data.protocol`
- [ ] islamic_prayer_times `config.step.user.data.name`
- [x] isy994 `config.abort.reauth_successful` #128055
- [ ] jewish_calendar `config.step.reconfigure_confirm.data.diaspora`
- [ ] juicenet `config.step.user.data.access_token`
- [x] jvc_projector `config.abort.reauth_successful` #128055
- [ ] knocki `config.error.invalid_auth`
- [ ] knx `config.step.knxkeys_tunnel_select.data.tunnel_endpoint_ia`
- [ ] knx `options.step.knxkeys_tunnel_select.data.tunnel_endpoint_ia`
- [ ] lacrosse_view `config.step.location.data.location`
- [ ] lamarzocco `config.error.machine_not_found`
- [ ] lametric `config.step.cloud_select_device.data.device`
- [ ] landisgyr_heat_meter `config.error.cannot_connect`
- [ ] lg_netcast `config.abort.invalid_host`
- [ ] lifx `config.abort.cannot_connect`
- [ ] linear_garage_door `config.step.site.data.site`
- [x] local_calendar `config.abort.already_configured` #128058
- [ ] local_calendar `config.step.import_ics_file.data.ics_file`
- [ ] lookin `config.step.user.data.host`
- [x] luftdaten `config.abort.already_configured` #128058
- [ ] lyric `config.abort.missing_credentials`
- [ ] madvr `config.abort.set_up_new_device`
- [ ] matter `config.abort.cannot_connect`
- [x] meater `config.abort.reauth_successful` #128055
- [ ] melcloud `config.abort.cannot_connect`
- [ ] melcloud `config.abort.invalid_auth`
- [ ] melnor `config.step.pick_device.data.address`
- [x] met_eireann `config.abort.already_configured` #128058
- [ ] meteoclimatic `config.step.user.data.station_code`
- [x] microbees `config.abort.reauth_successful` #128055
- [ ] modem_callerid `config.step.user.data.device`
- [ ] motionblinds_ble `config.step.confirm.data.blind_type`
- [ ] motioneye `config.abort.already_in_progress`
- [ ] nextdns `config.step.profiles.data.profile_name`
- [x] nina `config.abort.unknown` #127908
- [x] nina `options.abort.unknown`#127908
- [ ] ollama `config.abort.download_failed`
- [x] ondilo_ico `config.abort.single_instance_allowed` #128191
- [ ] onewire `options.abort
- [ ] opower `config.step.mfa.data.username`
- [x] otbr `config.abort.already_configured` #127909
- [x] otbr `config.abort.unknown` #127909
- [ ] otp `config.step.confirm.data.qr_code`
- [ ] ovo_energy `config.error.authorization_error`
- [ ] ovo_energy `config.error.connection_error`
- [x] permobil `config.abort.unknown` #127910
- [x] permobil `config.step.region.data.region` #127910
- [ ] philips_js `config.abort.pairing_failure`
- [ ] plaato `options.step.user.data.scan_interval`
- [ ] plex `config.step.select_server.data.server_id`
- [ ] point `config.step.pick_implementation.data.implementation`
- [ ] ps4 `config.step.mode.data
- [ ] raspberry_pi `config.abort.single_instance_allowed`
- [ ] rfxtrx `options.step.set_device_options.data.data_bits`
- [x] risco `config.abort.reauth_successful` #128055
- [ ] rova `config.error.cannot_connect`
- [x] rympro `config.abort.reauth_successful` #128055
- [ ] samsungtv `config.step.encrypted_pairing.data.pin`
- [ ] samsungtv `config.step.reauth_confirm_encrypted.data.pin`
- [ ] scrape `options.step.remove_sensor.data.index`
- [ ] scrape `options.step.select_edit_sensor.data.index`
- [ ] sia `config.step.add_account.data.account`
- [ ] simplefin `config.step.user.data.access_url`
- [x] smappee `config.abort.already_configured` #128058
- [ ] smarttub `config.step.reauth_confirm.data.email`
- [ ] smhi `config.step.reconfigure_confirm.data.location`
- [ ] smhi `config.step.user.data.location`
- [ ] snooz `config.step.user.data.name`
- [x] solarlog `config.step.reconfigure_confirm.data.password`
- [ ] spotify `config.abort.missing_credentials`
- [ ] srp_energy `config.step.user.data.name`
- [ ] subaru `config.abort.two_factor_request_failed`
- [x] sunweg `config.abort.already_configured` #128058
- [x] surepetcare `config.abort.reauth_successful` #128055
- [ ] tankerkoenig `options.error.invalid_auth`
- [ ] template `options.step.number.data.unit_of_measurement`
- [x] tesla_fleet `config.abort.reauth_account_mismatch` #127915
- [x] tesla_fleet `config.abort.reauth_successful` #127915
- [x] tesla_fleet `config.step.pick_implementation.data.implementation` (ignore)
- [ ] teslemetry `config.step.reauth_confirm.data.access_token`
- [x] tessie `config.abort.reauth_successful` #128055
- [ ] thethingsnetwork `config.step.user.data.host`
- [x] tile `config.error.unknown` #127911
- [ ] toon `config.step.pick_implementation.data.implementation`
- [ ] totalconnect `config.step.locations.data.usercodes`
- [ ] totalconnect `config.step.reauth_confirm.data.password`
- [ ] tplink `config.abort.cannot_connect`
- [ ] tractive `config.step.reauth_confirm.data.email`
- [ ] tradfri `config.error.invalid_security_code`
- [x] trafikverket_camera `config.step.reauth_confirm.data.api_key`
- [x] trafikverket_camera `config.step.reconfigure_confirm.data.api_key`
- [ ] triggercmd `config.error.connection_error`
- [ ] triggercmd `config.error.invalid_token`
- [ ] tuya `config.step.scan.data.QR`
- [ ] unifi `config.step.site.data.site`
- [x] unifiprotect `config.abort.reauth_successful` #128055
- [ ] utility_meter `config.error.tariffs_not_unique`
- [ ] vilfo `config.error.wrong_host`
- [ ] vulcan `config.step.select_student.data.student`
- [ ] weatherflow `config.error.no_device_found`
- [ ] webmin `config.error
- [x] whirlpool `config.abort.reauth_successful` #128055
- [x] withings `config.abort.reauth_successful` #128055
- [x] yamaha_musiccast `config.error.cannot_connect` #127912
- [x] yamaha_musiccast `config.error.unknown` #127912
- [ ] yolink `config.abort.missing_credentials`
- [ ] youtube `config.abort.wrong_account`
- [ ] zwave_js `config.step.configure_addon.data.lr_s2_access_control_key`
- [ ] zwave_js `options.step.configure_addon.data.lr_s2_access_control_key`
mib1185 commented 5 days ago

These are all open ones (without a pending PR)

...

Edit: converted to task list in the description

epenet commented 4 days ago

These are all open ones (without a pending PR)

Thanks, I've converted to a task list in the description

mib1185 commented 2 days ago

we have some integrations (eq. generic and webmin, properly much more) which redirects possible connection errors direct into the errors dict to the async_show_form, those they can have unexpected or unforeseen error values, which can't be translated :thinking: Should we adjust the tests in this case, so they test only expected errors? Or do we've the possibility to work with placeholders also for errors in flow forms?

epenet commented 2 days ago

we have some integrations (eq. generic and webmin, properly much more) which redirects possible connection errors direct into the errors dict to the async_show_form, those they can have unexpected or unforeseen error values, which can't be translated 🤔 Should we adjust the tests in this case, so they test only expected errors? Or do we've the possibility to work with placeholders also for errors in flow forms?

Might be worth confirming with a core member... I think we normally use "unknown" and log the full details

gjohansson-ST commented 2 days ago

I think we normally use "unknown" and log the full details

Like that yes, we can only translate known errors e.g. there is no placeholders or such.