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/