diff --git a/package/gluon-config-mode-mesh-vpn/Makefile b/package/gluon-config-mode-mesh-vpn/Makefile
index a56c9a266cb77508e782299b037ffcc60f176440..4792e3d328ee2c68af4d447cc19961d4cd3f36dc 100644
--- a/package/gluon-config-mode-mesh-vpn/Makefile
+++ b/package/gluon-config-mode-mesh-vpn/Makefile
@@ -7,6 +7,9 @@ PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
 include $(GLUONDIR)/include/package.mk
 
+PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
+
+
 define Package/gluon-config-mode-mesh-vpn
   SECTION:=gluon
   CATEGORY:=Gluon
@@ -22,15 +25,12 @@ define Build/Configure
 endef
 
 define Build/Compile
+	$(call GluonBuildI18N,gluon-config-mode-mesh-vpn,i18n)
 endef
 
 define Package/gluon-config-mode-mesh-vpn/install
 	$(CP) ./files/* $(1)/
-endef
-
-define Package/gluon-config-mode-mesh-vpn/postinst
-#!/bin/sh
-$(call GluonCheckSite,check_site.lua)
+	$(call GluonInstallI18N,gluon-config-mode-mesh-vpn,$(1))
 endef
 
 $(eval $(call BuildPackage,gluon-config-mode-mesh-vpn))
diff --git a/package/gluon-config-mode-mesh-vpn/check_site.lua b/package/gluon-config-mode-mesh-vpn/check_site.lua
deleted file mode 100644
index 906f9f228e8c825e91c97a85b6defd80e4b32337..0000000000000000000000000000000000000000
--- a/package/gluon-config-mode-mesh-vpn/check_site.lua
+++ /dev/null
@@ -1 +0,0 @@
-need_string 'config_mode.msg_pubkey'
diff --git a/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua b/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua
index 772d8701985db620e23d1fc2f24cf53f9fcb1c19..dbb93b11d5163c7f8d4421ac720d1f5da26ceee6 100644
--- a/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua
+++ b/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua
@@ -1,18 +1,10 @@
-local msg = [[<p>
-               <%= luci.template.render_string(site.config_mode.msg_pubkey) %>
-             </p>
-             <div class="the-key">
-               # <%= hostname %>
-               <br/>
-               <%= pubkey %>
-             </div>]]
-
 local uci = luci.model.uci.cursor()
 local meshvpn_enabled = uci:get("fastd", "mesh_vpn", "enabled", "0")
 
 if meshvpn_enabled ~= "1" then
   return nil
 else
+  local i18n = require "luci.i18n"
   local util = require "luci.util"
   local site = require 'gluon.site_config'
   local sysconfig = require 'gluon.sysconfig'
@@ -20,6 +12,13 @@ else
   local pubkey = util.exec("/etc/init.d/fastd show_key " .. "mesh_vpn")
   local hostname = uci:get_first("system", "system", "hostname")
 
+  local msg = [[<p>]] .. i18n.translate('gluon-config-mode:pubkey') .. [[</p>
+               <div class="the-key">
+                 # <%= hostname %>
+                 <br/>
+               <%= pubkey %>
+               </div>]]
+
   return function ()
            luci.template.render_string(msg, { pubkey=pubkey
                                             , hostname=hostname
diff --git a/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua b/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua
index 8638cc8a1b66289ff177574b81cccac31ba4ddb7..669a7bc34fe9f2724d7953a4214771cb82f6a0d3 100644
--- a/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua
+++ b/package/gluon-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua
@@ -1,35 +1,36 @@
 local cbi = require "luci.cbi"
+local i18n = require "luci.i18n"
 local uci = luci.model.uci.cursor()
 
 local M = {}
 
 function M.section(form)
-  local s = form:section(cbi.SimpleSection, nil,
-    [[Dein Knoten kann deine Internetverbindung nutzen um darüber 
-    eine verschlüsselte Verbindung zu anderen Freifunkknoten aufzubauen. 
-    Die dafür genutzte Bandbreite kannst du beschränken.
-    Aktiviere die Option, falls keine per WLAN erreichbaren 
-    Nachbarknoten in deiner Nähe sind oder du deine Internetverbindung 
-    für Freifunk zur Verfügung stellen möchtest.]])
+  local msg = i18n.translate('Your internet connection can be used to establish an ' ..
+                             'encrypted connection with other nodes. ' ..
+                             'Enable this option if there are no other nodes reachable ' ..
+                             'over WLAN in your vicinity or you want to make a part of ' ..
+                             'your connection\'s bandwidth available for the network. You can limit how ' ..
+                             'much bandwidth the node will use at most.')
+  local s = form:section(cbi.SimpleSection, nil, msg)
 
   local o
 
-  o = s:option(cbi.Flag, "_meshvpn", "Internetverbindung nutzen (Mesh-VPN)")
+  o = s:option(cbi.Flag, "_meshvpn", i18n.translate("Use internet connection (mesh VPN)"))
   o.default = uci:get_bool("fastd", "mesh_vpn", "enabled") and o.enabled or o.disabled
   o.rmempty = false
 
-  o = s:option(cbi.Flag, "_limit_enabled", "Bandbreite begrenzen")
+  o = s:option(cbi.Flag, "_limit_enabled", i18n.translate("Limit bandwidth"))
   o:depends("_meshvpn", "1")
   o.default = uci:get_bool("gluon-simple-tc", "mesh_vpn", "enabled") and o.enabled or o.disabled
   o.rmempty = false
 
-  o = s:option(cbi.Value, "_limit_ingress", "Downstream (kbit/s)")
+  o = s:option(cbi.Value, "_limit_ingress", i18n.translate("Downstream (kbit/s)"))
   o:depends("_limit_enabled", "1")
   o.value = uci:get("gluon-simple-tc", "mesh_vpn", "limit_ingress")
   o.rmempty = false
   o.datatype = "integer"
 
-  o = s:option(cbi.Value, "_limit_egress", "Upstream (kbit/s)")
+  o = s:option(cbi.Value, "_limit_egress", i18n.translate("Upstream (kbit/s)"))
   o:depends("_limit_enabled", "1")
   o.value = uci:get("gluon-simple-tc", "mesh_vpn", "limit_egress")
   o.rmempty = false
diff --git a/package/gluon-config-mode-mesh-vpn/i18n/de.po b/package/gluon-config-mode-mesh-vpn/i18n/de.po
new file mode 100644
index 0000000000000000000000000000000000000000..997be5a3b8c7a6da799fb845aec1e7e4ed10915a
--- /dev/null
+++ b/package/gluon-config-mode-mesh-vpn/i18n/de.po
@@ -0,0 +1,36 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2015-03-19 22:05+0100\n"
+"Last-Translator: Matthias Schiffer <mschiffer@universe-factory.net>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Downstream (kbit/s)"
+msgstr "Downstream (kbit/s)"
+
+msgid "Limit bandwidth"
+msgstr "Bandbreite begrenzen"
+
+msgid "Upstream (kbit/s)"
+msgstr "Upstream (kbit/s)"
+
+msgid "Use internet connection (mesh VPN)"
+msgstr "Internetverbindung nutzen (Mesh-VPN)"
+
+msgid ""
+"Your internet connection can be used to establish an encrypted connection "
+"with other nodes. Enable this option if there are no other nodes reachable "
+"over WLAN in your vicinity or you want to make a part of your connection's "
+"bandwidth available for the network. You can limit how much bandwidth the "
+"node will use at most."
+msgstr ""
+"Dein Knoten kann deine Internetverbindung nutzen um darüber eine "
+"verschlüsselte Verbindung zu anderen Freifunkknoten aufzubauen. Die dafür "
+"genutzte Bandbreite kannst du beschränken. Aktiviere die Option, falls keine "
+"per WLAN erreichbaren Nachbarknoten in deiner Nähe sind oder du deine "
+"Internetverbindung für Freifunk zur Verfügung stellen möchtest."
diff --git a/package/gluon-config-mode-mesh-vpn/i18n/en.po b/package/gluon-config-mode-mesh-vpn/i18n/en.po
new file mode 100644
index 0000000000000000000000000000000000000000..dd841831252922ac5e5414dc374c489e9a9a26da
--- /dev/null
+++ b/package/gluon-config-mode-mesh-vpn/i18n/en.po
@@ -0,0 +1,36 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2015-03-19 22:08+0100\n"
+"Last-Translator: Matthias Schiffer <mschiffer@universe-factory.net>\n"
+"Language-Team: English\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Downstream (kbit/s)"
+msgstr "Downstream (kbit/s)"
+
+msgid "Limit bandwidth"
+msgstr "Limit bandwidth"
+
+msgid "Upstream (kbit/s)"
+msgstr "Upstream (kbit/s)"
+
+msgid "Use internet connection (mesh VPN)"
+msgstr "Use internet connection (mesh VPN)"
+
+msgid ""
+"Your internet connection can be used to establish an encrypted connection "
+"with other nodes. Enable this option if there are no other nodes reachable "
+"over WLAN in your vicinity or you want to make a part of your connection's "
+"bandwidth available for the network. You can limit how much bandwidth the "
+"node will use at most."
+msgstr ""
+"Your internet connection can be used to establish an encrypted connection "
+"with other nodes. Enable this option if there are no other nodes reachable "
+"over WLAN in your vicinity or you want to make a part of your connection's "
+"bandwidth available for the network. You can limit how much bandwidth the "
+"node will use at most."
diff --git a/package/gluon-config-mode-mesh-vpn/i18n/gluon-config-mode-mesh-vpn.pot b/package/gluon-config-mode-mesh-vpn/i18n/gluon-config-mode-mesh-vpn.pot
new file mode 100644
index 0000000000000000000000000000000000000000..52e2eef8acebab13800df56ff7f487b3647733b4
--- /dev/null
+++ b/package/gluon-config-mode-mesh-vpn/i18n/gluon-config-mode-mesh-vpn.pot
@@ -0,0 +1,22 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Downstream (kbit/s)"
+msgstr ""
+
+msgid "Limit bandwidth"
+msgstr ""
+
+msgid "Upstream (kbit/s)"
+msgstr ""
+
+msgid "Use internet connection (mesh VPN)"
+msgstr ""
+
+msgid ""
+"Your internet connection can be used to establish an encrypted connection "
+"with other nodes. Enable this option if there are no other nodes reachable "
+"over WLAN in your vicinity or you want to make a part of your connection's "
+"bandwidth available for the network. You can limit how much bandwidth the "
+"node will use at most."
+msgstr ""