summaryrefslogtreecommitdiff
path: root/languagechecker.py
diff options
context:
space:
mode:
authorrebortg <github@ghlr.de>2023-07-31 21:13:58 +0200
committerrebortg <github@ghlr.de>2023-07-31 21:13:58 +0200
commitabd23045bc3bc06fcd6475e3e616056c1870ab0c (patch)
treeaa6d885749c04a688d3b44df775f1f0a20bca39a /languagechecker.py
parentf0175e1638e2974f009e50d8eea8190fe86d8c85 (diff)
downloadvyos-documentation-abd23045bc3bc06fcd6475e3e616056c1870ab0c.tar.gz
vyos-documentation-abd23045bc3bc06fcd6475e3e616056c1870ab0c.zip
add translation feature
Diffstat (limited to 'languagechecker.py')
-rw-r--r--languagechecker.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/languagechecker.py b/languagechecker.py
new file mode 100644
index 00000000..0305b05b
--- /dev/null
+++ b/languagechecker.py
@@ -0,0 +1,59 @@
+'''
+Parse gettext pot files and extract path:line and msgid information
+compare this with downloaded files from localazy
+the output are the elements which are downloaded but not needed anymore.
+TODO: better output
+'''
+
+import os
+from babel.messages.pofile import read_po
+
+
+def extract_content(file):
+ content = []
+ with open(file) as f:
+ data = read_po(f)
+ for message in data:
+ if message.id:
+ content.append(message)
+ return content
+
+
+gettext_dir = "docs/_build/gettext"
+gettext_ext = ".pot"
+original_content = list()
+
+language_dir = "docs/_locale"
+language_ext = ".pot"
+language_content = dict()
+
+# get gettext filepath
+for (dirpath, dirnames, filenames) in os.walk(gettext_dir):
+ for file in filenames:
+ if gettext_ext in file:
+ original_content.extend(extract_content(f"{dirpath}/{file}"))
+
+# get filepath per language
+languages = next(os.walk(language_dir))[1]
+for language in languages:
+
+ language_content[language] = list()
+ for (dirpath, dirnames, filenames) in os.walk(f"{language_dir}/{language}"):
+ for file in filenames:
+ if language_ext in file:
+ language_content[language].extend(extract_content(f"{dirpath}/{file}"))
+
+
+
+for lang in language_content.keys():
+ for message in language_content[lang]:
+ found = False
+ for ori_message in original_content:
+ if ori_message.id == message.id:
+ found = True
+ if not found:
+ print()
+ print(f"{lang}: {message.id}")
+ for loc in message.locations:
+ print(f"{loc[0]}:{loc[1]}")
+