1
mirror of https://github.com/home-assistant/core synced 2024-09-06 10:29:55 +02:00

Add a script to clean the frontend translations (#34309)

This commit is contained in:
Paulus Schoutsen 2020-04-17 09:47:49 -07:00 committed by GitHub
parent 660b1dc1e4
commit 55af2ab4dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 7 deletions

View File

@ -1,8 +1,20 @@
"""Find translation keys that are in Lokalise but no longer defined in source.""" """Find translation keys that are in Lokalise but no longer defined in source."""
import argparse
import json import json
from .const import INTEGRATIONS_DIR from .const import CORE_PROJECT_ID, FRONTEND_DIR, FRONTEND_PROJECT_ID, INTEGRATIONS_DIR
from .error import ExitApp
from .lokalise import get_api from .lokalise import get_api
from .util import get_base_arg_parser
def get_arguments() -> argparse.Namespace:
"""Get parsed passed in arguments."""
parser = get_base_arg_parser()
parser.add_argument(
"--target", type=str, default="core", choices=["core", "frontend"],
)
return parser.parse_args()
def find_extra(base, translations, path_prefix, missing_keys): def find_extra(base, translations, path_prefix, missing_keys):
@ -19,8 +31,8 @@ def find_extra(base, translations, path_prefix, missing_keys):
missing_keys.append(cur_path) missing_keys.append(cur_path)
def find(): def find_core():
"""Find all missing keys.""" """Find all missing keys in core."""
missing_keys = [] missing_keys = []
for int_dir in INTEGRATIONS_DIR.iterdir(): for int_dir in INTEGRATIONS_DIR.iterdir():
@ -41,16 +53,38 @@ def find():
return missing_keys return missing_keys
def find_frontend():
"""Find all missing keys in frontend."""
if not FRONTEND_DIR.is_dir():
raise ExitApp(f"Unable to find frontend at {FRONTEND_DIR}")
source = FRONTEND_DIR / "src/translations/en.json"
translated = FRONTEND_DIR / "translations/en.json"
missing_keys = []
find_extra(
json.loads(source.read_text()),
json.loads(translated.read_text()),
"",
missing_keys,
)
return missing_keys
def run(): def run():
"""Clean translations.""" """Clean translations."""
missing_keys = find() args = get_arguments()
if args.target == "frontend":
missing_keys = find_frontend()
lokalise = get_api(FRONTEND_PROJECT_ID)
else:
missing_keys = find_core()
lokalise = get_api(CORE_PROJECT_ID)
if not missing_keys: if not missing_keys:
print("No missing translations!") print("No missing translations!")
return 0 return 0
lokalise = get_api()
key_data = lokalise.keys_list( key_data = lokalise.keys_list(
{"filter_keys": ",".join(missing_keys), "limit": 1000} {"filter_keys": ",".join(missing_keys), "limit": 1000}
) )

View File

@ -5,3 +5,4 @@ CORE_PROJECT_ID = "130246255a974bd3b5e8a1.51616605"
FRONTEND_PROJECT_ID = "3420425759f6d6d241f598.13594006" FRONTEND_PROJECT_ID = "3420425759f6d6d241f598.13594006"
DOCKER_IMAGE = "b8329d20280263cad04f65b843e54b9e8e6909a348a678eac959550b5ef5c75f" DOCKER_IMAGE = "b8329d20280263cad04f65b843e54b9e8e6909a348a678eac959550b5ef5c75f"
INTEGRATIONS_DIR = pathlib.Path("homeassistant/components") INTEGRATIONS_DIR = pathlib.Path("homeassistant/components")
FRONTEND_DIR = pathlib.Path("../frontend")

View File

@ -7,7 +7,7 @@ import subprocess
from .error import ExitApp from .error import ExitApp
def get_base_arg_parser(): def get_base_arg_parser() -> argparse.ArgumentParser:
"""Get a base argument parser.""" """Get a base argument parser."""
parser = argparse.ArgumentParser(description="Home Assistant Translations") parser = argparse.ArgumentParser(description="Home Assistant Translations")
parser.add_argument( parser.add_argument(