diff --git a/scripts/i18n b/scripts/i18n
new file mode 100755
--- /dev/null
+++ b/scripts/i18n
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+
+# -*- coding: utf-8 -*-
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import click
+
+import i18n_utils
+
+
+"""
+Tool for maintenance of .po and .pot files
+"""
+
+@click.group()
+@click.option('--debug/--no-debug', default=False)
+def cli(debug):
+ if (debug):
+ i18n_utils.do_debug = True
+ pass
+
+if __name__ == '__main__':
+ cli()
diff --git a/scripts/i18n_utils.py b/scripts/i18n_utils.py
new file mode 100644
--- /dev/null
+++ b/scripts/i18n_utils.py
@@ -0,0 +1,27 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+from __future__ import print_function
+
+import subprocess
+
+
+do_debug = False # set from scripts/i18n --debug
+
+def debug(*args, **kwargs):
+ if do_debug:
+ print(*args, **kwargs)
+
+def runcmd(cmd, *args, **kwargs):
+ debug('... Executing command: %s' % ' '.join(cmd))
+ subprocess.check_call(cmd, *args, **kwargs)