diff --git a/ci/txstats.py b/ci/txstats.py index 34ef4fc97..e78a8ad9c 100755 --- a/ci/txstats.py +++ b/ci/txstats.py @@ -2,6 +2,11 @@ # # Uses the Transifex API to get a list of enabled languages, # and outputs CMake settings for inclusion into CMakeLists.txt. +# +# This is a Python3 script. +# +# Run it with a -v command-line option to get extra output on +# actual translation percentages. import sys def get_tx_credentials(): @@ -42,12 +47,14 @@ def output_langs(all_langs, label, filterfunc): prefix = " " print("%s%s" % (prefix, out)) -def get_tx_stats(token): +def get_tx_stats(token, verbose): """ Does an API request to Transifex with the given API @p token, getting the translation statistics for the main body of texts. Then prints out CMake settings to replace the _tx_* variables in CMakeLists.txt according to standard criteria. + + If @p verbose is True, prints out language stats as well. """ import requests @@ -58,8 +65,12 @@ def get_tx_stats(token): suppressed_languages = ( "es_ES", ) # In Transifex, but not used # Some languages go into the "incomplete" list by definition, # regardless of their completion status: this can have various reasons. + # + # Note that Esperanto (eo) is special-cased in CMakeLists.txt + # during the build; recent Qt releases *do* support the language, + # and it's at-the-least ok. incomplete_languages = ( - "eo", # Not supported by QLocale + "eo", # Not supported by QLocale < 5.12.1 ) all_langs = [] @@ -71,10 +82,16 @@ def get_tx_stats(token): if lang_name in suppressed_languages: continue stats = languages[lang_name]["translated"]["percentage"] + # Make the by-definition-incomplete languages have a percentage + # lower than zero; this way they end up sorted (in -v output) + # at the bottom but you can still determine the "actual" percentage. if lang_name in incomplete_languages: - stats = 0.0 + stats = -stats all_langs.append((stats, lang_name)) + if verbose: + for s, l in sorted(all_langs, reverse=True): + print("# %16s\t%6.2f" % (l, s * 100.0)) output_langs(all_langs, "complete", lambda s : s == 1.0) output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75) output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05) @@ -84,9 +101,10 @@ def get_tx_stats(token): def main(): + verbose = (sys.argv[-1] == "-v") cred = get_tx_credentials() if cred: - return get_tx_stats(cred) + return get_tx_stats(cred, verbose) else: print("! Could not find API token in ~/.transifexrc") return 1