diff --git a/app/plugins/templates/webpack.config.js.tmpl b/app/plugins/templates/webpack.config.js.tmpl
index a6e362cf..e18da936 100644
--- a/app/plugins/templates/webpack.config.js.tmpl
+++ b/app/plugins/templates/webpack.config.js.tmpl
@@ -84,7 +84,8 @@ module.exports = {
"PluginsAPI": "PluginsAPI",
"leaflet": "leaflet",
"ReactDOM": "ReactDOM",
- "React": "React"
+ "React": "React",
+ "gettext": "gettext"
},
watchOptions: {
diff --git a/app/static/app/js/classes/plugins/API.js b/app/static/app/js/classes/plugins/API.js
index e50b2cd5..a410ede1 100644
--- a/app/static/app/js/classes/plugins/API.js
+++ b/app/static/app/js/classes/plugins/API.js
@@ -24,6 +24,7 @@ if (!window.PluginsAPI){
'leaflet': { loader: 'globals-loader', exports: 'L' },
'ReactDOM': { loader: 'globals-loader', exports: 'ReactDOM' },
'React': { loader: 'globals-loader', exports: 'React' },
+ 'gettext': { loader: 'globals-loader', exports: 'gettext' },
'SystemJS': { loader: 'globals-loader', exports: 'SystemJS' }
}
});
diff --git a/app/templates/app/base.html b/app/templates/app/base.html
index 10df32b9..2cd4edd2 100644
--- a/app/templates/app/base.html
+++ b/app/templates/app/base.html
@@ -37,6 +37,7 @@
+
{% block headers-before-bundle %}{% endblock %}
diff --git a/app/urls.py b/app/urls.py
index 43be1a7b..1f5ef7ed 100644
--- a/app/urls.py
+++ b/app/urls.py
@@ -1,4 +1,5 @@
from django.conf.urls import url, include
+from django.views.i18n import JavaScriptCatalog
from .views import app as app_views, public as public_views
from .plugins.views import app_view_handler
@@ -36,7 +37,10 @@ urlpatterns = [
url(r'^api/', include("app.api.urls")),
- url(r'^plugins/(?P[^/.]+)/(.*)$', app_view_handler)
+ url(r'^plugins/(?P[^/.]+)/(.*)$', app_view_handler),
+
+ # TODO: add caching: https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#note-on-performance
+ url(r'^jsi18n/', JavaScriptCatalog.as_view(packages=['app']), name='javascript-catalog'),
]
handler404 = app_views.handler404
diff --git a/locale/django.pot b/locale/django.pot
index 16624bba..58079529 100644
--- a/locale/django.pot
+++ b/locale/django.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-20 20:31+0000\n"
+"POT-Creation-Date: 2020-12-14 18:40+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -68,43 +68,43 @@ msgid ""
"a> is optional, but can increase georeferencing accuracy"
msgstr ""
-#: app/templates/app/logged_in_base.html:197
+#: app/templates/app/logged_in_base.html:15
msgid "Hello"
msgstr ""
-#: app/templates/app/logged_in_base.html:201
+#: app/templates/app/logged_in_base.html:19
msgid "Logout"
msgstr ""
-#: app/templates/app/logged_in_base.html:224
+#: app/templates/app/logged_in_base.html:33
msgid "Dashboard"
msgstr ""
-#: app/templates/app/logged_in_base.html:273
+#: app/templates/app/logged_in_base.html:79
msgid "Administration"
msgstr ""
-#: app/templates/app/logged_in_base.html:276
+#: app/templates/app/logged_in_base.html:84
msgid "Accounts"
msgstr ""
-#: app/templates/app/logged_in_base.html:279
+#: app/templates/app/logged_in_base.html:87
msgid "Groups"
msgstr ""
-#: app/templates/app/logged_in_base.html:282
+#: app/templates/app/logged_in_base.html:92
msgid "Brand"
msgstr ""
-#: app/templates/app/logged_in_base.html:285
+#: app/templates/app/logged_in_base.html:95
msgid "Theme"
msgstr ""
-#: app/templates/app/logged_in_base.html:288
+#: app/templates/app/logged_in_base.html:98
msgid "Plugins"
msgstr ""
-#: app/templates/app/logged_in_base.html:291
+#: app/templates/app/logged_in_base.html:101
msgid "Application"
msgstr ""
@@ -121,38 +121,42 @@ msgid "API Version"
msgstr ""
#: app/templates/app/processing_node.html:23
-msgid "ODM Version"
+msgid "Engine"
msgstr ""
#: app/templates/app/processing_node.html:27
-msgid "Queue Count"
+msgid "Engine Version"
msgstr ""
#: app/templates/app/processing_node.html:31
-msgid "Max Images Limit"
+msgid "Queue Count"
msgstr ""
#: app/templates/app/processing_node.html:35
-msgid "Label"
+msgid "Max Images Limit"
msgstr ""
#: app/templates/app/processing_node.html:39
-msgid "Last Refreshed"
-msgstr ""
-
-#: app/templates/app/processing_node.html:40
-msgid "ago"
+msgid "Label"
msgstr ""
#: app/templates/app/processing_node.html:43
+msgid "Last Refreshed"
+msgstr ""
+
+#: app/templates/app/processing_node.html:44
+msgid "ago"
+msgstr ""
+
+#: app/templates/app/processing_node.html:47
msgid "Options (JSON)"
msgstr ""
-#: app/templates/app/processing_node.html:49
+#: app/templates/app/processing_node.html:53
msgid "Edit"
msgstr ""
-#: app/templates/app/processing_node.html:50
+#: app/templates/app/processing_node.html:54
msgid "Delete"
msgstr ""
@@ -164,14 +168,18 @@ msgstr ""
msgid "Create Account"
msgstr ""
-#: app/views/app.py:33
+#: app/views/app.py:44
msgid "First Project"
msgstr ""
-#: app/views/app.py:43 app/views/public.py:25
+#: app/views/app.py:54 app/views/public.py:26
msgid "Map"
msgstr ""
-#: app/views/app.py:70
+#: app/views/app.py:81
msgid "3D Model Display"
msgstr ""
+
+#: plugins/cesium-ion/api_views.py:170
+msgid "No matching enum type."
+msgstr ""
diff --git a/locale/djangojs.pot b/locale/djangojs.pot
index 92b5fcc1..2f688f18 100644
--- a/locale/djangojs.pot
+++ b/locale/djangojs.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-20 20:32+0000\n"
+"POT-Creation-Date: 2020-12-14 18:40+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -20,7 +20,3 @@ msgstr ""
#: plugins/lightning/public/Dashboard.jsx:38
msgid "Loading dashboard..."
msgstr ""
-
-#: plugins/lightning/public/Dashboard.jsx:150
-msgid "Logout"
-msgstr ""
diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po
index df64c743..a2ac64be 100644
--- a/locale/it/LC_MESSAGES/django.po
+++ b/locale/it/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-20 20:31+0000\n"
+"POT-Creation-Date: 2020-12-14 18:40+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -69,43 +69,43 @@ msgid ""
"a> is optional, but can increase georeferencing accuracy"
msgstr ""
-#: app/templates/app/logged_in_base.html:197
+#: app/templates/app/logged_in_base.html:15
msgid "Hello"
msgstr ""
-#: app/templates/app/logged_in_base.html:201
+#: app/templates/app/logged_in_base.html:19
msgid "Logout"
msgstr ""
-#: app/templates/app/logged_in_base.html:224
+#: app/templates/app/logged_in_base.html:33
msgid "Dashboard"
-msgstr ""
+msgstr "Pannello di Controllo"
-#: app/templates/app/logged_in_base.html:273
+#: app/templates/app/logged_in_base.html:79
msgid "Administration"
msgstr ""
-#: app/templates/app/logged_in_base.html:276
+#: app/templates/app/logged_in_base.html:84
msgid "Accounts"
msgstr ""
-#: app/templates/app/logged_in_base.html:279
+#: app/templates/app/logged_in_base.html:87
msgid "Groups"
msgstr ""
-#: app/templates/app/logged_in_base.html:282
+#: app/templates/app/logged_in_base.html:92
msgid "Brand"
msgstr ""
-#: app/templates/app/logged_in_base.html:285
+#: app/templates/app/logged_in_base.html:95
msgid "Theme"
msgstr ""
-#: app/templates/app/logged_in_base.html:288
+#: app/templates/app/logged_in_base.html:98
msgid "Plugins"
msgstr ""
-#: app/templates/app/logged_in_base.html:291
+#: app/templates/app/logged_in_base.html:101
msgid "Application"
msgstr ""
@@ -122,38 +122,42 @@ msgid "API Version"
msgstr ""
#: app/templates/app/processing_node.html:23
-msgid "ODM Version"
+msgid "Engine"
msgstr ""
#: app/templates/app/processing_node.html:27
-msgid "Queue Count"
+msgid "Engine Version"
msgstr ""
#: app/templates/app/processing_node.html:31
-msgid "Max Images Limit"
+msgid "Queue Count"
msgstr ""
#: app/templates/app/processing_node.html:35
-msgid "Label"
+msgid "Max Images Limit"
msgstr ""
#: app/templates/app/processing_node.html:39
-msgid "Last Refreshed"
-msgstr ""
-
-#: app/templates/app/processing_node.html:40
-msgid "ago"
+msgid "Label"
msgstr ""
#: app/templates/app/processing_node.html:43
+msgid "Last Refreshed"
+msgstr ""
+
+#: app/templates/app/processing_node.html:44
+msgid "ago"
+msgstr ""
+
+#: app/templates/app/processing_node.html:47
msgid "Options (JSON)"
msgstr ""
-#: app/templates/app/processing_node.html:49
+#: app/templates/app/processing_node.html:53
msgid "Edit"
msgstr ""
-#: app/templates/app/processing_node.html:50
+#: app/templates/app/processing_node.html:54
msgid "Delete"
msgstr ""
@@ -165,14 +169,18 @@ msgstr ""
msgid "Create Account"
msgstr ""
-#: app/views/app.py:33
+#: app/views/app.py:44
msgid "First Project"
msgstr ""
-#: app/views/app.py:43 app/views/public.py:25
+#: app/views/app.py:54 app/views/public.py:26
msgid "Map"
msgstr ""
-#: app/views/app.py:70
+#: app/views/app.py:81
msgid "3D Model Display"
msgstr ""
+
+#: plugins/cesium-ion/api_views.py:170
+msgid "No matching enum type."
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/djangojs.po b/locale/it/LC_MESSAGES/djangojs.po
index 26be9e28..08188a8d 100644
--- a/locale/it/LC_MESSAGES/djangojs.po
+++ b/locale/it/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-20 20:32+0000\n"
+"POT-Creation-Date: 2020-12-14 18:40+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -20,8 +20,4 @@ msgstr ""
#: plugins/lightning/public/Dashboard.jsx:38
msgid "Loading dashboard..."
-msgstr ""
-
-#: plugins/lightning/public/Dashboard.jsx:150
-msgid "Logout"
-msgstr ""
+msgstr "Caricando il pannello di controllo..."
diff --git a/plugins/lightning/public/app.jsx b/plugins/lightning/public/app.jsx
index 2cefd038..0d027f41 100644
--- a/plugins/lightning/public/app.jsx
+++ b/plugins/lightning/public/app.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import PropTypes from 'prop-types';
import Login from './Login';
import Dashboard from './Dashboard';
-import $ from 'jquery';
export default class LightningPanel extends React.Component {
static defaultProps = {
diff --git a/translate.sh b/translate.sh
index cb4c6b8a..89e08a60 100755
--- a/translate.sh
+++ b/translate.sh
@@ -1,6 +1,21 @@
-for lang in it
-do
- django-admin makemessages --keep-pot --locale=$lang --ignore=app/templates/app/admin/* --ignore=app/templates/app/registration/*
- django-admin makemessages --keep-pot --locale=$lang -d djangojs --extension jsx
-done
-django-admin compilemessages
+#!/bin/bash
+
+LOCALES="it"
+
+if [[ "$1" == "extract" ]]; then
+ echo "Extracting .po files from Django/React"
+ locale_param=""
+ for lang in $LOCALES
+ do
+ locale_param="--locale=$lang $locale_param"
+ done
+
+ mkdir -p locale
+ django-admin makemessages --keep-pot $locale_param --ignore=build --ignore=app/templates/app/admin/* --ignore=app/templates/app/registration/*
+ django-admin makemessages --keep-pot $locale_param -d djangojs --extension jsx --ignore=build
+fi
+
+if [[ "$1" == "build" ]]; then
+ echo "Building .po files into .mo"
+ django-admin compilemessages
+fi
diff --git a/webodm/settings.py b/webodm/settings.py
index 4beff37f..23b6577c 100644
--- a/webodm/settings.py
+++ b/webodm/settings.py
@@ -188,6 +188,9 @@ USE_I18N = True
USE_L10N = True
USE_TZ = True
+LOCALE_PATHS = [
+ os.path.join(BASE_DIR, 'locale')
+]
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/