More translations, version page

pull/941/head
Piero Toffanin 2020-12-14 16:18:00 -05:00
rodzic 11ee54245d
commit f707d54f5d
18 zmienionych plików z 305 dodań i 113 usunięć

Wyświetl plik

@ -3,7 +3,6 @@ import ApiFactory from './ApiFactory';
import Map from './Map'; import Map from './Map';
import Dashboard from './Dashboard'; import Dashboard from './Dashboard';
import App from './App'; import App from './App';
import $ from 'jquery';
import SystemJS from 'SystemJS'; import SystemJS from 'SystemJS';
if (!window.PluginsAPI){ if (!window.PluginsAPI){

Wyświetl plik

@ -12,13 +12,11 @@
<![endif]--> <![endif]-->
{% if no_processingnodes %} {% if no_processingnodes %}
<h3>{% trans 'Welcome!' %}</h3> <h3>{% trans 'Welcome!' %}</h3>
{% trans 'Add a Processing Node' as add_processing_node %} {% trans 'Add a Processing Node' as add_processing_node %}
{% with nodeodm_link='<a href="https://github.com/OpenDroneMap/NodeODM" target="_blank">NodeODM</a>' api_link='<a href="https://github.com/OpenDroneMap/NodeODM/blob/master/docs/index.adoc" target="_blank">API</a>' %} {% with nodeodm_link='<a href="https://github.com/OpenDroneMap/NodeODM" target="_blank">NodeODM</a>' api_link='<a href="https://github.com/OpenDroneMap/NodeODM/blob/master/docs/index.adoc" target="_blank">API</a>' %}
<p> <p>
{% blocktrans %} {% blocktrans %}To get started, "{{ add_processing_node }}". A processing node is a computer running an instance of {{ nodeodm_link }} or some other software that implements this {{ api_link }}.{% endblocktrans %}
To get started, "{{ add_processing_node }}". A processing node is a computer running an instance of {{ nodeodm_link }} or some other software that implements this {{ api_link }}.
{% endblocktrans %}
</p> </p>
{% endwith %} {% endwith %}
<button class="btn btn-primary" onclick="location.href='{% url "admin:nodeodm_processingnode_add" %}';"><i class="fa fa-plus-circle"></i> {{ add_processing_node }}</button> <button class="btn btn-primary" onclick="location.href='{% url "admin:nodeodm_processingnode_add" %}';"><i class="fa fa-plus-circle"></i> {{ add_processing_node }}</button>
@ -26,10 +24,10 @@
{% else %} {% else %}
{% if no_tasks %} {% if no_tasks %}
<h3>{% trans 'Welcome!' %}</h3> <h3>{% trans 'Welcome!' %}</h3>
{% trans 'Select Images and GCP' as upload_images %} {% trans 'Select Images and GCP' as upload_images %}
<p> <p>
{% blocktrans %} To create a map, press the "{{ upload_images }}" button, or drag and drop some images into a project. {% endblocktrans %} {% blocktrans %}To create a map, press the "{{ upload_images }}" button, or drag and drop some images into a project.{% endblocktrans %}
</p> </p>
<p> <p>
<ul> <ul>

Wyświetl plik

@ -12,7 +12,7 @@
</a> </a>
<ul class="dropdown-menu dropdown-user"> <ul class="dropdown-menu dropdown-user">
<li class="user-profile"> <li class="user-profile">
{% trans 'Hello' %}, {{ user.username }}<br/> {{ user.username }}<br/>
<span class="email">{{ user.email }}</span> <span class="email">{{ user.email }}</span>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
@ -56,7 +56,7 @@
{% if view_nodes %} {% if view_nodes %}
<li> <li>
<a href="#"><i class="fa fa-wrench fa-fw"></i> Processing Nodes<span class="fa arrow"></span></a> <a href="#"><i class="fa fa-wrench fa-fw"></i> {% trans 'Processing Nodes' %}<span class="fa arrow"></span></a>
<ul class="nav nav-second-level"> <ul class="nav nav-second-level">
{% for node in nodes %} {% for node in nodes %}
<li> <li>
@ -66,7 +66,7 @@
{% if add_nodes %} {% if add_nodes %}
<li> <li>
<a href="{% url 'admin:nodeodm_processingnode_add' %}"><span class="fa fa-plus-circle"></span> Add New</a> <a href="{% url 'admin:nodeodm_processingnode_add' %}"><span class="fa fa-plus-circle"></span> {% trans 'Add New' %}</a>
</li> </li>
{% endif %} {% endif %}
</ul> </ul>
@ -100,6 +100,9 @@
<li> <li>
<a href="/admin/app/"><i class="fa fa-cog fa-fw"></i> {% trans 'Application' %}</a> <a href="/admin/app/"><i class="fa fa-cog fa-fw"></i> {% trans 'Application' %}</a>
</li> </li>
<li>
<a href="/version/"><i class="fa fa-info-circle fa-fw"></i> {% trans 'Version' %}</a>
</li>
</ul> </ul>
</li> </li>
{% endif %} {% endif %}

Wyświetl plik

@ -41,7 +41,7 @@
</tr> </tr>
<tr> <tr>
<td>{% trans "Last Refreshed" %}</td> <td>{% trans "Last Refreshed" %}</td>
<td>{{ processing_node.last_refreshed|timesince }} {% trans 'ago' %} ({{ processing_node.last_refreshed|localtime }})</td> <!-- TODO: timezone? --> <td>{{ processing_node.last_refreshed|timesince }} {% trans 'ago' context '5 minutes ago' %} ({{ processing_node.last_refreshed|localtime }})</td> <!-- TODO: timezone? -->
</tr> </tr>
<tr> <tr>
<td>{% trans "Options (JSON)" %}</td> <td>{% trans "Options (JSON)" %}</td>

Wyświetl plik

@ -0,0 +1,15 @@
{% extends "app/logged_in_base.html" %}
{% load i18n settings %}
{% block content %}
<div class="text-center">
{% app_version as version %}
<h2>WebODM {{ version }}</h2>
<div style="margin-bottom: 16px; margin-top: 16px;"><i class="fab fa-github"></i> <a target="_blank" href="https://github.com/OpenDroneMap/WebODM">https://github.com/OpenDroneMap/WebODM</a></div>
<div class="theme-secondary" style="font-size: 90%">This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="https://raw.githubusercontent.com/OpenDroneMap/WebODM/master/LICENSE.md">the GNU Affero General Public License</a> for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.</div>
</div>
{% endblock %}

Wyświetl plik

@ -224,7 +224,7 @@
<p>{% trans "Uh oh! Could you please check the errors below?" %}</p> <p>{% trans "Uh oh! Could you please check the errors below?" %}</p>
</div> </div>
{% else %} {% else %}
<h3>{% trans 'Welcome!' %}</h3> <h3>{% trans 'Welcome!' %}</h3>
<div style="margin-bottom: 28px;">Before we get started, we need to create an administrator account for you:</div> <div style="margin-bottom: 28px;">Before we get started, we need to create an administrator account for you:</div>
{% endif %} {% endif %}

Wyświetl plik

@ -11,6 +11,9 @@ logger = logging.getLogger('app.logger')
def is_single_user_mode(): def is_single_user_mode():
return settings.SINGLE_USER_MODE return settings.SINGLE_USER_MODE
@register.simple_tag
def app_version():
return settings.VERSION
@register.simple_tag(takes_context=True) @register.simple_tag(takes_context=True)
def settings_image_url(context, image): def settings_image_url(context, image):

Wyświetl plik

@ -39,6 +39,7 @@ urlpatterns = [
url(r'^plugins/(?P<plugin_name>[^/.]+)/(.*)$', app_view_handler), url(r'^plugins/(?P<plugin_name>[^/.]+)/(.*)$', app_view_handler),
url(r'^version/$', app_views.app_version, name='app_version'),
# TODO: add caching: https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#note-on-performance # 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'), url(r'^jsi18n/', JavaScriptCatalog.as_view(packages=['app']), name='javascript-catalog'),
] ]

Wyświetl plik

@ -99,6 +99,8 @@ def model_display(request, project_pk=None, task_pk=None):
}.items() }.items()
}) })
def app_version(request):
return render(request, 'app/version.html', {'title': _('Version')})
@login_required @login_required
def processing_node(request, processing_node_id): def processing_node(request, processing_node_id):

Wyświetl plik

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-14 18:40+0000\n" "POT-Creation-Date: 2020-12-14 20:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,9 +17,9 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: app/templates/app/dashboard.html:15 app/templates/app/dashboard.html:29 #: app/templates/app/dashboard.html:15 app/templates/app/dashboard.html:27
#: app/templates/app/welcome.html:227 #: app/templates/app/welcome.html:227
msgid "Welcome!" msgid "Welcome!"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:16 #: app/templates/app/dashboard.html:16
@ -29,49 +29,43 @@ msgstr ""
#: app/templates/app/dashboard.html:19 #: app/templates/app/dashboard.html:19
#, python-format #, python-format
msgid "" msgid ""
" \n" "To get started, \"%(add_processing_node)s\". A processing node is a computer "
"\t\t\t\tTo get started, \"%(add_processing_node)s\". A processing node is a " "running an instance of %(nodeodm_link)s or some other software that "
"computer running an instance of %(nodeodm_link)s or some other software that " "implements this %(api_link)s."
"implements this %(api_link)s.\n"
"\t\t\t"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:30 #: app/templates/app/dashboard.html:28
msgid "Select Images and GCP" msgid "Select Images and GCP"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:32 #: app/templates/app/dashboard.html:30
#, python-format #, python-format
msgid "" msgid ""
" To create a map, press the \"%(upload_images)s\" button, or drag and drop " "To create a map, press the \"%(upload_images)s\" button, or drag and drop "
"some images into a project. " "some images into a project."
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:36 #: app/templates/app/dashboard.html:34
msgid "You need at least 5 images" msgid "You need at least 5 images"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:37 #: app/templates/app/dashboard.html:35
#, python-format #, python-format
msgid "Images must overlap by 65%% or more" msgid "Images must overlap by 65%% or more"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:38 #: app/templates/app/dashboard.html:36
#, python-format #, python-format
msgid "For great 3D, images must overlap by 83%%" msgid "For great 3D, images must overlap by 83%%"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:39 #: app/templates/app/dashboard.html:37
msgid "" msgid ""
"A <a href=\"https://github.com/OpenDroneMap/OpenDroneMap/wiki/Running-" "A <a href=\"https://github.com/OpenDroneMap/OpenDroneMap/wiki/Running-"
"OpenDroneMap#running-odm-with-ground-control\" target=\"_blank\">GCP file</" "OpenDroneMap#running-odm-with-ground-control\" target=\"_blank\">GCP file</"
"a> is optional, but can increase georeferencing accuracy" "a> is optional, but can increase georeferencing accuracy"
msgstr "" msgstr ""
#: app/templates/app/logged_in_base.html:15
msgid "Hello"
msgstr ""
#: app/templates/app/logged_in_base.html:19 #: app/templates/app/logged_in_base.html:19
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
@ -80,6 +74,14 @@ msgstr ""
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: app/templates/app/logged_in_base.html:59
msgid "Processing Nodes"
msgstr ""
#: app/templates/app/logged_in_base.html:69
msgid "Add New"
msgstr ""
#: app/templates/app/logged_in_base.html:79 #: app/templates/app/logged_in_base.html:79
msgid "Administration" msgid "Administration"
msgstr "" msgstr ""
@ -145,6 +147,7 @@ msgid "Last Refreshed"
msgstr "" msgstr ""
#: app/templates/app/processing_node.html:44 #: app/templates/app/processing_node.html:44
msgctxt "5 minutes ago"
msgid "ago" msgid "ago"
msgstr "" msgstr ""
@ -183,3 +186,88 @@ msgstr ""
#: plugins/cesium-ion/api_views.py:170 #: plugins/cesium-ion/api_views.py:170
msgid "No matching enum type." msgid "No matching enum type."
msgstr "" msgstr ""
#: plugins/diagnostic/plugin.py:36
msgid "Diagnostic"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:6
msgid "Diagnostic Information"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:8
msgid "App Version"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:12
msgid "Storage Space"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:16
#: plugins/diagnostic/templates/diagnostic.html:42
#: plugins/diagnostic/templates/diagnostic.html:47
msgctxt "Megabytes of storage space"
msgid "Free"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:17
#: plugins/diagnostic/templates/diagnostic.html:41
#: plugins/diagnostic/templates/diagnostic.html:47
msgctxt "Megabytes of storage space"
msgid "Used"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:18
msgctxt "Megabytes of storage space"
msgid "Total"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:22
msgctxt "Computer memory (RAM)"
msgid "Memory"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:26
#: plugins/diagnostic/templates/diagnostic.html:77
#: plugins/diagnostic/templates/diagnostic.html:82
msgctxt "Megabytes of memory space"
msgid "Free"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:27
#: plugins/diagnostic/templates/diagnostic.html:76
#: plugins/diagnostic/templates/diagnostic.html:82
msgctxt "Megabytes of memory space"
msgid "Used"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:28
msgctxt "Megabytes of memory space"
msgid "Total"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:35
msgid "Note!"
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:35
#, python-format
msgid ""
"These values might be relative to the virtualization environment in which "
"the application is running, not necessarily the values of the your machine. "
"See instructions for %(win_link)s and %(mac_link)s for changing these values "
"in a docker setup."
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:49
#: plugins/diagnostic/templates/diagnostic.html:84
msgid "Disk Space"
msgstr ""
#: plugins/lightning/plugin.py:25 plugins/lightning/plugin.py:39
msgid "Lightning Network"
msgstr ""
#: plugins/posm-gcpi/plugin.py:8
msgid "GCP Interface"
msgstr ""

Wyświetl plik

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-14 18:40+0000\n" "POT-Creation-Date: 2020-12-14 20:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

Wyświetl plik

@ -3,12 +3,11 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-14 18:40+0000\n" "POT-Creation-Date: 2020-12-14 20:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,9 +17,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/templates/app/dashboard.html:15 app/templates/app/dashboard.html:29 #: app/templates/app/dashboard.html:15 app/templates/app/dashboard.html:27
#: app/templates/app/welcome.html:227 #: app/templates/app/welcome.html:227
msgid "Welcome!" msgid "Welcome!"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:16 #: app/templates/app/dashboard.html:16
@ -30,157 +29,245 @@ msgstr ""
#: app/templates/app/dashboard.html:19 #: app/templates/app/dashboard.html:19
#, python-format #, python-format
msgid "" msgid ""
" \n" "To get started, \"%(add_processing_node)s\". A processing node is a computer "
"\t\t\t\tTo get started, \"%(add_processing_node)s\". A processing node is a " "running an instance of %(nodeodm_link)s or some other software that "
"computer running an instance of %(nodeodm_link)s or some other software that " "implements this %(api_link)s."
"implements this %(api_link)s.\n"
"\t\t\t"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:30 #: app/templates/app/dashboard.html:28
msgid "Select Images and GCP" msgid "Select Images and GCP"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:32 #: app/templates/app/dashboard.html:30
#, python-format #, python-format
msgid "" msgid ""
" To create a map, press the \"%(upload_images)s\" button, or drag and drop " "To create a map, press the \"%(upload_images)s\" button, or drag and drop "
"some images into a project. " "some images into a project."
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:36 #: app/templates/app/dashboard.html:34
msgid "You need at least 5 images" msgid "You need at least 5 images"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:37 #: app/templates/app/dashboard.html:35
#, python-format #, python-format
msgid "Images must overlap by 65%% or more" msgid "Images must overlap by 65%% or more"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:38 #: app/templates/app/dashboard.html:36
#, python-format #, python-format
msgid "For great 3D, images must overlap by 83%%" msgid "For great 3D, images must overlap by 83%%"
msgstr "" msgstr ""
#: app/templates/app/dashboard.html:39 #: app/templates/app/dashboard.html:37
msgid "" msgid ""
"A <a href=\"https://github.com/OpenDroneMap/OpenDroneMap/wiki/Running-" "A <a href=\"https://github.com/OpenDroneMap/OpenDroneMap/wiki/Running-"
"OpenDroneMap#running-odm-with-ground-control\" target=\"_blank\">GCP file</" "OpenDroneMap#running-odm-with-ground-control\" target=\"_blank\">GCP file</"
"a> is optional, but can increase georeferencing accuracy" "a> is optional, but can increase georeferencing accuracy"
msgstr "" msgstr ""
#: app/templates/app/logged_in_base.html:15
msgid "Hello"
msgstr ""
#: app/templates/app/logged_in_base.html:19 #: app/templates/app/logged_in_base.html:19
msgid "Logout" msgid "Logout"
msgstr "" msgstr "Chiudi Sessione"
#: app/templates/app/logged_in_base.html:33 #: app/templates/app/logged_in_base.html:33
msgid "Dashboard" msgid "Dashboard"
msgstr "Pannello di Controllo" msgstr "Pannello di Controllo"
#: app/templates/app/logged_in_base.html:59
msgid "Processing Nodes"
msgstr "Nodi di Elaborazione"
#: app/templates/app/logged_in_base.html:69
msgid "Add New"
msgstr "Aggiungi Nuovo"
#: app/templates/app/logged_in_base.html:79 #: app/templates/app/logged_in_base.html:79
msgid "Administration" msgid "Administration"
msgstr "" msgstr "Amministrazione"
#: app/templates/app/logged_in_base.html:84 #: app/templates/app/logged_in_base.html:84
msgid "Accounts" msgid "Accounts"
msgstr "" msgstr "Accounts"
#: app/templates/app/logged_in_base.html:87 #: app/templates/app/logged_in_base.html:87
msgid "Groups" msgid "Groups"
msgstr "" msgstr "Gruppi"
#: app/templates/app/logged_in_base.html:92 #: app/templates/app/logged_in_base.html:92
msgid "Brand" msgid "Brand"
msgstr "" msgstr "Marchio"
#: app/templates/app/logged_in_base.html:95 #: app/templates/app/logged_in_base.html:95
msgid "Theme" msgid "Theme"
msgstr "" msgstr "Tema"
#: app/templates/app/logged_in_base.html:98 #: app/templates/app/logged_in_base.html:98
msgid "Plugins" msgid "Plugins"
msgstr "" msgstr "Plugins"
#: app/templates/app/logged_in_base.html:101 #: app/templates/app/logged_in_base.html:101
msgid "Application" msgid "Application"
msgstr "" msgstr "Applicazione"
#: app/templates/app/processing_node.html:11 #: app/templates/app/processing_node.html:11
msgid "Hostname" msgid "Hostname"
msgstr "" msgstr "Hostname"
#: app/templates/app/processing_node.html:15 #: app/templates/app/processing_node.html:15
msgid "Port" msgid "Port"
msgstr "" msgstr "Porta"
#: app/templates/app/processing_node.html:19 #: app/templates/app/processing_node.html:19
msgid "API Version" msgid "API Version"
msgstr "" msgstr "Versione API"
#: app/templates/app/processing_node.html:23 #: app/templates/app/processing_node.html:23
msgid "Engine" msgid "Engine"
msgstr "" msgstr "Motore"
#: app/templates/app/processing_node.html:27 #: app/templates/app/processing_node.html:27
msgid "Engine Version" msgid "Engine Version"
msgstr "" msgstr "Versione Motore"
#: app/templates/app/processing_node.html:31 #: app/templates/app/processing_node.html:31
msgid "Queue Count" msgid "Queue Count"
msgstr "" msgstr "Lunghezza Coda"
#: app/templates/app/processing_node.html:35 #: app/templates/app/processing_node.html:35
msgid "Max Images Limit" msgid "Max Images Limit"
msgstr "" msgstr "Numero Massimo Immagini"
#: app/templates/app/processing_node.html:39 #: app/templates/app/processing_node.html:39
msgid "Label" msgid "Label"
msgstr "" msgstr "Etichetta"
#: app/templates/app/processing_node.html:43 #: app/templates/app/processing_node.html:43
msgid "Last Refreshed" msgid "Last Refreshed"
msgstr "" msgstr "Ultimo Aggiornamento"
#: app/templates/app/processing_node.html:44 #: app/templates/app/processing_node.html:44
msgctxt "5 minutes ago"
msgid "ago" msgid "ago"
msgstr "" msgstr ""
#: app/templates/app/processing_node.html:47 #: app/templates/app/processing_node.html:47
msgid "Options (JSON)" msgid "Options (JSON)"
msgstr "" msgstr "Opzioni (JSON)"
#: app/templates/app/processing_node.html:53 #: app/templates/app/processing_node.html:53
msgid "Edit" msgid "Edit"
msgstr "" msgstr "Modifica"
#: app/templates/app/processing_node.html:54 #: app/templates/app/processing_node.html:54
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Cancella"
#: app/templates/app/welcome.html:224 #: app/templates/app/welcome.html:224
msgid "Uh oh! Could you please check the errors below?" msgid "Uh oh! Could you please check the errors below?"
msgstr "" msgstr "Uh oh! Puoi per favore controllare gli errori qui sotto?"
#: app/templates/app/welcome.html:237 #: app/templates/app/welcome.html:237
msgid "Create Account" msgid "Create Account"
msgstr "" msgstr "Crea Account"
#: app/views/app.py:44 #: app/views/app.py:44
msgid "First Project" msgid "First Project"
msgstr "" msgstr "Primo Progetto"
#: app/views/app.py:54 app/views/public.py:26 #: app/views/app.py:54 app/views/public.py:26
msgid "Map" msgid "Map"
msgstr "" msgstr "Mappa"
#: app/views/app.py:81 #: app/views/app.py:81
msgid "3D Model Display" msgid "3D Model Display"
msgstr "" msgstr "Schermata Modello 3D"
#: plugins/cesium-ion/api_views.py:170 #: plugins/cesium-ion/api_views.py:170
msgid "No matching enum type." msgid "No matching enum type."
msgstr "" msgstr ""
#: plugins/diagnostic/plugin.py:36
msgid "Diagnostic"
msgstr "Diagnostica"
#: plugins/diagnostic/templates/diagnostic.html:6
msgid "Diagnostic Information"
msgstr "Informazioni di Diagnostica"
#: plugins/diagnostic/templates/diagnostic.html:8
msgid "App Version"
msgstr "Versione App"
#: plugins/diagnostic/templates/diagnostic.html:12
msgid "Storage Space"
msgstr "Spazio su Disco"
#: plugins/diagnostic/templates/diagnostic.html:16
#: plugins/diagnostic/templates/diagnostic.html:42
#: plugins/diagnostic/templates/diagnostic.html:47
msgctxt "Megabytes of storage space"
msgid "Free"
msgstr "Libero"
#: plugins/diagnostic/templates/diagnostic.html:17
#: plugins/diagnostic/templates/diagnostic.html:41
#: plugins/diagnostic/templates/diagnostic.html:47
msgctxt "Megabytes of storage space"
msgid "Used"
msgstr "Usato"
#: plugins/diagnostic/templates/diagnostic.html:18
msgctxt "Megabytes of storage space"
msgid "Total"
msgstr "Totale"
#: plugins/diagnostic/templates/diagnostic.html:22
msgctxt "Computer memory (RAM)"
msgid "Memory"
msgstr "Memoria"
#: plugins/diagnostic/templates/diagnostic.html:26
#: plugins/diagnostic/templates/diagnostic.html:77
#: plugins/diagnostic/templates/diagnostic.html:82
msgctxt "Megabytes of memory space"
msgid "Free"
msgstr "Libera"
#: plugins/diagnostic/templates/diagnostic.html:27
#: plugins/diagnostic/templates/diagnostic.html:76
#: plugins/diagnostic/templates/diagnostic.html:82
msgctxt "Megabytes of memory space"
msgid "Used"
msgstr "Usata"
#: plugins/diagnostic/templates/diagnostic.html:28
msgctxt "Megabytes of memory space"
msgid "Total"
msgstr "Totale"
#: plugins/diagnostic/templates/diagnostic.html:35
msgid "Note!"
msgstr "Nota!"
#: plugins/diagnostic/templates/diagnostic.html:35
#, python-format
msgid ""
"These values might be relative to the virtualization environment in which "
"the application is running, not necessarily the values of the your machine. "
"See instructions for %(win_link)s and %(mac_link)s for changing these values "
"in a docker setup."
msgstr ""
#: plugins/diagnostic/templates/diagnostic.html:49
#: plugins/diagnostic/templates/diagnostic.html:84
msgid "Disk Space"
msgstr "Spazio su Disco"
#: plugins/lightning/plugin.py:25 plugins/lightning/plugin.py:39
msgid "Lightning Network"
msgstr "Rete Lightning"
#: plugins/posm-gcpi/plugin.py:8
msgid "GCP Interface"
msgstr "Interfaccia GCP"

Wyświetl plik

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-14 18:40+0000\n" "POT-Creation-Date: 2020-12-14 20:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

Wyświetl plik

@ -1,6 +1,6 @@
{ {
"name": "WebODM", "name": "WebODM",
"version": "1.6.0", "version": "1.7.0",
"description": "User-friendly, extendable application and API for processing aerial imagery.", "description": "User-friendly, extendable application and API for processing aerial imagery.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

Wyświetl plik

@ -1,6 +1,7 @@
from app.plugins import PluginBase, Menu, MountPoint from app.plugins import PluginBase, Menu, MountPoint
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.utils.translation import gettext as _
import json, shutil import json, shutil
@ -32,22 +33,15 @@ def get_memory_stats():
class Plugin(PluginBase): class Plugin(PluginBase):
def main_menu(self): def main_menu(self):
return [Menu("Diagnostic", self.public_url(""), "fa fa-chart-pie fa-fw")] return [Menu(_("Diagnostic"), self.public_url(""), "fa fa-chart-pie fa-fw")]
def app_mount_points(self): def app_mount_points(self):
@login_required @login_required
def diagnostic(request): def diagnostic(request):
# Load version number
with open('./package.json') as f:
package = json.load(f)
version = package['version']
# Disk space # Disk space
total_disk_space, used_disk_space, free_disk_space = shutil.disk_usage('./') total_disk_space, used_disk_space, free_disk_space = shutil.disk_usage('./')
template_args = { template_args = {
'title': 'Diagnostic',
'version': version,
'total_disk_space': total_disk_space, 'total_disk_space': total_disk_space,
'used_disk_space': used_disk_space, 'used_disk_space': used_disk_space,
'free_disk_space': free_disk_space 'free_disk_space': free_disk_space

Wyświetl plik

@ -1,50 +1,50 @@
{% extends "app/plugins/templates/base.html" %} {% extends "app/plugins/templates/base.html" %}
{% load i18n %}
{% block content %} {% block content %}
<script src="./Chart.min.js"></script> <script src="./Chart.min.js"></script>
<h2>Diagnostic Information</h2> <h2>{% trans 'Diagnostic Information' %}</h2>
<p><b>App Version:</b> {{ version }}</p>
<div class="row text-center"> <div class="row text-center">
<div class="col-md-4 col-sm-12"> <div class="col-md-4 col-sm-12">
<h4>Storage Space</h4> <h4>{% trans 'Storage Space' %}</h4>
<div style="width: 80%; margin-left: 10%;"> <div style="width: 80%; margin-left: 10%;">
<canvas id="diskChart" width="200" height="200" style="margin-bottom: 12px;"></canvas> <canvas id="diskChart" width="200" height="200" style="margin-bottom: 12px;"></canvas>
</div> </div>
<p><b>Free:</b> {{ free_disk_space|filesizeformat }} | <p><b>{% trans 'Free' context 'Megabytes of storage space' %}:</b> {{ free_disk_space|filesizeformat }} |
<b>Used:</b> {{ used_disk_space|filesizeformat }} | <b>{% trans 'Used' context 'Megabytes of storage space' %}:</b> {{ used_disk_space|filesizeformat }} |
<b>Total:</b> {{ total_disk_space|filesizeformat }}</p> <b>{% trans 'Total' context 'Megabytes of storage space' %}:</b> {{ total_disk_space|filesizeformat }}</p>
</div> </div>
<div class="col-md-4 col-sm-12"> <div class="col-md-4 col-sm-12">
{% if total_memory %} {% if total_memory %}
<h4>Memory</h4> <h4>{% trans 'Memory' context 'Computer memory (RAM)' %}</h4>
<div style="width: 80%; margin-left: 10%;"> <div style="width: 80%; margin-left: 10%;">
<canvas id="memoryChart" width="200" height="200" style="margin-bottom: 12px;"></canvas> <canvas id="memoryChart" width="200" height="200" style="margin-bottom: 12px;"></canvas>
</div> </div>
<p><b>Free:</b> {{ free_memory|filesizeformat }} | <p><b>{% trans 'Free' context 'Megabytes of memory space' %}:</b> {{ free_memory|filesizeformat }} |
<b>Used:</b> {{ used_memory|filesizeformat }} | <b>{% trans 'Used' context 'Megabytes of memory space' %}:</b> {{ used_memory|filesizeformat }} |
<b>Total:</b> {{ total_memory|filesizeformat }}</p> <b>{% trans 'Total' context 'Megabytes of memory space'%}:</b> {{ total_memory|filesizeformat }}</p>
{% endif %} {% endif %}
</div> </div>
</div> </div>
<hr/> <hr/>
<div style="margin-top: 20px;"><strong>Note!</strong> These values might be relative to the virtualization environment in which the application is running, not necessarily the values of the your machine. See instructions for <a href="http://stackoverflow.com/a/39720010">MacOS</a> and <a href="https://docs.docker.com/docker-for-windows/#advanced">Windows</a> for changing these values in a docker setup.</div>
<div style="margin-top: 20px;"><strong>{% trans 'Note!' %}</strong> {% blocktrans with win_link="<a href='https://docs.docker.com/docker-for-windows/#advanced'>Windows</a>" mac_link="<a href='http://stackoverflow.com/a/39720010'>MacOS</a>" %}These values might be relative to the virtualization environment in which the application is running, not necessarily the values of the your machine. See instructions for {{ win_link }} and {{ mac_link }} for changing these values in a docker setup.{% endblocktrans %}</div>
<script> <script>
(function(){ (function(){
var ctx = document.getElementById('diskChart').getContext('2d'); var ctx = document.getElementById('diskChart').getContext('2d');
var labels = { var labels = {
'Used': '{{ used_disk_space|filesizeformat }}', "{% trans 'Used' context 'Megabytes of storage space' %}": '{{ used_disk_space|filesizeformat }}',
'Free': '{{ free_disk_space|filesizeformat }}' "{% trans 'Free' context 'Megabytes of storage space' %}": '{{ free_disk_space|filesizeformat }}'
}; };
var chart = new Chart(ctx, { var chart = new Chart(ctx, {
type: 'doughnut', type: 'doughnut',
data: { data: {
labels: ["Used", "Free"], labels: ["{% trans 'Used' context 'Megabytes of storage space' %}", "{% trans 'Free' context 'Megabytes of storage space' %}"],
datasets: [{ datasets: [{
label: "Disk Space", label: "{% trans 'Disk Space' %}",
backgroundColor:[ backgroundColor:[
"rgb(255, 99, 132)", "rgb(255, 99, 132)",
"rgb(54, 162, 235)" "rgb(54, 162, 235)"
@ -71,15 +71,15 @@
(function(){ (function(){
var ctx = document.getElementById('memoryChart').getContext('2d'); var ctx = document.getElementById('memoryChart').getContext('2d');
var labels = { var labels = {
'Used': '{{ used_memory|filesizeformat }}', "{% trans 'Used' context 'Megabytes of memory space' %}": '{{ used_memory|filesizeformat }}',
'Free': '{{ free_memory|filesizeformat }}' "{% trans 'Free' context 'Megabytes of memory space' %}": '{{ free_memory|filesizeformat }}'
}; };
var chart = new Chart(ctx, { var chart = new Chart(ctx, {
type: 'doughnut', type: 'doughnut',
data: { data: {
labels: ["Used", "Free"], labels: ["{% trans 'Used' context 'Megabytes of memory space' %}", "{% trans 'Free' context 'Megabytes of memory space' %}"],
datasets: [{ datasets: [{
label: "Disk Space", label: "{% trans 'Disk Space' %}",
backgroundColor:[ backgroundColor:[
"rgb(255, 99, 132)", "rgb(255, 99, 132)",
"rgb(54, 162, 235)" "rgb(54, 162, 235)"

Wyświetl plik

@ -4,6 +4,7 @@ from django.dispatch import receiver
from django.http import HttpResponse from django.http import HttpResponse
from guardian.shortcuts import get_objects_for_user, assign_perm from guardian.shortcuts import get_objects_for_user, assign_perm
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
from django.utils.translation import gettext as _
from app.plugins import GlobalDataStore, logger from app.plugins import GlobalDataStore, logger
from app.plugins import PluginBase, Menu, MountPoint, UserDataStore, signals from app.plugins import PluginBase, Menu, MountPoint, UserDataStore, signals
@ -21,7 +22,7 @@ def JsonResponse(dict):
class Plugin(PluginBase): class Plugin(PluginBase):
def main_menu(self): def main_menu(self):
return [Menu("Lightning Network", self.public_url(""), "fa fa-bolt fa-fw")] return [Menu(_("Lightning Network"), self.public_url(""), "fa fa-bolt fa-fw")]
def include_js_files(self): def include_js_files(self):
return ['add_cost_estimate.js'] return ['add_cost_estimate.js']
@ -35,7 +36,7 @@ class Plugin(PluginBase):
uds = UserDataStore('lightning', request.user) uds = UserDataStore('lightning', request.user)
return render(request, self.template_path("index.html"), { return render(request, self.template_path("index.html"), {
'title': 'Lightning Network', 'title': _('Lightning Network'),
'api_key': uds.get_string("api_key") 'api_key': uds.get_string("api_key")
}) })

Wyświetl plik

@ -1,10 +1,11 @@
from app.plugins import PluginBase, Menu, MountPoint from app.plugins import PluginBase, Menu, MountPoint
from django.shortcuts import render from django.shortcuts import render
from django.utils.translation import gettext as _
class Plugin(PluginBase): class Plugin(PluginBase):
def main_menu(self): def main_menu(self):
return [Menu("GCP Interface", self.public_url(""), "fa fa-map-marker-alt fa-fw")] return [Menu(_("GCP Interface"), self.public_url(""), "fa fa-map-marker-alt fa-fw")]
def app_mount_points(self): def app_mount_points(self):
return [ return [