diff options
author | Micah Lee <micah@micahflee.com> | 2022-01-16 15:49:33 -0800 |
---|---|---|
committer | Micah Lee <micah@micahflee.com> | 2022-01-16 15:49:33 -0800 |
commit | 9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5 (patch) | |
tree | 5a5215260866bd07adc60ead1ae0d1b6cd93174b /desktop/scripts/check_lacked_trans.py | |
parent | 74711e7d7c7b825fc580c612530569195156794a (diff) | |
parent | b4e022149d677f9c2acd639e9dfa77bcc712b068 (diff) | |
download | onionshare-9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5.tar.gz onionshare-9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5.zip |
Merge branch 'develop' of github.com:onionshare/onionshare into ros-fixes
Diffstat (limited to 'desktop/scripts/check_lacked_trans.py')
-rwxr-xr-x | desktop/scripts/check_lacked_trans.py | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/desktop/scripts/check_lacked_trans.py b/desktop/scripts/check_lacked_trans.py deleted file mode 100755 index 2456c995..00000000 --- a/desktop/scripts/check_lacked_trans.py +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -Check translation lacked or disused. - -Example: -in OnionShare directory -$ check_lacked_trans.py -de disused choose_file -de disused gui_starting_server -de lacked gui_canceled -de lacked gui_starting_server1 -de lacked gui_starting_server2 -de lacked gui_starting_server3 -en disused choose_file -es disused choose_file -es disused gui_starting_server -... - - -1. search `{{strings.translation_key}}` and `strings._('translation_key')` - from .py or .html files. -2. load translation key from locale/*.json. -3. compare these. - -""" - - -import argparse -import re -import os -import codecs -import json -import sys - - -def arg_parser(): - desc = __doc__.strip().splitlines()[0] - p = argparse.ArgumentParser(description=desc) - p.add_argument( - "-d", - default=".", - help="onionshare directory", - metavar="ONIONSHARE_DIR", - dest="onionshare_dir", - ) - p.add_argument( - "--show-all-keys", - action="store_true", - help="show translation key in source and exit", - ), - p.add_argument( - "-l", - default="all", - help="language code (default: all)", - metavar="LANG_CODE", - dest="lang_code", - ) - return p - - -def files_in(*dirs): - dir = os.path.join(*dirs) - files = os.listdir(dir) - return [os.path.join(dir, f) for f in files] - - -def main(): - parser = arg_parser() - args = parser.parse_args() - - dir = args.onionshare_dir - - src = ( - files_in(dir, "onionshare_gui") - + files_in(dir, "onionshare_gui/tab") - + files_in(dir, "onionshare_gui/tab/mode") - + files_in(dir, "onionshare_gui/tab/mode/chat_mode") - + files_in(dir, "onionshare_gui/tab/mode/receive_mode") - + files_in(dir, "onionshare_gui/tab/mode/share_mode") - + files_in(dir, "onionshare_gui/tab/mode/website_mode") - + files_in(dir, "install/scripts") - ) - filenames = [p for p in src if p.endswith(".py")] - - lang_code = args.lang_code - - translate_keys = set() - for filename in filenames: - # load translate key from python source - with open(filename) as f: - src = f.read() - - # find all the starting strings - start_substr = "strings._\(" - starting_indices = [m.start() for m in re.finditer(start_substr, src)] - - for starting_i in starting_indices: - # are we dealing with single quotes or double quotes? - quote = None - inc = 0 - while True: - quote_i = starting_i + len("strings._(") + inc - if src[quote_i] == '"': - quote = '"' - break - if src[quote_i] == "'": - quote = "'" - break - inc += 1 - - # find the starting quote - starting_i = src.find(quote, starting_i) - if starting_i: - starting_i += 1 - # find the ending quote - ending_i = src.find(quote, starting_i) - if ending_i: - key = src[starting_i:ending_i] - translate_keys.add(key) - - if args.show_all_keys: - for k in sorted(translate_keys): - print(k) - sys.exit() - - if lang_code == "all": - locale_files = [f for f in files_in(dir, "share/locale") if f.endswith(".json")] - else: - locale_files = [ - f - for f in files_in(dir, "share/locale") - if f.endswith("%s.json" % lang_code) - ] - for locale_file in locale_files: - with codecs.open(locale_file, "r", encoding="utf-8") as f: - trans = json.load(f) - # trans -> {"key1": "translate-text1", "key2": "translate-text2", ...} - locale_keys = set(trans.keys()) - - disused = locale_keys - translate_keys - lacked = translate_keys - locale_keys - - locale, ext = os.path.splitext(os.path.basename(locale_file)) - for k in sorted(disused): - print(locale, "disused", k) - - for k in sorted(lacked): - print(locale, "lacked", k) - - -if __name__ == "__main__": - main() |