"""Helper script to update language list from the frontend source.""" import json from pathlib import Path import sys import requests from .hassfest.serializer import format_python_namespace tag = sys.argv[1] if len(sys.argv) > 1 else "dev" req = requests.get( f"https://raw.githubusercontent.com/home-assistant/frontend/{tag}/src/translations/translationMetadata.json" ) data = json.loads(req.content) languages = set(data.keys()) # Languages which can be used for entity IDs. # Languages in the set are those which use a writing system based on the Latin # script. Languages not in this set will instead base the entity ID on English. # Note: Although vietnamese writing is based on the Latin script, it's too ambiguous # after accents and diacritics have been removed by slugify NATIVE_ENTITY_IDS = { "af", # Afrikaans "bs", # Bosanski "ca", # Català "cs", # Čeština "cy", # Cymraeg "da", # Dansk "de", # Deutsch "en", # English "en-GB", # English (GB) "eo", # Esperanto "es", # Español "es-419", # Español (Latin America) "et", # Eesti "eu", # Euskara "fi", # Suomi "fr", # Français "fy", # Frysk "gl", # Galego "gsw", # Schwiizerdütsch "hr", # Hrvatski "hu", # Magyar "id", # Indonesia "is", # Íslenska "it", # Italiano "ka", # Kartuli "lb", # Lëtzebuergesch "lt", # Lietuvių "lv", # Latviešu "nb", # Nederlands "nl", # Norsk Bokmål "nn", # Norsk Nynorsk" "pl", # Polski "pt", # Português "pt-BR", # Português (BR) "ro", # Română "sk", # Slovenčina "sl", # Slovenščina "sr-Latn", # Srpski "sv", # Svenska "tr", # Türkçe } Path("homeassistant/generated/languages.py").write_text( format_python_namespace( { "DEFAULT_LANGUAGE": "en", "LANGUAGES": languages, "NATIVE_ENTITY_IDS": NATIVE_ENTITY_IDS, }, generator="script.languages [frontend_tag]", ) )