summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-openwisp/po
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-openwisp/po')
-rw-r--r--applications/luci-app-openwisp/po/ar/openwisp.po231
-rw-r--r--applications/luci-app-openwisp/po/bg/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/bn_BD/openwisp.po231
-rw-r--r--applications/luci-app-openwisp/po/ca/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/cs/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/da/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/de/openwisp.po235
-rw-r--r--applications/luci-app-openwisp/po/el/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/fi/openwisp.po235
-rw-r--r--applications/luci-app-openwisp/po/fr/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/he/openwisp.po235
-rw-r--r--applications/luci-app-openwisp/po/hi/openwisp.po231
-rw-r--r--applications/luci-app-openwisp/po/hu/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/it/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/ja/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/ko/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/lt/openwisp.po63
-rw-r--r--applications/luci-app-openwisp/po/mr/openwisp.po231
-rw-r--r--applications/luci-app-openwisp/po/ms/openwisp.po231
-rw-r--r--applications/luci-app-openwisp/po/nb_NO/openwisp.po235
-rw-r--r--applications/luci-app-openwisp/po/nl/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/pl/openwisp.po266
-rw-r--r--applications/luci-app-openwisp/po/pt/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/pt_BR/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/ro/openwisp.po233
-rw-r--r--applications/luci-app-openwisp/po/ru/openwisp.po266
-rw-r--r--applications/luci-app-openwisp/po/sk/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/sv/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/tr/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/uk/openwisp.po233
-rw-r--r--applications/luci-app-openwisp/po/vi/openwisp.po232
-rw-r--r--applications/luci-app-openwisp/po/zh_Hans/openwisp.po246
-rw-r--r--applications/luci-app-openwisp/po/zh_Hant/openwisp.po235
33 files changed, 7554 insertions, 27 deletions
diff --git a/applications/luci-app-openwisp/po/ar/openwisp.po b/applications/luci-app-openwisp/po/ar/openwisp.po
new file mode 100644
index 0000000000..4188f4c10e
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ar/openwisp.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/bg/openwisp.po b/applications/luci-app-openwisp/po/bg/openwisp.po
new file mode 100644
index 0000000000..7533c6f02c
--- /dev/null
+++ b/applications/luci-app-openwisp/po/bg/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/bn_BD/openwisp.po b/applications/luci-app-openwisp/po/bn_BD/openwisp.po
new file mode 100644
index 0000000000..3861efe579
--- /dev/null
+++ b/applications/luci-app-openwisp/po/bn_BD/openwisp.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bn_BD\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ca/openwisp.po b/applications/luci-app-openwisp/po/ca/openwisp.po
new file mode 100644
index 0000000000..515d1636d5
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ca/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/cs/openwisp.po b/applications/luci-app-openwisp/po/cs/openwisp.po
new file mode 100644
index 0000000000..5ebe3fe153
--- /dev/null
+++ b/applications/luci-app-openwisp/po/cs/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/da/openwisp.po b/applications/luci-app-openwisp/po/da/openwisp.po
new file mode 100644
index 0000000000..d6d6bd49d5
--- /dev/null
+++ b/applications/luci-app-openwisp/po/da/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/de/openwisp.po b/applications/luci-app-openwisp/po/de/openwisp.po
new file mode 100644
index 0000000000..f1dc548124
--- /dev/null
+++ b/applications/luci-app-openwisp/po/de/openwisp.po
@@ -0,0 +1,235 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-06 13:23+0000\n"
+"Last-Translator: ssantos <ssantos@web.de>\n"
+"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/de/>\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"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/el/openwisp.po b/applications/luci-app-openwisp/po/el/openwisp.po
new file mode 100644
index 0000000000..694593b034
--- /dev/null
+++ b/applications/luci-app-openwisp/po/el/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/fi/openwisp.po b/applications/luci-app-openwisp/po/fi/openwisp.po
new file mode 100644
index 0000000000..2b26ae53c2
--- /dev/null
+++ b/applications/luci-app-openwisp/po/fi/openwisp.po
@@ -0,0 +1,235 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-06 10:10+0000\n"
+"Last-Translator: Hannu Nyman <hannu.nyman@iki.fi>\n"
+"Language-Team: Finnish <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/fi/>\n"
+"Language: fi\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"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr "Pois käytöstä"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/fr/openwisp.po b/applications/luci-app-openwisp/po/fr/openwisp.po
new file mode 100644
index 0000000000..90635d5abf
--- /dev/null
+++ b/applications/luci-app-openwisp/po/fr/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/he/openwisp.po b/applications/luci-app-openwisp/po/he/openwisp.po
new file mode 100644
index 0000000000..d1057a31d5
--- /dev/null
+++ b/applications/luci-app-openwisp/po/he/openwisp.po
@@ -0,0 +1,235 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-10 20:57+0000\n"
+"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
+"Language-Team: Hebrew <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/he/>\n"
+"Language: he\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"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr "פעילה"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/hi/openwisp.po b/applications/luci-app-openwisp/po/hi/openwisp.po
new file mode 100644
index 0000000000..9661ffe674
--- /dev/null
+++ b/applications/luci-app-openwisp/po/hi/openwisp.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hi\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/hu/openwisp.po b/applications/luci-app-openwisp/po/hu/openwisp.po
new file mode 100644
index 0000000000..0b7bc0920c
--- /dev/null
+++ b/applications/luci-app-openwisp/po/hu/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/it/openwisp.po b/applications/luci-app-openwisp/po/it/openwisp.po
new file mode 100644
index 0000000000..a7a56db0ae
--- /dev/null
+++ b/applications/luci-app-openwisp/po/it/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ja/openwisp.po b/applications/luci-app-openwisp/po/ja/openwisp.po
new file mode 100644
index 0000000000..9e0772cc89
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ja/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ko/openwisp.po b/applications/luci-app-openwisp/po/ko/openwisp.po
new file mode 100644
index 0000000000..3900077a2e
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ko/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/lt/openwisp.po b/applications/luci-app-openwisp/po/lt/openwisp.po
index b340126f8c..00b8b7f8e6 100644
--- a/applications/luci-app-openwisp/po/lt/openwisp.po
+++ b/applications/luci-app-openwisp/po/lt/openwisp.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2023-10-21 06:20+0000\n"
+"PO-Revision-Date: 2024-01-08 13:28+0000\n"
"Last-Translator: Džiugas J <dziugas1959@hotmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/openwrt/"
"luciapplicationsopenwisp/lt/>\n"
@@ -12,7 +12,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > "
"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? "
"1 : 2);\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.4-dev\n"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
msgid "Advanced Settings"
@@ -20,15 +20,15 @@ msgstr "Pažangūs nustatymai"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
msgid "Boot Delay"
-msgstr ""
+msgstr "Pajungimo atidėjimas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
msgid "CA Cert"
-msgstr ""
+msgstr "„CA“ sertifikatas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
msgid "CA Path"
-msgstr ""
+msgstr "„CA“ kelias"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
msgid ""
@@ -37,6 +37,10 @@ msgid ""
"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
"openwisp/openwisp-config</a>"
msgstr ""
+"Konfigūruoti, pradėti ir sustabdyti „OpenWISP“ agentą šiame įrenginyje. "
+"Skaitykite daugiau apie konfigūracijos reikšmes: „<a target='_blank' "
+"rel='noopener noreferrer' href='https://github.com/openwisp/openwisp-"
+"config'>https://github.com/openwisp/openwisp-config</a>“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
msgid "Connect Timeout"
@@ -44,7 +48,7 @@ msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
msgid "Consistent Key"
-msgstr ""
+msgstr "Pastovus raktas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
msgid "Disabled"
@@ -52,15 +56,15 @@ msgstr "Išjungtas/-i"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
msgid "Enable"
-msgstr "Įjungti"
+msgstr "Įjungti/Įgalinti"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
msgid "Enable or disable the OpenWISP service."
-msgstr ""
+msgstr "Įjungti arba išjungti „OpenWISP“ tarnybą."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
msgid "Enabled"
-msgstr "Įjungta"
+msgstr "Įjungta/-as"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
msgid "General Settings"
@@ -68,15 +72,15 @@ msgstr "Bendri nustatymai"
#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
msgid "Grant access to luci-app-openwisp"
-msgstr ""
+msgstr "Duoti prieigą prie „luci-app-openwisp“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
msgid "Hardware ID Key"
-msgstr ""
+msgstr "Įrangos „ID“ raktas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
msgid "Hardware ID Script"
-msgstr ""
+msgstr "Įrangos „ID“ skriptas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
msgid ""
@@ -84,12 +88,17 @@ msgid ""
"local configuration, the remote configuration takes precedence over local "
"configuration."
msgstr ""
+"Jeigu pasirinktas, aptinkant, kad konfigūracijos žymės yra pasiekiamos ir "
+"randamos nuotolinėje ir vietinėje konfigūracijoje, tada nuotolinė "
+"konfigūracija gauna prioritetą virš vietines."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
msgid ""
"If the agent is unable to reach the controller after applying the downloaded "
"config it will be reverted."
msgstr ""
+"Jeigu agentui nepavyksta pasiekti valdiklio po atsisiųstos konfigūracijos "
+"įgalinimo, tada visi pakeitimai bus anuliuoti."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
msgid "Key"
@@ -97,24 +106,24 @@ msgstr "Raktas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
msgid "MAC Interface"
-msgstr ""
+msgstr "„MAC“ sąsają ir/arba sietuvas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
msgid "Management Interface"
-msgstr ""
+msgstr "Valdymo sąsają ir/arba sietuvas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
msgid "Max Time"
-msgstr ""
+msgstr "Maksimalus laikas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
msgid "Merge Config"
-msgstr ""
+msgstr "Suvienyti konfigūracijas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
msgid "OpenWISP"
-msgstr ""
+msgstr "„OpenWISP“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
msgid ""
@@ -140,40 +149,40 @@ msgstr ""
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
msgid "Server URL"
-msgstr ""
+msgstr "Serverio „URL – Saitas“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
msgid "Shared Secret"
-msgstr ""
+msgstr "Bendrinama „paslaptis“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
msgid "Tags"
-msgstr ""
+msgstr "Žymės"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
msgid "Tags applied to this device."
-msgstr ""
+msgstr "Įgalintos žymės šiam įrenginiui."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
msgid "Test Config"
-msgstr ""
+msgstr "Testuoti konfigūraciją"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
msgid "Test Script"
-msgstr ""
+msgstr "Testuoti skriptą"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
msgid "The Key of this device in the OpenWISP server."
-msgstr ""
+msgstr "Šio įrenginio raktas „OpenWISP“ serveryje."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
msgid ""
"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
-msgstr ""
+msgstr "Saitas į „OpenWISP“ serverį. Pvz: „https://openwisp2.mynetwork.com“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
msgid "The UUID of this device in the OpenWISP server."
-msgstr ""
+msgstr "Šio įrenginio „UUID“ „OpenWISP“ serveryje."
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
msgid "The interface to use for getting the MAC for this device."
@@ -193,7 +202,7 @@ msgstr "„UUID“"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
msgid "Update Interval"
-msgstr ""
+msgstr "Atnaujinimo intervalas"
#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
msgid ""
diff --git a/applications/luci-app-openwisp/po/mr/openwisp.po b/applications/luci-app-openwisp/po/mr/openwisp.po
new file mode 100644
index 0000000000..26f59ddf6e
--- /dev/null
+++ b/applications/luci-app-openwisp/po/mr/openwisp.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: mr\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ms/openwisp.po b/applications/luci-app-openwisp/po/ms/openwisp.po
new file mode 100644
index 0000000000..6f9bc6104b
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ms/openwisp.po
@@ -0,0 +1,231 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ms\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/nb_NO/openwisp.po b/applications/luci-app-openwisp/po/nb_NO/openwisp.po
new file mode 100644
index 0000000000..5e69d89aa6
--- /dev/null
+++ b/applications/luci-app-openwisp/po/nb_NO/openwisp.po
@@ -0,0 +1,235 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-05 10:42+0000\n"
+"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
+"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/nb_NO/>\n"
+"Language: nb_NO\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"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr "Avanserte innstillinger"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr "Påskrudd"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/nl/openwisp.po b/applications/luci-app-openwisp/po/nl/openwisp.po
new file mode 100644
index 0000000000..91655cb130
--- /dev/null
+++ b/applications/luci-app-openwisp/po/nl/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/pl/openwisp.po b/applications/luci-app-openwisp/po/pl/openwisp.po
new file mode 100644
index 0000000000..13827b6311
--- /dev/null
+++ b/applications/luci-app-openwisp/po/pl/openwisp.po
@@ -0,0 +1,266 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-04 22:04+0000\n"
+"Last-Translator: Matthaiks <kitynska@gmail.com>\n"
+"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/pl/>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr "Ustawienia zaawansowane"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr "Opóźnienie rozruchu"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr "Certyfikat CA"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr "Ścieżka CA"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+"Skonfiguruj, uruchom i zatrzymaj agenta OpenWISP na tym urządzeniu. "
+"Przeczytaj więcej o wartościach konfiguracyjnych: <a target='_blank' "
+"rel='noopener noreferrer' href='https://github.com/openwisp/openwisp-"
+"config'>https://github.com/openwisp/openwisp-config </a>"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr "Limit połączenia"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr "Klucz spójny"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr "Wyłączone"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr "Włącz"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr "Włącz lub wyłącz usługę OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr "Włączone"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr "Ustawienia główne"
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr "Udziel dostępu do luci-app-openwisp"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr "Klucz identyfikatora sprzętu"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr "Skrypt identyfikatora sprzętu"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+"Jeśli ta opcja jest wybrana, w przypadku, gdy element konfiguracji występuje "
+"zarówno w konfiguracji zdalnej, jak i lokalnej, konfiguracja zdalna ma "
+"pierwszeństwo przed konfiguracją lokalną."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+"Jeśli agent nie będzie mógł połączyć się z kontrolerem po zastosowaniu "
+"pobranej konfiguracji, zostanie ona przywrócona."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr "Klucz"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr "Interfejs MAC"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr "Interfejs zarządzania"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr "Maksymalny czas"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr "Scal konfigurację"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr "OpenWISP"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+"Ścieżka do opublikowania skryptu przechwytującego przeładowanie. "
+"Przechwycenie nie jest wywoływane, jeśli ścieżka nie wskazuje na wykonywalny "
+"plik skryptu. To przechwycenie jest wywoływane za każdym razem, gdy openwisp-"
+"config stosuje konfigurację, ale po ponownym załadowaniu usług."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+"Ścieżka do przechwycenia wstępnego przeładowania. Przechwycenie nie jest "
+"wywoływane, jeśli ścieżka nie wskazuje na wykonywalny plik skryptu. To "
+"przechwycenie jest wywoływane za każdym razem, gdy openwisp-config stosuje "
+"konfigurację, ale przed ponownym załadowaniem usług."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr "Przechwycenie po przeładowaniu"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr "Przechwycenie przed przeładowaniem"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr "Adres URL serwera"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr "Wspólny sekret"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr "Tagi"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr "Tagi zastosowane do tego urządzenia."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr "Konfiguracja testowa"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr "Skrypt testowy"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr "Klucz tego urządzenia na serwerze OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr "Adres URL serwera OpenWISP. Przykład: https://openwisp2.mynetwork.com"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr "UUID tego urządzenia na serwerze OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr "Interfejs używany do uzyskiwania adresu MAC dla tego urządzenia."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr "Interfejs używany do zarządzania i kontroli."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr "Wspólny sekret organizacji do automatycznej rejestracji."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr "UUID"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr "Interwał aktualizacji"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+"Do identyfikacji urządzenia użyj unikalnego identyfikatora sprzętu, na "
+"przykład numeru seryjnego."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+"Użyj określonego katalogu certyfikatów, aby zweryfikować element "
+"równorzędny. Certyfikaty muszą być w formacie PEM, a katalog musi zostać "
+"przetworzony przy użyciu narzędzia c_rehash dostarczonego z OpenSSL."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+"Użyj określonego pliku certyfikatu, aby zweryfikować partnera. Plik może "
+"zawierać wiele certyfikatów CA. Certyfikaty muszą być w formacie PEM."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+"Wartość przekazana do argumentu curl --max-time, domyślnie 30. Wyrażona w "
+"sekundach."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr "Sprawdź SSL"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr "Sprawdź certyfikat SSL serwera."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
+"W przypadku korzystania z rejestracji automatycznej ta funkcja pozwala "
+"urządzeniom zachować tę samą konfigurację nawet po zresetowaniu lub ponownym "
+"flashowaniu. Ta funkcja jest domyślnie włączona, ale aby mogła działać, musi "
+"być włączona także w aplikacji sterownika."
diff --git a/applications/luci-app-openwisp/po/pt/openwisp.po b/applications/luci-app-openwisp/po/pt/openwisp.po
new file mode 100644
index 0000000000..241975d439
--- /dev/null
+++ b/applications/luci-app-openwisp/po/pt/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/pt_BR/openwisp.po b/applications/luci-app-openwisp/po/pt_BR/openwisp.po
new file mode 100644
index 0000000000..f2392d4536
--- /dev/null
+++ b/applications/luci-app-openwisp/po/pt_BR/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ro/openwisp.po b/applications/luci-app-openwisp/po/ro/openwisp.po
new file mode 100644
index 0000000000..4abf03ab21
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ro/openwisp.po
@@ -0,0 +1,233 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/ru/openwisp.po b/applications/luci-app-openwisp/po/ru/openwisp.po
new file mode 100644
index 0000000000..99131f7985
--- /dev/null
+++ b/applications/luci-app-openwisp/po/ru/openwisp.po
@@ -0,0 +1,266 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-08 01:07+0000\n"
+"Last-Translator: Sergey Ponomarev <stokito@gmail.com>\n"
+"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/"
+"luciapplicationsopenwisp/ru/>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr "Расширеные настройки"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr "Задержка загрузки"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr "Сертификат УЦ (CA)"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr "Путь УЦ"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+"Настройка, запуск и остановка OpenWISP агента на этом устройстве. Смотрите "
+"опции конфигурирования тут: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr "Таймаут соединения"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr "Постоянный ключ"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr "Отключено"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr "Включить"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr "Включите или отключите сервис OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr "Включено"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr "Общие настройки"
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr "Предоставить доступ luci-app-openwisp"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr "Ключ идентификации оборудования"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr "Скрипт идентификации оборудования"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+"Если выбранно, в случае если конфигурация присутствует как в удалённо, так и "
+"в локально, то удаленная конфигурация имеет приоритет над локальной."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+"Если агент не может подключиться к контроллеру после применения загруженной "
+"конфигурации, то она будет отменена."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr "Ключ"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr "MAC Интерфейс"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr "Интерфейс управления"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr "Максимальное Время"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr "Совместить конфигруцию"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr "OpenWISP"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+"Путь к скрипту хука постперезагрузки. Хук не вызывается, если путь не "
+"указывает на исполняемый файл скрипта. Этот хук вызывается каждый раз, когда "
+"openwisp-config применяет конфигурацию, но после перезагрузки служб."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+"Путь к крючку предварительной загрузки. Хук не вызывается, если путь не "
+"указывает на исполняемый файл скрипта. Этот хук вызывается каждый раз, когда "
+"openwisp-config применяет конфигурацию, но перед перезагрузкой служб."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr "Крючок после перезагрузки"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr "Крючок для предварительной загрузки"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr "URL сервера"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr "Общий секрет"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr "Тэги"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr "Теги применяемые к этому устройству."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr "Тестовый клнфиг"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr "Тестовый скрипт"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr "Ключ этого устройства на сервере OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr "URL-адрес сервера OpenWISP. Пример: https://openwisp2.mynetwork.com"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr "UUID этого устройства на сервере OpenWISP."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+"Интерфейс, который следует использовать для получения MAC-адреса данного "
+"устройства."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr "Интерфейс, используемый для управления и контроля."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr "Общий секрет организации для автоматической регистрации."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr "UUID"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr "Интервал обновления"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+"Используйте уникальный идентификатор оборудования для идентификации "
+"устройства, например, серийный номер."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+"Используйте указанный каталог сертификатов для проверки равноправного "
+"пользователя. Сертификаты должны быть в формате PEM, а каталог должен быть "
+"обработан с помощью утилиты c_rehash, поставляемой с openssl."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+"Используйте указанный файл сертификата для проверки равноправного "
+"пользователя. Файл может содержать несколько сертификатов ЦС. Сертификат(ы) "
+"должен(ы) быть в формате PEM."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+"Значение, переданное как аргумент curl --max-time , по умолчанию до 30. В "
+"секундах."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr "Проверка TLS"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr "Проверятт TLS сертификат сервера."
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
+"При использовании автоматической регистрации эта функция позволяет "
+"устройствам сохранять одну и ту же конфигурацию, даже после перезагрузки или "
+"перепрошивки. Эта функция включена по умолчанию, но должна быть включена "
+"также в контроллере."
diff --git a/applications/luci-app-openwisp/po/sk/openwisp.po b/applications/luci-app-openwisp/po/sk/openwisp.po
new file mode 100644
index 0000000000..2d19d3ea72
--- /dev/null
+++ b/applications/luci-app-openwisp/po/sk/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/sv/openwisp.po b/applications/luci-app-openwisp/po/sv/openwisp.po
new file mode 100644
index 0000000000..f734e5209b
--- /dev/null
+++ b/applications/luci-app-openwisp/po/sv/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/tr/openwisp.po b/applications/luci-app-openwisp/po/tr/openwisp.po
new file mode 100644
index 0000000000..90863f311d
--- /dev/null
+++ b/applications/luci-app-openwisp/po/tr/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/uk/openwisp.po b/applications/luci-app-openwisp/po/uk/openwisp.po
new file mode 100644
index 0000000000..d9d13b2f1f
--- /dev/null
+++ b/applications/luci-app-openwisp/po/uk/openwisp.po
@@ -0,0 +1,233 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/vi/openwisp.po b/applications/luci-app-openwisp/po/vi/openwisp.po
new file mode 100644
index 0000000000..f140394b47
--- /dev/null
+++ b/applications/luci-app-openwisp/po/vi/openwisp.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""
diff --git a/applications/luci-app-openwisp/po/zh_Hans/openwisp.po b/applications/luci-app-openwisp/po/zh_Hans/openwisp.po
new file mode 100644
index 0000000000..b25588e7cc
--- /dev/null
+++ b/applications/luci-app-openwisp/po/zh_Hans/openwisp.po
@@ -0,0 +1,246 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-04 22:04+0000\n"
+"Last-Translator: Eric <zxmegaxqug@hldrive.com>\n"
+"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
+"openwrt/luciapplicationsopenwisp/zh_Hans/>\n"
+"Language: zh_Hans\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr "高级设置"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr "启动延迟"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr "CA 证书"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr "CA 路径"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+"配置、启动及停滞此设备的 OpenWISP 代理。更多配置值相关的内容请访问: <a "
+"target='_blank' rel='noopener noreferrer' href='https://github.com/openwisp/"
+"openwisp-config'>https://github.com/openwisp/openwisp-config</a>"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr "连接超时"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr "一致密钥"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr "已禁用"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr "启用"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr "启用或禁用 OpenWISP 服务。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr "已启用"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr "常规设置"
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr "授予访问 luci-app-openwisp 的权限"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr "硬件 ID 密钥"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr "硬件 ID 脚本"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr "若选中,则如果一个配置项同时存在于远程和本地配置中,那么远程配置优先级将高于"
+"本地配置。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr "如果应用下载的配置后代理无法访问控制器,那么配置将恢复原样。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr "密钥"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr "MAC 接口"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr "管理界面"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr "最长时间"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr "合并配置"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr "OpenWISP"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+"后重加载 hook 脚本的路径。hook 将不被调用,如果路径不指向可执行脚本文件。"
+"每次 openwisp-config 应用配置时,都将调用此 hook,但是在重新加载服务后。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+"预重加载 hook 的路径。hook 将不被调用,如果路径不指向可执行脚本文件。每次 "
+"openwisp-config 应用配置时,会调用这个 hook,但是在重新加载服务之前。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr "后重加载 Hook"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr "预重加载 Hook"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr "服务器 URL"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr "共享的 Secret"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr "标签"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr "应用到此设备的标签。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr "测试配置"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr "测试脚本"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr "OpenWISP 服务器中此设备的密钥。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr "OpenWISP 服务器的 URL。示例:https://openwisp2.mynetwork.com"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr "OpenWISP 服务器中此设备的 UUID。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr "用于获得此设备 MAC 的接口。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr "用于管理和控制的接口。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr "组织共享的 secret,用于自动加入。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr "UUID"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr "更新间隔"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr "使用独有的硬件 ID 用于设备识别,比如序列号。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr "使用指定的证书目录来验证 peer。证书格式必须是 PEM,且目录必须已经用和 "
+"openssl 一起提供的 c_rehash 工具处理过。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr "使用指定的证书文件来验证 peer。此文件可以包括多个 CA 证书。证书格式必须是 "
+"PEM。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr "传递给 curl --max-time 变量的值,默认 30,单位为秒。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr "验证 SSL"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr "验证服务器 SSL 证书。"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr "使用自动注册时,此功能允许设备保留相同配置,即便设备被重置或重新刷过映像。此"
+"功能默认开启,但必须同样在控制器程序中启用才能正常运作。"
diff --git a/applications/luci-app-openwisp/po/zh_Hant/openwisp.po b/applications/luci-app-openwisp/po/zh_Hant/openwisp.po
new file mode 100644
index 0000000000..17fd8bfae5
--- /dev/null
+++ b/applications/luci-app-openwisp/po/zh_Hant/openwisp.po
@@ -0,0 +1,235 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2024-01-05 04:02+0000\n"
+"Last-Translator: Yuan Law <traverslombard@outlook.com>\n"
+"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
+"openwrt/luciapplicationsopenwisp/zh_Hant/>\n"
+"Language: zh_Hant\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:17
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:82
+msgid "Boot Delay"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid "CA Cert"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid "CA Path"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:12
+msgid ""
+"Configure, start and stop the OpenWISP agent on this device. Read more about "
+"configuration values: <a target='_blank' rel='noopener noreferrer' "
+"href='https://github.com/openwisp/openwisp-config'>https://github.com/"
+"openwisp/openwisp-config</a>"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:87
+msgid "Connect Timeout"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid "Consistent Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:29
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:27
+msgid "Enable"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:28
+msgid "Enable or disable the OpenWISP service."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:30
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:16
+msgid "General Settings"
+msgstr "一般設定"
+
+#: applications/luci-app-openwisp/root/usr/share/rpcd/acl.d/luci-app-openwisp.json:3
+msgid "Grant access to luci-app-openwisp"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid "Hardware ID Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:78
+msgid "Hardware ID Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid ""
+"If selected, in the event a config item is present in both the remote and "
+"local configuration, the remote configuration takes precedence over local "
+"configuration."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid ""
+"If the agent is unable to reach the controller after applying the downloaded "
+"config it will be reverted."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "Key"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "MAC Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "Management Interface"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid "Max Time"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:60
+msgid "Merge Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:11
+#: applications/luci-app-openwisp/root/usr/share/luci/menu.d/luci-app-openwisp.json:3
+msgid "OpenWISP"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid ""
+"Path to post reload hook script. The hook is not called if the path does not "
+"point to an executable script file. This hook is called each time openwisp-"
+"config applies a configuration, but after services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid ""
+"Path to pre-reload hook. The hook is not called if the path does not point "
+"to an executable script file. This hook is called each time openwisp-config "
+"applies a configuration, but before services are reloaded."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:107
+msgid "Post-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:103
+msgid "Pre-reload Hook"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid "Server URL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "Shared Secret"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:64
+msgid "Tags applied to this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:66
+msgid "Test Config"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:70
+msgid "Test Script"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:23
+msgid "The Key of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:33
+msgid ""
+"The URL to the OpenWISP server. Example: https://openwisp2.mynetwork.com"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "The UUID of this device in the OpenWISP server."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:53
+msgid "The interface to use for getting the MAC for this device."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:56
+msgid "The interface to use for management and control."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:36
+msgid "The organization shared secret for auto enrollment."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:20
+msgid "UUID"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:39
+msgid "Update Interval"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:74
+msgid ""
+"Use a unique hardware ID for device identification, for example a serial "
+"number."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:100
+msgid ""
+"Use the specified certificate directory to verify the peer. The certificates "
+"must be in PEM format, and the directory must have been processed using the "
+"c_rehash utility supplied with openssl."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:97
+msgid ""
+"Use the specified certificate file to verify the peer. The file may contain "
+"multiple CA certificates. The certificate(s) must be in PEM format."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:92
+msgid ""
+"Value passed to curl --max-time argument, defaults to 30. Expressed in "
+"seconds."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify SSL"
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:45
+msgid "Verify the server SSL certificate."
+msgstr ""
+
+#: applications/luci-app-openwisp/htdocs/luci-static/resources/view/openwisp.js:49
+msgid ""
+"When using Automatic registration, this feature allows devices to keep the "
+"same configuration even if reset or re-flashed. This feature is enabled by "
+"default, but must be enabled also in the controller application in order to "
+"work."
+msgstr ""