diff --git a/.gitignore b/.gitignore
index 5b0725e771e14b14e9ddb521692744b1d961170d..0a45e37a663c0c0a94a4c2c17866bf6689dfec63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,5 +40,8 @@ nosetests.xml
 # Generated files
 src/cutecoin/gen_resources/*
 src/icons_rc.py
+src/i18n_rc.py
+res/i18n/qm
+res/i18n/lang-*
 out
 .directory
diff --git a/gen_resources.py b/gen_resources.py
index 4afcfea687b1624094cdeee818dc7eb67b19b228..1f17d37b6f25d3c9458c33c4aa4c5150a8fc6b74 100644
--- a/gen_resources.py
+++ b/gen_resources.py
@@ -5,6 +5,7 @@ import sys, os, multiprocessing, subprocess
 resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res'))
 gen_ui = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src', 'cutecoin', 'gen_resources'))
 gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src'))
+
 def convert_ui(args, **kwargs):
     subprocess.call(args, **kwargs)
 
diff --git a/gen_translations.py b/gen_translations.py
new file mode 100644
index 0000000000000000000000000000000000000000..9aee1f1e3ff537451d83f4e3a3faf4d9202a6d1a
--- /dev/null
+++ b/gen_translations.py
@@ -0,0 +1,58 @@
+import sys, os, multiprocessing, subprocess, time
+
+gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src'))
+ts = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'ts'))
+qm = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'qm'))
+
+translations = []
+qm_files = []
+qm_shortnames = []
+
+def prepare_qm():
+    for root, dirs, files in os.walk(ts):
+        for f in files:
+            if f.endswith('.ts'):
+                tsfilename = os.path.join(root, f)
+                qmshort = "{0}qm".format(f[:-2])
+                qmfilename = os.path.join(qm, qmshort)
+                srcdest = (tsfilename, qmfilename)
+                translations.append(srcdest)
+                qm_shortnames.append(qmshort)
+            else:
+                continue
+            print(os.path.join(root, f))
+
+    for (ts_file, qm_file) in translations:
+        subprocess.call(["lrelease-qt5", ts_file, "-qm", qm_file])
+        print(ts_file + " >> " + qm_file)
+
+def build_resources():
+    files = ""
+    for file in qm_shortnames:
+        files += """
+<file alias="{0}">qm/{0}.qm</file>""".format(file[:-3])
+    rccfile = """<RCC>
+      <qresource prefix="i18n">{0}
+      </qresource>
+    </RCC>
+    """.format(files)
+
+    qrc_filename = os.path.abspath(os.path.join(os.path.dirname(__file__),
+                                                'res',
+                                                'i18n',
+                                                'langs-{0}.qrc'.format(int(time.time()))
+                                                ))
+
+    pyc_filename = os.path.abspath(os.path.join(gen_resources, 'i18n_rc.py'))
+    with open(qrc_filename, 'w') as outfile:
+        outfile.write(rccfile)
+
+    try:
+        subprocess.call(["pyrcc5", "-o", pyc_filename, qrc_filename])
+        print(qrc_filename + " >> " + pyc_filename)
+    finally:
+        os.remove(qrc_filename)
+
+
+prepare_qm()
+build_resources()