You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

59 lines
1.3 KiB

  1. # imports - standard imports
  2. import itertools
  3. import json
  4. import os
  5. def update_translations_p(args):
  6. import requests
  7. try:
  8. update_translations(*args)
  9. except requests.exceptions.HTTPError:
  10. print("Download failed for", args[0], args[1])
  11. def download_translations_p():
  12. import multiprocessing
  13. pool = multiprocessing.Pool(multiprocessing.cpu_count())
  14. langs = get_langs()
  15. apps = ("xhiveframework", "xhiveerp")
  16. args = list(itertools.product(apps, langs))
  17. pool.map(update_translations_p, args)
  18. def download_translations():
  19. langs = get_langs()
  20. apps = ("xhiveframework", "xhiveerp")
  21. for app, lang in itertools.product(apps, langs):
  22. update_translations(app, lang)
  23. def get_langs():
  24. lang_file = "apps/xhiveframework/xhiveframework/geo/languages.json"
  25. with open(lang_file) as f:
  26. langs = json.loads(f.read())
  27. return [d["code"] for d in langs]
  28. def update_translations(app, lang):
  29. import requests
  30. translations_dir = os.path.join("apps", app, app, "translations")
  31. csv_file = os.path.join(translations_dir, f"{lang}.csv")
  32. url = f"https://translate.xhiveerp.com/files/{app}-{lang}.csv"
  33. r = requests.get(url, stream=True)
  34. r.raise_for_status()
  35. with open(csv_file, "wb") as f:
  36. for chunk in r.iter_content(chunk_size=1024):
  37. # filter out keep-alive new chunks
  38. if chunk:
  39. f.write(chunk)
  40. f.flush()
  41. print("downloaded for", app, lang)