untranslated_select.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. """Find translated selects with untranslated mappings in config files."""
  2. import json
  3. import sys
  4. from custom_components.tuya_local.helpers.device_config import (
  5. TuyaDeviceConfig,
  6. available_configs,
  7. )
  8. from .common_funcs import FakeDevice
  9. def main() -> int:
  10. with open("custom_components/tuya_local/translations/en.json", "r") as f:
  11. english = json.load(f)
  12. select = english["entity"]["select"]
  13. dev = FakeDevice({})
  14. for config in available_configs():
  15. device = TuyaDeviceConfig(config)
  16. for entity in device.all_entities():
  17. if entity.entity == "select" and entity.translation_key:
  18. d = entity.find_dps("option")
  19. translations = select.get(entity.translation_key)
  20. if translations is None:
  21. print(
  22. f"{config}:{entity._config.__line__}: MISSING {entity.translation_key}"
  23. )
  24. continue
  25. if "state" not in translations:
  26. print(
  27. f"{config}:{entity._config.__line__}: MISSING state in {entity.translation_key}"
  28. )
  29. continue
  30. for v in d.values(dev):
  31. if v not in translations["state"]:
  32. line = v.__line__ if v else d._config.__line__
  33. print(
  34. f"{config}:{line}: {v} missing from {entity.translation_key}"
  35. )
  36. return 0
  37. if __name__ == "__main__":
  38. sys.exit(main())